X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fscripts%2Fosm.py;h=6e0dc9ede7aac9f45512a2e0e008a30d59b71cfa;hb=refs%2Fchanges%2F38%2F8738%2F9;hp=fe5318ba43924335d5c2b3a085120c6fa5f08cfa;hpb=023c84a4286cdb8e9b5f1e9c998935701e5116aa;p=osm%2Fosmclient.git diff --git a/osmclient/scripts/osm.py b/osmclient/scripts/osm.py index fe5318b..6e0dc9e 100755 --- a/osmclient/scripts/osm.py +++ b/osmclient/scripts/osm.py @@ -359,8 +359,8 @@ def ns_list(ctx, filter, long): vim = vim_name current_operation = "{} ({})".format(nsr['currentOperation'],nsr['currentOperationID']) error_details = "N/A" - if ns_state == "BROKEN" or ns_state == "DEGRADED": - error_details = "{}\nDetail: {}".format(nsr['errorDescription'],nsr['errorDetail']) + if ns_state == "BROKEN" or ns_state == "DEGRADED" or nsr['errorDescription']: + error_details = "{}\nDetail: {}".format(nsr['errorDescription'], nsr['errorDetail']) else: nsopdata = ctx.obj.ns.get_opdata(ns['id']) nsr = nsopdata['nsr:nsr'] @@ -711,13 +711,13 @@ def ns_op_list(ctx, name, long): action_name = op['operationParams']['primitive'] detail = "-" if op['operationState']=='PROCESSING': - if op['lcmOperationType']=='instantiate': + if op['lcmOperationType'] in ('instantiate', 'terminate'): if op['stage']: detail = op['stage'] else: detail = "In queue. Current position: {}".format(op['queuePosition']) - elif op['operationState']=='FAILED' or op['operationState']=='FAILED_TEMP': - detail = op['errorMessage'] + elif op['operationState'] in ('FAILED', 'FAILED_TEMP'): + detail = op.get('errorMessage','-') date = datetime.fromtimestamp(op['startTime']).strftime("%Y-%m-%dT%H:%M:%S") last_update = datetime.fromtimestamp(op['statusEnteredTime']).strftime("%Y-%m-%dT%H:%M:%S") if long: @@ -731,7 +731,7 @@ def ns_op_list(ctx, name, long): wrap_text(text=detail,width=50)]) else: table.add_row([op['id'], op['lcmOperationType'], action_name, - op['operationState'], date, wrap_text(text=detail,width=50)]) + op['operationState'], date, wrap_text(text=detail or "",width=50)]) table.align = 'l' print(table) @@ -1971,6 +1971,9 @@ def nfpkg_delete(ctx, name, force): @cli_osm.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.option('--config', default=None, + help="specific yaml configuration for the termination, e.g. '{autoremove: False, timeout_ns_terminate: " + "600, skip_terminate_primitives: True}'") @click.option('--wait', required=False, default=False, @@ -1978,7 +1981,7 @@ def nfpkg_delete(ctx, name, force): help='do not return the control immediately, but keep it ' 'until the operation is completed, or timeout') @click.pass_context -def ns_delete(ctx, name, force, wait): +def ns_delete(ctx, name, force, config, wait): """deletes a NS instance NAME: name or ID of the NS instance to be deleted @@ -1986,10 +1989,10 @@ def ns_delete(ctx, name, force, wait): logger.debug("") # try: if not force: - ctx.obj.ns.delete(name, wait=wait) + ctx.obj.ns.delete(name, config=config, wait=wait) else: check_client_version(ctx.obj, '--force') - ctx.obj.ns.delete(name, force, wait=wait) + ctx.obj.ns.delete(name, force, config=config, wait=wait) # except ClientException as e: # print(str(e)) # exit(1) @@ -2177,7 +2180,8 @@ def vim_create(ctx, @click.option('--config', help='VIM specific config parameters') @click.option('--account_type', help='VIM type') @click.option('--description', 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_controller', default=None, help='Name or id of the SDN controller to be associated with this VIM' + 'account. Use empty string to disassociate') @click.option('--sdn_port_mapping', default=None, help="File describing the port mapping between compute nodes' ports and switch ports") @click.option('--wait', required=False, @@ -2505,9 +2509,10 @@ def wim_show(ctx, name): @click.option('--port', # hidden=True, help='Deprecated. Use --url') @click.option('--switch_dpid', # hidden=True, - help='Deprecated. Use --config {dpid: DPID}') + help='Deprecated. Use --config {switch_id: DPID}') @click.option('--config', - help='Extra information for SDN in yaml format, as {dpid: (Openflow Datapath ID), version: version}') + help='Extra information for SDN in yaml format, as {switch_id: identity used for the plugin (e.g. DPID: ' + 'Openflow Datapath ID), version: version}') @click.option('--user', help='SDN controller username') @click.option('--password', @@ -2527,16 +2532,16 @@ def sdnc_create(ctx, **kwargs): sdncontroller = {x: kwargs[x] for x in kwargs if kwargs[x] and x not in ("wait", "ip_address", "port", "switch_dpid")} if kwargs.get("port"): - print("option '--port' is deprecated, use '-url' instead") + print("option '--port' is deprecated, use '--url' instead") sdncontroller["port"] = int(kwargs["port"]) if kwargs.get("ip_address"): - print("option '--ip_address' is deprecated, use '-url' instead") + print("option '--ip_address' is deprecated, use '--url' instead") sdncontroller["ip"] = kwargs["ip_address"] if kwargs.get("switch_dpid"): - print("option '--switch_dpid' is deprecated, use '---config={dpid: DPID}' instead") + print("option '--switch_dpid' is deprecated, use '--config={switch_id: id|DPID}' instead") sdncontroller["dpid"] = kwargs["switch_dpid"] if kwargs.get("sdn_controller_version"): - print("option '--sdn_controller_version' is deprecated, use '---config={version: SDN_CONTROLLER_VERSION}'" + print("option '--sdn_controller_version' is deprecated, use '--config={version: SDN_CONTROLLER_VERSION}'" " instead") # try: check_client_version(ctx.obj, ctx.command.name) @@ -2552,7 +2557,8 @@ def sdnc_create(ctx, **kwargs): @click.option('--type', help='SDN controller type') @click.option('--url', help='URL in format http[s]://HOST:IP/') @click.option('--config', help='Extra information for SDN in yaml format, as ' - '{dpid: (Openflow Datapath ID), version: version}') + '{switch_id: identity used for the plugin (e.g. DPID: ' + 'Openflow Datapath ID), version: version}') @click.option('--user', help='SDN controller username') @click.option('--password', help='SDN controller password') @click.option('--ip_address', help='Deprecated. Use --url') # hidden=True @@ -2573,13 +2579,13 @@ def sdnc_update(ctx, **kwargs): if kwargs.get("newname"): sdncontroller["name"] = kwargs["newname"] if kwargs.get("port"): - print("option '--port' is deprecated, use '-url' instead") + print("option '--port' is deprecated, use '--url' instead") sdncontroller["port"] = int(kwargs["port"]) if kwargs.get("ip_address"): - print("option '--ip_address' is deprecated, use '-url' instead") + print("option '--ip_address' is deprecated, use '--url' instead") sdncontroller["ip"] = kwargs["ip_address"] if kwargs.get("switch_dpid"): - print("option '--switch_dpid' is deprecated, use '---config={dpid: DPID}' instead") + print("option '--switch_dpid' is deprecated, use '--config={switch_id: id|DPID}' instead") sdncontroller["dpid"] = kwargs["switch_dpid"] if kwargs.get("sdn_controller_version"): print("option '--sdn_controller_version' is deprecated, use '---config={version: SDN_CONTROLLER_VERSION}'" @@ -3121,7 +3127,7 @@ def project_update(ctx, project, name): help='list of project ids that the user belongs to') @click.option('--project-role-mappings', 'project_role_mappings', default=None, multiple=True, - help='creating user project/role(s) mapping') + help="assign role(s) in a project. Can be used several times: 'project,role1[,role2,...]'") @click.option('--domain-name', 'domain_name', default=None, help='assign to a domain') @@ -3165,16 +3171,16 @@ def user_create(ctx, username, password, projects, project_role_mappings, domain help='change username') @click.option('--set-project', 'set_project', default=None, multiple=True, - help='create/replace the project,role(s) mapping for this project: \'project,role1,role2,...\'') + help="create/replace the roles for this project: 'project,role1[,role2,...]'") @click.option('--remove-project', 'remove_project', default=None, multiple=True, - help='removes project from user: \'project\'') + help="removes project from user: 'project'") @click.option('--add-project-role', 'add_project_role', default=None, multiple=True, - help='adds project,role(s) mapping: \'project,role1,role2,...\'') + help="assign role(s) in a project. Can be used several times: 'project,role1[,role2,...]'") @click.option('--remove-project-role', 'remove_project_role', default=None, multiple=True, - help='removes project,role(s) mapping: \'project,role1,role2,...\'') + help="remove role(s) in a project. Can be used several times: 'project,role1[,role2,...]'") @click.pass_context def user_update(ctx, username, password, set_username, set_project, remove_project, add_project_role, remove_project_role): @@ -3627,13 +3633,16 @@ def ns_action(ctx, @click.option('--scaling-group', prompt=True, help="scaling-group-descriptor name to use") @click.option('--scale-in', default=False, is_flag=True, help="performs a scale in operation") @click.option('--scale-out', default=False, is_flag=True, help="performs a scale out operation (by default)") +@click.option('--wait', required=False, default=False, is_flag=True, + help='do not return the control immediately, but keep it until the operation is completed, or timeout') @click.pass_context def vnf_scale(ctx, ns_name, vnf_name, scaling_group, scale_in, - scale_out): + scale_out, + wait): """ Executes a VNF scale (adding/removing VDUs) @@ -3646,7 +3655,7 @@ def vnf_scale(ctx, check_client_version(ctx.obj, ctx.command.name) if not scale_in and not scale_out: scale_out = True - ctx.obj.ns.scale_vnf(ns_name, vnf_name, scaling_group, scale_in, scale_out) + ctx.obj.ns.scale_vnf(ns_name, vnf_name, scaling_group, scale_in, scale_out, wait) # except ClientException as e: # print(str(e)) # exit(1)