+def nst_create(ctx, filename, overwrite):
+ try:
+ check_client_version(ctx.obj, ctx.command.name)
+ ctx.obj.nst.create(filename, overwrite)
+ except ClientException as inst:
+ print((inst.message))
+ exit(1)
+
+
+@cli.command(name='nst-create', short_help='creates a new Network Slice Template (NST)')
+@click.argument('filename')
+@click.option('--overwrite', default=None,
+ help='overwrites some fields in NST')
+@click.pass_context
+def nst_create1(ctx, filename, overwrite):
+ '''creates a new Network Slice Template (NST)
+
+ FILENAME: NST yaml file or NSTpkg tar.gz file
+ '''
+ nst_create(ctx, filename, overwrite)
+
+
+@cli.command(name='netslice-template-create', short_help='creates a new Network Slice Template (NST)')
+@click.argument('filename')
+@click.option('--overwrite', default=None,
+ help='overwrites some fields in NST')
+@click.pass_context
+def nst_create2(ctx, filename, overwrite):
+ '''creates a new Network Slice Template (NST)
+
+ FILENAME: NST yaml file or NSTpkg tar.gz file
+ '''
+ nst_create(ctx, filename, overwrite)
+
+
+def nsi_create(ctx, nst_name, nsi_name, vim_account, ssh_keys, config, config_file):
+ '''creates a new Network Slice Instance (NSI)'''
+ try:
+ check_client_version(ctx.obj, ctx.command.name)
+ if config_file:
+ if config:
+ raise ClientException('"--config" option is incompatible with "--config_file" option')
+ with open(config_file, 'r') as cf:
+ config=cf.read()
+ ctx.obj.nsi.create(nst_name, nsi_name, config=config, ssh_keys=ssh_keys,
+ account=vim_account)
+ except ClientException as inst:
+ print((inst.message))
+ exit(1)
+
+
+@cli.command(name='nsi-create', short_help='creates a new Network Slice Instance')
+@click.option('--nsi_name', prompt=True, help='name of the Network Slice Instance')
+@click.option('--nst_name', prompt=True, help='name of the Network Slice Template')
+@click.option('--vim_account', prompt=True, help='default VIM account id or name for the deployment')
+@click.option('--ssh_keys', default=None,
+ help='comma separated list of keys to inject to vnfs')
+@click.option('--config', default=None,
+ help='Netslice specific yaml configuration:\n'
+ 'netslice_subnet: [\n'
+ 'id: TEXT, vim_account: TEXT,\n'
+ 'vnf: [member-vnf-index: TEXT, vim_account: TEXT]\n'
+ 'vld: [name: TEXT, vim-network-name: TEXT or DICT with vim_account, vim_net entries]'
+ '],\n'
+ 'netslice-vld: [name: TEXT, vim-network-name: TEXT or DICT with vim_account, vim_net entries]'
+ )
+@click.option('--config_file',
+ default=None,
+ help='nsi specific yaml configuration file')
+@click.pass_context
+def nsi_create1(ctx, nst_name, nsi_name, vim_account, ssh_keys, config, config_file):
+ '''creates a new Network Slice Instance (NSI)'''
+ nsi_create(ctx, nst_name, nsi_name, vim_account, ssh_keys, config, config_file)
+
+
+@cli.command(name='netslice-instance-create', short_help='creates a new Network Slice Instance')
+@click.option('--nsi_name', prompt=True, help='name of the Network Slice Instance')
+@click.option('--nst_name', prompt=True, help='name of the Network Slice Template')
+@click.option('--vim_account', prompt=True, help='default VIM account id or name for the deployment')
+@click.option('--ssh_keys', default=None,
+ help='comma separated list of keys to inject to vnfs')
+@click.option('--config', default=None,
+ help='Netslice specific yaml configuration:\n'
+ 'netslice_subnet: [\n'
+ 'id: TEXT, vim_account: TEXT,\n'
+ 'vnf: [member-vnf-index: TEXT, vim_account: TEXT]\n'
+ 'vld: [name: TEXT, vim-network-name: TEXT or DICT with vim_account, vim_net entries]'
+ '],\n'
+ 'netslice-vld: [name: TEXT, vim-network-name: TEXT or DICT with vim_account, vim_net entries]'
+ )
+@click.option('--config_file',
+ default=None,
+ help='nsi specific yaml configuration file')
+@click.pass_context
+def nsi_create2(ctx, nst_name, nsi_name, vim_account, ssh_keys, config, config_file):
+ '''creates a new Network Slice Instance (NSI)'''
+ nsi_create(ctx, nst_name, nsi_name, vim_account, ssh_keys, config, config_file)
+
+