diff --git a/magnum/api/controllers/v1/baymodel.py b/magnum/api/controllers/v1/baymodel.py index e424396137..644e851ad9 100644 --- a/magnum/api/controllers/v1/baymodel.py +++ b/magnum/api/controllers/v1/baymodel.py @@ -229,8 +229,12 @@ class BayModelsController(rest.RestController): if self.from_baymodels: raise exception.OperationNotPermitted - new_baymodel = objects.BayModel(pecan.request.context, - **baymodel.as_dict()) + baymodel_dict = baymodel.as_dict() + ctxt = pecan.request.context + auth_token = ctxt.auth_token_info['token'] + baymodel_dict['project_id'] = auth_token['project']['id'] + baymodel_dict['user_id'] = auth_token['user']['id'] + new_baymodel = objects.BayModel(ctxt, **baymodel_dict) new_baymodel.create() # Set the HTTP Location Header pecan.response.location = link.build_url('baymodels', diff --git a/magnum/tests/api/controllers/v1/test_baymodel.py b/magnum/tests/api/controllers/v1/test_baymodel.py index 784812ca4c..be3f807a91 100644 --- a/magnum/tests/api/controllers/v1/test_baymodel.py +++ b/magnum/tests/api/controllers/v1/test_baymodel.py @@ -19,6 +19,7 @@ from six.moves.urllib import parse as urlparse from wsme import types as wtypes from magnum.api.controllers.v1 import baymodel as api_baymodel +from magnum.common import context from magnum.common import utils from magnum.tests.api import base as api_base from magnum.tests.api import utils as apiutils @@ -246,6 +247,15 @@ class TestPatch(api_base.FunctionalTest): class TestPost(api_base.FunctionalTest): + def setUp(self): + super(TestPost, self).setUp() + p = mock.patch.object(context, 'RequestContext') + self.mock_request_context = p.start() + mock_auth_token = self.mock_request_context.auth_token_info['token'] + mock_auth_token['project']['id'].return_value = 'fake_project' + mock_auth_token['user']['id'].return_value = 'fake_user' + self.addCleanup(p.stop) + @mock.patch.object(timeutils, 'utcnow') def test_create_baymodel(self, mock_utcnow): cdict = apiutils.baymodel_post_data()