Merge "Deprecate old config-manager model attributes"
authorvelandy <rajesh.velandy@riftio.com>
Fri, 28 Apr 2017 14:55:40 +0000 (16:55 +0200)
committerGerrit Code Review <root@osm.etsi.org>
Fri, 28 Apr 2017 14:55:40 +0000 (16:55 +0200)
1  2 
rwcm/plugins/rwconman/rift/tasklets/rwconmantasklet/rwconman_config.py

@@@ -299,27 -299,21 +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"
                      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']
              
  
              # 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)
  
          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)
                      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)
                      
                                  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)
              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
                      # 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'],
              # 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 +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']
              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)
@@@ -1358,13 -1242,11 +1242,13 @@@ class XPaths(object)
  
      @staticmethod
      def nsr_config(k=None):
 -        return ("C,/nsr:ns-instance-config/nsr:nsr[nsr:id='{}']".format(k) if k is not None else "")
 +        return ("C,/nsr:ns-instance-config/nsr:nsr" +
 +                ("[nsr:id='{}']".format(k) if k is not None else ""))
  
      @staticmethod
      def vlr(k=None):
 -        return ("D,/vlr:vlr-catalog/vlr:vlr[vlr:id='{}']".format(k) if k is not None else "")
 +        return ("D,/vlr:vlr-catalog/vlr:vlr" +
 +                ("[vlr:id='{}']".format(k) if k is not None else ""))
  
  class ConfigManagerDTS(object):
      ''' This class either reads from DTS or publishes to DTS '''