Verify request ID in all manila responses

All requests to manila API must return
a request ID in the response headers.

This change adds validation to ensure
no new APIs are added that invalidate this
criterion.

Change-Id: If9b033109a653913b62ce9588011d2d7f00e0519
Partial-Bug: #1815532
This commit is contained in:
Goutham Pacha Ravi 2019-02-15 14:37:13 -08:00 committed by Tom Barron
parent 370569423e
commit 5782a70412
1 changed files with 27 additions and 7 deletions

View File

@ -55,25 +55,38 @@ class SharesV2Client(shares_client.SharesClient):
new_headers = headers
return new_headers
def verify_request_id(self, response):
response_headers = [r.lower() for r in response.keys()]
assert_msg = ("Response is missing request ID. Response "
"headers are: %s") % response
assert 'x-compute-request-id' in response_headers, assert_msg
# Overwrite all http verb calls to inject the micro version header
def post(self, url, body, headers=None, extra_headers=False,
version=LATEST_MICROVERSION):
headers = self.inject_microversion_header(headers, version,
extra_headers=extra_headers)
return super(SharesV2Client, self).post(url, body, headers=headers)
resp, body = super(SharesV2Client, self).post(url, body,
headers=headers)
self.verify_request_id(resp)
return resp, body
def get(self, url, headers=None, extra_headers=False,
version=LATEST_MICROVERSION):
headers = self.inject_microversion_header(headers, version,
extra_headers=extra_headers)
return super(SharesV2Client, self).get(url, headers=headers)
resp, body = super(SharesV2Client, self).get(url, headers=headers)
self.verify_request_id(resp)
return resp, body
def delete(self, url, headers=None, body=None, extra_headers=False,
version=LATEST_MICROVERSION):
headers = self.inject_microversion_header(headers, version,
extra_headers=extra_headers)
return super(SharesV2Client, self).delete(url, headers=headers,
body=body)
resp, body = super(SharesV2Client, self).delete(url, headers=headers,
body=body)
self.verify_request_id(resp)
return resp, body
def patch(self, url, body, headers=None, extra_headers=False,
version=LATEST_MICROVERSION):
@ -85,19 +98,26 @@ class SharesV2Client(shares_client.SharesClient):
version=LATEST_MICROVERSION):
headers = self.inject_microversion_header(headers, version,
extra_headers=extra_headers)
return super(SharesV2Client, self).put(url, body, headers=headers)
resp, body = super(SharesV2Client, self).put(url, body,
headers=headers)
self.verify_request_id(resp)
return resp, body
def head(self, url, headers=None, extra_headers=False,
version=LATEST_MICROVERSION):
headers = self.inject_microversion_header(headers, version,
extra_headers=extra_headers)
return super(SharesV2Client, self).head(url, headers=headers)
resp, body = super(SharesV2Client, self).head(url, headers=headers)
self.verify_request_id(resp)
return resp, body
def copy(self, url, headers=None, extra_headers=False,
version=LATEST_MICROVERSION):
headers = self.inject_microversion_header(headers, version,
extra_headers=extra_headers)
return super(SharesV2Client, self).copy(url, headers=headers)
resp, body = super(SharesV2Client, self).copy(url, headers=headers)
self.verify_request_id(resp)
return resp, body
def reset_state(self, s_id, status="error", s_type="shares",
headers=None, version=LATEST_MICROVERSION,