Merge "Set ARQ get_all return 423 when any ARQ for vm is not resolved"

This commit is contained in:
Zuul 2019-12-03 07:52:13 +00:00 committed by Gerrit Code Review
commit 1c27941adc
2 changed files with 12 additions and 5 deletions

View File

@ -194,12 +194,9 @@ class ARQsController(base.CyborgController):
arq['state'] != 'BindFailed'):
unbound_flag = True
if instance is not None and unbound_flag:
# Return HTTP code 'Locked'
# TODO(Sundar) This should return HTTP code 423
# if any ARQ for this instance is not resolved.
LOG.warning('HTTP Response should be 423')
pecan.response.status = http_client.LOCKED
return None
# Return HTTP code '423 Locked'
return wsme.api.Response(None, status_code=http_client.LOCKED)
ret = ARQCollection.convert_with_links(arqs)
LOG.info('[arqs:get_all] Returned: %s', ret)

View File

@ -75,6 +75,16 @@ class TestARQsController(v2_test.APITestV2):
for in_extarq, out_arq in zip(self.fake_extarqs, out_arqs):
self._validate_arq(in_extarq.arq, out_arq)
# test get_all response "423 Locked"
instance_uuid = self.fake_extarqs[0].arq.instance_uuid
# set ARQ state to 'BindStarted'
self.fake_extarqs[0].arq.state = 'BindStarted'
mock_extarqs.return_value = self.fake_extarqs
url = '%s?instance=%s&bind_state=resolved' % (
self.ARQ_URL, instance_uuid)
response = self.get_json(url, self.headers)
self.assertEqual(http_client.LOCKED, response.status_int)
@mock.patch('cyborg.objects.DeviceProfile.get_by_name')
@mock.patch('cyborg.objects.ExtARQ.create')
def test_create(self, mock_obj_extarq, mock_obj_dp):