summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-10-15 00:05:41 +0000
committerGerrit Code Review <review@openstack.org>2020-10-15 00:05:41 +0000
commitc718cf445d537128528217094d6ef4f2e3d906c7 (patch)
treebdd740ca09dfdd3af2661002f02964f39972ead4
parent8e23d72d49c524ffda7aee5717e941c78d239336 (diff)
parent1634d3f59ace0206131992e31ee2d4b64123d7e8 (diff)
downloadnova-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.py18
-rw-r--r--nova/tests/functional/regressions/test_bug_1894966.py3
-rw-r--r--releasenotes/notes/bug-1894966-d25c12b1320cb910.yaml10
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