diff options
Diffstat (limited to 'vio/vio/pub')
-rw-r--r-- | vio/vio/pub/exceptions.py | 6 | ||||
-rw-r--r-- | vio/vio/pub/msapi/extsys.py | 4 | ||||
-rw-r--r-- | vio/vio/pub/vim/drivers/vimsdk/compute.py | 10 | ||||
-rw-r--r-- | vio/vio/pub/vim/drivers/vimsdk/image_v2.py | 6 | ||||
-rw-r--r-- | vio/vio/pub/vim/drivers/vimsdk/keystone_v3.py | 4 | ||||
-rw-r--r-- | vio/vio/pub/vim/vimapi/glance/OperateImage.py | 5 | ||||
-rw-r--r-- | vio/vio/pub/vim/vimapi/keystone/OperateTenant.py | 4 | ||||
-rw-r--r-- | vio/vio/pub/vim/vimapi/network/OperateNetwork.py | 17 | ||||
-rw-r--r-- | vio/vio/pub/vim/vimapi/network/OperatePort.py | 10 | ||||
-rw-r--r-- | vio/vio/pub/vim/vimapi/network/OperateSubnet.py | 10 | ||||
-rw-r--r-- | vio/vio/pub/vim/vimapi/nova/OperateFlavors.py | 6 | ||||
-rw-r--r-- | vio/vio/pub/vim/vimapi/nova/OperateServers.py | 4 |
12 files changed, 55 insertions, 31 deletions
diff --git a/vio/vio/pub/exceptions.py b/vio/vio/pub/exceptions.py index 394685a..077b72d 100644 --- a/vio/vio/pub/exceptions.py +++ b/vio/vio/pub/exceptions.py @@ -12,4 +12,8 @@ class VimDriverVioException(Exception): - pass + def __init__(self, message, status_code="", content=""): + super(VimDriverVioException, self).__init__(message) + self.status_code = status_code + self.content = content + pass diff --git a/vio/vio/pub/msapi/extsys.py b/vio/vio/pub/msapi/extsys.py index 002f3ad..5410c58 100644 --- a/vio/vio/pub/msapi/extsys.py +++ b/vio/vio/pub/msapi/extsys.py @@ -13,6 +13,7 @@ import json import logging +from rest_framework import status from vio.pub.exceptions import VimDriverVioException from vio.pub.utils.restcall import req_by_msb @@ -31,5 +32,6 @@ def get_vim_by_id(vim_id): ret = req_by_msb("/openoapi/extsys/v1/vims/%s" % vim_id, "GET") if ret[0] != 0: logger.error("Status code is %s, detail is %s.", ret[2], ret[1]) - raise VimDriverVioException("Failed to query VIM with id (%s) from extsys." % vim_id) + raise VimDriverVioException("Failed to query VIM with id (%s) from extsys." % vim_id, + status.HTTP_404_NOT_FOUND) return json.JSONDecoder().decode(ret[1]) diff --git a/vio/vio/pub/vim/drivers/vimsdk/compute.py b/vio/vio/pub/vim/drivers/vimsdk/compute.py index 9e774a0..1ed4b25 100644 --- a/vio/vio/pub/vim/drivers/vimsdk/compute.py +++ b/vio/vio/pub/vim/drivers/vimsdk/compute.py @@ -52,8 +52,8 @@ class ComputeClient(base.DriverBase): return server @sdk.translate_exception - def list_servers(self): - servers = self.conn.compute.servers() + def list_servers(self, **query): + servers = self.conn.compute.servers(**query) return servers @sdk.translate_exception @@ -78,7 +78,7 @@ class ComputeClient(base.DriverBase): @sdk.translate_exception def list_flavors(self, **query): - flavors = self.conn.compute.flavors() + flavors = self.conn.compute.flavors(**query) return flavors @sdk.translate_exception @@ -123,5 +123,5 @@ class ComputeClient(base.DriverBase): return self.conn.compute.services() @sdk.translate_exception - def get_hypervisor(self, hypervisor, **kwargs): - return self.conn.compute.get_hypervisor(hypervisor=hypervisor) + def get_hypervisor(self, hypervisor, **query): + return self.conn.compute.get_hypervisor(hypervisor=hypervisor, **query) diff --git a/vio/vio/pub/vim/drivers/vimsdk/image_v2.py b/vio/vio/pub/vim/drivers/vimsdk/image_v2.py index 88babba..a9342cf 100644 --- a/vio/vio/pub/vim/drivers/vimsdk/image_v2.py +++ b/vio/vio/pub/vim/drivers/vimsdk/image_v2.py @@ -39,6 +39,12 @@ class GlanceClient(base.DriverBase): image = self._proxy.get_image(imageid) return image + + @sdk.translate_exception + def find_image(self, name_or_id): + image = self._proxy.find_image(name_or_id, ignore_missing=False) + return image + @sdk.translate_exception def delete_image(self, imageid): self._proxy.delete_image(imageid) diff --git a/vio/vio/pub/vim/drivers/vimsdk/keystone_v3.py b/vio/vio/pub/vim/drivers/vimsdk/keystone_v3.py index aff2d6f..1dc7fac 100644 --- a/vio/vio/pub/vim/drivers/vimsdk/keystone_v3.py +++ b/vio/vio/pub/vim/drivers/vimsdk/keystone_v3.py @@ -27,6 +27,6 @@ class KeystoneClient(base.DriverBase): self.session = self.conn.session @sdk.translate_exception - def project_list(self): - projects = self.conn.identity.projects() + def project_list(self, **query): + projects = self.conn.identity.projects(**query) return projects diff --git a/vio/vio/pub/vim/vimapi/glance/OperateImage.py b/vio/vio/pub/vim/vimapi/glance/OperateImage.py index f93441b..2b08359 100644 --- a/vio/vio/pub/vim/vimapi/glance/OperateImage.py +++ b/vio/vio/pub/vim/vimapi/glance/OperateImage.py @@ -74,6 +74,11 @@ class OperateImage(baseclient): image = self.glance(self.param).get_image(imageid) return image + def find_vim_image(self, name_or_id): + + image = self.glance(self.param).find_image(name_or_id) + return image + def delete_vim_image(self, imageid): image = self.glance(self.param).delete_image(imageid) diff --git a/vio/vio/pub/vim/vimapi/keystone/OperateTenant.py b/vio/vio/pub/vim/vimapi/keystone/OperateTenant.py index 7781be7..0d8a3c5 100644 --- a/vio/vio/pub/vim/vimapi/keystone/OperateTenant.py +++ b/vio/vio/pub/vim/vimapi/keystone/OperateTenant.py @@ -23,7 +23,7 @@ logger = logging.getLogger(__name__) class OperateTenant(baseclient): - def get_projects(self, data): + def get_projects(self, data, **query): param = {} param['username'] = data['username'] param['user_domain_name'] = 'default' @@ -31,6 +31,6 @@ class OperateTenant(baseclient): param['password'] = data['password'] param['auth_url'] = data['url'] param['project_name'] = data['project_name'] - projects = self.identity(param).project_list() + projects = self.identity(param).project_list(**query) return projects diff --git a/vio/vio/pub/vim/vimapi/network/OperateNetwork.py b/vio/vio/pub/vim/vimapi/network/OperateNetwork.py index 3b67053..dd49f48 100644 --- a/vio/vio/pub/vim/vimapi/network/OperateNetwork.py +++ b/vio/vio/pub/vim/vimapi/network/OperateNetwork.py @@ -12,9 +12,11 @@ import logging +from rest_framework import status + from vio.pub.msapi.extsys import get_vim_by_id from vio.pub.vim.drivers.vimsdk import neutron_v2_0 - +from vio.pub.exceptions import VimDriverVioException logger = logging.getLogger(__name__) @@ -33,7 +35,12 @@ def translate(mapping, data, revert=True): class BaseNet(object): def get_vim_info(self, vimid): - return get_vim_by_id(vimid) + try: + vim_info = get_vim_by_id(vimid) + except VimDriverVioException as e: + raise VimDriverVioException("Failed to query VIM with id (%s) from extsys." % vimid, + status.HTTP_404_NOT_FOUND) + return vim_info def auth(self, vim_info): param = {} @@ -101,11 +108,11 @@ class OperateNetwork(BaseNet): network = self.auth(vim_info) return network.network_delete(networkid) - def list_networks(self, vimid, tenantid): + def list_networks(self, vimid, tenantid, **query): vim_info = self.get_vim_info(vimid) network = self.auth(vim_info) - tenant = {"project_id": tenantid} - resp = network.networks_get(**tenant) + query.update({"project_id": tenantid}) + resp = network.networks_get(**query) vim_dict = {"vimName": vim_info['name'], "vimId": vim_info['vimId']} networks = {'networks': []} if resp: diff --git a/vio/vio/pub/vim/vimapi/network/OperatePort.py b/vio/vio/pub/vim/vimapi/network/OperatePort.py index 4363f51..3e9e4eb 100644 --- a/vio/vio/pub/vim/vimapi/network/OperatePort.py +++ b/vio/vio/pub/vim/vimapi/network/OperatePort.py @@ -55,10 +55,10 @@ class OperatePort(BaseNet): resp.update(vim_dict) return resp - def list_port(self, vimid, tenantid, portid): + def list_port(self, vimid, tenantid, portid, ignore_missing=False): vim_info = self.get_vim_info(vimid) network = self.auth(vim_info) - port = network.port_find(portid) + port = network.port_find(portid, ignore_missing=ignore_missing) if port is None: return port vim_dict = {"vimName": vim_info['name'], "vimId": vim_info['vimId']} @@ -71,11 +71,11 @@ class OperatePort(BaseNet): network = self.auth(vim_info) return network.port_delete(portid) - def list_ports(self, vimid, tenantid): + def list_ports(self, vimid, tenantid, **query): vim_info = self.get_vim_info(vimid) network = self.auth(vim_info) - tenant = {"project_id": tenantid} - resp = network.ports_get(**tenant) + query.update({"project_id": tenantid}) + resp = network.ports_get(**query) vim_dict = {"vimName": vim_info['name'], "vimId": vim_info['vimId']} ports = {'ports': []} if resp: diff --git a/vio/vio/pub/vim/vimapi/network/OperateSubnet.py b/vio/vio/pub/vim/vimapi/network/OperateSubnet.py index b28383d..8d2895f 100644 --- a/vio/vio/pub/vim/vimapi/network/OperateSubnet.py +++ b/vio/vio/pub/vim/vimapi/network/OperateSubnet.py @@ -59,10 +59,10 @@ class OperateSubnet(BaseNet): resp.update(vim_dict) return resp - def list_subnet(self, vimid, tenantid, subnetid): + def list_subnet(self, vimid, tenantid, subnetid, ignore_missing=False): vim_info = self.get_vim_info(vimid) network = self.auth(vim_info) - subnet = network.subnet_get(subnetid) + subnet = network.subnet_get(subnetid, ignore_missing=ignore_missing) if subnet is None: return subnet vim_dict = {"vimName": vim_info['name'], "vimId": vim_info['vimId'], "tenantId": tenantid} @@ -75,11 +75,11 @@ class OperateSubnet(BaseNet): network = self.auth(vim_info) return network.subnet_delete(subnetid) - def list_subnets(self, vimid, tenantid): + def list_subnets(self, vimid, tenantid, **query): vim_info = self.get_vim_info(vimid) network = self.auth(vim_info) - tenant = {"project_id": tenantid} - resp = network.subnets_get(**tenant) + query.update({"project_id": tenantid}) + resp = network.subnets_get(**query) vim_dict = {"vimName": vim_info['name'], "vimId": vim_info['vimId'], "tenantId": tenantid} subnets = {'subnets': []} if resp: diff --git a/vio/vio/pub/vim/vimapi/nova/OperateFlavors.py b/vio/vio/pub/vim/vimapi/nova/OperateFlavors.py index 50303b2..8d09624 100644 --- a/vio/vio/pub/vim/vimapi/nova/OperateFlavors.py +++ b/vio/vio/pub/vim/vimapi/nova/OperateFlavors.py @@ -39,7 +39,7 @@ class OperateFlavors(OperateNova): project_id=project_id, **req) extra_specs_spec = {l['keyName']: l['value'] for l in create_req.get('extraSpecs', [])} - extra_specs = {} + extra_specs = None if extra_specs_spec: extra_specs = self.request('create_flavor_extra_specs', data, project_id=project_id, @@ -47,8 +47,8 @@ class OperateFlavors(OperateNova): extra_specs=extra_specs_spec) return flavor, extra_specs - def list_flavors(self, data, project_id): - flavors = self.request('list_flavors', data, project_id=project_id) + def list_flavors(self, data, project_id, **query): + flavors = self.request('list_flavors', data, project_id=project_id, **query) flavors = list(flavors) result = [] for flavor in flavors: diff --git a/vio/vio/pub/vim/vimapi/nova/OperateServers.py b/vio/vio/pub/vim/vimapi/nova/OperateServers.py index 6fad7a5..98a836b 100644 --- a/vio/vio/pub/vim/vimapi/nova/OperateServers.py +++ b/vio/vio/pub/vim/vimapi/nova/OperateServers.py @@ -65,14 +65,14 @@ class OperateServers(OperateNova): volumes = create_req.get('volumeArray', []) return cc.create_server(**req) - def list_servers(self, data, project_id): + def list_servers(self, data, project_id, **query): param = {'username': data['username'], 'user_domain_name': 'default', 'project_domain_name': 'default', 'password': data['password'], 'auth_url': data['url'], 'project_id': project_id} - projects = self.compute(param).list_servers() + projects = self.compute(param).list_servers(**query) return projects def list_server_interfaces(self, data, project_id, server): |