Expose IP address of a node instance
Change-Id: Ie2d6a6d5d3e6abf27ae83c7b4fe4cb0f482e1bff Related-bug: #1337842
This commit is contained in:
parent
54c7e1c838
commit
af5b6ccd33
@ -487,14 +487,17 @@ class Node(base.APIResourceWrapper):
|
||||
Node, or no matching Instance is found
|
||||
:rtype: Instance
|
||||
"""
|
||||
if hasattr(self, '_instance'):
|
||||
return self._instance
|
||||
|
||||
if self.instance_uuid:
|
||||
for server in TEST_DATA.novaclient_servers.list():
|
||||
servers, _has_more_data = nova.server_list(self._request)
|
||||
for server in servers:
|
||||
if server.id == self.instance_uuid:
|
||||
return server
|
||||
|
||||
@cached_property
|
||||
def ip_address(self):
|
||||
return (self.instance._apiresource.addresses['ctlplane'][0]
|
||||
['addr'])
|
||||
|
||||
@cached_property
|
||||
def image_name(self):
|
||||
"""Return image name of associated instance
|
||||
|
@ -63,7 +63,7 @@ class RegisteredNodesTable(tables.DataTable):
|
||||
link="horizon:infrastructure:nodes:detail",
|
||||
verbose_name=_("Node Name"))
|
||||
instance_ip = tables.Column(lambda n:
|
||||
n.instance.public_ip if n.instance else '-',
|
||||
n.ip_address if n.instance else '-',
|
||||
verbose_name=_("Instance IP"))
|
||||
provisioning_status = tables.Column('provisioning_status',
|
||||
verbose_name=_("Provisioned"))
|
||||
|
@ -66,6 +66,9 @@ class NodesTests(test.BaseAdminViewTests, helpers.APITestCase):
|
||||
instance = TEST_DATA.novaclient_servers.first()
|
||||
image = TEST_DATA.glanceclient_images.first()
|
||||
|
||||
for node in registered_nodes:
|
||||
node.ip_address = '1.1.1.1'
|
||||
|
||||
with contextlib.nested(
|
||||
patch('tuskar_ui.api.tuskar.OvercloudRole', **{
|
||||
'spec_set': ['list', 'name'],
|
||||
@ -76,8 +79,9 @@ class NodesTests(test.BaseAdminViewTests, helpers.APITestCase):
|
||||
'list.return_value': registered_nodes,
|
||||
}),
|
||||
patch('tuskar_ui.api.node.nova', **{
|
||||
'spec_set': ['server_get'],
|
||||
'spec_set': ['server_get', 'server_list'],
|
||||
'server_get.return_value': instance,
|
||||
'server_list.return_value': ([instance], False),
|
||||
}),
|
||||
patch('tuskar_ui.api.node.glance', **{
|
||||
'spec_set': ['image_get'],
|
||||
@ -259,14 +263,10 @@ class NodesTests(test.BaseAdminViewTests, helpers.APITestCase):
|
||||
|
||||
def test_performance(self):
|
||||
node = api.node.Node(self.ironicclient_nodes.list()[0])
|
||||
resources = self.resources.list()
|
||||
instance = TEST_DATA.novaclient_servers.first()
|
||||
|
||||
ceilometerclient = self.stub_ceilometerclient()
|
||||
ceilometerclient.resources = self.mox.CreateMockAnything()
|
||||
ceilometerclient.resources.list(q=[{'field': 'resource_id',
|
||||
'value': '1.2.2.2',
|
||||
'op': 'eq'}]).AndReturn(resources)
|
||||
ceilometerclient.meters = self.mox.CreateMockAnything()
|
||||
|
||||
self.mox.ReplayAll()
|
||||
@ -277,8 +277,9 @@ class NodesTests(test.BaseAdminViewTests, helpers.APITestCase):
|
||||
'get.return_value': node,
|
||||
}),
|
||||
patch('tuskar_ui.api.node.nova', **{
|
||||
'spec_set': ['servers', 'server_get'],
|
||||
'spec_set': ['servers', 'server_get', 'server_list'],
|
||||
'servers.return_value': [instance],
|
||||
'server_list.return_value': ([instance], None),
|
||||
})
|
||||
):
|
||||
url = urlresolvers.reverse(PERFORMANCE_VIEW, args=(node.uuid,))
|
||||
|
@ -142,7 +142,7 @@ class PerformanceView(base.TemplateView):
|
||||
series = []
|
||||
|
||||
try:
|
||||
ip_addr = node.driver_info['ip_address']
|
||||
ip_addr = node.ip_address
|
||||
except AttributeError:
|
||||
pass
|
||||
else:
|
||||
|
@ -159,7 +159,10 @@ class HeatAPITests(test.APITestCase):
|
||||
with patch('novaclient.v1_1.contrib.baremetal.'
|
||||
'BareMetalNodeManager.list',
|
||||
return_value=nodes):
|
||||
ret_val = api.heat.Resource(
|
||||
resource, request=object()).node
|
||||
with patch('openstack_dashboard.api.nova.server_list',
|
||||
return_value=([instance], False)):
|
||||
ret_val = api.heat.Resource(
|
||||
resource, request=object()).node
|
||||
ret_instance = ret_val.instance
|
||||
self.assertIsInstance(ret_val, api.node.Node)
|
||||
self.assertIsInstance(ret_val.instance, servers.Server)
|
||||
self.assertIsInstance(ret_instance, servers.Server)
|
||||
|
@ -51,10 +51,13 @@ class NodeAPITests(test.APITestCase):
|
||||
with patch('novaclient.v1_1.contrib.baremetal.'
|
||||
'BareMetalNodeManager.get',
|
||||
return_value=node):
|
||||
ret_val = api.node.Node.get(self.request, node.uuid)
|
||||
with patch('openstack_dashboard.api.nova.server_list',
|
||||
return_value=([instance], False)):
|
||||
ret_val = api.node.Node.get(self.request, node.uuid)
|
||||
ret_instance = ret_val.instance
|
||||
|
||||
self.assertIsInstance(ret_val, api.node.Node)
|
||||
self.assertIsInstance(ret_val.instance, servers.Server)
|
||||
self.assertIsInstance(ret_instance, servers.Server)
|
||||
|
||||
def test_node_get_by_instance_uuid(self):
|
||||
instance = self.novaclient_servers.first()
|
||||
@ -66,12 +69,15 @@ class NodeAPITests(test.APITestCase):
|
||||
with patch('novaclient.v1_1.contrib.baremetal.'
|
||||
'BareMetalNodeManager.list',
|
||||
return_value=nodes):
|
||||
ret_val = api.node.Node.get_by_instance_uuid(
|
||||
self.request,
|
||||
node.instance_uuid)
|
||||
with patch('openstack_dashboard.api.nova.server_list',
|
||||
return_value=([instance], False)):
|
||||
ret_val = api.node.Node.get_by_instance_uuid(
|
||||
self.request,
|
||||
node.instance_uuid)
|
||||
ret_instance = ret_val.instance
|
||||
|
||||
self.assertIsInstance(ret_val, api.node.Node)
|
||||
self.assertIsInstance(ret_val.instance, servers.Server)
|
||||
self.assertIsInstance(ret_instance, servers.Server)
|
||||
|
||||
def test_node_list(self):
|
||||
instances = self.novaclient_servers.list()
|
||||
@ -101,7 +107,10 @@ class NodeAPITests(test.APITestCase):
|
||||
|
||||
with patch('openstack_dashboard.api.nova.server_get',
|
||||
return_value=instance):
|
||||
ret_val = api.node.Node(node).instance
|
||||
with patch('openstack_dashboard.api.nova.server_list',
|
||||
return_value=([instance], False)):
|
||||
ret_val = api.node.Node(node).instance
|
||||
|
||||
self.assertIsInstance(ret_val, servers.Server)
|
||||
|
||||
def test_node_image_name(self):
|
||||
@ -113,7 +122,9 @@ class NodeAPITests(test.APITestCase):
|
||||
return_value=instance):
|
||||
with patch('openstack_dashboard.api.glance.image_get',
|
||||
return_value=image):
|
||||
ret_val = api.node.Node(node).image_name
|
||||
with patch('openstack_dashboard.api.nova.server_list',
|
||||
return_value=([instance], False)):
|
||||
ret_val = api.node.Node(node).image_name
|
||||
self.assertEqual(ret_val, 'overcloud-compute')
|
||||
|
||||
def test_node_addresses_no_ironic(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user