Add db support receiver-update operation

Implements: blueprint add-receiver-update

Change-Id: I1405d59f32278021b1af947c03ceb7c02cc3c3c5
Signed-off-by: Yuanbin.Chen <cybing4@gmail.com>
This commit is contained in:
Yuanbin.Chen 2017-05-21 23:11:49 +08:00
parent 7a4544bfcd
commit 540688d32e
3 changed files with 39 additions and 0 deletions

View File

@ -435,6 +435,10 @@ def receiver_delete(context, receiver_id):
return IMPL.receiver_delete(context, receiver_id)
def receiver_update(context, receiver_id, values):
return IMPL.receiver_update(context, receiver_id, values)
def service_create(service_id, host=None, binary=None, topic=None):
return IMPL.service_create(service_id, host=host, binary=binary,
topic=topic)

View File

@ -1355,6 +1355,17 @@ def receiver_delete(context, receiver_id):
session.delete(receiver)
def receiver_update(context, receiver_id, values):
with session_for_write() as session:
receiver = session.query(models.Receiver).get(receiver_id)
if not receiver:
raise exception.ResourceNotFound(type='receiver', id=receiver_id)
receiver.update(values)
receiver.save(session)
return receiver
def service_create(service_id, host=None, binary=None, topic=None):
with session_for_write() as session:
time_now = timeutils.utcnow(True)

View File

@ -316,3 +316,27 @@ class DBAPIReceiverTest(base.SenlinTestCase):
res = db_api.receiver_get(self.ctx, receiver_id)
self.assertIsNone(res)
def test_receiver_update(self):
new_values = {
'name': 'test_receiver2',
'params': {'key2': 'value2'},
}
old_receiver = self._create_receiver(self.ctx)
new_receiver = db_api.receiver_update(self.ctx, old_receiver.id,
new_values)
self.assertEqual(old_receiver.id, new_receiver.id)
self.assertEqual(new_values['name'], new_receiver.name)
self.assertEqual('test_receiver2', new_receiver.name)
self.assertEqual('value2', new_receiver.params['key2'])
def test_receiver_update_not_found(self):
new_values = {
'name': 'test_receiver2',
'params': {'key2': 'value2'},
}
self.assertRaises(exception.ResourceNotFound,
db_api.receiver_update,
self.ctx, 'BogusID', new_values)