Merge "Minor tweak versioned object implementation"

This commit is contained in:
Jenkins 2016-06-03 03:40:56 +00:00 committed by Gerrit Code Review
commit 3cd322faf9
12 changed files with 51 additions and 134 deletions

View File

@ -46,18 +46,6 @@ class Action(base.SenlinObject, base.VersionedObjectDictCompat):
'domain': fields.StringField(nullable=True),
}
@staticmethod
def _from_db_object(context, action, db_obj):
if db_obj is None:
return None
for field in action.fields:
action[field] = db_obj[field]
action._context = context
action.obj_reset_changes()
return action
@classmethod
def create(cls, context, values):
obj = db_api.action_create(context, values)

View File

@ -32,6 +32,21 @@ class SenlinObject(base.VersionedObject):
OBJ_PROJECT_NAMESPACE = 'senlin'
VERSION = '1.0'
@staticmethod
def _from_db_object(context, obj, db_obj):
if db_obj is None:
return None
for field in obj.fields:
if field == 'metadata':
obj['metadata'] = db_obj['meta_data']
else:
obj[field] = db_obj[field]
obj._context = context
obj.obj_reset_changes()
return obj
class SenlinObjectRegistry(base.VersionedObjectRegistry):

View File

@ -43,22 +43,6 @@ class Cluster(base.SenlinObject, base.VersionedObjectDictCompat):
'domain': fields.StringField(nullable=True),
}
@staticmethod
def _from_db_object(context, cluster, db_obj):
if db_obj is None:
return None
for field in cluster.fields:
if field == 'metadata':
cluster['metadata'] = db_obj['meta_data']
else:
cluster[field] = db_obj[field]
cluster._context = context
cluster.obj_reset_changes()
return cluster
@classmethod
def create(cls, context, values):
obj = db_api.cluster_create(context, values)

View File

@ -28,18 +28,6 @@ class Credential(base.SenlinObject, base.VersionedObjectDictCompat):
'data': fields.JsonField(nullable=True),
}
@staticmethod
def _from_db_object(context, credential, db_obj):
if db_obj is None:
return None
for field in credential.fields:
credential[field] = db_obj[field]
credential._context = context
credential.obj_reset_changes()
return credential
@classmethod
def create(cls, context, values):
obj = db_api.cred_create(context, values)

View File

@ -37,21 +37,6 @@ class Event(base.SenlinObject, base.VersionedObjectDictCompat):
'metadata': fields.JsonField(nullable=True),
}
@staticmethod
def _from_db_object(context, event, db_obj):
if db_obj is None:
return None
for field in event.fields:
if field == 'metadata':
event['metadata'] = db_obj['meta_data']
else:
event[field] = db_obj[field]
event._context = context
event.obj_reset_changes()
return event
@classmethod
def create(cls, context, values):
obj = db_api.event_create(context, values)

View File

@ -30,16 +30,6 @@ class HealthRegistry(base.SenlinObject, base.VersionedObjectDictCompat):
'engine_id': fields.UUIDField(),
}
@staticmethod
def _from_db_object(context, registry, db_obj):
for field in registry.fields:
registry[field] = db_obj[field]
registry._context = context
registry.obj_reset_changes()
return registry
@classmethod
def create(cls, context, cluster_id, check_type, interval, params,
engine_id):

View File

@ -42,22 +42,6 @@ class Node(base.SenlinObject, base.VersionedObjectDictCompat):
'domain': fields.StringField(nullable=True),
}
@staticmethod
def _from_db_object(context, node, db_obj):
if db_obj is None:
return None
for field in node.fields:
if field == 'metadata':
node['metadata'] = db_obj['meta_data']
else:
node[field] = db_obj[field]
node._context = context
node.obj_reset_changes()
return node
@classmethod
def create(cls, context, values):
obj = db_api.node_create(context, values)

View File

@ -36,19 +36,6 @@ class Policy(base.SenlinObject, base.VersionedObjectDictCompat):
'domain': fields.StringField(nullable=True),
}
@staticmethod
def _from_db_object(context, policy, db_obj):
if db_obj is None:
return None
for field in policy.fields:
policy[field] = db_obj[field]
policy._context = context
policy.obj_reset_changes()
return policy
@classmethod
def create(cls, context, values):
obj = db_api.policy_create(context, values)

View File

@ -36,21 +36,6 @@ class Profile(base.SenlinObject, base.VersionedObjectDictCompat):
'metadata': fields.JsonField(nullable=True),
}
@staticmethod
def _from_db_object(context, profile, db_profile):
if db_profile is None:
return None
for field in profile.fields:
if field == 'metadata':
profile['metadata'] = db_profile['meta_data']
else:
profile[field] = db_profile[field]
profile._context = context
profile.obj_reset_changes()
return profile
@classmethod
def create(cls, context, values):
obj = db_api.profile_create(context, values)

View File

@ -37,19 +37,6 @@ class Receiver(base.SenlinObject, base.VersionedObjectDictCompat):
'domain': fields.StringField(nullable=True),
}
@staticmethod
def _from_db_object(context, receiver, db_obj):
if db_obj is None:
return None
for field in receiver.fields:
receiver[field] = db_obj[field]
receiver._context = context
receiver.obj_reset_changes()
return receiver
@classmethod
def create(cls, context, values):
obj = db_api.receiver_create(context, values)

View File

@ -32,18 +32,6 @@ class Service(base.SenlinObject, base.VersionedObjectDictCompat):
'updated_at': fields.DateTimeField(),
}
@staticmethod
def _from_db_object(context, service, db_obj):
if db_obj is None:
return None
for field in service.fields:
service[field] = db_obj[field]
service._context = context
service.obj_reset_changes()
return service
@classmethod
def create(cls, context, service_id, host=None, binary=None, topic=None):
obj = db_api.service_create(context, service_id=service_id, host=host,

View File

@ -10,7 +10,10 @@
# License for the specific language governing permissions and limitations
# under the License.
import mock
from senlin.objects import base as obj_base
from senlin.objects import fields as obj_fields
from senlin.tests.unit.common import base
@ -22,3 +25,36 @@ class TestBaseObject(base.SenlinTestCase):
obj.OBJ_PROJECT_NAMESPACE)
self.assertEqual(obj_base.SenlinObject.VERSION,
obj.VERSION)
@mock.patch.object(obj_base.SenlinObject, "obj_reset_changes")
def test_from_db_object(self, mock_obj_reset_ch):
class TestSenlinObject(obj_base.SenlinObject,
obj_base.VersionedObjectDictCompat):
fields = {
"key1": obj_fields.StringField(),
"key2": obj_fields.StringField(),
"metadata": obj_fields.JsonField()
}
obj = TestSenlinObject()
context = mock.Mock()
db_obj = {
"key1": "value1",
"key2": "value2",
"meta_data": {"key3": "value3"}
}
res = obj_base.SenlinObject._from_db_object(context, obj, db_obj)
self.assertIsNotNone(res)
self.assertEqual("value1", obj["key1"])
self.assertEqual("value2", obj["key2"])
self.assertEqual({"key3": "value3"}, obj["metadata"])
self.assertEqual(obj._context, context)
mock_obj_reset_ch.assert_called_once_with()
def test_from_db_object_none(self):
obj = obj_base.SenlinObject()
db_obj = None
context = mock.Mock()
res = obj_base.SenlinObject._from_db_object(context, obj, db_obj)
self.assertIsNone(res)