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),
|
'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
|
@classmethod
|
||||||
def create(cls, context, values):
|
def create(cls, context, values):
|
||||||
obj = db_api.action_create(context, values)
|
obj = db_api.action_create(context, values)
|
||||||
|
@ -32,6 +32,21 @@ class SenlinObject(base.VersionedObject):
|
|||||||
OBJ_PROJECT_NAMESPACE = 'senlin'
|
OBJ_PROJECT_NAMESPACE = 'senlin'
|
||||||
VERSION = '1.0'
|
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):
|
class SenlinObjectRegistry(base.VersionedObjectRegistry):
|
||||||
|
|
||||||
|
@ -43,22 +43,6 @@ class Cluster(base.SenlinObject, base.VersionedObjectDictCompat):
|
|||||||
'domain': fields.StringField(nullable=True),
|
'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
|
@classmethod
|
||||||
def create(cls, context, values):
|
def create(cls, context, values):
|
||||||
obj = db_api.cluster_create(context, values)
|
obj = db_api.cluster_create(context, values)
|
||||||
|
@ -28,18 +28,6 @@ class Credential(base.SenlinObject, base.VersionedObjectDictCompat):
|
|||||||
'data': fields.JsonField(nullable=True),
|
'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
|
@classmethod
|
||||||
def create(cls, context, values):
|
def create(cls, context, values):
|
||||||
obj = db_api.cred_create(context, values)
|
obj = db_api.cred_create(context, values)
|
||||||
|
@ -37,21 +37,6 @@ class Event(base.SenlinObject, base.VersionedObjectDictCompat):
|
|||||||
'metadata': fields.JsonField(nullable=True),
|
'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
|
@classmethod
|
||||||
def create(cls, context, values):
|
def create(cls, context, values):
|
||||||
obj = db_api.event_create(context, values)
|
obj = db_api.event_create(context, values)
|
||||||
|
@ -30,16 +30,6 @@ class HealthRegistry(base.SenlinObject, base.VersionedObjectDictCompat):
|
|||||||
'engine_id': fields.UUIDField(),
|
'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
|
@classmethod
|
||||||
def create(cls, context, cluster_id, check_type, interval, params,
|
def create(cls, context, cluster_id, check_type, interval, params,
|
||||||
engine_id):
|
engine_id):
|
||||||
|
@ -42,22 +42,6 @@ class Node(base.SenlinObject, base.VersionedObjectDictCompat):
|
|||||||
'domain': fields.StringField(nullable=True),
|
'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
|
@classmethod
|
||||||
def create(cls, context, values):
|
def create(cls, context, values):
|
||||||
obj = db_api.node_create(context, values)
|
obj = db_api.node_create(context, values)
|
||||||
|
@ -36,19 +36,6 @@ class Policy(base.SenlinObject, base.VersionedObjectDictCompat):
|
|||||||
'domain': fields.StringField(nullable=True),
|
'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
|
@classmethod
|
||||||
def create(cls, context, values):
|
def create(cls, context, values):
|
||||||
obj = db_api.policy_create(context, values)
|
obj = db_api.policy_create(context, values)
|
||||||
|
@ -36,21 +36,6 @@ class Profile(base.SenlinObject, base.VersionedObjectDictCompat):
|
|||||||
'metadata': fields.JsonField(nullable=True),
|
'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
|
@classmethod
|
||||||
def create(cls, context, values):
|
def create(cls, context, values):
|
||||||
obj = db_api.profile_create(context, values)
|
obj = db_api.profile_create(context, values)
|
||||||
|
@ -37,19 +37,6 @@ class Receiver(base.SenlinObject, base.VersionedObjectDictCompat):
|
|||||||
'domain': fields.StringField(nullable=True),
|
'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
|
@classmethod
|
||||||
def create(cls, context, values):
|
def create(cls, context, values):
|
||||||
obj = db_api.receiver_create(context, values)
|
obj = db_api.receiver_create(context, values)
|
||||||
|
@ -32,18 +32,6 @@ class Service(base.SenlinObject, base.VersionedObjectDictCompat):
|
|||||||
'updated_at': fields.DateTimeField(),
|
'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
|
@classmethod
|
||||||
def create(cls, context, service_id, host=None, binary=None, topic=None):
|
def create(cls, context, service_id, host=None, binary=None, topic=None):
|
||||||
obj = db_api.service_create(context, service_id=service_id, host=host,
|
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
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import mock
|
||||||
|
|
||||||
from senlin.objects import base as obj_base
|
from senlin.objects import base as obj_base
|
||||||
|
from senlin.objects import fields as obj_fields
|
||||||
from senlin.tests.unit.common import base
|
from senlin.tests.unit.common import base
|
||||||
|
|
||||||
|
|
||||||
@ -22,3 +25,36 @@ class TestBaseObject(base.SenlinTestCase):
|
|||||||
obj.OBJ_PROJECT_NAMESPACE)
|
obj.OBJ_PROJECT_NAMESPACE)
|
||||||
self.assertEqual(obj_base.SenlinObject.VERSION,
|
self.assertEqual(obj_base.SenlinObject.VERSION,
|
||||||
obj.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