Solved bug indicating vdu_count for osm-action command
[osm/osmclient.git] / osmclient / scripts / osm.py
index 8dbf2b6..06d77e0 100755 (executable)
@@ -368,7 +368,8 @@ def ns_list(ctx, filter, long):
             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.get('errorDescription'):
+            if ns_state == "BROKEN" or ns_state == "DEGRADED" or \
+                ('currentOperation' not in nsr and nsr.get('errorDescription')):
                 error_details = "{}\nDetail: {}".format(nsr['errorDescription'], nsr['errorDetail'])
         else:
             nsopdata = ctx.obj.ns.get_opdata(ns['id'])
@@ -561,18 +562,6 @@ def vnfd_list2(ctx, nf_type, filter, long):
     logger.debug("")
     vnfd_list(ctx, nf_type, filter, long)
 
-@cli_osm.command(name='vnfpkg-repo-list', short_help='list all xNF from OSM repositories')
-@click.option('--filter', default=None,
-              help='restricts the list to the NFpkg matching the filter')
-@click.option('--repo', default=None,
-              help='restricts the list to a particular OSM repository')
-@click.option('--long', is_flag=True, help='get more details')
-@click.pass_context
-def vnfd_list3(ctx, filter, repo, long):
-    """list xNF packages from OSM repositories"""
-    pkgtype = 'vnf'
-    pkg_repo_list(ctx, pkgtype, filter, repo, long)
-
 @cli_osm.command(name='nfpkg-list', short_help='list all xNF packages (VNF, HNF, PNF)')
 @click.option('--nf_type', help='type of NF (vnf, pnf, hnf)')
 @click.option('--filter', default=None,
@@ -589,6 +578,18 @@ def nfpkg_list(ctx, nf_type, filter, long):
     #     print(str(e))
     #     exit(1)
 
+@cli_osm.command(name='vnfpkg-repo-list', short_help='list all xNF from OSM repositories')
+@click.option('--filter', default=None,
+              help='restricts the list to the NFpkg matching the filter')
+@click.option('--repo', default=None,
+              help='restricts the list to a particular OSM repository')
+@click.option('--long', is_flag=True, help='get more details')
+@click.pass_context
+def nfpkg_repo_list1(ctx, filter, repo, long):
+    """list xNF packages from OSM repositories"""
+    pkgtype = 'vnf'
+    pkg_repo_list(ctx, pkgtype, filter, repo, long)
+
 @cli_osm.command(name='nfpkg-repo-list', short_help='list all xNF from OSM repositories')
 @click.option('--filter', default=None,
               help='restricts the list to the NFpkg matching the filter')
@@ -596,7 +597,7 @@ def nfpkg_list(ctx, nf_type, filter, long):
               help='restricts the list to a particular OSM repository')
 @click.option('--long', is_flag=True, help='get more details')
 @click.pass_context
-def vnfd_list4(ctx, filter, repo, long):
+def nfpkg_repo_list2(ctx, filter, repo, long):
     """list xNF packages from OSM repositories"""
     pkgtype = 'vnf'
     pkg_repo_list(ctx, pkgtype, filter, repo, long)
@@ -670,7 +671,7 @@ def vnf_list1(ctx, ns, filter, long):
               help='restricts the list to a particular OSM repository')
 @click.option('--long', is_flag=True, help='get more details')
 @click.pass_context
-def nsd_list3(ctx, filter, repo, long):
+def nspkg_repo_list(ctx, filter, repo, long):
     """list xNF packages from OSM repositories"""
     pkgtype = 'ns'
     pkg_repo_list(ctx, pkgtype, filter, repo, long)
@@ -682,7 +683,7 @@ def nsd_list3(ctx, filter, repo, long):
               help='restricts the list to a particular OSM repository')
 @click.option('--long', is_flag=True, help='get more details')
 @click.pass_context
-def nspkg_list(ctx, filter, repo, long):
+def nspkg_repo_list2(ctx, filter, repo, long):
     """list xNF packages from OSM repositories"""
     pkgtype = 'ns'
     pkg_repo_list(ctx, pkgtype, filter, repo, long)
@@ -786,12 +787,12 @@ def ns_op_list(ctx, name, long):
         if op['lcmOperationType']=='action':
             action_name = op['operationParams']['primitive']
         detail = "-"
-        if op['operationState']=='PROCESSING':
-            if op['lcmOperationType'] in ('instantiate', 'terminate'):
+        if op['operationState'] == 'PROCESSING':
+            if op['queuePosition'] is not None and op['queuePosition'] > 0:
+                detail = "In queue. Current position: {}".format(op['queuePosition'])
+            elif op['lcmOperationType'] in ('instantiate', 'terminate'):
                 if op['stage']:
                     detail = op['stage']
-            else:
-                detail = "In queue. Current position: {}".format(op['queuePosition'])
         elif op['operationState'] in ('FAILED', 'FAILED_TEMP'):
             detail = op.get('errorMessage','-')
         date = datetime.fromtimestamp(op['startTime']).strftime("%Y-%m-%dT%H:%M:%S")
@@ -1002,7 +1003,7 @@ def nsd_show(ctx, name, literal):
     print(table)
 
 
-@cli_osm.command(name='nsd-show', short_help='shows the content of a NSD')
+@cli_osm.command(name='nsd-show', short_help='shows the details of a NS package')
 @click.option('--literal', is_flag=True,
               help='print literally, no pretty table')
 @click.argument('name')
@@ -1016,7 +1017,7 @@ def nsd_show1(ctx, name, literal):
     nsd_show(ctx, name, literal)
 
 
-@cli_osm.command(name='nspkg-show', short_help='shows the content of a NSD')
+@cli_osm.command(name='nspkg-show', short_help='shows the details of a NS package')
 @click.option('--literal', is_flag=True,
               help='print literally, no pretty table')
 @click.argument('name')
@@ -1072,7 +1073,7 @@ def pkg_repo_show(ctx, pkgtype, name, repo, version, filter, literal):
     table.align = 'l'
     print(table)
 
-@cli_osm.command(name='vnfd-show', short_help='shows the content of a VNFD')
+@cli_osm.command(name='vnfd-show', short_help='shows the details of a NF package')
 @click.option('--literal', is_flag=True,
               help='print literally, no pretty table')
 @click.argument('name')
@@ -1086,7 +1087,7 @@ def vnfd_show1(ctx, name, literal):
     vnfd_show(ctx, name, literal)
 
 
-@cli_osm.command(name='vnfpkg-show', short_help='shows the content of a VNFD')
+@cli_osm.command(name='vnfpkg-show', short_help='shows the details of a NF package')
 @click.option('--literal', is_flag=True,
               help='print literally, no pretty table')
 @click.argument('name')
@@ -1099,7 +1100,7 @@ def vnfd_show2(ctx, name, literal):
     logger.debug("")
     vnfd_show(ctx, name, literal)
 
-@cli_osm.command(name='vnfpkg-repo-show', short_help='shows the content of a VNFD')
+@cli_osm.command(name='vnfpkg-repo-show', short_help='shows the details of a NF package in an OSM repository')
 @click.option('--literal', is_flag=True,
               help='print literally, no pretty table')
 @click.option('--repo',
@@ -1121,7 +1122,7 @@ def vnfd_show3(ctx, name, repo, version, literal=None, filter=None):
     pkg_repo_show(ctx, pkgtype, name, repo, version, filter, literal)
 
 
-@cli_osm.command(name='nsd-repo-show', short_help='shows the content of a NSD')
+@cli_osm.command(name='nsd-repo-show', short_help='shows the details of a NS package in an OSM repository')
 @click.option('--literal', is_flag=True,
               help='print literally, no pretty table')
 @click.option('--repo',
@@ -1142,7 +1143,7 @@ def nsd_repo_show(ctx, name, repo, version, literal=None, filter=None):
     pkgtype = 'ns'
     pkg_repo_show(ctx, pkgtype, name, repo, version, filter, literal)
 
-@cli_osm.command(name='nspkg-repo-show', short_help='shows the content of a NSD')
+@cli_osm.command(name='nspkg-repo-show', short_help='shows the details of a NS package in an OSM repository')
 @click.option('--literal', is_flag=True,
               help='print literally, no pretty table')
 @click.option('--repo',
@@ -1163,7 +1164,7 @@ def nsd_repo_show2(ctx, name, repo, version, literal=None, filter=None):
     pkgtype = 'ns'
     pkg_repo_show(ctx, pkgtype, name, repo, version, filter, literal)
 
-@cli_osm.command(name='nfpkg-show', short_help='shows the content of a NF Descriptor')
+@cli_osm.command(name='nfpkg-show', short_help='shows the details of a NF package')
 @click.option('--literal', is_flag=True,
               help='print literally, no pretty table')
 @click.argument('name')
@@ -1177,7 +1178,7 @@ def nfpkg_show(ctx, name, literal):
     vnfd_show(ctx, name, literal)
 
 
-@cli_osm.command(name='nfpkg-repo-show', short_help='shows the content of a VNFD')
+@cli_osm.command(name='nfpkg-repo-show', short_help='shows the details of a NF package in an OSM repository')
 @click.option('--literal', is_flag=True,
               help='print literally, no pretty table')
 @click.option('--repo',
@@ -1305,6 +1306,7 @@ def vnf_show(ctx, name, literal, filter, kdu):
             time.sleep(5)
             t += 5
         print ("Could not determine KDU status")
+        return
 
     if literal:
         print(yaml.safe_dump(resp, indent=4, default_flow_style=False))
@@ -3919,7 +3921,7 @@ def upload_package(ctx, filename, skip_charm_build):
 @click.option('--vnf_name', default=None, help='member-vnf-index if the target is a vnf instead of a ns)')
 @click.option('--kdu_name', default=None, help='kdu-name if the target is a kdu)')
 @click.option('--vdu_id', default=None, help='vdu-id if the target is a vdu')
-@click.option('--vdu_count', default=None, help='number of vdu instance of this vdu_id')
+@click.option('--vdu_count', default=None, type=int, help='number of vdu instance of this vdu_id')
 @click.option('--action_name', prompt=True, help='action name')
 @click.option('--params', default=None, help='action params in YAML/JSON inline string')
 @click.option('--params_file', default=None, help='YAML/JSON file with action params')
@@ -3955,7 +3957,7 @@ def ns_action(ctx,
         op_data['kdu_name'] = kdu_name
     if vdu_id:
         op_data['vdu_id'] = vdu_id
-    if vdu_count:
+    if vdu_count is not None:
         op_data['vdu_count_index'] = vdu_count
     if timeout:
         op_data['timeout_ns_action'] = timeout