+####################
+# SHOW operations
+####################
+
+def nsd_show(ctx, name, literal):
+ try:
+ resp = ctx.obj.nsd.get(name)
+ #resp = ctx.obj.nsd.get_individual(name)
+ except ClientException as inst:
+ print(inst.message)
+ exit(1)
+
+ if literal:
+ print yaml.safe_dump(resp)
+ return
+
+ table = PrettyTable(['field', 'value'])
+ for k, v in resp.items():
+ table.add_row([k, json.dumps(v, indent=2)])
+ table.align = 'l'
+ print(table)
+
+
+@cli.command(name='nsd-show', short_help='shows the content of a NSD')
+@click.option('--literal', is_flag=True,
+ help='print literally, no pretty table')
+@click.argument('name')
+@click.pass_context
+def nsd_show1(ctx, name, literal):
+ '''shows the content of a NSD
+
+ NAME: name or ID of the NSD/NSpkg
+ '''
+ nsd_show(ctx, name, literal)
+
+
+@cli.command(name='nspkg-show', short_help='shows the content of a NSD')
+@click.option('--literal', is_flag=True,
+ help='print literally, no pretty table')
+@click.argument('name')
+@click.pass_context
+def nsd_show2(ctx, name, literal):
+ '''shows the content of a NSD
+
+ NAME: name or ID of the NSD/NSpkg
+ '''
+ nsd_show(ctx, name, literal)
+
+
+def vnfd_show(ctx, name, literal):
+ try:
+ resp = ctx.obj.vnfd.get(name)
+ #resp = ctx.obj.vnfd.get_individual(name)
+ except ClientException as inst:
+ print(inst.message)
+ exit(1)
+
+ if literal:
+ print yaml.safe_dump(resp)
+ return
+
+ table = PrettyTable(['field', 'value'])
+ for k, v in resp.items():
+ table.add_row([k, json.dumps(v, indent=2)])
+ table.align = 'l'
+ print(table)
+
+
+@cli.command(name='vnfd-show', short_help='shows the content of a VNFD')
+@click.option('--literal', is_flag=True,
+ help='print literally, no pretty table')
+@click.argument('name')
+@click.pass_context
+def vnfd_show1(ctx, name, literal):
+ '''shows the content of a VNFD
+
+ NAME: name or ID of the VNFD/VNFpkg
+ '''
+ vnfd_show(ctx, name, literal)
+
+
+@cli.command(name='vnfpkg-show', short_help='shows the content of a VNFD')
+@click.option('--literal', is_flag=True,
+ help='print literally, no pretty table')
+@click.argument('name')
+@click.pass_context
+def vnfd_show2(ctx, name, literal):
+ '''shows the content of a VNFD
+
+ NAME: name or ID of the VNFD/VNFpkg
+ '''
+ vnfd_show(ctx, name, literal)
+
+
+@cli.command(name='ns-show', short_help='shows the info of a NS instance')
+@click.argument('name')
+@click.option('--literal', is_flag=True,
+ help='print literally, no pretty table')
+@click.option('--filter', default=None)
+@click.pass_context
+def ns_show(ctx, name, literal, filter):
+ '''shows the info of a NS instance
+
+ NAME: name or ID of the NS instance
+ '''
+ try:
+ ns = ctx.obj.ns.get(name)
+ except ClientException as inst:
+ print(inst.message)
+ exit(1)
+
+ if literal:
+ print yaml.safe_dump(resp)
+ return
+
+ table = PrettyTable(['field', 'value'])
+
+ for k, v in ns.items():
+ if filter is None or filter in k:
+ table.add_row([k, json.dumps(v, indent=2)])
+
+ fullclassname = ctx.obj.__module__ + "." + ctx.obj.__class__.__name__
+ if fullclassname != 'osmclient.sol005.client.Client':
+ nsopdata = ctx.obj.ns.get_opdata(ns['id'])
+ nsr_optdata = nsopdata['nsr:nsr']
+ for k, v in nsr_optdata.items():
+ if filter is None or filter in k:
+ table.add_row([k, json.dumps(v, indent=2)])
+ table.align = 'l'
+ print(table)
+
+
+@cli.command(name='vnf-show', short_help='shows the info of a VNF instance')
+@click.argument('name')
+@click.option('--literal', is_flag=True,
+ help='print literally, no pretty table')