diff --git a/ooi/api/query.py b/ooi/api/query.py index c6d8a9a..5c0150a 100644 --- a/ooi/api/query.py +++ b/ooi/api/query.py @@ -72,6 +72,7 @@ class Controller(base.Controller): if pools: for p in pools: occi_ip_pools.append(os_network.OSFloatingIPPool(p["name"])) + occi_ip_pools.append(os_network.os_floatingip_pool) return occi_ip_pools def index(self, req): diff --git a/ooi/openstack/network.py b/ooi/openstack/network.py index 12d8f5f..8ca7fa9 100644 --- a/ooi/openstack/network.py +++ b/ooi/openstack/network.py @@ -20,13 +20,26 @@ from ooi.occi.infrastructure import network_link from ooi.openstack import helpers -class OSFloatingIPPool(mixin.Mixin): +class OSFloatingIPPoolBase(mixin.Mixin): + def __init__(self, pool=None, depends=[]): + location = "floatingippool/%s" % pool if pool else "floatingippool/" + sch = "network/floatingippool" if pool else "network" + scheme = helpers.build_scheme(sch) + term = pool if pool else "floatingippool" + title = pool if pool else "Floating IP pool base mixin" + super(OSFloatingIPPoolBase, self).__init__( + scheme, term, title, location=location, depends=depends, + applies=[network_link.NetworkInterface.kind]) + + +os_floatingip_pool = OSFloatingIPPoolBase() + + +class OSFloatingIPPool(OSFloatingIPPoolBase): scheme = helpers.build_scheme("network/floatingippool") def __init__(self, pool=None): - location = "floatingippool/%s" % pool - super(OSFloatingIPPool, self).__init__(self.scheme, pool, pool, - location=location) + super(OSFloatingIPPool, self).__init__(pool, [os_floatingip_pool]) class OSNetworkInterface(network_link.NetworkInterface): diff --git a/ooi/tests/unit/occi/test_openstack.py b/ooi/tests/unit/occi/test_openstack.py index 728b0e9..376a3f3 100644 --- a/ooi/tests/unit/occi/test_openstack.py +++ b/ooi/tests/unit/occi/test_openstack.py @@ -147,6 +147,10 @@ class TestOSNetworkInterface(base.TestCase): if isinstance(m, os_network.OSFloatingIPPool): self.assertEqual("foo", m.term) self.assertEqual("floatingippool/foo", m.location) + self.assertEqual([network_link.NetworkInterface.kind], + m.applies) + self.assertEqual([os_network.os_floatingip_pool], + m.depends) has_pool = True break self.assertTrue(has_pool)