From eba06599a444dab8a4889ec0f9298128ac13a9b7 Mon Sep 17 00:00:00 2001 From: Peter Piela Date: Thu, 18 May 2017 10:02:07 -0400 Subject: [PATCH] Modify regex pattern used to validate node ids We have been changing the ironic-ui client api to accept both node uuids and names (to be consistent with the ironic client); however, the urls defining the rest endpoints only accepted uuids. This change uses a logical-name-pattern to accept both uuids and names. Change-Id: I288d8e3c4d949e4787f67b62d87372fec539dd32 --- ironic_ui/api/ironic_rest_api.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/ironic_ui/api/ironic_rest_api.py b/ironic_ui/api/ironic_rest_api.py index f1d92f63..5550b99c 100755 --- a/ironic_ui/api/ironic_rest_api.py +++ b/ironic_ui/api/ironic_rest_api.py @@ -22,6 +22,8 @@ from openstack_dashboard.api.rest import urls from openstack_dashboard.api.rest import utils as rest_utils +LOGICAL_NAME_PATTERN = '[a-zA-Z0-9-._~]+' + @urls.register class Nodes(generic.View): @@ -62,7 +64,7 @@ class Nodes(generic.View): @urls.register class Node(generic.View): - url_regex = r'ironic/nodes/(?P[0-9a-f-]+)$' + url_regex = r'ironic/nodes/(?P{})$'.format(LOGICAL_NAME_PATTERN) @rest_utils.ajax() def get(self, request, node_id): @@ -142,7 +144,8 @@ class Port(generic.View): @urls.register class StatesPower(generic.View): - url_regex = r'ironic/nodes/(?P[0-9a-f-]+)/states/power$' + url_regex = r'ironic/nodes/(?P{})/states/power$'. \ + format(LOGICAL_NAME_PATTERN) @rest_utils.ajax(data_required=True) def patch(self, request, node_id): @@ -161,7 +164,8 @@ class StatesPower(generic.View): @urls.register class StatesProvision(generic.View): - url_regex = r'ironic/nodes/(?P[0-9a-f-]+)/states/provision$' + url_regex = r'ironic/nodes/(?P{})/states/provision$'. \ + format(LOGICAL_NAME_PATTERN) @rest_utils.ajax(data_required=True) def put(self, request, node_uuid): @@ -182,7 +186,8 @@ class StatesProvision(generic.View): @urls.register class StatesConsole(generic.View): - url_regex = r'ironic/nodes/(?P[0-9a-f-]+)/states/console$' + url_regex = r'ironic/nodes/(?P{})/states/console$'. \ + format(LOGICAL_NAME_PATTERN) @rest_utils.ajax() def get(self, request, node_uuid): @@ -210,7 +215,8 @@ class StatesConsole(generic.View): @urls.register class Maintenance(generic.View): - url_regex = r'ironic/nodes/(?P[0-9a-f-]+)/maintenance$' + url_regex = r'ironic/nodes/(?P{})/maintenance$'. \ + format(LOGICAL_NAME_PATTERN) @rest_utils.ajax() def patch(self, request, node_id): @@ -241,7 +247,8 @@ class Maintenance(generic.View): @urls.register class Validate(generic.View): - url_regex = r'ironic/nodes/(?P[0-9a-f-]+)/validate$' + url_regex = r'ironic/nodes/(?P{})/validate$'. \ + format(LOGICAL_NAME_PATTERN) @rest_utils.ajax() def get(self, request, node_id): @@ -257,7 +264,8 @@ class Validate(generic.View): @urls.register class BootDevice(generic.View): - url_regex = r'ironic/nodes/(?P[0-9a-f-]+)/boot_device$' + url_regex = r'ironic/nodes/(?P{})/boot_device$'. \ + format(LOGICAL_NAME_PATTERN) @rest_utils.ajax() def get(self, request, node_id):