X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fscripts%2Fosm.py;h=2e65121270de2bc43275799c68f66eddf6ebab23;hb=f75ef1bf8e7fe0501853ee425394c0dcd3d90068;hp=bcca77ac785dce859d632ef590399ffac88d1e20;hpb=e72ec7ea92c7169509ea91973524289cbb92449f;p=osm%2Fosmclient.git diff --git a/osmclient/scripts/osm.py b/osmclient/scripts/osm.py index bcca77a..2e65121 100755 --- a/osmclient/scripts/osm.py +++ b/osmclient/scripts/osm.py @@ -687,9 +687,13 @@ def vnfd_update2(ctx, name, content): # 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) @@ -697,29 +701,35 @@ def nsd_delete(ctx, name): @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) @@ -727,36 +737,43 @@ def vnfd_delete(ctx, name): @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) @@ -822,14 +839,16 @@ def vim_create(ctx, @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, @@ -846,15 +865,27 @@ def vim_update(ctx, 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) @@ -865,14 +896,19 @@ def vim_update(ctx, @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) @@ -1047,15 +1083,16 @@ def sdnc_update(ctx, @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) @@ -1120,16 +1157,18 @@ def sdnc_show(ctx, name): @click.option('--threshold_value', prompt=True, help='threshold value that, when crossed, an alarm is triggered') @click.option('--threshold_operator', prompt=True, - help='threshold operator describing the comparison (GE, LE, GT, LT, EQ') + help='threshold operator describing the comparison (GE, LE, GT, LT, EQ)') @click.option('--statistic', default='AVERAGE', help='statistic (AVERAGE, MINIMUM, MAXIMUM, COUNT, SUM)') @click.pass_context def ns_alarm_create(ctx, name, ns, vnf, vdu, metric, severity, threshold_value, threshold_operator, statistic): '''creates a new alarm for a NS instance''' + ns_instance = ctx.obj.ns.get(ns) alarm = {} alarm['alarm_name'] = name - alarm['ns_name'] = ns + alarm['ns_id'] = ns_instance['_id'] + alarm['correlation_id'] = ns_instance['_id'] alarm['vnf_member_index'] = vnf alarm['vdu_name'] = vdu alarm['metric_name'] = metric @@ -1145,20 +1184,20 @@ def ns_alarm_create(ctx, name, ns, vnf, vdu, metric, severity, exit(1) -@cli.command(name='ns-alarm-delete') -@click.argument('name') -@click.pass_context -def ns_alarm_delete(ctx, name): - '''deletes an alarm - - NAME: name of the alarm to be deleted - ''' - try: - check_client_version(ctx.obj, ctx.command.name) - ctx.obj.ns.delete_alarm(name) - except ClientException as inst: - print(inst.message) - exit(1) +#@cli.command(name='ns-alarm-delete') +#@click.argument('name') +#@click.pass_context +#def ns_alarm_delete(ctx, name): +# '''deletes an alarm +# +# NAME: name of the alarm to be deleted +# ''' +# try: +# check_client_version(ctx.obj, ctx.command.name) +# ctx.obj.ns.delete_alarm(name) +# except ClientException as inst: +# print(inst.message) +# exit(1) #################### @@ -1180,8 +1219,10 @@ def ns_alarm_delete(ctx, name): def ns_metric_export(ctx, ns, vnf, vdu, metric, interval): '''exports a metric to the internal OSM bus, which can be read by other apps ''' + ns_instance = ctx.obj.ns.get(ns) metric_data = {} - metric_data['ns_name'] = ns + metric_data['ns_id'] = ns_instance['_id'] + metric_data['correlation_id'] = ns_instance['_id'] metric_data['vnf_member_index'] = vnf metric_data['vdu_name'] = vdu metric_data['metric_name'] = metric @@ -1190,11 +1231,11 @@ def ns_metric_export(ctx, ns, vnf, vdu, metric, interval): try: check_client_version(ctx.obj, ctx.command.name) if not interval: - ctx.obj.ns.export_metric(metric_data) + print '{}'.format(ctx.obj.ns.export_metric(metric_data)) else: i = 1 while True: - ctx.obj.ns.export_metric(metric_data) + print '{} {}'.format(ctx.obj.ns.export_metric(metric_data),i) time.sleep(int(interval)) i+=1 except ClientException as inst: