Add EventDB object in orm.py module

This commit is contained in:
Dmitry Shulyak
2015-09-17 15:39:39 +03:00
parent 2d40270856
commit 912a011ca5
3 changed files with 65 additions and 1 deletions

1
solar/.cache/v/cache/lastfailed vendored Normal file
View File

@@ -0,0 +1 @@
{}

View File

@@ -517,6 +517,33 @@ class DBResource(DBObject):
self.inputs.add(input)
class DBEvent(DBObject):
__metaclass__ = DBObjectMeta
_collection = base.BaseGraphDB.COLLECTIONS.events
id = db_field(is_primary=True)
parent = db_field(schema='str!')
parent_action = db_field(schema='str!')
evtype = db_field('str!')
state = db_field('str')
child = db_field('str')
child_action = db_field('str')
@classmethod
def load_list(cls, parent):
rs = db.all(collection=cls._collection.name + ':' + parent)
return [cls(**r.properties) for r in rs]
@property
def _db_key(self):
if not self._primary_field.value:
setattr(self, self._primary_field.name, '{}:{}'.format(self.parent, unicode(uuid.uuid4())))
self._update_fields_values()
return DBObject._db_key.fget(self)
# TODO: remove this
if __name__ == '__main__':
r = DBResource(name=1)

View File

@@ -226,10 +226,10 @@ class TestResourceORM(BaseResourceTest):
r.save()
r.add_input('ip', 'str!', '10.0.0.2')
self.assertEqual(len(r.inputs.as_set()), 1)
<<<<<<< HEAD
class TestResourceInputORM(BaseResourceTest):
def test_backtrack_simple(self):
sample_meta_dir = self.make_resource_meta("""
@@ -421,3 +421,39 @@ input:
signals.disconnect(sample2, sample_dict_list)
self.assertEqual(vi.backtrack_value_emitter(),
[{'a': sample1.resource_inputs()['value']}])
class TestEventORM(BaseResourceTest):
def test_save_and_load_by_parent(self):
ev = orm.DBEvent(
parent='n1',
parent_action='run',
state='success',
child_action='run',
child='n2',
evtype='dependency')
ev.save()
rst = orm.DBEvent.load_list('n1')
self.assertEqual(len(rst), 1)
self.assertEqual(rst[0], ev)
def test_save_several(self):
ev = orm.DBEvent(
parent='n1',
parent_action='run',
state='success',
child_action='run',
child='n2',
evtype='dependency')
ev.save()
ev1 = orm.DBEvent(
parent='n1',
parent_action='run',
state='success',
child_action='run',
child='n3',
evtype='dependency')
ev1.save()
self.assertEqual(len(orm.DBEvent.load_list('n1')), 2)