From eaa0bb5e70e303a5929c5fc47d511d54269a8108 Mon Sep 17 00:00:00 2001 From: tmetsch Date: Fri, 3 May 2013 12:31:50 +0200 Subject: [PATCH] tests for #28. --- occi_os_api/backends/network.py | 4 +++- tests/test_backends_network.py | 27 ++++++++++++++++++++++++--- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/occi_os_api/backends/network.py b/occi_os_api/backends/network.py index c88d793..2800656 100644 --- a/occi_os_api/backends/network.py +++ b/occi_os_api/backends/network.py @@ -81,7 +81,9 @@ class NetworkInterfaceBackend(backend.KindBackend): if link.target.identifier == '/network/public': # public means floating IP in OS! # if the os_net_link mixin is avail. a pool must be provided: - if os_addon.OS_NET_LINK in link.mixins: + if not 'org.openstack.network.floating.pool' in link.attributes and os_addon.OS_NET_LINK in link.mixins: + raise AttributeError('Please specify the pool name when using this mixin!') + elif os_addon.OS_NET_LINK in link.mixins: pool = link.attributes['org.openstack.network.floating.pool'] else: pool = None diff --git a/tests/test_backends_network.py b/tests/test_backends_network.py index 7af3edc..05c9338 100644 --- a/tests/test_backends_network.py +++ b/tests/test_backends_network.py @@ -28,6 +28,7 @@ from occi import core_model from occi_os_api import nova_glue from occi_os_api.backends import network +from occi_os_api.extensions import os_addon class TestNetworkInterfaceBackend(unittest.TestCase): @@ -69,6 +70,16 @@ class TestNetworkInterfaceBackend(unittest.TestCase): self.mox.VerifyAll() + # should have pool name in attribute... + target.identifier = '/network/public' + link = core_model.Link('foo', None, [os_addon.OS_NET_LINK], source, target) + + self.mox.ReplayAll() + self.assertRaises(AttributeError, self.backend.create, link, + self.sec_obj) + + self.mox.VerifyAll() + def test_update_for_failure(self): """ No updates allowed! @@ -87,14 +98,15 @@ class TestNetworkInterfaceBackend(unittest.TestCase): target = mox.MockObject(core_model.Resource) target.identifier = '/network/public' - link = core_model.Link('foo', None, [], source, target) + link = core_model.Link('foo', None, [os_addon.OS_NET_LINK], source, + target) + link.attributes = {'org.openstack.network.floating.pool':'nova'} self.mox.StubOutWithMock(nova_glue.net, 'add_floating_ip') - nova_glue.net.add_floating_ip(mox.IsA(object), mox.IsA(object), + nova_glue.net.add_floating_ip(mox.IsA(object), mox.IsA(str), mox.IsA(object)).AndReturn('10.0.0.1') self.mox.ReplayAll() - self.backend.create(link, self.sec_obj) # verify all attrs and mixins! @@ -110,6 +122,15 @@ class TestNetworkInterfaceBackend(unittest.TestCase): self.mox.VerifyAll() + # test without pool name... + self.mox.UnsetStubs() + self.mox.StubOutWithMock(nova_glue.net, 'add_floating_ip') + link = core_model.Link('foo', None, [], source, target) + nova_glue.net.add_floating_ip(mox.IsA(object), mox.IsA(str), + mox.IsA(object)).AndReturn('10.0.0.1') + + self.backend.create(link, self.sec_obj) + def test_delete_for_sanity(self): """ Test create for sanity!