Merge "Implement Tacker MANO API client changes"
This commit is contained in:
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user