api: Set min, maxItems for server_group.policies field

As noted inline, the 'policies' field may be a list but it expects one
of two items.

Change-Id: I34c68df1e6330dab1524aa0abec733610211a407
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
Closes-Bug: #1894966
This commit is contained in:
Stephen Finucane 2020-09-16 10:59:49 +01:00
parent 2c66962c7a
commit 32c43fc801
3 changed files with 22 additions and 9 deletions

View File

@ -11,6 +11,7 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import copy
from nova.api.validation import parameter_types
@ -27,15 +28,18 @@ create = {
'name': parameter_types.name,
'policies': {
# This allows only a single item and it must be one of the
# enumerated values. So this is really just a single string
# value, but for legacy reasons is an array. We could
# probably change the type from array to string with a
# microversion at some point but it's very low priority.
# enumerated values. It's changed to a single string value
# in 2.64.
'type': 'array',
'items': [{
'type': 'string',
'enum': ['anti-affinity', 'affinity']}],
'items': [
{
'type': 'string',
'enum': ['anti-affinity', 'affinity'],
},
],
'uniqueItems': True,
'minItems': 1,
'maxItems': 1,
'additionalItems': False,
}
},

View File

@ -37,5 +37,4 @@ class TestCreateServerGroupWithEmptyPolicies(
client.OpenStackApiException,
self.api.post_server_groups,
{'name': 'test group', 'policies': []})
# FIXME(stephenfin): This should not be a 500 error
self.assertEqual(500, exc.response.status_code)
self.assertEqual(400, exc.response.status_code)

View File

@ -0,0 +1,10 @@
---
fixes:
- |
Resolved an issue whereby providing an empty list for the ``policies``
field in the request body of the ``POST /os-server-groups`` API would
result in a server error. This only affects the 2.1 to 2.63 microversions,
as the 2.64 microversion replaces the ``policies`` list field with a
``policy`` string field. See `bug #1894966`__ for more information.
.. __: https://bugs.launchpad.net/nova/+bug/1894966