projects
/
osm
/
SO.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix ordering of elements for Openstack block device mapping
[osm/SO.git]
/
rwcal
/
plugins
/
vala
/
rwcal_openstack
/
rift
/
rwcal
/
openstack
/
openstack_drv.py
diff --git
a/rwcal/plugins/vala/rwcal_openstack/rift/rwcal/openstack/openstack_drv.py
b/rwcal/plugins/vala/rwcal_openstack/rift/rwcal/openstack/openstack_drv.py
index
ffab014
..
d6831a7
100644
(file)
--- a/
rwcal/plugins/vala/rwcal_openstack/rift/rwcal/openstack/openstack_drv.py
+++ b/
rwcal/plugins/vala/rwcal_openstack/rift/rwcal/openstack/openstack_drv.py
@@
-29,6
+29,7
@@
from . import utils as drv_utils
# Exceptions
import keystoneclient.exceptions as KeystoneExceptions
# Exceptions
import keystoneclient.exceptions as KeystoneExceptions
+import neutronclient.common.exceptions as NeutronException
class ValidationError(Exception):
class ValidationError(Exception):
@@
-132,10
+133,13
@@
class OpenstackDriver(object):
self.glance_drv = gl_drv.GlanceDriver(self.sess_drv,
region_name = region,
logger = self.log)
self.glance_drv = gl_drv.GlanceDriver(self.sess_drv,
region_name = region,
logger = self.log)
-
- self.cinder_drv = ci_drv.CinderDriver(self.sess_drv,
+
+ try:
+ self.cinder_drv = ci_drv.CinderDriver(self.sess_drv,
region_name = region,
logger = self.log)
region_name = region,
logger = self.log)
+ except Exception:
+ self.cinder_drv = None
self.ceilo_drv = ce_drv.CeilometerDriver(self.sess_drv,
region_name = region,
self.ceilo_drv = ce_drv.CeilometerDriver(self.sess_drv,
region_name = region,
@@
-168,7
+172,10
@@
class OpenstackDriver(object):
return self._cache['cinder']
def build_resource_cache(self):
return self._cache['cinder']
def build_resource_cache(self):
- self.build_network_resource_cache()
+ try:
+ self.build_network_resource_cache()
+ except KeyError:
+ raise
self.build_nova_resource_cache()
self.build_cinder_resource_cache()
self.build_glance_resource_cache()
self.build_nova_resource_cache()
self.build_cinder_resource_cache()
self.build_glance_resource_cache()
@@
-212,19
+219,27
@@
class OpenstackDriver(object):
self.log.info("Discovering management network %s", self._mgmt_network)
network_list = self._cache_populate(self.neutron_drv.network_get,
None,
self.log.info("Discovering management network %s", self._mgmt_network)
network_list = self._cache_populate(self.neutron_drv.network_get,
None,
- **{'network_name':self._mgmt_network})
+ **{'network_name':
self._mgmt_network})
if network_list:
self.neutron_cache['mgmt_net'] = network_list['id']
else:
if network_list:
self.neutron_cache['mgmt_net'] = network_list['id']
else:
- raise KeyError("Error")
+ msg = "Could not find management network %s" % self._mgmt_network
+ self.log.error(msg)
+ raise KeyError(msg)
def _build_glance_image_list(self):
self.log.info("Discovering images")
self.glance_cache['images'] = self._cache_populate(self.glance_image_list,
list())
def _build_glance_image_list(self):
self.log.info("Discovering images")
self.glance_cache['images'] = self._cache_populate(self.glance_image_list,
list())
+
return self.glance_cache['images']
return self.glance_cache['images']
+ def _build_cinder_volume_list(self):
+ self.log.info("Discovering volumes")
+ self.cinder_cache['volumes'] = self._cache_populate(self.cinder_volume_list,
+ list())
+ return self.cinder_cache['volumes']
def build_nova_resource_cache(self):
self.log.info("Building nova resource cache")
def build_nova_resource_cache(self):
self.log.info("Building nova resource cache")
@@
-234,13
+249,17
@@
class OpenstackDriver(object):
def build_network_resource_cache(self):
self.log.info("Building network resource cache")
def build_network_resource_cache(self):
self.log.info("Building network resource cache")
- self._get_neutron_mgmt_network()
+ try:
+ self._get_neutron_mgmt_network()
+ except KeyError:
+ raise
self._build_neutron_security_group_list()
self._build_neutron_subnet_prefix_list()
def build_cinder_resource_cache(self):
self._build_neutron_security_group_list()
self._build_neutron_subnet_prefix_list()
def build_cinder_resource_cache(self):
- pass
-
+ self.log.info("Building cinder resource cache")
+ if self.cinder_drv is not None:
+ self._build_cinder_volume_list()
def build_glance_resource_cache(self):
self.log.info("Building glance resource cache")
def build_glance_resource_cache(self):
self.log.info("Building glance resource cache")
@@
-293,27
+312,40
@@
class OpenstackDriver(object):
else:
return self._build_glance_image_list()
else:
return self._build_glance_image_list()
+ @property
+ def _cinder_volume_list(self):
+ if 'volumes' in self.cinder_cache:
+ return self.cinder_cache['volumes']
+ else:
+ return self._build_cinder_volume_list()
+
def validate_account_creds(self):
try:
self.sess_drv.invalidate_auth_token()
self.sess_drv.auth_token
self.build_resource_cache()
def validate_account_creds(self):
try:
self.sess_drv.invalidate_auth_token()
self.sess_drv.auth_token
self.build_resource_cache()
+ except KeystoneExceptions.Unauthorized as e:
+ self.log.error("Invalid credentials ")
+ raise ValidationError("Invalid Credentials: "+ str(e))
except KeystoneExceptions.AuthorizationFailure as e:
self.log.error("Unable to authenticate or validate the existing credentials. Exception: %s", str(e))
raise ValidationError("Invalid Credentials: "+ str(e))
except KeystoneExceptions.AuthorizationFailure as e:
self.log.error("Unable to authenticate or validate the existing credentials. Exception: %s", str(e))
raise ValidationError("Invalid Credentials: "+ str(e))
+ except NeutronException.NotFound as e:
+ self.log.error("Given management network could not be found for Openstack account ")
+ raise ValidationError("Neutron network not found "+ str(e))
except Exception as e:
self.log.error("Could not connect to Openstack. Exception: %s", str(e))
raise ValidationError("Connection Error: "+ str(e))
except Exception as e:
self.log.error("Could not connect to Openstack. Exception: %s", str(e))
raise ValidationError("Connection Error: "+ str(e))
-
+
def glance_image_create(self, **kwargs):
def glance_image_create(self, **kwargs):
- if
not 'disk_format'
in kwargs:
+ if
'disk_format' not
in kwargs:
kwargs['disk_format'] = 'qcow2'
kwargs['disk_format'] = 'qcow2'
- if
not 'container_format'
in kwargs:
+ if
'container_format' not
in kwargs:
kwargs['container_format'] = 'bare'
kwargs['container_format'] = 'bare'
- if
not 'min_disk'
in kwargs:
+ if
'min_disk' not
in kwargs:
kwargs['min_disk'] = 0
kwargs['min_disk'] = 0
- if
not 'min_ram'
in kwargs:
+ if
'min_ram' not
in kwargs:
kwargs['min_ram'] = 0
return self.glance_drv.image_create(**kwargs)
kwargs['min_ram'] = 0
return self.glance_drv.image_create(**kwargs)
@@
-356,7
+388,7
@@
class OpenstackDriver(object):
def nova_server_create(self, **kwargs):
if 'security_groups' not in kwargs:
def nova_server_create(self, **kwargs):
if 'security_groups' not in kwargs:
- kwargs['security_groups'] = [
s['name'] for s in self._nova_security_groups
]
+ kwargs['security_groups'] = [
s['name'] for s in self._nova_security_groups
]
return self.nova_drv.server_create(**kwargs)
def nova_server_add_port(self, server_id, port_id):
return self.nova_drv.server_create(**kwargs)
def nova_server_add_port(self, server_id, port_id):
@@
-410,6
+442,9
@@
class OpenstackDriver(object):
def nova_volume_list(self, server_id):
return self.nova_drv.volume_list(server_id)
def nova_volume_list(self, server_id):
return self.nova_drv.volume_list(server_id)
+ def neutron_extensions_list(self):
+ return self.neutron_drv.extensions_list()
+
def neutron_network_list(self):
return self.neutron_drv.network_list()
def neutron_network_list(self):
return self.neutron_drv.network_list()
@@
-574,7
+609,7
@@
class OpenstackDriver(object):
def cinder_volume_list(self):
return self.cinder_drv.volume_list()
def cinder_volume_list(self):
return self.cinder_drv.volume_list()
- def cinder_volume_get(self,vol_id):
+ def cinder_volume_get(self,
vol_id):
return self.cinder_drv.volume_get(vol_id)
def cinder_volume_set_metadata(self, volumeid, metadata):
return self.cinder_drv.volume_get(vol_id)
def cinder_volume_set_metadata(self, volumeid, metadata):