From dadd45addab8fe9ac582f16c3fbc19ff7d81c597 Mon Sep 17 00:00:00 2001 From: Lars Kellogg-Stedman Date: Mon, 2 Nov 2020 13:38:47 -0500 Subject: [PATCH] handle missing access_rules we delete the "access_rules" field from the form if keystone API version is less than 3.13, but we don't consider the case in clean() method. We are in Wallaby development cycle and we support N-4 release for upgrade [1]. This means horizon can run with Stein keystone. Pre-3.13 keystone API (i.e., 3.12) is part of Stein release [2], so it makes sense to consider this condition. [1] https://docs.openstack.org/horizon/latest/contributor/policies/supported-software.html [2] https://docs.openstack.org/api-ref/identity/ Co-Authored-By: Akihiro Motoki Change-Id: I02e124d90f99d400d8c59bff2c563fdc85e624d4 --- .../identity/application_credentials/forms.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/openstack_dashboard/dashboards/identity/application_credentials/forms.py b/openstack_dashboard/dashboards/identity/application_credentials/forms.py index c57132b40c..5a8614d867 100644 --- a/openstack_dashboard/dashboards/identity/application_credentials/forms.py +++ b/openstack_dashboard/dashboards/identity/application_credentials/forms.py @@ -132,12 +132,15 @@ class CreateApplicationCredentialForm(forms.SelfHandlingForm): def clean(self): cleaned_data = super().clean() - try: - cleaned_data['access_rules'] = yaml.safe_load( - cleaned_data['access_rules']) - except yaml.YAMLError: - msg = (_('Access rules must be a valid JSON or YAML list.')) - raise forms.ValidationError(msg) + # access_rules field exists only when keystone API >= 3.13 and + # the field is deleted above when a lower version of API is used. + if 'access_rules' in cleaned_data: + try: + cleaned_data['access_rules'] = yaml.safe_load( + cleaned_data['access_rules']) + except yaml.YAMLError: + msg = (_('Access rules must be a valid JSON or YAML list.')) + raise forms.ValidationError(msg) return cleaned_data