diff options
author | Zuul <zuul@review.opendev.org> | 2020-10-15 00:05:41 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2020-10-15 00:05:41 +0000 |
commit | c718cf445d537128528217094d6ef4f2e3d906c7 (patch) | |
tree | bdd740ca09dfdd3af2661002f02964f39972ead4 | |
parent | 8e23d72d49c524ffda7aee5717e941c78d239336 (diff) | |
parent | 1634d3f59ace0206131992e31ee2d4b64123d7e8 (diff) | |
download | nova-c718cf445d537128528217094d6ef4f2e3d906c7.tar.gz |
Merge "api: Set min, maxItems for server_group.policies field" into stable/train
-rw-r--r-- | nova/api/openstack/compute/schemas/server_groups.py | 18 | ||||
-rw-r--r-- | nova/tests/functional/regressions/test_bug_1894966.py | 3 | ||||
-rw-r--r-- | releasenotes/notes/bug-1894966-d25c12b1320cb910.yaml | 10 |
3 files changed, 22 insertions, 9 deletions
diff --git a/nova/api/openstack/compute/schemas/server_groups.py b/nova/api/openstack/compute/schemas/server_groups.py index c5724bd687..102c6df869 100644 --- a/nova/api/openstack/compute/schemas/server_groups.py +++ b/nova/api/openstack/compute/schemas/server_groups.py @@ -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, } }, diff --git a/nova/tests/functional/regressions/test_bug_1894966.py b/nova/tests/functional/regressions/test_bug_1894966.py index 72173b8255..e7e4069084 100644 --- a/nova/tests/functional/regressions/test_bug_1894966.py +++ b/nova/tests/functional/regressions/test_bug_1894966.py @@ -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) diff --git a/releasenotes/notes/bug-1894966-d25c12b1320cb910.yaml b/releasenotes/notes/bug-1894966-d25c12b1320cb910.yaml new file mode 100644 index 0000000000..f87cc7806d --- /dev/null +++ b/releasenotes/notes/bug-1894966-d25c12b1320cb910.yaml @@ -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 |