@cli.command(name='vnf-list')
+@click.option('--ns', default=None, help='NS instance id or name to restrict the VNF list')
@click.pass_context
-def vnf_list(ctx):
+def vnf_list(ctx, ns):
''' list all VNF instances'''
try:
- check_client_version(ctx.obj, ctx.command.name, 'v1')
- resp = ctx.obj.vnf.list()
+ if ns:
+ check_client_version(ctx.obj, '--ns')
+ resp = ctx.obj.vnf.list(ns)
+ else:
+ resp = ctx.obj.vnf.list()
except ClientException as inst:
print(inst.message)
exit(1)
NAME: name or ID of the VNF instance
'''
try:
- check_client_version(ctx.obj, ctx.command.name, 'v1')
+ check_client_version(ctx.obj, ctx.command.name)
resp = ctx.obj.vnf.get(name)
except ClientException as inst:
print(inst.message)
# DELETE operations
####################
-def nsd_delete(ctx, name):
+def nsd_delete(ctx, name, force):
try:
- ctx.obj.nsd.delete(name)
+ if not force:
+ ctx.obj.nsd.delete(name)
+ else:
+ check_client_version(ctx.obj, '--force')
+ ctx.obj.nsd.delete(name, force)
except ClientException as inst:
print(inst.message)
exit(1)
@cli.command(name='nsd-delete', short_help='deletes a NSD/NSpkg')
@click.argument('name')
+@click.option('--force', is_flag=True, help='forces the deletion bypassing pre-conditions')
@click.pass_context
-def nsd_delete1(ctx, name):
+def nsd_delete1(ctx, name, force):
'''deletes a NSD/NSpkg
NAME: name or ID of the NSD/NSpkg to be deleted
'''
- nsd_delete(ctx, name)
+ nsd_delete(ctx, name, force)
@cli.command(name='nspkg-delete', short_help='deletes a NSD/NSpkg')
@click.argument('name')
+@click.option('--force', is_flag=True, help='forces the deletion bypassing pre-conditions')
@click.pass_context
-def nsd_delete2(ctx, name):
+def nsd_delete2(ctx, name, force):
'''deletes a NSD/NSpkg
NAME: name or ID of the NSD/NSpkg to be deleted
'''
- nsd_delete(ctx, name)
+ nsd_delete(ctx, name, force)
-def vnfd_delete(ctx, name):
+def vnfd_delete(ctx, name, force):
try:
- ctx.obj.vnfd.delete(name)
+ if not force:
+ ctx.obj.vnfd.delete(name)
+ else:
+ check_client_version(ctx.obj, '--force')
+ ctx.obj.vnfd.delete(name, force)
except ClientException as inst:
print(inst.message)
exit(1)
@cli.command(name='vnfd-delete', short_help='deletes a VNFD/VNFpkg')
@click.argument('name')
+@click.option('--force', is_flag=True, help='forces the deletion bypassing pre-conditions')
@click.pass_context
-def vnfd_delete1(ctx, name):
+def vnfd_delete1(ctx, name, force):
'''deletes a VNFD/VNFpkg
NAME: name or ID of the VNFD/VNFpkg to be deleted
'''
- vnfd_delete(ctx, name)
+ vnfd_delete(ctx, name, force)
@cli.command(name='vnfpkg-delete', short_help='deletes a VNFD/VNFpkg')
@click.argument('name')
+@click.option('--force', is_flag=True, help='forces the deletion bypassing pre-conditions')
@click.pass_context
-def vnfd_delete2(ctx, name):
+def vnfd_delete2(ctx, name, force):
'''deletes a VNFD/VNFpkg
NAME: name or ID of the VNFD/VNFpkg to be deleted
'''
- vnfd_delete(ctx, name)
+ vnfd_delete(ctx, name, force)
@cli.command(name='ns-delete', short_help='deletes a NS instance')
@click.argument('name')
+@click.option('--force', is_flag=True, help='forces the deletion bypassing pre-conditions')
@click.pass_context
-def ns_delete(ctx, name):
+def ns_delete(ctx, name, force):
'''deletes a NS instance
NAME: name or ID of the NS instance to be deleted
'''
try:
- ctx.obj.ns.delete(name)
+ if not force:
+ ctx.obj.ns.delete(name)
+ else:
+ check_client_version(ctx.obj, '--force')
+ ctx.obj.ns.delete(name, force)
except ClientException as inst:
print(inst.message)
exit(1)
@cli.command(name='vim-update', short_help='updates a VIM account')
@click.argument('name')
-@click.option('--newname', default=None, help='New name for the VIM account')
-@click.option('--user', default=None, help='VIM username')
-@click.option('--password', default=None, help='VIM password')
-@click.option('--auth_url', default=None, help='VIM url')
-@click.option('--tenant', default=None, help='VIM tenant name')
-@click.option('--config', default=None, help='VIM specific config parameters')
-@click.option('--account_type', default=None, help='VIM type')
-@click.option('--description', default=None, help='human readable description')
+@click.option('--newname', help='New name for the VIM account')
+@click.option('--user', help='VIM username')
+@click.option('--password', help='VIM password')
+@click.option('--auth_url', help='VIM url')
+@click.option('--tenant', help='VIM tenant name')
+@click.option('--config', help='VIM specific config parameters')
+@click.option('--account_type', help='VIM type')
+@click.option('--sdn_controller', 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")
+@click.option('--description', help='human readable description')
@click.pass_context
def vim_update(ctx,
name,
NAME: name or ID of the VIM account
'''
vim = {}
- if newname:
- vim['name'] = newname
- vim['vim_user'] = user
- vim['vim_password'] = password
- vim['vim_url'] = auth_url
- vim['vim-tenant-name'] = tenant
- vim['config'] = config
- vim['vim_type'] = account_type
- vim['description'] = description
+ if newname: vim['name'] = newname
+ if user: vim['vim_user'] = user
+ if password: vim['vim_password'] = password
+ if auth_url: vim['vim_url'] = auth_url
+ if tenant: vim['vim-tenant-name'] = tenant
+ if account_type: vim['vim_type'] = account_type
+ if description: vim['description'] = description
+ config_dict = {}
+ if config is not None:
+ if config=="" and (sdncontroller or sdn_port_mapping):
+ raise ClientException("clearing config is incompatible with updating SDN info")
+ if config=="":
+ vim['config'] = None
+ else:
+ config_dict = yaml.safe_load(config)
+ if sdn_controller: config_dict['sdn_controller'] = sdn_controller
+ if sdn_port_mapping:
+ with open(sdn_port_mapping, 'r') as f:
+ config_dict['sdn_port_mapping'] = yaml.safe_load(f.read())
+ if 'config' not in vim and config_dict:
+ vim['config'] = yaml.safe_dump(config_dict)
try:
check_client_version(ctx.obj, ctx.command.name)
ctx.obj.vim.update(name, vim)
@cli.command(name='vim-delete')
@click.argument('name')
+@click.option('--force', is_flag=True, help='forces the deletion bypassing pre-conditions')
@click.pass_context
-def vim_delete(ctx, name):
+def vim_delete(ctx, name, force):
'''deletes a VIM account
NAME: name or ID of the VIM account to be deleted
'''
try:
- ctx.obj.vim.delete(name)
+ if not force:
+ ctx.obj.vim.delete(name)
+ else:
+ check_client_version(ctx.obj, '--force')
+ ctx.obj.vim.delete(name, force)
except ClientException as inst:
print(inst.message)
exit(1)
@cli.command(name='sdnc-delete')
@click.argument('name')
+@click.option('--force', is_flag=True, help='forces the deletion bypassing pre-conditions')
@click.pass_context
-def sdnc_delete(ctx, name):
+def sdnc_delete(ctx, name, force):
'''deletes an SDN controller
NAME: name or ID of the SDN controller to be deleted
'''
try:
check_client_version(ctx.obj, ctx.command.name)
- ctx.obj.sdnc.delete(name)
+ ctx.obj.sdnc.delete(name, force)
except ClientException as inst:
print(inst.message)
exit(1)