Merge "use receiver_obj to load receiver objects"

This commit is contained in:
Jenkins 2016-12-23 08:57:51 +00:00 committed by Gerrit Code Review
commit 3a32403c1a
3 changed files with 45 additions and 34 deletions

View File

@ -2004,7 +2004,7 @@ class EngineService(service.Service):
if filters:
query['filters'] = filters
receivers = receiver_mod.Receiver.load_all(ctx, **query)
receivers = receiver_obj.Receiver.get_all(ctx, **query)
return [r.to_dict() for r in receivers]
@request_context2
@ -2076,9 +2076,7 @@ class EngineService(service.Service):
:return: A dictionary containing the details about a receiver or
an exception `ResourceNotFound` if no matching object found.
"""
db_receiver = receiver_obj.Receiver.find(ctx, req.identity)
receiver = receiver_mod.Receiver.load(ctx,
receiver_obj=db_receiver)
receiver = receiver_obj.Receiver.find(ctx, req.identity)
return receiver.to_dict()
@request_context2

View File

@ -15,6 +15,7 @@
from oslo_utils import uuidutils
from senlin.common import exception
from senlin.common import utils
from senlin.db import api as db_api
from senlin.objects import base
from senlin.objects import fields
@ -88,8 +89,27 @@ class Receiver(base.SenlinObject, base.VersionedObjectDictCompat):
@classmethod
def get_all(cls, context, **kwargs):
return db_api.receiver_get_all(context, **kwargs)
objs = db_api.receiver_get_all(context, **kwargs)
return [cls._from_db_object(context, cls(), obj) for obj in objs]
@classmethod
def delete(cls, context, receiver_id):
db_api.receiver_delete(context, receiver_id)
def to_dict(self):
receiver_dict = {
'id': self.id,
'name': self.name,
'type': self.type,
'user': self.user,
'project': self.project,
'domain': self.domain,
'created_at': utils.isotime(self.created_at),
'updated_at': utils.isotime(self.updated_at),
'cluster_id': self.cluster_id,
'actor': self.actor,
'action': self.action,
'params': self.params,
'channel': self.channel,
}
return receiver_dict

View File

@ -32,25 +32,24 @@ class ReceiverTest(base.SenlinTestCase):
self.ctx = utils.dummy_context(project='receiver_test_project')
self.eng = service.EngineService('host-a', 'topic-a')
@mock.patch.object(rb.Receiver, 'load_all')
def test_receiver_list2(self, mock_load):
@mock.patch.object(ro.Receiver, 'get_all')
def test_receiver_list2(self, mock_get):
fake_obj = mock.Mock()
fake_obj.to_dict.return_value = {'FOO': 'BAR'}
# NOTE: actual return value is a generator
mock_load.return_value = [fake_obj]
mock_get.return_value = [fake_obj]
req = orro.ReceiverListRequest()
result = self.eng.receiver_list2(self.ctx, req.obj_to_primitive())
self.assertIsInstance(result, list)
self.assertEqual([{'FOO': 'BAR'}], result)
mock_load.assert_called_once_with(self.ctx, project_safe=True)
mock_get.assert_called_once_with(self.ctx, project_safe=True)
@mock.patch.object(rb.Receiver, 'load_all')
def test_receiver_list2_with_params(self, mock_load):
@mock.patch.object(ro.Receiver, 'get_all')
def test_receiver_list2_with_params(self, mock_get):
fake_obj = mock.Mock()
fake_obj.to_dict.return_value = {'FOO': 'BAR'}
mock_load.return_value = [fake_obj]
mock_get.return_value = [fake_obj]
marker = '7445519f-e9db-409f-82f4-187fb8334317'
req = orro.ReceiverListRequest(limit=1, marker=marker, sort='name',
@ -61,17 +60,16 @@ class ReceiverTest(base.SenlinTestCase):
self.assertIsInstance(result, list)
self.assertEqual([{'FOO': 'BAR'}], result)
mock_load.assert_called_once_with(self.ctx, limit=1, marker=marker,
sort='name',
filters={
'type': ['webhook'],
'action': ['CLUSTER_RESIZE'],
'cluster_id': ['123abc']},
project_safe=True)
mock_get.assert_called_once_with(self.ctx, limit=1, marker=marker,
sort='name',
filters={'type': ['webhook'],
'action': ['CLUSTER_RESIZE'],
'cluster_id': ['123abc']},
project_safe=True)
@mock.patch.object(rb.Receiver, 'load_all')
def test_receiver_list2_with_project_safe(self, mock_load):
mock_load.return_value = []
@mock.patch.object(ro.Receiver, 'get_all')
def test_receiver_list2_with_project_safe(self, mock_get):
mock_get.return_value = []
req = orro.ReceiverListRequest(project_safe=False)
ex = self.assertRaises(rpc.ExpectedException,
@ -83,14 +81,14 @@ class ReceiverTest(base.SenlinTestCase):
result = self.eng.receiver_list2(self.ctx, req.obj_to_primitive())
self.assertEqual([], result)
mock_load.assert_called_once_with(self.ctx, project_safe=False)
mock_load.reset_mock()
mock_get.assert_called_once_with(self.ctx, project_safe=False)
mock_get.reset_mock()
req = orro.ReceiverListRequest(project_safe=True)
result = self.eng.receiver_list2(self.ctx, req.obj_to_primitive())
self.assertEqual([], result)
mock_load.assert_called_once_with(self.ctx, project_safe=True)
mock_load.reset_mock()
mock_get.assert_called_once_with(self.ctx, project_safe=True)
mock_get.reset_mock()
@mock.patch.object(co.Cluster, 'find')
@mock.patch.object(rb.Receiver, 'create')
@ -246,21 +244,16 @@ class ReceiverTest(base.SenlinTestCase):
project=self.ctx.project, domain=self.ctx.domain, params={})
@mock.patch.object(ro.Receiver, 'find')
@mock.patch.object(rb.Receiver, 'load')
def test_receiver_get2(self, mock_load, mock_find):
def test_receiver_get2(self, mock_find):
fake_obj = mock.Mock()
mock_find.return_value = fake_obj
fake_receiver = mock.Mock()
fake_receiver.to_dict.return_value = {'FOO': 'BAR'}
mock_load.return_value = fake_receiver
fake_obj.to_dict.return_value = {'FOO': 'BAR'}
req = orro.ReceiverGetRequest(identity='FAKE_ID')
res = self.eng.receiver_get2(self.ctx, req.obj_to_primitive())
self.assertEqual({'FOO': 'BAR'}, res)
mock_find.assert_called_once_with(self.ctx, 'FAKE_ID')
mock_load.assert_called_once_with(self.ctx,
receiver_obj=fake_obj)
@mock.patch.object(ro.Receiver, 'find')
def test_receiver_get2_not_found(self, mock_find):