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):
|
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
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
@@ -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]}
|
|
||||||
|
Reference in New Issue
Block a user