summaryrefslogtreecommitdiffstats
path: root/snaps/openstack/utils/neutron_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'snaps/openstack/utils/neutron_utils.py')
-rw-r--r--snaps/openstack/utils/neutron_utils.py36
1 files changed, 18 insertions, 18 deletions
diff --git a/snaps/openstack/utils/neutron_utils.py b/snaps/openstack/utils/neutron_utils.py
index e1bed66..aaa0903 100644
--- a/snaps/openstack/utils/neutron_utils.py
+++ b/snaps/openstack/utils/neutron_utils.py
@@ -17,7 +17,8 @@ import logging
from neutronclient.common.exceptions import NotFound
from neutronclient.neutron.client import Client
-from snaps.domain.network import Port, SecurityGroup, SecurityGroupRule
+from snaps.domain.network import (
+ Port, SecurityGroup, SecurityGroupRule, Router, InterfaceRouter)
from snaps.domain.vm_inst import FloatingIp
from snaps.openstack.utils import keystone_utils
@@ -168,12 +169,13 @@ def create_router(neutron, os_creds, router_settings):
:param router_settings: A dictionary containing the router configuration
and is responsible for creating the subnet request
JSON body
- :return: the router object
+ :return: a SNAPS-OO Router domain object
"""
if neutron:
json_body = router_settings.dict_for_neutron(neutron, os_creds)
logger.info('Creating router with name - ' + router_settings.name)
- return neutron.create_router(json_body)
+ os_router = neutron.create_router(json_body)
+ return Router(**os_router['router'])
else:
logger.error("Failed to create router.")
raise Exception
@@ -183,12 +185,11 @@ def delete_router(neutron, router):
"""
Deletes a router for OpenStack
:param neutron: the client
- :param router: the router object
+ :param router: a SNAPS-OO Router domain object
"""
if neutron and router:
- logger.info('Deleting router with name - ' + router['router']['name'])
- neutron.delete_router(router=router['router']['id'])
- return True
+ logger.info('Deleting router with name - ' + router.name)
+ neutron.delete_router(router=router.id)
def get_router_by_name(neutron, router_name):
@@ -196,13 +197,13 @@ def get_router_by_name(neutron, router_name):
Returns the first router object (dictionary) found with a given name
:param neutron: the client
:param router_name: the name of the network to retrieve
- :return:
+ :return: a SNAPS-OO Router domain object
"""
routers = neutron.list_routers(**{'name': router_name})
for router, routerInst in routers.items():
for inst in routerInst:
if inst.get('name') == router_name:
- return {'router': inst}
+ return Router(**inst)
return None
@@ -221,11 +222,10 @@ def add_interface_router(neutron, router, subnet=None, port=None):
'port were sent in. Either or please.')
if neutron and router and (router or subnet):
- logger.info('Adding interface to router with name ' +
- router['router']['name'])
- return neutron.add_interface_router(
- router=router['router']['id'],
- body=__create_port_json_body(subnet, port))
+ logger.info('Adding interface to router with name ' + router.name)
+ os_intf_router = neutron.add_interface_router(
+ router=router.id, body=__create_port_json_body(subnet, port))
+ return InterfaceRouter(**os_intf_router)
else:
raise Exception('Unable to create interface router as neutron client,'
' router or subnet were not created')
@@ -235,16 +235,16 @@ def remove_interface_router(neutron, router, subnet=None, port=None):
"""
Removes an interface router for OpenStack
:param neutron: the client
- :param router: the router object
+ :param router: the SNAPS-OO Router domain object
:param subnet: the subnet object (either subnet or port, not both)
:param port: the port object
"""
if router:
try:
logger.info('Removing router interface from router named ' +
- router['router']['name'])
+ router.name)
neutron.remove_interface_router(
- router=router['router']['id'],
+ router=router.id,
body=__create_port_json_body(subnet, port))
except NotFound as e:
logger.warning('Could not remove router interface. NotFound - %s',
@@ -271,7 +271,7 @@ def __create_port_json_body(subnet=None, port=None):
if subnet:
return {"subnet_id": subnet['subnet']['id']}
else:
- return {"port_id": port['port']['id']}
+ return {"port_id": port.id}
def create_port(neutron, os_creds, port_settings):