+
+ table = PrettyTable(['key', 'attribute'])
+ for k, v in resp.items():
+ table.add_row([k, json.dumps(v, indent=2)])
+ table.align = 'l'
+ print(table)
+
+
+####################
+# Other operations
+####################
+
+@cli.command(name='upload-package')
+@click.argument('filename')
+@click.pass_context
+def upload_package(ctx, filename):
+ '''uploads a VNF package or NS package
+
+ FILENAME: VNF or NS package file (tar.gz)
+ '''
+ try:
+ ctx.obj.package.upload(filename)
+ fullclassname = ctx.obj.__module__ + "." + ctx.obj.__class__.__name__
+ if fullclassname != 'osmclient.sol005.client.Client':
+ ctx.obj.package.wait_for_upload(filename)
+ except ClientException as inst:
+ print(inst.message)
+ exit(1)
+
+
+@cli.command(name='ns-scaling-show')
+@click.argument('ns_name')
+@click.pass_context
+def show_ns_scaling(ctx, ns_name):
+ check_client_version(ctx.obj, ctx.command.name, 'v1')
+ resp = ctx.obj.ns.list()
+
+ table = PrettyTable(
+ ['group-name',
+ 'instance-id',
+ 'operational status',
+ 'create-time',
+ 'vnfr ids'])
+
+ for ns in resp:
+ if ns_name == ns['name']:
+ nsopdata = ctx.obj.ns.get_opdata(ns['id'])
+ scaling_records = nsopdata['nsr:nsr']['scaling-group-record']
+ for record in scaling_records:
+ if 'instance' in record:
+ instances = record['instance']
+ for inst in instances:
+ table.add_row(
+ [record['scaling-group-name-ref'],
+ inst['instance-id'],
+ inst['op-status'],
+ time.strftime('%Y-%m-%d %H:%M:%S',
+ time.localtime(
+ inst['create-time'])),
+ inst['vnfrs']])
+ table.align = 'l'
+ print(table)
+
+
+@cli.command(name='ns-scale')
+@click.argument('ns_name')
+@click.option('--ns_scale_group', prompt=True)
+@click.option('--index', prompt=True)
+@click.pass_context
+def ns_scale(ctx, ns_name, ns_scale_group, index):
+ check_client_version(ctx.obj, ctx.command.name, 'v1')
+ ctx.obj.ns.scale(ns_name, ns_scale_group, index)
+
+
+@cli.command(name='config-agent-list')
+@click.pass_context
+def config_agent_list(ctx):
+ check_client_version(ctx.obj, ctx.command.name, 'v1')
+ table = PrettyTable(['name', 'account-type', 'details'])
+ for account in ctx.obj.vca.list():
+ table.add_row(
+ [account['name'],
+ account['account-type'],
+ account['juju']])
+ table.align = 'l'