X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fscripts%2Fosm.py;h=8cde343bdc70aca54584a49cc8da0355cc71c9e8;hb=refs%2Fchanges%2F07%2F8607%2F1;hp=e3e2a284dd453b0f016a9a5967c7020365a07309;hpb=566a8c34fbf1d676a0acd725f6f30fce8baf8c0a;p=osm%2Fosmclient.git diff --git a/osmclient/scripts/osm.py b/osmclient/scripts/osm.py index e3e2a28..8cde343 100755 --- a/osmclient/scripts/osm.py +++ b/osmclient/scripts/osm.py @@ -379,7 +379,7 @@ def ns_list(ctx, filter, long): print('To get the history of all operations over a NS, run "osm ns-op-list NS_ID"') print('For more details on the current operation, run "osm ns-op-show OPERATION_ID"') -def nsd_list(ctx, filter): +def nsd_list(ctx, filter, long): logger.debug("") if filter: check_client_version(ctx.obj, '--filter') @@ -387,15 +387,28 @@ def nsd_list(ctx, filter): else: resp = ctx.obj.nsd.list() # print(yaml.safe_dump(resp)) - table = PrettyTable(['nsd name', 'id']) fullclassname = ctx.obj.__module__ + "." + ctx.obj.__class__.__name__ if fullclassname == 'osmclient.sol005.client.Client': - for ns in resp: - name = ns['name'] if 'name' in ns else '-' - table.add_row([name, ns['_id']]) + if long: + table = PrettyTable(['nsd name', 'id', 'onboarding state', 'operational state', + 'usage state', 'date', 'last update']) + else: + table = PrettyTable(['nsd name', 'id']) + for nsd in resp: + name = nsd.get('name','-') + if long: + onb_state = nsd['_admin'].get('onboardingState','-') + op_state = nsd['_admin'].get('operationalState','-') + usage_state = nsd['_admin'].get('usageState','-') + date = datetime.fromtimestamp(nsd['_admin']['created']).strftime("%Y-%m-%dT%H:%M:%S") + last_update = datetime.fromtimestamp(nsd['_admin']['modified']).strftime("%Y-%m-%dT%H:%M:%S") + table.add_row([name, nsd['_id'], onb_state, op_state, usage_state, date, last_update]) + else: + table.add_row([name, nsd['_id']]) else: - for ns in resp: - table.add_row([ns['name'], ns['id']]) + table = PrettyTable(['nsd name', 'id']) + for nsd in resp: + table.add_row([nsd['name'], nsd['id']]) table.align = 'l' print(table) @@ -403,24 +416,26 @@ def nsd_list(ctx, filter): @cli_osm.command(name='nsd-list', short_help='list all NS packages') @click.option('--filter', default=None, help='restricts the list to the NSD/NSpkg matching the filter') +@click.option('--long', is_flag=True, help='get more details') @click.pass_context -def nsd_list1(ctx, filter): +def nsd_list1(ctx, filter, long): """list all NSD/NS pkg in the system""" logger.debug("") - nsd_list(ctx, filter) + nsd_list(ctx, filter, long) @cli_osm.command(name='nspkg-list', short_help='list all NS packages') @click.option('--filter', default=None, help='restricts the list to the NSD/NSpkg matching the filter') +@click.option('--long', is_flag=True, help='get more details') @click.pass_context -def nsd_list2(ctx, filter): +def nsd_list2(ctx, filter, long): """list all NS packages""" logger.debug("") - nsd_list(ctx, filter) + nsd_list(ctx, filter, long) -def vnfd_list(ctx, nf_type, filter): +def vnfd_list(ctx, nf_type, filter, long): logger.debug("") if nf_type: check_client_version(ctx.obj, '--nf_type') @@ -444,13 +459,26 @@ def vnfd_list(ctx, nf_type, filter): else: resp = ctx.obj.vnfd.list() # print(yaml.safe_dump(resp)) - table = PrettyTable(['nfpkg name', 'id']) fullclassname = ctx.obj.__module__ + "." + ctx.obj.__class__.__name__ if fullclassname == 'osmclient.sol005.client.Client': + if long: + table = PrettyTable(['nfpkg name', 'id', 'onboarding state', 'operational state', + 'usage state', 'date', 'last update']) + else: + table = PrettyTable(['nfpkg name', 'id']) for vnfd in resp: name = vnfd['name'] if 'name' in vnfd else '-' - table.add_row([name, vnfd['_id']]) + if long: + onb_state = vnfd['_admin'].get('onboardingState','-') + op_state = vnfd['_admin'].get('operationalState','-') + usage_state = vnfd['_admin'].get('usageState','-') + date = datetime.fromtimestamp(vnfd['_admin']['created']).strftime("%Y-%m-%dT%H:%M:%S") + last_update = datetime.fromtimestamp(vnfd['_admin']['modified']).strftime("%Y-%m-%dT%H:%M:%S") + table.add_row([name, vnfd['_id'], onb_state, op_state, usage_state, date, last_update]) + else: + table.add_row([name, vnfd['_id']]) else: + table = PrettyTable(['nfpkg name', 'id']) for vnfd in resp: table.add_row([vnfd['name'], vnfd['id']]) table.align = 'l' @@ -461,41 +489,44 @@ def vnfd_list(ctx, nf_type, filter): @click.option('--nf_type', help='type of NF (vnf, pnf, hnf)') @click.option('--filter', default=None, help='restricts the list to the NF pkg matching the filter') +@click.option('--long', is_flag=True, help='get more details') @click.pass_context -def vnfd_list1(ctx, nf_type, filter): +def vnfd_list1(ctx, nf_type, filter, long): """list all xNF packages (VNF, HNF, PNF)""" logger.debug("") - vnfd_list(ctx, nf_type, filter) + vnfd_list(ctx, nf_type, filter, long) @cli_osm.command(name='vnfpkg-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, help='restricts the list to the NFpkg matching the filter') +@click.option('--long', is_flag=True, help='get more details') @click.pass_context -def vnfd_list2(ctx, nf_type, filter): +def vnfd_list2(ctx, nf_type, filter, long): """list all xNF packages (VNF, HNF, PNF)""" logger.debug("") - vnfd_list(ctx, nf_type, filter) + vnfd_list(ctx, nf_type, filter, 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, help='restricts the list to the NFpkg matching the filter') +@click.option('--long', is_flag=True, help='get more details') @click.pass_context -def nfpkg_list(ctx, nf_type, filter): +def nfpkg_list(ctx, nf_type, filter, long): """list all xNF packages (VNF, HNF, PNF)""" logger.debug("") # try: check_client_version(ctx.obj, ctx.command.name) - vnfd_list(ctx, nf_type, filter) + vnfd_list(ctx, nf_type, filter, long) # except ClientException as e: # print(str(e)) # exit(1) -def vnf_list(ctx, ns, filter): +def vnf_list(ctx, ns, filter, long): # try: if ns or filter: if ns: @@ -510,24 +541,23 @@ def vnf_list(ctx, ns, filter): # exit(1) fullclassname = ctx.obj.__module__ + "." + ctx.obj.__class__.__name__ if fullclassname == 'osmclient.sol005.client.Client': - table = PrettyTable( - ['vnf id', - 'name', - 'ns id', - 'vnf member index', - 'vnfd name', - 'vim account id', - 'ip address']) + field_names = ['vnf id', 'name', 'ns id', 'vnf member index', + 'vnfd name', 'vim account id', 'ip address'] + if long: + field_names = ['vnf id', 'name', 'ns id', 'vnf member index', + 'vnfd name', 'vim account id', 'ip address', + 'date', 'last update'] + table = PrettyTable(field_names) for vnfr in resp: name = vnfr['name'] if 'name' in vnfr else '-' - table.add_row( - [vnfr['_id'], - name, - vnfr['nsr-id-ref'], - vnfr['member-vnf-index-ref'], - vnfr['vnfd-ref'], - vnfr['vim-account-id'], - vnfr['ip-address']]) + new_row = [vnfr['_id'], name, vnfr['nsr-id-ref'], + vnfr['member-vnf-index-ref'], vnfr['vnfd-ref'], + vnfr['vim-account-id'], vnfr['ip-address']] + if long: + date = datetime.fromtimestamp(vnfr['_admin']['created']).strftime("%Y-%m-%dT%H:%M:%S") + last_update = datetime.fromtimestamp(vnfr['_admin']['modified']).strftime("%Y-%m-%dT%H:%M:%S") + new_row.extend([date, last_update]) + table.add_row(new_row) else: table = PrettyTable( ['vnf name', @@ -551,19 +581,21 @@ def vnf_list(ctx, ns, filter): @click.option('--ns', default=None, help='NS instance id or name to restrict the NF list') @click.option('--filter', default=None, help='restricts the list to the NF instances matching the filter.') +@click.option('--long', is_flag=True, help='get more details') @click.pass_context -def vnf_list1(ctx, ns, filter): +def vnf_list1(ctx, ns, filter, long): """list all NF instances""" logger.debug("") - vnf_list(ctx, ns, filter) + vnf_list(ctx, ns, filter, long) @cli_osm.command(name='nf-list', short_help='list all NF instances') @click.option('--ns', default=None, help='NS instance id or name to restrict the NF list') @click.option('--filter', default=None, help='restricts the list to the NF instances matching the filter.') +@click.option('--long', is_flag=True, help='get more details') @click.pass_context -def nf_list(ctx, ns, filter): +def nf_list(ctx, ns, filter, long): """list all NF instances \b @@ -867,7 +899,7 @@ def nsd_show(ctx, name, literal): table = PrettyTable(['field', 'value']) for k, v in list(resp.items()): - table.add_row([k, json.dumps(v, indent=2)]) + table.add_row([k, wrap_text(text=json.dumps(v, indent=2),width=100)]) table.align = 'l' print(table) @@ -915,7 +947,7 @@ def vnfd_show(ctx, name, literal): table = PrettyTable(['field', 'value']) for k, v in list(resp.items()): - table.add_row([k, json.dumps(v, indent=2)]) + table.add_row([k, wrap_text(text=json.dumps(v, indent=2),width=100)]) table.align = 'l' print(table) @@ -2065,7 +2097,7 @@ def pdu_delete(ctx, name, force): default='openstack', help='VIM type') @click.option('--description', - default='no description', + default=None, help='human readable description') @click.option('--sdn_controller', default=None, help='Name or id of the SDN controller associated to this VIM account') @click.option('--sdn_port_mapping', default=None, help="File describing the port mapping between compute nodes' ports and switch ports") @@ -2266,7 +2298,7 @@ def vim_show(ctx, name): @click.option('--wim_type', help='WIM type') @click.option('--description', - default='no description', + default=None, help='human readable description') @click.option('--wim_port_mapping', default=None, help="File describing the port mapping between DC edge (datacenters, switches, ports) and WAN edge " @@ -2620,7 +2652,7 @@ def sdnc_show(ctx, name): prompt=True, help='list of VIM networks, in JSON inline format, where the cluster is accessible via L3 routing, e.g. "{(k8s_net1:vim_network1) [,(k8s_net2:vim_network2) ...]}"') @click.option('--description', - default='', + default=None, help='human readable description') @click.option('--namespace', default='kube-system', @@ -2794,7 +2826,7 @@ def k8scluster_show(ctx, name, literal): prompt=True, help='type of repo (helm-chart for Helm Charts, juju-bundle for Juju Bundles)') @click.option('--description', - default='', + default=None, help='human readable description') #@click.option('--wait', # is_flag=True,