Merge "Implement Tacker MANO API client changes"

This commit is contained in:
Jenkins
2015-09-28 17:34:22 +00:00
committed by Gerrit Code Review
3 changed files with 35 additions and 66 deletions

View File

@@ -67,13 +67,16 @@ class CreateVNF(tackerV10.CreateCommand):
) )
def args2body(self, parsed_args): def args2body(self, parsed_args):
body = {self.resource: {}} args = {'attributes': {}}
body = {self.resource: args}
# config arg passed as data overrides config yaml when both args passed
if parsed_args.config_file: if parsed_args.config_file:
with open(parsed_args.config_file) as f: with open(parsed_args.config_file) as f:
config_yaml = f.read() config_yaml = f.read()
body[self.resource]['config'] = config_yaml args['attributes']['config'] = config_yaml
if parsed_args.config: if parsed_args.config:
body[self.resource]['config'] = parsed_args.config args['attributes']['config'] = parsed_args.config
if parsed_args.vnfd_name: if parsed_args.vnfd_name:
tacker_client = self.get_client() tacker_client = self.get_client()
tacker_client.format = parsed_args.request_format tacker_client.format = parsed_args.request_format
@@ -86,8 +89,7 @@ class CreateVNF(tackerV10.CreateCommand):
if parsed_args.param_file: if parsed_args.param_file:
with open(parsed_args.param_file) as f: with open(parsed_args.param_file) as f:
param_yaml = f.read() param_yaml = f.read()
body[self.resource]['param_values'] = param_yaml args['attributes']['param_values'] = param_yaml
tackerV10.update_dict(parsed_args, body[self.resource], tackerV10.update_dict(parsed_args, body[self.resource],
['tenant_id', 'name', 'vnfd_id']) ['tenant_id', 'name', 'vnfd_id'])
return body return body
@@ -108,12 +110,13 @@ class UpdateVNF(tackerV10.UpdateCommand):
def args2body(self, parsed_args): def args2body(self, parsed_args):
body = {self.resource: {}} body = {self.resource: {}}
# config arg passed as data overrides config yaml when both args passed
if parsed_args.config_file: if parsed_args.config_file:
with open(parsed_args.config_file) as f: with open(parsed_args.config_file) as f:
config_yaml = f.read() config_yaml = f.read()
body[self.resource]['config'] = config_yaml body[self.resource]['attributes'] = {'config': config_yaml}
if parsed_args.config: if parsed_args.config:
body[self.resource]['config'] = parsed_args.config body[self.resource]['attributes'] = {'config': parsed_args.config}
tackerV10.update_dict(parsed_args, body[self.resource], ['tenant_id']) tackerV10.update_dict(parsed_args, body[self.resource], ['tenant_id'])
return body return body

View File

@@ -60,9 +60,10 @@ class CreateVNFD(tackerV10.CreateCommand):
if parsed_args.vnfd_file: if parsed_args.vnfd_file:
with open(parsed_args.vnfd_file) as f: with open(parsed_args.vnfd_file) as f:
vnfd = f.read() vnfd = f.read()
body[self.resource]['attributes'] = {'vnfd': vnfd}
if parsed_args.vnfd: if parsed_args.vnfd:
vnfd = parsed_args.vnfd body[self.resource]['attributes'] = {'vnfd': parsed_args.vnfd}
body[self.resource]['vnfd'] = vnfd
tackerV10.update_dict(parsed_args, body[self.resource], tackerV10.update_dict(parsed_args, body[self.resource],
['tenant_id', 'name', 'description']) ['tenant_id', 'name', 'description'])
return body return body

View File

@@ -340,6 +340,11 @@ class Client(ClientBase):
interface_attach_path = '/devices/%s/attach_interface' interface_attach_path = '/devices/%s/attach_interface'
interface_detach_path = '/devices/%s/detach_interface' interface_detach_path = '/devices/%s/detach_interface'
vnfds_path = '/vnfds'
vnfd_path = '/vnfds/%s'
vnfs_path = '/vnfs'
vnf_path = '/vnfs/%s'
# API has no way to report plurals, so we have to hard code them # API has no way to report plurals, so we have to hard code them
# EXTED_PLURALS = {} # EXTED_PLURALS = {}
@@ -402,90 +407,50 @@ class Client(ClientBase):
def detach_interface(self, device, body=None): def detach_interface(self, device, body=None):
return self.put(self.detach_interface_path % device, body) return self.put(self.detach_interface_path % device, body)
# VNFD
_DEVICE_TEMPLATE = "device_template"
_VNFD = "vnfd" _VNFD = "vnfd"
@APIParamsCall @APIParamsCall
def list_vnfds(self, retrieve_all=True, **_params): def list_vnfds(self, retrieve_all=True, **_params):
ret = self.list_device_templates(retrieve_all, **_params) return self.list(self._VNFD + 's',
return {self._VNFD + 's': ret[self._DEVICE_TEMPLATE + 's']} self.vnfds_path,
retrieve_all,
**_params)
@APIParamsCall @APIParamsCall
def show_vnfd(self, vnfd, **_params): def show_vnfd(self, vnfd, **_params):
ret = self.show_device_template(vnfd, **_params) return self.get(self.vnfd_path % vnfd,
return {self._VNFD: ret[self._DEVICE_TEMPLATE]} params=_params)
@APIParamsCall @APIParamsCall
def create_vnfd(self, body=None): def create_vnfd(self, body=None):
# e.g.
# body = {'vnfd': {'vnfd': 'yaml vnfd definition strings...'}}
if body is not None: if body is not None:
args = body[self._VNFD] body[self._VNFD]['service_types'] = [{'service_type': 'vnfd'}]
body[self._VNFD]['infra_driver'] = 'heat'
args_ = { body[self._VNFD]['mgmt_driver'] = 'noop'
'service_types': [{'service_type': 'vnfd'}],
'infra_driver': 'heat',
'mgmt_driver': 'noop',
}
KEY_LIST = ('name', 'description')
args_.update(dict((key, args[key])
for key in KEY_LIST if key in args))
body_ = {self._DEVICE_TEMPLATE: args_}
if 'vnfd' in args:
args_['attributes'] = {'vnfd': args['vnfd']}
else: else:
body_ = None body = None
return self.post(self.vnfds_path, body)
ret = self.create_device_template(body_)
return {self._VNFD: ret[self._DEVICE_TEMPLATE]}
@APIParamsCall @APIParamsCall
def delete_vnfd(self, vnfd): def delete_vnfd(self, vnfd):
return self.delete_device_template(vnfd) return self.delete(self.vnfd_path % vnfd)
# vnf
_DEVICE = "device"
_VNF = "vnf"
@APIParamsCall @APIParamsCall
def list_vnfs(self, retrieve_all=True, **_params): def list_vnfs(self, retrieve_all=True, **_params):
ret = self.list_devices(retrieve_all, **_params) return self.list('vnfs', self.vnfs_path, retrieve_all, **_params)
return {self._VNF + 's': ret[self._DEVICE + 's']}
@APIParamsCall @APIParamsCall
def show_vnf(self, vnf, **_params): def show_vnf(self, vnf, **_params):
ret = self.show_device(vnf, **_params) return self.get(self.vnf_path % vnf, params=_params)
return {self._VNF: ret[self._DEVICE]}
@APIParamsCall @APIParamsCall
def create_vnf(self, body=None): def create_vnf(self, body=None):
arg = body[self._VNF] return self.post(self.vnfs_path, body=body)
arg_ = {
'template_id': arg['vnfd_id'],
}
for key in ('tenant_id', 'name'):
if key in arg:
arg_[key] = arg[key]
arg_['attributes'] = {}
if 'config' in arg:
arg_['attributes']['config'] = arg['config']
if 'param_values' in arg:
arg_['attributes']['param_values'] = arg['param_values']
body_ = {self._DEVICE: arg_}
ret = self.create_device(body_)
return {self._VNF: ret[self._DEVICE]}
@APIParamsCall @APIParamsCall
def delete_vnf(self, vnf): def delete_vnf(self, vnf):
return self.delete_device(vnf) return self.delete(self.vnf_path % vnf)
@APIParamsCall @APIParamsCall
def update_vnf(self, vnf, body=None): def update_vnf(self, vnf, body=None):
args = body[self._VNF] return self.put(self.vnf_path % vnf, body=body)
args_ = {}
if 'config' in args:
args_['attributes'] = {'config': args['config']}
body_ = {self._DEVICE: args_}
ret = self.update_device(vnf, body_)
return {self._VNF: ret[self._DEVICE]}