Validate provider_location while managing snapshot

Change-Id: Iec2ceb8a4d8519e5ed716e771dc17388ab5d4d7f
Closes-Bug: #2031048
Signed-off-by: Goutham Pacha Ravi <gouthampravi@gmail.com>
(cherry-picked from commit f6725f7c14)
(cherry picked from commit dba08c221c)
(cherry picked from commit 3badc8633b)
This commit is contained in:
Goutham Pacha Ravi 2023-08-10 15:28:31 -07:00
parent 4c921214f5
commit f533bdb942
3 changed files with 11 additions and 1 deletions

View File

@ -174,6 +174,9 @@ class ShareSnapshotsController(share_snapshots.ShareSnapshotMixin,
if not data.get(parameter):
msg = _("Required parameter %s is empty.") % parameter
raise exc_response(explanation=msg)
if not isinstance(data[parameter], str):
msg = _("Parameter %s must be a string.") % parameter
raise exc_response(explanation=msg)
def _check_if_share_share_network_is_active(self, context, snapshot):
share_network_id = snapshot['share'].get('share_network_id')

View File

@ -701,7 +701,8 @@ class ShareSnapshotAdminActionsAPITest(test.TestCase):
{},
{'snapshots': {}},
{'snapshot': get_fake_manage_body(share_id='xxxxxxxx')},
{'snapshot': get_fake_manage_body(provider_location='xxxxxxxx')}
{'snapshot': get_fake_manage_body(provider_location='xxxxxxxx')},
{'snapshot': {'provider_location': {'x': 'y'}, 'share_id': 'xyzzy'}},
)
def test_snapshot_manage_invalid_body(self, body):
self.mock_policy_check = self.mock_object(

View File

@ -0,0 +1,6 @@
---
fixes:
- |
The "manage" API for snapshots now validates the format of
"provider_location" and "share_id" fields and handles errors
appropriately. These fields are expected to contain string values.