Merge changes Iff7ec8a9,I661d8abd
authorbeierlm <mark.beierl@canonical.com>
Wed, 13 May 2020 21:21:20 +0000 (23:21 +0200)
committerGerrit Code Review <root@osm.etsi.org>
Wed, 13 May 2020 21:21:20 +0000 (23:21 +0200)
* changes:
  Fix NST creation command
  Fixed osm version for pre-7.0 version

1  2 
osmclient/scripts/osm.py

diff --combined osmclient/scripts/osm.py
@@@ -228,8 -228,6 +228,8 @@@ def ns_list(ctx, filter, long)
      def summarize_deployment_status(status_dict):
          #Nets
          summary = ""
 +        if not status_dict:
 +            return summary
          n_nets = 0
          status_nets = {}
          net_list = status_dict.get('nets',[])
          return summary
          
      def summarize_config_status(ee_list):
 +        summary = ""
 +        if not ee_list:
 +            return summary
          n_ee = 0
          status_ee = {}
          for ee in ee_list:
                  status_ee[ee['elementType']][ee['status']] += 1
              else:
                  status_ee[ee['elementType']][ee['status']] = 1
 -        summary = ""
          for elementType in ["KDU", "VDU", "PDU", "VNF", "NS"]:
              if elementType in status_ee:
                  message = ""
                  summary += "{}: {}".format(elementType, message)
          summary += "TOTAL Exec. Env.: {}".format(n_ee)
          return summary
 +
      logger.debug("")
      if filter:
          check_client_version(ctx.obj, '--filter')
          fullclassname = ctx.obj.__module__ + "." + ctx.obj.__class__.__name__
          if fullclassname == 'osmclient.sol005.client.Client':
              nsr = ns
 +            logger.debug('NS info: {}'.format(nsr))
              nsr_name = nsr['name']
              nsr_id = nsr['_id']
              date = datetime.fromtimestamp(nsr['create-time']).strftime("%Y-%m-%dT%H:%M:%S")
 -            ns_state = nsr['nsState']
 +            ns_state = nsr.get('nsState', nsr['_admin']['nsState'])
              if long:
 -                deployment_status = summarize_deployment_status(nsr['deploymentStatus'])
 -                config_status = summarize_config_status(nsr['configurationStatus'])
 +                deployment_status = summarize_deployment_status(nsr.get('deploymentStatus'))
 +                config_status = summarize_config_status(nsr.get('configurationStatus'))
                  project_id = nsr.get('_admin').get('projects_read')[0]
                  project_name = '-'
                  for p in project_list:
                          break
                  #vim = '{} ({})'.format(vim_name, vim_id)
                  vim = vim_name
 -            current_operation = "{} ({})".format(nsr['currentOperation'],nsr['currentOperationID'])
 +            if 'currentOperation' in nsr:
 +                current_operation = "{} ({})".format(nsr['currentOperation'],nsr['currentOperationID'])
 +            else:
 +                current_operation = "{} ({})".format(nsr['_admin'].get('current-operation','-'), nsr['_admin']['nslcmop'])
              error_details = "N/A"
 -            if ns_state == "BROKEN" or ns_state == "DEGRADED" or nsr['errorDescription']:
 +            if ns_state == "BROKEN" or ns_state == "DEGRADED" or nsr.get('errorDescription'):
                  error_details = "{}\nDetail: {}".format(nsr['errorDescription'], nsr['errorDetail'])
          else:
              nsopdata = ctx.obj.ns.get_opdata(ns['id'])
@@@ -1428,12 -1419,9 +1428,12 @@@ def nsd_create(ctx, filename, overwrite
                help='The charm will not be compiled, it is assumed to already exist')
  @click.pass_context
  def nsd_create1(ctx, filename, overwrite, skip_charm_build):
 -    """creates a new NSD/NSpkg
 +    """onboards a new NSpkg (alias of nspkg-create) (TO BE DEPRECATED)
  
 -    FILENAME: NSD yaml file or NSpkg tar.gz file
 +    \b
 +    FILENAME: NF Package tar.gz file, NF Descriptor YAML file or NF Package folder
 +              If FILENAME is a file (NF Package tar.gz or NF Descriptor YAML), it is onboarded.
 +              If FILENAME is an NF Package folder, it is built and then onboarded.
      """
      logger.debug("")
      nsd_create(ctx, filename, overwrite=overwrite, skip_charm_build=skip_charm_build)
                help='The charm will not be compiled, it is assumed to already exist')
  @click.pass_context
  def nsd_create2(ctx, filename, overwrite, skip_charm_build):
 -    """creates a new NSD/NSpkg
 +    """onboards a new NSpkg
  
 -    FILENAME: NSD folder, NSD yaml file or NSpkg tar.gz file
 +    \b
 +    FILENAME: NF Package tar.gz file, NF Descriptor YAML file or NF Package folder
 +              If FILENAME is a file (NF Package tar.gz or NF Descriptor YAML), it is onboarded.
 +              If FILENAME is an NF Package folder, it is built and then onboarded.
      """
      logger.debug("")
      nsd_create(ctx, filename, overwrite=overwrite, skip_charm_build=skip_charm_build)
@@@ -1490,12 -1475,9 +1490,12 @@@ def vnfd_create(ctx, filename, overwrit
                help='overrides all VDU interfaces to PARAVIRT')
  @click.pass_context
  def vnfd_create1(ctx, filename, overwrite, skip_charm_build, override_epa, override_nonepa, override_paravirt):
 -    """creates a new VNFD/VNFpkg
 +    """onboards a new NFpkg (alias of nfpkg-create) (TO BE DEPRECATED)
  
 -    FILENAME: VNFD yaml file or VNFpkg tar.gz file
 +    \b
 +    FILENAME: NF Package tar.gz file, NF Descriptor YAML file or NF Package folder
 +              If FILENAME is a file (NF Package tar.gz or NF Descriptor YAML), it is onboarded.
 +              If FILENAME is an NF Package folder, it is built and then onboarded.
      """
      logger.debug("")
      vnfd_create(ctx, filename, overwrite=overwrite, skip_charm_build=skip_charm_build,
                help='overrides all VDU interfaces to PARAVIRT')
  @click.pass_context
  def vnfd_create2(ctx, filename, overwrite, skip_charm_build, override_epa, override_nonepa, override_paravirt):
 -    """creates a new VNFD/VNFpkg
 +    """onboards a new NFpkg (alias of nfpkg-create)
  
 -    FILENAME: NF Package Folder, NF Descriptor yaml file or NFpkg tar.gz file
 +    \b
 +    FILENAME: NF Package tar.gz file, NF Descriptor YAML file or NF Package folder
 +              If FILENAME is a file (NF Package tar.gz or NF Descriptor YAML), it is onboarded.
 +              If FILENAME is an NF Package folder, it is built and then onboarded.
      """
      logger.debug("")
      vnfd_create(ctx, filename, overwrite=overwrite, skip_charm_build=skip_charm_build,
                help='overrides all VDU interfaces to PARAVIRT')
  @click.pass_context
  def nfpkg_create(ctx, filename, overwrite, skip_charm_build, override_epa, override_nonepa, override_paravirt):
 -    """creates a new NFpkg
 +    """onboards a new NFpkg (alias of nfpkg-create)
  
 -    FILENAME: NF Package Folder, NF Descriptor yaml file or NFpkg tar.gz filems to build
 +    \b
 +    FILENAME: NF Package tar.gz file, NF Descriptor YAML file or NF Package folder
 +              If FILENAME is a file (NF Package tar.gz or NF Descriptor YAML), it is onboarded.
 +              If FILENAME is an NF Package folder, it is built and then onboarded.
      """
      logger.debug("")
      vnfd_create(ctx, filename, overwrite=overwrite, skip_charm_build=skip_charm_build,
@@@ -1634,13 -1610,13 +1634,13 @@@ def nst_create(ctx, filename, overwrite
                help='overrides fields in descriptor, format: '
                     '"key1.key2...=value[;key3...=value;...]"')
  @click.pass_context
- def nst_create1(ctx, charm_folder, overwrite):
+ def nst_create1(ctx, filename, overwrite):
      """creates a new Network Slice Template (NST)
  
      FILENAME: NST package folder, NST yaml file or NSTpkg tar.gz file
      """
      logger.debug("")
-     nst_create(ctx, charm_folder, overwrite)
+     nst_create(ctx, filename, overwrite)
  
  
  @cli_osm.command(name='netslice-template-create', short_help='creates a new Network Slice Template (NST)')
@@@ -2321,7 -2297,7 +2321,7 @@@ def vim_list(ctx, filter, long)
  #    else:
  #        resp = ctx.obj.vim.list(ro_update)
      if long:
 -        table = PrettyTable(['vim name', 'uuid', 'operational state', 'error details'])
 +        table = PrettyTable(['vim name', 'uuid', 'project', 'operational state', 'error details'])
      else:
          table = PrettyTable(['vim name', 'uuid'])
      for vim in resp:
              error_details = 'N/A'
              if vim_state == 'ERROR':
                  error_details = vim_details['_admin'].get('detailed-status', 'Not found')
 -            table.add_row([vim['name'], vim['uuid'], vim_state, wrap_text(text=error_details, width=80)])
 +            project_list = ctx.obj.project.list()
 +            vim_project_list = vim_details.get('_admin').get('projects_read')
 +            project_id = 'None'
 +            project_name = 'None'
 +            if vim_project_list:
 +                project_id = vim_project_list[0]
 +                for p in project_list:
 +                    if p['_id'] == project_id:
 +                        project_name = p['name']
 +                        break
 +            table.add_row([vim['name'], vim['uuid'], '{} ({})'.format(project_name, project_id),
 +                          vim_state, wrap_text(text=error_details, width=80)])
          else:
              table.add_row([vim['name'], vim['uuid']])
      table.align = 'l'