summaryrefslogtreecommitdiffstats
path: root/vio/vio/pub
diff options
context:
space:
mode:
Diffstat (limited to 'vio/vio/pub')
-rw-r--r--vio/vio/pub/exceptions.py6
-rw-r--r--vio/vio/pub/msapi/extsys.py4
-rw-r--r--vio/vio/pub/vim/drivers/vimsdk/compute.py10
-rw-r--r--vio/vio/pub/vim/drivers/vimsdk/image_v2.py6
-rw-r--r--vio/vio/pub/vim/drivers/vimsdk/keystone_v3.py4
-rw-r--r--vio/vio/pub/vim/vimapi/glance/OperateImage.py5
-rw-r--r--vio/vio/pub/vim/vimapi/keystone/OperateTenant.py4
-rw-r--r--vio/vio/pub/vim/vimapi/network/OperateNetwork.py17
-rw-r--r--vio/vio/pub/vim/vimapi/network/OperatePort.py10
-rw-r--r--vio/vio/pub/vim/vimapi/network/OperateSubnet.py10
-rw-r--r--vio/vio/pub/vim/vimapi/nova/OperateFlavors.py6
-rw-r--r--vio/vio/pub/vim/vimapi/nova/OperateServers.py4
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):