X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fscripts%2Fosm.py;h=bcca77ac785dce859d632ef590399ffac88d1e20;hb=891e201c4ac9dd5a98ab208027d1ddd75b6aed3b;hp=09f61c05c834e9191e4c255f9c1e479ba5457a5f;hpb=170b8fd5bdd218a5d9fe6709bd3e9b90a48447c4;p=osm%2Fosmclient.git diff --git a/osmclient/scripts/osm.py b/osmclient/scripts/osm.py index 09f61c0..bcca77a 100755 --- a/osmclient/scripts/osm.py +++ b/osmclient/scripts/osm.py @@ -1102,6 +1102,106 @@ def sdnc_show(ctx, name): print(table) +#################### +# Fault Management operations +#################### + +@cli.command(name='ns-alarm-create') +@click.argument('name') +@click.option('--ns', prompt=True, help='NS instance id or name') +@click.option('--vnf', prompt=True, + help='VNF name (VNF member index as declared in the NSD)') +@click.option('--vdu', prompt=True, + help='VDU name (VDU name as declared in the VNFD)') +@click.option('--metric', prompt=True, + help='Name of the metric (e.g. cpu_utilization)') +@click.option('--severity', default='WARNING', + help='severity of the alarm (WARNING, MINOR, MAJOR, CRITICAL, INDETERMINATE)') +@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') +@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''' + alarm = {} + alarm['alarm_name'] = name + alarm['ns_name'] = ns + alarm['vnf_member_index'] = vnf + alarm['vdu_name'] = vdu + alarm['metric_name'] = metric + alarm['severity'] = severity + alarm['threshold_value'] = int(threshold_value) + alarm['operation'] = threshold_operator + alarm['statistic'] = statistic + try: + check_client_version(ctx.obj, ctx.command.name) + ctx.obj.ns.create_alarm(alarm) + 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) + + +#################### +# Performance Management operations +#################### + +@cli.command(name='ns-metric-export') +@click.option('--ns', prompt=True, help='NS instance id or name') +@click.option('--vnf', prompt=True, + help='VNF name (VNF member index as declared in the NSD)') +@click.option('--vdu', prompt=True, + help='VDU name (VDU name as declared in the VNFD)') +@click.option('--metric', prompt=True, + help='name of the metric (e.g. cpu_utilization)') +#@click.option('--period', default='1w', +# help='metric collection period (e.g. 20s, 30m, 2h, 3d, 1w)') +@click.option('--interval', help='periodic interval (seconds) to export metrics continuously') +@click.pass_context +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 + ''' + metric_data = {} + metric_data['ns_name'] = ns + metric_data['vnf_member_index'] = vnf + metric_data['vdu_name'] = vdu + metric_data['metric_name'] = metric + metric_data['collection_unit'] = 'WEEK' + metric_data['collection_period'] = 1 + try: + check_client_version(ctx.obj, ctx.command.name) + if not interval: + ctx.obj.ns.export_metric(metric_data) + else: + i = 1 + while True: + ctx.obj.ns.export_metric(metric_data) + time.sleep(int(interval)) + i+=1 + except ClientException as inst: + print(inst.message) + exit(1) + + #################### # Other operations #################### @@ -1128,8 +1228,16 @@ def upload_package(ctx, filename): @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() + '''shows the status of a NS scaling operation + + NS_NAME: name of the NS instance being scaled + ''' + try: + check_client_version(ctx.obj, ctx.command.name, 'v1') + resp = ctx.obj.ns.list() + except ClientException as inst: + print(inst.message) + exit(1) table = PrettyTable( ['group-name', @@ -1164,14 +1272,27 @@ def show_ns_scaling(ctx, ns_name): @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) + '''scales NS + + NS_NAME: name of the NS instance to be scaled + ''' + try: + check_client_version(ctx.obj, ctx.command.name, 'v1') + ctx.obj.ns.scale(ns_name, ns_scale_group, index) + except ClientException as inst: + print(inst.message) + exit(1) @cli.command(name='config-agent-list') @click.pass_context def config_agent_list(ctx): - check_client_version(ctx.obj, ctx.command.name, 'v1') + '''list config agents''' + try: + check_client_version(ctx.obj, ctx.command.name, 'v1') + except ClientException as inst: + print(inst.message) + exit(1) table = PrettyTable(['name', 'account-type', 'details']) for account in ctx.obj.vca.list(): table.add_row( @@ -1186,6 +1307,10 @@ def config_agent_list(ctx): @click.argument('name') @click.pass_context def config_agent_delete(ctx, name): + '''deletes a config agent + + NAME: name of the config agent to be deleted + ''' try: check_client_version(ctx.obj, ctx.command.name, 'v1') ctx.obj.vca.delete(name) @@ -1209,6 +1334,7 @@ def config_agent_delete(ctx, name): confirmation_prompt=True) @click.pass_context def config_agent_add(ctx, name, account_type, server, user, secret): + '''adds a config agent''' try: check_client_version(ctx.obj, ctx.command.name, 'v1') ctx.obj.vca.create(name, account_type, server, user, secret) @@ -1219,6 +1345,7 @@ def config_agent_add(ctx, name, account_type, server, user, secret): @cli.command(name='ro-dump') @click.pass_context def ro_dump(ctx): + '''shows RO agent information''' check_client_version(ctx.obj, ctx.command.name, 'v1') resp = ctx.obj.vim.get_resource_orchestrator() table = PrettyTable(['key', 'attribute'])