Add name attribute to Nova server.

This patch add a 'name' attribute to OS::Nova::Server resource for
convenience.  It also avoids additional calls to Nova API.

Change-Id: I67943563268ae0c1c7381ca8b472c7d41190f28b
Closes-Bug: #1327922
This commit is contained in:
tengqm 2014-06-09 20:38:44 +08:00
parent d85bbc9a4d
commit 06898f79ad
2 changed files with 21 additions and 7 deletions

View File

@ -87,11 +87,11 @@ class Server(stack_user.StackUser):
)
ATTRIBUTES = (
SHOW, ADDRESSES, NETWORKS_ATTR, FIRST_ADDRESS, INSTANCE_NAME,
ACCESSIPV4, ACCESSIPV6,
NAME_ATTR, SHOW, ADDRESSES, NETWORKS_ATTR, FIRST_ADDRESS,
INSTANCE_NAME, ACCESSIPV4, ACCESSIPV6,
) = (
'show', 'addresses', 'networks', 'first_address', 'instance_name',
'accessIPv4', 'accessIPv6',
'name', 'show', 'addresses', 'networks', 'first_address',
'instance_name', 'accessIPv4', 'accessIPv6',
)
properties_schema = {
@ -308,6 +308,9 @@ class Server(stack_user.StackUser):
}
attributes_schema = {
NAME_ATTR: attributes.Schema(
_('Name of the server.')
),
SHOW: attributes.Schema(
_('A dict of all server details as returned by the API.')
),
@ -625,6 +628,8 @@ class Server(stack_user.StackUser):
LOG.warn(_('Instance (%(server)s) not found: %(ex)s')
% {'server': self.resource_id, 'ex': ex})
return ''
if name == self.NAME_ATTR:
return self._server_name()
if name == self.ADDRESSES:
return self._add_port_for_address(server)
if name == self.NETWORKS_ATTR:

View File

@ -188,8 +188,10 @@ class ServersTest(HeatTestCase):
def test_server_create(self):
return_server = self.fc.servers.list()[1]
return_server.id = '5678'
server = self._create_test_server(return_server,
'test_server_create')
server_name = 'test_server_create'
stack_name = '%s_s' % server_name
server = self._create_test_server(return_server, server_name)
# this makes sure the auto increment worked on server creation
self.assertTrue(server.id > 0)
@ -230,6 +232,10 @@ class ServersTest(HeatTestCase):
self.assertEqual('sample-server2', server.FnGetAtt('instance_name'))
self.assertEqual('192.0.2.0', server.FnGetAtt('accessIPv4'))
self.assertEqual('::babe:4317:0A83', server.FnGetAtt('accessIPv6'))
expected_name = utils.PhysName(stack_name, server.name)
self.assertEqual(expected_name, server.FnGetAtt('name'))
self.m.VerifyAll()
def test_server_create_metadata(self):
@ -267,8 +273,9 @@ class ServersTest(HeatTestCase):
def test_server_create_with_image_id(self):
return_server = self.fc.servers.list()[1]
return_server.id = '5678'
server_name = 'test_server_create_image_id'
server = self._setup_test_server(return_server,
'test_server_create_image_id',
server_name,
image_id='1',
override_name=True)
@ -309,6 +316,8 @@ class ServersTest(HeatTestCase):
self.assertIn(
server.FnGetAtt('first_address'), (private_ip, public_ip))
self.assertEqual(server_name, server.FnGetAtt('name'))
self.m.VerifyAll()
def test_server_create_image_name_err(self):