fixes bug 911255 show on deallocated ip fails

Change-Id: I92d6ebc44414bc15989a4a9dd90acf24250d38fb
This commit is contained in:
Rajaram Mallya and Gavri Fernandez 2012-01-05 16:13:17 +05:30
parent f1091479c1
commit 14966a13f3
6 changed files with 28 additions and 4 deletions

View File

@ -644,6 +644,10 @@ class IpAddress(ModelBase):
def interface(self): def interface(self):
return Interface.get(self.interface_id) return Interface.get(self.interface_id)
@property
def virtual_interface_id(self):
return self.interface.virtual_interface_id if self.interface else None
@utils.cached_property @utils.cached_property
def mac_address(self): def mac_address(self):
return MacAddress.get_by(interface_id=self.interface_id) return MacAddress.get_by(interface_id=self.interface_id)

View File

@ -38,7 +38,7 @@ class IpConfigurationView(object):
def _ip_address_data(self, ip): def _ip_address_data(self, ip):
return { return {
'id': ip.id, 'id': ip.id,
'interface_id': ip.interface.virtual_interface_id, 'interface_id': ip.virtual_interface_id,
'address': ip.address, 'address': ip.address,
'version': ip.version, 'version': ip.version,
} }

View File

@ -25,7 +25,9 @@ from melange.db import db_api
class BaseTest(unittest.TestCase): class BaseTest(unittest.TestCase):
def setUp(self): def setUp(self):
#maxDiff=None ensures diff output of assert methods are not truncated
self.maxDiff = None self.maxDiff = None
self.mock = mox.Mox() self.mock = mox.Mox()
db_api.clean_db() db_api.clean_db()
super(BaseTest, self).setUp() super(BaseTest, self).setUp()

View File

@ -1313,13 +1313,19 @@ class TestIpAddress(tests.BaseTest):
self.assertEqual(ipv4.version, 4) self.assertEqual(ipv4.version, 4)
self.assertEqual(ipv6.version, 6) self.assertEqual(ipv6.version, 6)
def test_retrives_interface(self): def test_retrieves_interface(self):
interface = factory_models.InterfaceFactory(virtual_interface_id="112") interface = factory_models.InterfaceFactory(virtual_interface_id="112")
ip = factory_models.IpAddressFactory(interface_id=interface.id) ip = factory_models.IpAddressFactory(interface_id=interface.id)
self.assertEqual(ip.interface, interface) self.assertEqual(ip.interface, interface)
self.assertEqual(ip.interface.virtual_interface_id, "112") self.assertEqual(ip.interface.virtual_interface_id, "112")
def test_virtual_interface_id(self):
interface = factory_models.InterfaceFactory(virtual_interface_id="112")
ip = factory_models.IpAddressFactory(interface_id=interface.id)
self.assertEqual(ip.virtual_interface_id, "112")
def test_mac_address(self): def test_mac_address(self):
mac_range = factory_models.MacAddressRangeFactory() mac_range = factory_models.MacAddressRangeFactory()
interface = factory_models.InterfaceFactory() interface = factory_models.InterfaceFactory()

View File

@ -47,7 +47,7 @@ class ControllerTestBase(tests.BaseTest):
class DummyApp(wsgi.Router): class DummyApp(wsgi.Router):
def __init__(self, controller ): def __init__(self, controller):
mapper = routes.Mapper() mapper = routes.Mapper()
mapper.resource("resource", "/resources", mapper.resource("resource", "/resources",
controller=controller.create_resource()) controller=controller.create_resource())

View File

@ -39,6 +39,18 @@ class TestIpConfigurationView(tests.BaseTest):
self.assertEqual(expected_ip1_config, ip_configuration_view.data()[0]) self.assertEqual(expected_ip1_config, ip_configuration_view.data()[0])
self.assertEqual(expected_ip2_config, ip_configuration_view.data()[1]) self.assertEqual(expected_ip2_config, ip_configuration_view.data()[1])
def test_data_returns_deallocated_ip_info(self):
block = factory_models.IpBlockFactory()
interface = factory_models.InterfaceFactory(virtual_interface_id="123")
ip = factory_models.IpAddressFactory(ip_block_id=block.id,
interface_id=interface.id)
ip.deallocate()
deallocated_ip = models.IpAddress.find(ip.id)
expected_ip_config = _ip_data(deallocated_ip, block)
ip_configuration_view = views.IpConfigurationView(deallocated_ip)
self.assertEqual(expected_ip_config, ip_configuration_view.data()[0])
def test_data_returns_route_info(self): def test_data_returns_route_info(self):
block = factory_models.IpBlockFactory() block = factory_models.IpBlockFactory()
interface = factory_models.InterfaceFactory(virtual_interface_id="123") interface = factory_models.InterfaceFactory(virtual_interface_id="123")
@ -57,7 +69,7 @@ class TestIpConfigurationView(tests.BaseTest):
def _ip_data(ip, block): def _ip_data(ip, block):
return { return {
'id': ip.id, 'id': ip.id,
'interface_id': ip.interface.virtual_interface_id, 'interface_id': ip.virtual_interface_id,
'address': ip.address, 'address': ip.address,
'version': ip.version, 'version': ip.version,
'ip_block': { 'ip_block': {