vim-update dealing with SDN controller and port mapping
Change-Id: Ia913a3fda961fd47649ca8ee23b4c32d482881d2
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
diff --git a/osmclient/scripts/osm.py b/osmclient/scripts/osm.py
index 570ad8c..2e65121 100755
--- a/osmclient/scripts/osm.py
+++ b/osmclient/scripts/osm.py
@@ -839,14 +839,16 @@
@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,
@@ -863,15 +865,27 @@
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)
diff --git a/osmclient/sol005/sdncontroller.py b/osmclient/sol005/sdncontroller.py
index b11eb06..29b8f68 100644
--- a/osmclient/sol005/sdncontroller.py
+++ b/osmclient/sol005/sdncontroller.py
@@ -52,7 +52,7 @@
postfields_dict=sdn_controller)
if resp:
resp = json.loads(resp)
- print 'RESP: {}'.format(resp)
+ #print 'RESP: {}'.format(resp)
if not resp or 'id' not in resp:
raise ClientException('failed to update SDN controller: '.format(
resp))