diff --git a/tackerclient/tacker/v1_0/vm/vnf.py b/tackerclient/tacker/v1_0/vm/vnf.py index 12b42e6c..a089105e 100644 --- a/tackerclient/tacker/v1_0/vm/vnf.py +++ b/tackerclient/tacker/v1_0/vm/vnf.py @@ -67,13 +67,16 @@ class CreateVNF(tackerV10.CreateCommand): ) 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: with open(parsed_args.config_file) as f: config_yaml = f.read() - body[self.resource]['config'] = config_yaml + args['attributes']['config'] = config_yaml if parsed_args.config: - body[self.resource]['config'] = parsed_args.config + args['attributes']['config'] = parsed_args.config + if parsed_args.vnfd_name: tacker_client = self.get_client() tacker_client.format = parsed_args.request_format @@ -86,8 +89,7 @@ class CreateVNF(tackerV10.CreateCommand): if parsed_args.param_file: with open(parsed_args.param_file) as f: 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], ['tenant_id', 'name', 'vnfd_id']) return body @@ -108,12 +110,13 @@ class UpdateVNF(tackerV10.UpdateCommand): def args2body(self, parsed_args): body = {self.resource: {}} + # config arg passed as data overrides config yaml when both args passed if parsed_args.config_file: with open(parsed_args.config_file) as f: config_yaml = f.read() - body[self.resource]['config'] = config_yaml + body[self.resource]['attributes'] = {'config': config_yaml} 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']) return body diff --git a/tackerclient/tacker/v1_0/vm/vnfd.py b/tackerclient/tacker/v1_0/vm/vnfd.py index d3019069..82619916 100644 --- a/tackerclient/tacker/v1_0/vm/vnfd.py +++ b/tackerclient/tacker/v1_0/vm/vnfd.py @@ -60,9 +60,10 @@ class CreateVNFD(tackerV10.CreateCommand): if parsed_args.vnfd_file: with open(parsed_args.vnfd_file) as f: vnfd = f.read() + body[self.resource]['attributes'] = {'vnfd': vnfd} if parsed_args.vnfd: - vnfd = parsed_args.vnfd - body[self.resource]['vnfd'] = vnfd + body[self.resource]['attributes'] = {'vnfd': parsed_args.vnfd} + tackerV10.update_dict(parsed_args, body[self.resource], ['tenant_id', 'name', 'description']) return body diff --git a/tackerclient/v1_0/client.py b/tackerclient/v1_0/client.py index 4dee7fb4..d590859c 100644 --- a/tackerclient/v1_0/client.py +++ b/tackerclient/v1_0/client.py @@ -340,6 +340,11 @@ class Client(ClientBase): interface_attach_path = '/devices/%s/attach_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 # EXTED_PLURALS = {} @@ -402,90 +407,50 @@ class Client(ClientBase): def detach_interface(self, device, body=None): return self.put(self.detach_interface_path % device, body) - # VNFD - _DEVICE_TEMPLATE = "device_template" _VNFD = "vnfd" @APIParamsCall def list_vnfds(self, retrieve_all=True, **_params): - ret = self.list_device_templates(retrieve_all, **_params) - return {self._VNFD + 's': ret[self._DEVICE_TEMPLATE + 's']} + return self.list(self._VNFD + 's', + self.vnfds_path, + retrieve_all, + **_params) @APIParamsCall def show_vnfd(self, vnfd, **_params): - ret = self.show_device_template(vnfd, **_params) - return {self._VNFD: ret[self._DEVICE_TEMPLATE]} + return self.get(self.vnfd_path % vnfd, + params=_params) @APIParamsCall def create_vnfd(self, body=None): - # e.g. - # body = {'vnfd': {'vnfd': 'yaml vnfd definition strings...'}} if body is not None: - args = body[self._VNFD] - - args_ = { - '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']} + body[self._VNFD]['service_types'] = [{'service_type': 'vnfd'}] + body[self._VNFD]['infra_driver'] = 'heat' + body[self._VNFD]['mgmt_driver'] = 'noop' else: - body_ = None - - ret = self.create_device_template(body_) - return {self._VNFD: ret[self._DEVICE_TEMPLATE]} + body = None + return self.post(self.vnfds_path, body) @APIParamsCall def delete_vnfd(self, vnfd): - return self.delete_device_template(vnfd) - - # vnf - _DEVICE = "device" - _VNF = "vnf" + return self.delete(self.vnfd_path % vnfd) @APIParamsCall def list_vnfs(self, retrieve_all=True, **_params): - ret = self.list_devices(retrieve_all, **_params) - return {self._VNF + 's': ret[self._DEVICE + 's']} + return self.list('vnfs', self.vnfs_path, retrieve_all, **_params) @APIParamsCall def show_vnf(self, vnf, **_params): - ret = self.show_device(vnf, **_params) - return {self._VNF: ret[self._DEVICE]} + return self.get(self.vnf_path % vnf, params=_params) @APIParamsCall def create_vnf(self, body=None): - arg = body[self._VNF] - 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]} + return self.post(self.vnfs_path, body=body) @APIParamsCall def delete_vnf(self, vnf): - return self.delete_device(vnf) + return self.delete(self.vnf_path % vnf) @APIParamsCall def update_vnf(self, vnf, body=None): - args = body[self._VNF] - 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]} + return self.put(self.vnf_path % vnf, body=body)