Merge "Fixed 500 error in get_result API handler"
This commit is contained in:
commit
05a1b2f375
@ -20,7 +20,7 @@ from murano.db import models
|
|||||||
from murano.db.services import environments as envs
|
from murano.db.services import environments as envs
|
||||||
from murano.db.services import sessions
|
from murano.db.services import sessions
|
||||||
from murano.db import session as db_session
|
from murano.db import session as db_session
|
||||||
from murano.common.i18n import _LI, _LE
|
from murano.common.i18n import _LI, _LE, _
|
||||||
from murano.openstack.common import log as logging
|
from murano.openstack.common import log as logging
|
||||||
from murano.services import actions
|
from murano.services import actions
|
||||||
from murano.services import states
|
from murano.services import states
|
||||||
@ -79,7 +79,17 @@ class Controller(object):
|
|||||||
|
|
||||||
unit = db_session.get_session()
|
unit = db_session.get_session()
|
||||||
self._validate_environment(unit, request, environment_id)
|
self._validate_environment(unit, request, environment_id)
|
||||||
return actions.ActionServices.get_result(environment_id, task_id, unit)
|
result = actions.ActionServices.get_result(environment_id, task_id,
|
||||||
|
unit)
|
||||||
|
|
||||||
|
if result is not None:
|
||||||
|
return result
|
||||||
|
msg = (_('Result for task with environment_id: {} and '
|
||||||
|
'task_id: {} was not found.')
|
||||||
|
.format(environment_id, task_id))
|
||||||
|
|
||||||
|
LOG.error(msg)
|
||||||
|
raise exc.HTTPNotFound(msg)
|
||||||
|
|
||||||
|
|
||||||
def create_resource():
|
def create_resource():
|
||||||
|
@ -111,4 +111,8 @@ class ActionServices(object):
|
|||||||
def get_result(environment_id, task_id, unit):
|
def get_result(environment_id, task_id, unit):
|
||||||
task = unit.query(models.Task).filter_by(
|
task = unit.query(models.Task).filter_by(
|
||||||
id=task_id, environment_id=environment_id).first()
|
id=task_id, environment_id=environment_id).first()
|
||||||
return task.result
|
|
||||||
|
if task is not None:
|
||||||
|
return task.result
|
||||||
|
|
||||||
|
return None
|
||||||
|
@ -95,3 +95,60 @@ class TestActionsApi(tb.ControllerTest, tb.MuranoApiTestCase):
|
|||||||
self.mock_engine_rpc.handle_task.assert_called_once_with(rpc_task)
|
self.mock_engine_rpc.handle_task.assert_called_once_with(rpc_task)
|
||||||
|
|
||||||
self.assertIn('task_id', result)
|
self.assertIn('task_id', result)
|
||||||
|
|
||||||
|
def test_get_result(self, _):
|
||||||
|
"""Result of task with given id and environment id is returned."""
|
||||||
|
now = timeutils.utcnow()
|
||||||
|
expected_environment_id = 'test_environment'
|
||||||
|
expected_task_id = 'test_task'
|
||||||
|
expected_result = {'test_result': 'test_result'}
|
||||||
|
|
||||||
|
environment = models.Environment(
|
||||||
|
id=expected_environment_id,
|
||||||
|
name='test_environment', created=now, updated=now,
|
||||||
|
tenant_id=self.tenant
|
||||||
|
)
|
||||||
|
|
||||||
|
task = models.Task(
|
||||||
|
id=expected_task_id,
|
||||||
|
started=now,
|
||||||
|
finished=now,
|
||||||
|
result=expected_result,
|
||||||
|
environment_id=expected_environment_id
|
||||||
|
)
|
||||||
|
|
||||||
|
test_utils.save_models(environment, task)
|
||||||
|
|
||||||
|
request = self._get(
|
||||||
|
'/environments/{environment_id}/actions/{task_id}'
|
||||||
|
.format(environment_id=expected_environment_id,
|
||||||
|
task_id=expected_task_id),
|
||||||
|
)
|
||||||
|
|
||||||
|
response = request.get_response(self.api)
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
self.assertEqual(response.json, expected_result)
|
||||||
|
|
||||||
|
def test_get_result_not_found(self, _):
|
||||||
|
"""If task does not exists, it should be handled correctly
|
||||||
|
and API should return 404.
|
||||||
|
"""
|
||||||
|
expected_environment_id = 'test_environment'
|
||||||
|
|
||||||
|
environment = models.Environment(
|
||||||
|
id=expected_environment_id,
|
||||||
|
name='test_environment',
|
||||||
|
tenant_id=self.tenant
|
||||||
|
)
|
||||||
|
test_utils.save_models(environment)
|
||||||
|
|
||||||
|
request = self._get(
|
||||||
|
'/environments/{environment_id}/actions/{task_id}'
|
||||||
|
.format(environment_id=expected_environment_id,
|
||||||
|
task_id='not_existent_task_id'),
|
||||||
|
)
|
||||||
|
|
||||||
|
response = request.get_response(self.api)
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, 404)
|
||||||
|
Loading…
Reference in New Issue
Block a user