diff --git a/api-ref/source/v1/parameters.yaml b/api-ref/source/v1/parameters.yaml index 44794880..cf900abd 100644 --- a/api-ref/source/v1/parameters.yaml +++ b/api-ref/source/v1/parameters.yaml @@ -427,7 +427,7 @@ links: type: array lock_state: description: | - The request to lock/unlock servers. + The lock state of a server. in: body required: true type: boolean diff --git a/api-ref/source/v1/samples/servers/server-create-resp.json b/api-ref/source/v1/samples/servers/server-create-resp.json index 1cef8014..a4c14180 100644 --- a/api-ref/source/v1/samples/servers/server-create-resp.json +++ b/api-ref/source/v1/samples/servers/server-create-resp.json @@ -17,6 +17,7 @@ } ], "uuid": "7de2859d-ec6d-42c7-bb86-9d630ba5ac94", + "locked": false, "created_at": "2016-09-27T02:37:21.966342+00:00", "launched_at": "2016-09-27T02:39:21.966342+00:00", "updated_at": null, diff --git a/api-ref/source/v1/samples/servers/server-detail-resp-when-error.json b/api-ref/source/v1/samples/servers/server-detail-resp-when-error.json index a7e4cb1d..25895818 100644 --- a/api-ref/source/v1/samples/servers/server-detail-resp-when-error.json +++ b/api-ref/source/v1/samples/servers/server-detail-resp-when-error.json @@ -14,6 +14,7 @@ "power_state": "power on", "project_id": "c18e8a1a870d4c08a0b51ced6e0b6459", "status": "error", + "locked": false, "fault": { "code": 500, "message": "fault message", diff --git a/api-ref/source/v1/samples/servers/server-detail-resp.json b/api-ref/source/v1/samples/servers/server-detail-resp.json index cf743bb6..2dc9806e 100644 --- a/api-ref/source/v1/samples/servers/server-detail-resp.json +++ b/api-ref/source/v1/samples/servers/server-detail-resp.json @@ -29,6 +29,7 @@ "swap_mb": 40960 }, "power_state": "power on", + "locked": false, "project_id": "c18e8a1a870d4c08a0b51ced6e0b6459", "status": "building", "launched_at" : null, diff --git a/api-ref/source/v1/samples/servers/server-list-detail-resp.json b/api-ref/source/v1/samples/servers/server-list-detail-resp.json index 8bd286cc..13092c6a 100644 --- a/api-ref/source/v1/samples/servers/server-list-detail-resp.json +++ b/api-ref/source/v1/samples/servers/server-list-detail-resp.json @@ -31,6 +31,7 @@ "swap_mb": 40960 }, "power_state": "power on", + "locked": false, "project_id": "c18e8a1a870d4c08a0b51ced6e0b6459", "status": "building", "updated_at": "2016-10-17T04:12:44+00:00", diff --git a/api-ref/source/v1/samples/servers/server-update-resp.json b/api-ref/source/v1/samples/servers/server-update-resp.json index af7738ce..e9df4514 100644 --- a/api-ref/source/v1/samples/servers/server-update-resp.json +++ b/api-ref/source/v1/samples/servers/server-update-resp.json @@ -17,6 +17,7 @@ } ], "uuid": "7de2859d-ec6d-42c7-bb86-9d630ba5ac94", + "locked": false, "created_at": "2016-09-27T02:37:21.966342+00:00", "launched_at": "2016-09-27T02:39:21.966342+00:00", "updated_at": null, diff --git a/api-ref/source/v1/servers.inc b/api-ref/source/v1/servers.inc index c69acff7..423dd887 100644 --- a/api-ref/source/v1/servers.inc +++ b/api-ref/source/v1/servers.inc @@ -75,6 +75,7 @@ Response - affinity_zone: affinity_zone - key_name: key_name - partitions: partitions + - locked: lock_state **Example Create Server: JSON response** @@ -229,6 +230,7 @@ Response - affinity_zone: affinity_zone - key_name: key_name - partitions: partitions + - locked: lock_state **Example Detailed list of Servers: JSON response** @@ -284,6 +286,7 @@ Response - affinity_zone: affinity_zone - key_name: key_name - partitions: partitions + - locked: lock_state **Example Server Details: JSON response** @@ -347,6 +350,7 @@ Response - affinity_zone: affinity_zone - key_name: key_name - partitions: partitions + - locked: lock_state **Example Update Server: JSON response** diff --git a/mogan/api/controllers/v1/servers.py b/mogan/api/controllers/v1/servers.py index 7d341e41..f775cf0a 100644 --- a/mogan/api/controllers/v1/servers.py +++ b/mogan/api/controllers/v1/servers.py @@ -462,6 +462,9 @@ class Server(base.APIBase): partitions = types.jsontype """The partitions of the server""" + locked = types.boolean + """Represent the current lock state of the server""" + def __init__(self, **kwargs): super(Server, self).__init__(**kwargs) self.fields = [] @@ -513,7 +516,7 @@ class ServerPatchType(types.JsonPatchType): '/power_state', '/availability_zone', '/flavor_uuid', '/image_uuid', '/addresses', '/launched_at', '/affinity_zone', '/key_name', - '/partitions', '/fault', '/node'] + '/partitions', '/fault', '/node', '/locked'] class ServerCollection(base.APIBase): diff --git a/mogan/tests/functional/api/v1/test_servers.py b/mogan/tests/functional/api/v1/test_servers.py index 15a0d6ad..e193be91 100644 --- a/mogan/tests/functional/api/v1/test_servers.py +++ b/mogan/tests/functional/api/v1/test_servers.py @@ -206,7 +206,7 @@ class TestServers(v1_test.APITestV1): resps = self.get_json('/servers/detail', headers=headers)['servers'] self.assertEqual(4, len(resps)) - self.assertEqual(18, len(resps[0].keys())) + self.assertEqual(19, len(resps[0].keys())) self.assertEqual('test_server_0', resps[0]['name']) self.assertEqual('just test server 0', resps[0]['description']) self.assertEqual('building', resps[0]['status'])