X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=osmclient%2Fscripts%2Fosm.py;h=09f61c05c834e9191e4c255f9c1e479ba5457a5f;hb=170b8fd5bdd218a5d9fe6709bd3e9b90a48447c4;hp=75b3be24e29e2811cce1ba3f67260414e21608c3;hpb=e4a7ea18501cbebdfc32cb3e0ca34f90e33e5583;p=osm%2Fosmclient.git diff --git a/osmclient/scripts/osm.py b/osmclient/scripts/osm.py index 75b3be2..09f61c0 100755 --- a/osmclient/scripts/osm.py +++ b/osmclient/scripts/osm.py @@ -243,6 +243,27 @@ def vnf_list(ctx): table.align = 'l' print(table) +@cli.command(name='ns-op-list') +@click.argument('name') +@click.pass_context +def ns_op_list(ctx, name): + '''shows the history of operations over a NS instance + + NAME: name or ID of the NS instance + ''' + try: + check_client_version(ctx.obj, ctx.command.name) + resp = ctx.obj.ns.list_op(name) + except ClientException as inst: + print(inst.message) + exit(1) + + table = PrettyTable(['id', 'operation', 'status']) + for op in resp: + table.add_row([op['id'], op['lcmOperationType'], + op['operationState']]) + table.align = 'l' + print(table) #################### # SHOW operations @@ -451,6 +472,29 @@ def ns_monitoring_show(ctx, ns_name): table.align = 'l' print(table) +@cli.command(name='ns-op-show', short_help='shows the info of an operation') +@click.argument('id') +@click.option('--filter', default=None) +@click.pass_context +def ns_op_show(ctx, id, filter): + '''shows the detailed info of an operation + + ID: operation identifier + ''' + try: + check_client_version(ctx.obj, ctx.command.name) + op_info = ctx.obj.ns.get_op(id) + except ClientException as inst: + print(inst.message) + exit(1) + + table = PrettyTable(['field', 'value']) + for k, v in op_info.items(): + if filter is None or filter in k: + table.add_row([k, json.dumps(v, indent=2)]) + table.align = 'l' + print(table) + #################### # CREATE operations @@ -882,6 +926,182 @@ def vim_show(ctx, name): print(table) +#################### +# SDN controller operations +#################### + +@cli.command(name='sdnc-create') +@click.option('--name', + prompt=True, + help='Name to create sdn controller') +@click.option('--type', + prompt=True, + help='SDN controller type') +@click.option('--sdn_controller_version', + help='SDN controller username') +@click.option('--ip_address', + prompt=True, + help='SDN controller IP address') +@click.option('--port', + prompt=True, + help='SDN controller port') +@click.option('--switch_dpid', + prompt=True, + help='Switch DPID (Openflow Datapath ID)') +@click.option('--user', + help='SDN controller username') +@click.option('--password', + hide_input=True, + confirmation_prompt=True, + help='SDN controller password') +#@click.option('--description', +# default='no description', +# help='human readable description') +@click.pass_context +def sdnc_create(ctx, + name, + type, + sdn_controller_version, + ip_address, + port, + switch_dpid, + user, + password): + '''creates a new SDN controller + ''' + sdncontroller = {} + sdncontroller['name'] = name + sdncontroller['type'] = type + sdncontroller['ip'] = ip_address + sdncontroller['port'] = int(port) + sdncontroller['dpid'] = switch_dpid + if sdn_controller_version: + sdncontroller['version'] = sdn_controller_version + if user: + sdncontroller['user'] = user + if password: + sdncontroller['password'] = password +# sdncontroller['description'] = description + try: + check_client_version(ctx.obj, ctx.command.name) + ctx.obj.sdnc.create(name, sdncontroller) + except ClientException as inst: + print(inst.message) + + +@cli.command(name='sdnc-update', short_help='updates an SDN controller') +@click.argument('name') +@click.option('--newname', help='New name for the SDN controller') +@click.option('--type', help='SDN controller type') +@click.option('--sdn_controller_version', help='SDN controller username') +@click.option('--ip_address', help='SDN controller IP address') +@click.option('--port', help='SDN controller port') +@click.option('--switch_dpid', help='Switch DPID (Openflow Datapath ID)') +@click.option('--user', help='SDN controller username') +@click.option('--password', help='SDN controller password') +#@click.option('--description', default=None, help='human readable description') +@click.pass_context +def sdnc_update(ctx, + name, + newname, + type, + sdn_controller_version, + ip_address, + port, + switch_dpid, + user, + password): + '''updates an SDN controller + + NAME: name or ID of the SDN controller + ''' + sdncontroller = {} + if newname: sdncontroller['name'] = newname + if type: sdncontroller['type'] = type + if ip_address: sdncontroller['ip'] = ip_address + if port: sdncontroller['port'] = int(port) + if switch_dpid: sdncontroller['dpid'] = switch_dpid +# sdncontroller['description'] = description + if sdn_controller_version is not None: + if sdn_controller_version=="": + sdncontroller['version'] = None + else: + sdncontroller['version'] = sdn_controller_version + if user is not None: + if user=="": + sdncontroller['user'] = None + else: + sdncontroller['user'] = user + if password is not None: + if password=="": + sdncontroller['password'] = None + else: + sdncontroller['password'] = user + try: + check_client_version(ctx.obj, ctx.command.name) + ctx.obj.sdnc.update(name, sdncontroller) + except ClientException as inst: + print(inst.message) + exit(1) + + +@cli.command(name='sdnc-delete') +@click.argument('name') +@click.pass_context +def sdnc_delete(ctx, name): + '''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) + except ClientException as inst: + print(inst.message) + exit(1) + + +@cli.command(name='sdnc-list') +@click.option('--filter', default=None, + help='restricts the list to the SDN controllers matching the filter') +@click.pass_context +def sdnc_list(ctx, filter): + '''list all SDN controllers''' + try: + check_client_version(ctx.obj, ctx.command.name) + resp = ctx.obj.sdnc.list(filter) + except ClientException as inst: + print(inst.message) + exit(1) + table = PrettyTable(['name', 'id']) + for sdnc in resp: + table.add_row([sdnc['name'], sdnc['_id']]) + table.align = 'l' + print(table) + + +@cli.command(name='sdnc-show') +@click.argument('name') +@click.pass_context +def sdnc_show(ctx, name): + '''shows the details of an SDN controller + + NAME: name or ID of the SDN controller + ''' + try: + check_client_version(ctx.obj, ctx.command.name) + resp = ctx.obj.sdnc.get(name) + except ClientException as inst: + print(inst.message) + exit(1) + + table = PrettyTable(['key', 'attribute']) + for k, v in resp.items(): + table.add_row([k, json.dumps(v, indent=2)]) + table.align = 'l' + print(table) + + #################### # Other operations #################### @@ -1020,5 +1240,34 @@ def vcs_list(ctx): print(table) +@cli.command(name='ns-action') +@click.argument('ns_name') +@click.option('--vnf_name', default=None) +@click.option('--action_name', prompt=True) +@click.option('--params', prompt=True) +@click.pass_context +def ns_action(ctx, + ns_name, + vnf_name, + action_name, + params): + '''executes an action/primitive over a NS instance + + NS_NAME: name or ID of the NS instance + ''' + try: + check_client_version(ctx.obj, ctx.command.name) + op_data={} + if vnf_name: + op_data['vnf_member_index'] = vnf_name + op_data['primitive'] = action_name + op_data['primitive_params'] = yaml.load(params) + ctx.obj.ns.exec_op(ns_name, op_name='action', op_data=op_data) + + except ClientException as inst: + print(inst.message) + exit(1) + + if __name__ == '__main__': cli()