X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwcm%2Fplugins%2Frwconman%2Frift%2Ftasklets%2Frwconmantasklet%2Frwconman_config.py;h=c25cab9809059399b03219e72ef64fa79d78f706;hb=83ce7da2642b390ef69e12bd482992febf67c477;hp=bd8809003e6474418c09141bcec0d840efbeff6a;hpb=c2fe40c38153248d1a9f436241c65d5f43e5a900;p=osm%2FSO.git diff --git a/rwcm/plugins/rwconman/rift/tasklets/rwconmantasklet/rwconman_config.py b/rwcm/plugins/rwconman/rift/tasklets/rwconmantasklet/rwconman_config.py index bd880900..c25cab98 100644 --- a/rwcm/plugins/rwconman/rift/tasklets/rwconmantasklet/rwconman_config.py +++ b/rwcm/plugins/rwconman/rift/tasklets/rwconmantasklet/rwconman_config.py @@ -299,27 +299,21 @@ class ConfigManagerConfig(object): def process_nsd_vnf_configuration(self, nsr_obj, vnfr): def get_config_method(vnf_config): - cfg_types = ['netconf', 'juju', 'script'] + cfg_types = ['juju', 'script'] for method in cfg_types: if method in vnf_config: return method return None - def get_cfg_file_extension(method, configuration_options): + def get_cfg_file_extension(method): ext_dict = { - "netconf" : "xml", - "script" : { - "bash" : "sh", - "expect" : "exp", - }, - "juju" : "yml" + "juju" : "yml", + "script" : "py" } - if method == "netconf": + if method == "juju": return ext_dict[method] elif method == "script": - return ext_dict[method][configuration_options['script_type']] - elif method == "juju": return ext_dict[method] else: return "cfg" @@ -408,12 +402,6 @@ class ConfigManagerConfig(object): configuration_options[cfg_opt] = vnf_config[method][cfg_opt] vnf_cfg[cfg_opt] = configuration_options[cfg_opt] - cfg_opt_list = ['mgmt_ip_address', 'username', 'password'] - for cfg_opt in cfg_opt_list: - if cfg_opt in vnf_config['config_access']: - configuration_options[cfg_opt] = vnf_config['config_access'][cfg_opt] - vnf_cfg[cfg_opt] = configuration_options[cfg_opt] - # Add to the cp_dict vnf_cp_dict = nsr_obj._cp_dict[vnfr['member_vnf_index_ref']] vnf_cp_dict['rw_mgmt_ip'] = vnf_cfg['mgmt_ip_address'] @@ -422,22 +410,9 @@ class ConfigManagerConfig(object): # TBD - see if we can neatly include the config in "config_attributes" file, no need though - #config_priority['config_template'] = vnf_config['config_template'] # Create config file vnf_cfg['juju_script'] = os.path.join(self._parent.cfg_dir, 'juju_if.py') - - if 'config_template' in vnf_config: - vnf_cfg['cfg_template'] = '{}_{}_template.cfg'.format(nsr_obj.cfg_path_prefix, config_priority['configuration_type']) - vnf_cfg['cfg_file'] = '{}.{}'.format(nsr_obj.cfg_path_prefix, get_cfg_file_extension(method, configuration_options)) - vnf_cfg['xlate_script'] = os.path.join(self._parent.cfg_dir, 'xlate_cfg.py') - try: - # Now write this template into file - with open(vnf_cfg['cfg_template'], "w") as cf: - cf.write(vnf_config['config_template']) - except Exception as e: - self._log.error("Processing NSD, failed to generate configuration template : %s (Error : %s)", - vnf_config['config_template'], str(e)) - raise + vnf_cfg['cfg_file'] = '{}.{}'.format(nsr_obj.cfg_path_prefix, get_cfg_file_extension(method)) self._log.debug("VNF endpoint so far: %s", vnf_cfg) @@ -470,10 +445,6 @@ class ConfigManagerConfig(object): nsr_dict = self._nsr_dict self._log.info("Configure NSR, id = %s", id) - #####################TBD########################### - # yield from self._config_agent_mgr.invoke_config_agent_plugins('notify_create_nsr', self.id, self._nsd) - # yield from self._config_agent_mgr.invoke_config_agent_plugins('notify_nsr_active', self.id, self._vnfrs) - try: if id not in nsr_dict: nsr_obj = ConfigManagerNSR(self._log, self._loop, self, id) @@ -517,9 +488,6 @@ class ConfigManagerConfig(object): self._log.info("Checking NS config directory: %s", nsr_dir) if not os.path.isdir(nsr_dir): os.makedirs(nsr_dir) - # self._log.critical("NS %s is not to be configured by Service Orchestrator!", nsr_obj.nsr_name) - # yield from nsr_obj.update_ns_cm_state(conmanY.RecordState.READY_NO_CFG) - # return nsr_obj.set_config_dir(self) @@ -539,12 +507,6 @@ class ConfigManagerConfig(object): nsr_obj.agent_nsr, agent_vnfr) - #####################TBD########################### - # self._log.debug("VNF active. Apply initial config for vnfr {}".format(vnfr.name)) - # yield from self._config_agent_mgr.invoke_config_agent_plugins('apply_initial_config', - # vnfr.id, vnfr) - # yield from self._config_agent_mgr.invoke_config_agent_plugins('notify_terminate_vnf', self.id, vnfr) - except Exception as e: self._log.error("Failed processing NSR (%s) as (%s)", nsr_obj.nsr_name, str(e)) self._log.exception(e) @@ -558,13 +520,6 @@ class ConfigManagerConfig(object): except Exception as e: self._log.error("NS:(%s) failed to write config attributes file as (%s)", nsr_obj.nsr_name, str(e)) - try: - # Generate nsr_xlate_dict.yaml (For debug reference) - with open(nsr_obj.xlate_dict_file, "w") as yf: - yf.write(yaml.dump(nsr_obj._cp_dict, default_flow_style=False)) - except Exception as e: - self._log.error("NS:(%s) failed to write nsr xlate tags file as (%s)", nsr_obj.nsr_name, str(e)) - self._log.debug("Starting to configure each VNF") # Check if this NS has input parametrs @@ -576,19 +531,11 @@ class ConfigManagerConfig(object): # Go in loop to configure by specified order self._log.info("Using Dynamic configuration input parametrs for NS: %s", nsr_obj.nsr_name) - # cfg_delay = nsr_obj.nsr_cfg_config_attributes_dict['configuration_delay'] - # if cfg_delay: - # self._log.info("Applying configuration delay for NS (%s) ; %d seconds", - # nsr_obj.nsr_name, cfg_delay) - # yield from asyncio.sleep(cfg_delay, loop=self._loop) - for config_attributes_dict in nsr_obj.nsr_cfg_config_attributes_dict.values(): # Iterate through each priority level for vnf_config_attributes_dict in config_attributes_dict: # Iterate through each vnfr at this priority level - # Make up vnf_unique_name with vnfd name and member index - #vnfr_name = "{}.{}".format(nsr_obj.nsr_name, vnf_config_attributes_dict['name']) vnf_unique_name = get_vnf_unique_name( nsr_obj.nsr_name, vnf_config_attributes_dict['name'], @@ -662,9 +609,6 @@ class ConfigManagerConfig(object): # publish delete cm-state (cm-nsr) yield from nsr_obj.delete_cm_nsr() - #####################TBD########################### - # yield from self._config_agent_mgr.invoke_config_agent_plugins('notify_terminate_ns', self.id) - self._log.info("NSR(%s/%s) is deleted", nsr_obj.nsr_name, id) @asyncio.coroutine @@ -958,46 +902,7 @@ class ConfigManagerNSR(object): self._log.debug("NSR:(%s), Created configuration directory(%s)", caller._nsr['name_ref'], self.this_nsr_dir) self.config_attributes_file = os.path.join(self.this_nsr_dir, "configuration_config_attributes.yml") - self.xlate_dict_file = os.path.join(self.this_nsr_dir, "nsr_xlate_dict.yml") - def xlate_conf(self, vnfr, vnf_cfg): - - # If configuration type is not already set, try to read from attributes - if vnf_cfg['interface_type'] is None: - # Prepare unique name for this VNF - vnf_unique_name = get_vnf_unique_name( - vnf_cfg['nsr_name'], - vnfr['short_name'], - vnfr['member_vnf_index_ref'], - ) - - # Find this particular (unique) VNF's config attributes - if (vnf_unique_name in self.vnf_config_attributes_dict): - vnf_cfg_config_attributes_dict = self.vnf_config_attributes_dict[vnf_unique_name] - vnf_cfg['interface_type'] = vnf_cfg_config_attributes_dict['configuration_type'] - if 'configuration_options' in vnf_cfg_config_attributes_dict: - cfg_opts = vnf_cfg_config_attributes_dict['configuration_options'] - for key, value in cfg_opts.items(): - vnf_cfg[key] = value - - cfg_path_prefix = '{}/{}/{}_{}'.format( - self._parent._parent.cfg_dir, - vnf_cfg['nsr_name'], - vnfr['short_name'], - vnfr['member_vnf_index_ref'], - ) - - vnf_cfg['cfg_template'] = '{}_{}_template.cfg'.format(cfg_path_prefix, vnf_cfg['interface_type']) - vnf_cfg['cfg_file'] = '{}.cfg'.format(cfg_path_prefix) - vnf_cfg['xlate_script'] = self._parent._parent.cfg_dir + '/xlate_cfg.py' - - self._log.debug("VNF endpoint so far: %s", vnf_cfg) - - self._log.info("Checking cfg_template %s", vnf_cfg['cfg_template']) - if os.path.exists(vnf_cfg['cfg_template']): - return True - return False - def ConfigVNF(self, vnfr): vnf_cfg = vnfr['vnf_cfg'] @@ -1018,30 +923,9 @@ class ConfigManagerNSR(object): self._cp_dict['rw_mgmt_ip'] = vnf_cfg['mgmt_ip_address'] self._cp_dict['rw_username'] = vnf_cfg['username'] self._cp_dict['rw_password'] = vnf_cfg['password'] - ############################################################ - # TBD - Need to lookup above 3 for a given VNF, not global # - # Once we do that no need to dump below file again before # - # each VNF configuration translation. # - # This will require all existing config templates to be # - # changed for above three tags to include member index # - ############################################################ - try: - nsr_obj = vnf_cfg['nsr_obj'] - # Generate config_config_attributes.yaml (For debug reference) - with open(nsr_obj.xlate_dict_file, "w") as yf: - yf.write(yaml.dump(nsr_obj._cp_dict, default_flow_style=False)) - except Exception as e: - self._log.error("NS:(%s) failed to write nsr xlate tags file as (%s)", nsr_obj.nsr_name, str(e)) - - if 'cfg_template' in vnf_cfg: - script_cmd = 'python3 {} -i {} -o {} -x "{}"'.format(vnf_cfg['xlate_script'], vnf_cfg['cfg_template'], vnf_cfg['cfg_file'], self.xlate_dict_file) - self._log.debug("xlate script command (%s)", script_cmd) - #xlate_msg = subprocess.check_output(script_cmd).decode('utf-8') - xlate_msg = subprocess.check_output(script_cmd, shell=True).decode('utf-8') - self._log.info("xlate script output (%s)", xlate_msg) except Exception as e: vnf_cm_state['state'] = self.state_to_string(conmanY.RecordState.CFG_PROCESS_FAILED) - self._log.error("Failed to execute translation script for VNF: %s with (%s)", log_this_vnf(vnf_cfg), str(e)) + self._log.error("Failed to set tags for VNF: %s with (%s)", log_this_vnf(vnf_cfg), str(e)) return self._log.info("Applying config to VNF: %s = %s!", log_this_vnf(vnf_cfg), vnf_cfg)