Skip to content

Commit d01e886

Browse files
author
David Meu
committed
Update action_views.py
1 parent e3428f1 commit d01e886

File tree

2 files changed

+32
-5
lines changed

2 files changed

+32
-5
lines changed

st2api/st2api/controllers/v1/action_views.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,18 @@ def _get_action_by_id(id):
5050
LOG.exception(msg)
5151
abort(http_client.NOT_FOUND, msg)
5252

53+
@staticmethod
54+
def _get_action_by_ref(ref):
55+
try:
56+
action_db = Action.get_by_ref(ref)
57+
if not action_db:
58+
raise ValueError('Referenced action "%s" doesnt exist' % (ref))
59+
return action_db
60+
except Exception as e:
61+
msg = 'Database lookup for ref="%s" resulted in exception. %s' % (ref, e)
62+
LOG.exception(msg)
63+
abort(http_client.NOT_FOUND, msg)
64+
5365
@staticmethod
5466
def _get_runner_by_id(id):
5567
try:
@@ -70,18 +82,21 @@ def _get_runner_by_name(name):
7082

7183

7284
class ParametersViewController(object):
73-
def get_one(self, action_id, requester_user):
74-
return self._get_one(action_id, requester_user=requester_user)
85+
def get_one(self, ref_or_id, requester_user):
86+
return self._get_one(ref_or_id, requester_user=requester_user)
7587

7688
@staticmethod
77-
def _get_one(action_id, requester_user):
89+
def _get_one(ref_or_id, requester_user):
7890
"""
7991
List merged action & runner parameters by action id.
8092
8193
Handle:
8294
GET /actions/views/parameters/1
8395
"""
84-
action_db = LookupUtils._get_action_by_id(action_id)
96+
if ResourceReference.is_resource_reference(ref_or_id):
97+
action_db = LookupUtils._get_action_by_ref(ref_or_id)
98+
else:
99+
action_db = LookupUtils._get_action_by_id(ref_or_id)
85100

86101
permission_type = PermissionType.ACTION_VIEW
87102
rbac_utils = get_rbac_backend().get_utils_class()

st2api/tests/unit/controllers/v1/test_action_views.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ class ActionViewsParametersControllerTestCase(FunctionalTest):
199199
@mock.patch.object(
200200
action_validator, "validate_action", mock.MagicMock(return_value=True)
201201
)
202-
def test_get_one(self):
202+
def test_get_one_by_id(self):
203203
post_resp = self.app.post_json("/v1/actions", ACTION_1)
204204
action_id = post_resp.json["id"]
205205
try:
@@ -208,6 +208,18 @@ def test_get_one(self):
208208
finally:
209209
self.app.delete("/v1/actions/%s" % action_id)
210210

211+
@mock.patch.object(
212+
action_validator, "validate_action", mock.MagicMock(return_value=True)
213+
)
214+
def test_get_one_by_ref(self):
215+
post_resp = self.app.post_json("/v1/actions", ACTION_1)
216+
action_ref = post_resp.json["ref"]
217+
try:
218+
get_resp = self.app.get("/v1/actions/views/parameters/%s" % action_ref)
219+
self.assertEqual(get_resp.status_int, 200)
220+
finally:
221+
self.app.delete("/v1/actions/%s" % action_ref)
222+
211223

212224
class ActionEntryPointViewControllerTestCase(FunctionalTest):
213225
@mock.patch.object(

0 commit comments

Comments
 (0)