diff --git a/openstack/compute/v2/server.py b/openstack/compute/v2/server.py index 1ed715876..d29fe6e70 100644 --- a/openstack/compute/v2/server.py +++ b/openstack/compute/v2/server.py @@ -137,6 +137,8 @@ class Server(resource.Resource, metadata.MetadataMixin, resource.TagMixin): #: instance name template. Appears in the response for administrative users #: only. instance_name = resource.Body('OS-EXT-SRV-ATTR:instance_name') + # The locked status of the server + is_locked = resource.Body('locked', type=bool) def _prepare_request(self, requires_id=True, prepend_key=True, base_path=None): diff --git a/openstack/tests/unit/cloud/test_normalize.py b/openstack/tests/unit/cloud/test_normalize.py index fc95c10c3..478bc3b6e 100644 --- a/openstack/tests/unit/cloud/test_normalize.py +++ b/openstack/tests/unit/cloud/test_normalize.py @@ -66,6 +66,7 @@ RAW_SERVER_DICT = { 'progress': 0, 'request_ids': [], 'security_groups': [{u'name': u'default'}], + 'locked': True, 'status': u'ACTIVE', 'tenant_id': u'db92b20496ae4fbda850a689ea9d563f', 'updated': u'2016-10-15T15:49:29Z', @@ -498,6 +499,7 @@ class TestNormalize(base.TestCase): 'OS-SCH-HNT:scheduler_hints': None, 'OS-SRV-USG:launched_at': u'2015-08-01T19:52:02.000000', 'OS-SRV-USG:terminated_at': None, + 'locked': True, 'os-extended-volumes:volumes_attached': []}, 'public_v4': None, 'public_v6': None, @@ -505,6 +507,7 @@ class TestNormalize(base.TestCase): 'scheduler_hints': None, 'security_groups': [{u'name': u'default'}], 'status': u'ACTIVE', + 'locked': True, 'tags': [], 'task_state': None, 'tenant_id': u'db92b20496ae4fbda850a689ea9d563f', @@ -927,7 +930,9 @@ class TestStrictNormalize(base.TestCase): 'power_state': 1, 'private_v4': None, 'progress': 0, - 'properties': {}, + 'properties': { + 'locked': True + }, 'public_v4': None, 'public_v6': None, 'scheduler_hints': None, diff --git a/openstack/tests/unit/compute/v2/test_server.py b/openstack/tests/unit/compute/v2/test_server.py index f43934420..a0ddbce51 100644 --- a/openstack/tests/unit/compute/v2/test_server.py +++ b/openstack/tests/unit/compute/v2/test_server.py @@ -54,7 +54,8 @@ EXAMPLE = { 'OS-EXT-SRV-ATTR:hypervisor_hostname': 'hypervisor.example.com', 'OS-EXT-SRV-ATTR:instance_name': 'instance-00000001', 'OS-SCH-HNT:scheduler_hints': {'key': '30'}, - 'OS-EXT-SRV-ATTR:user_data': '31' + 'OS-EXT-SRV-ATTR:user_data': '31', + 'locked': True } @@ -148,6 +149,7 @@ class TestServer(base.TestCase): self.assertEqual(EXAMPLE['OS-SCH-HNT:scheduler_hints'], sot.scheduler_hints) self.assertEqual(EXAMPLE['OS-EXT-SRV-ATTR:user_data'], sot.user_data) + self.assertEqual(EXAMPLE['locked'], sot.is_locked) def test__prepare_server(self): zone = 1