Merge "Minor tweak versioned object implementation"
This commit is contained in:
commit
3cd322faf9
@ -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)
|
||||
|
@ -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):
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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):
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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,
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user