diff --git a/openstack/compute/v2/server.py b/openstack/compute/v2/server.py index 24a579a76..b75ba47c5 100644 --- a/openstack/compute/v2/server.py +++ b/openstack/compute/v2/server.py @@ -130,6 +130,13 @@ class Server(resource2.Resource, metadata.MetadataMixin): #: networks parameter, the server attaches to the only network #: created for the current tenant. networks = resource2.Body('networks') + #: The hypervisor host name. Appears in the response for administrative + #: users only. + hypervisor_hostname = resource2.Body('OS-EXT-SRV-ATTR:hypervisor_hostname') + #: The instance name. The Compute API generates the instance name from the + #: instance name template. Appears in the response for administrative users + #: only. + instance_name = resource2.Body('OS-EXT-SRV-ATTR:instance_name') def _action(self, session, body): """Preform server actions given the message body.""" diff --git a/openstack/tests/unit/compute/v2/test_server.py b/openstack/tests/unit/compute/v2/test_server.py index 124903a53..88a6a475c 100644 --- a/openstack/tests/unit/compute/v2/test_server.py +++ b/openstack/tests/unit/compute/v2/test_server.py @@ -51,7 +51,9 @@ EXAMPLE = { 'personality': '28', 'block_device_mapping_v2': {'key': '29'}, 'os:scheduler_hints': {'key': '30'}, - 'user_data': '31' + 'user_data': '31', + 'OS-EXT-SRV-ATTR:hypervisor_hostname': 'hypervisor.example.com', + 'OS-EXT-SRV-ATTR:instance_name': 'instance-00000001' } @@ -140,6 +142,10 @@ class TestServer(testtools.TestCase): sot.block_device_mapping) self.assertEqual(EXAMPLE['os:scheduler_hints'], sot.scheduler_hints) self.assertEqual(EXAMPLE['user_data'], sot.user_data) + self.assertEqual(EXAMPLE['OS-EXT-SRV-ATTR:hypervisor_hostname'], + sot.hypervisor_hostname) + self.assertEqual(EXAMPLE['OS-EXT-SRV-ATTR:instance_name'], + sot.instance_name) def test_detail(self): sot = server.ServerDetail()