X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwcal%2Fplugins%2Fvala%2Frwcal_openstack%2Frift%2Frwcal%2Fopenstack%2Fopenstack_drv.py;fp=rwcal%2Fplugins%2Fvala%2Frwcal_openstack%2Frift%2Frwcal%2Fopenstack%2Fopenstack_drv.py;h=d6831a73e658b9b6bcee522308e24f6dd621cadd;hb=25df0a991a593e248a6a825193009d307b977169;hp=6ee2cb6d8a39b7d6c4551bd26597ab17fc0ca070;hpb=7b75903dd891795d4426612fd4de76c0f51cf17e;p=osm%2FSO.git 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 6ee2cb6d..d6831a73 100644 --- 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 +import neutronclient.common.exceptions as NeutronException class ValidationError(Exception): @@ -137,7 +138,7 @@ class OpenstackDriver(object): self.cinder_drv = ci_drv.CinderDriver(self.sess_drv, region_name = region, logger = self.log) - except Exception as e: + except Exception: self.cinder_drv = None self.ceilo_drv = ce_drv.CeilometerDriver(self.sess_drv, @@ -171,7 +172,10 @@ class OpenstackDriver(object): 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() @@ -215,11 +219,13 @@ class OpenstackDriver(object): 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: - 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): @@ -231,7 +237,6 @@ class OpenstackDriver(object): def _build_cinder_volume_list(self): self.log.info("Discovering volumes") - vollist = self.cinder_volume_list() self.cinder_cache['volumes'] = self._cache_populate(self.cinder_volume_list, list()) return self.cinder_cache['volumes'] @@ -244,7 +249,10 @@ class OpenstackDriver(object): 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() @@ -316,22 +324,28 @@ class OpenstackDriver(object): 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 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)) - + def glance_image_create(self, **kwargs): - if not 'disk_format' in kwargs: + if 'disk_format' not in kwargs: kwargs['disk_format'] = 'qcow2' - if not 'container_format' in kwargs: + if 'container_format' not in kwargs: kwargs['container_format'] = 'bare' - if not 'min_disk' in kwargs: + if 'min_disk' not in kwargs: 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) @@ -374,7 +388,7 @@ class OpenstackDriver(object): 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): @@ -428,6 +442,9 @@ class OpenstackDriver(object): 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() @@ -592,7 +609,7 @@ class OpenstackDriver(object): 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):