# limitations under the License.
import logging
-from neutronclient.common.exceptions import NotFound
+from neutronclient.common.exceptions import NotFound, Unauthorized
from snaps.config.router import RouterConfig
from snaps.openstack.openstack_creator import OpenStackNetworkObject
-from snaps.openstack.utils import neutron_utils
+from snaps.openstack.utils import neutron_utils, keystone_utils
__author__ = 'spisarski'
"""
super(self.__class__, self).initialize()
- self.__router = neutron_utils.get_router(
- self._neutron, router_settings=self.router_settings)
+ try:
+ self.__router = neutron_utils.get_router(
+ self._neutron, router_settings=self.router_settings)
+ except Unauthorized as e:
+ logger.warn('Unable to lookup router with name %s - %s',
+ self.router_settings.name, e)
- for internal_subnet_name in self.router_settings.internal_subnets:
- internal_subnet = neutron_utils.get_subnet(
- self._neutron, subnet_name=internal_subnet_name)
- if internal_subnet:
- self.__internal_subnets.append(internal_subnet)
- else:
- raise RouterCreationError(
- 'Subnet not found with name ' + internal_subnet_name)
+ if self.__router:
+ for internal_subnet_name in self.router_settings.internal_subnets:
+ internal_subnet = neutron_utils.get_subnet(
+ self._neutron, subnet_name=internal_subnet_name)
+ if internal_subnet:
+ self.__internal_subnets.append(internal_subnet)
+ else:
+ raise RouterCreationError(
+ 'Subnet not found with name ' + internal_subnet_name)
- for port_setting in self.router_settings.port_settings:
- port = neutron_utils.get_port(
- self._neutron, port_settings=port_setting)
- if port:
- self.__ports.append(port)
+ keystone = keystone_utils.keystone_client(self._os_creds)
+ for port_setting in self.router_settings.port_settings:
+ port = neutron_utils.get_port(
+ self._neutron, keystone, port_settings=port_setting,
+ project_name=self._os_creds.project_name)
+ if port:
+ self.__ports.append(port)
return self.__router
raise RouterCreationError(
'Subnet not found with name ' + internal_subnet_name)
+ keystone = keystone_utils.keystone_client(self._os_creds)
for port_setting in self.router_settings.port_settings:
port = neutron_utils.get_port(
- self._neutron, port_settings=port_setting)
+ self._neutron, keystone, port_settings=port_setting,
+ project_name=self._os_creds.project_name)
logger.info(
'Retrieved port %s for router - %s', port_setting.name,
self.router_settings.name)
port_setting.name,
self.router_settings.name)
self.__ports.append(port)
- neutron_utils.add_interface_router(self._neutron,
- self.__router,
- port=port)
+ neutron_utils.add_interface_router(
+ self._neutron, self.__router, port=port)
else:
raise RouterCreationError(
'Error creating port with name - '