Update the data module of operation_log

Change-Id: I53375c67681f84c406e9da2c7d078628e1b4dce1
blueprint: operation-log-api
This commit is contained in:
chenying 2017-03-22 00:21:30 +08:00
parent f5fbceced8
commit 498a127c4e
6 changed files with 48 additions and 25 deletions

View File

@ -93,12 +93,17 @@ def define_tables(meta):
Column('deleted', Boolean, nullable=False),
Column('id', String(length=36), primary_key=True, nullable=False),
Column('project_id', String(length=255), nullable=False),
Column('operation_type', String(length=255), nullable=False),
Column('checkpoint_id', String(length=36)),
Column('plan_id', String(length=36)),
Column('provider_id', String(length=36)),
Column('restore_id', String(length=36)),
Column('scheduled_operation_id', String(length=36)),
Column('status', String(length=64)),
Column('started_at', DateTime),
Column('ended_at', DateTime),
Column('state', String(length=64)),
Column('error', String(length=255)),
Column('entries', Text),
Column('error_info', Text),
Column('extra_info', Text),
mysql_engine='InnoDB'
)

View File

@ -194,12 +194,17 @@ class OperationLog(BASE, KarborBase):
__tablename__ = 'operation_logs'
id = Column(String(36), primary_key=True)
project_id = Column(String(255))
operation_type = Column(String(255))
checkpoint_id = Column(String(36))
plan_id = Column(String(36))
provider_id = Column(String(36))
restore_id = Column(String(36))
scheduled_operation_id = Column(String(36))
status = Column(String(64))
started_at = Column(DateTime)
ended_at = Column(DateTime)
state = Column(String(64))
error = Column(String(64))
entries = Column(Text)
error_info = Column(Text)
extra_info = Column(Text)
class CheckpointRecord(BASE, KarborBase):

View File

@ -29,12 +29,17 @@ class OperationLog(base.KarborPersistentObject, base.KarborObject,
fields = {
'id': fields.UUIDField(),
'project_id': fields.UUIDField(),
'scheduled_operation_id': fields.UUIDField(),
'started_at': base.DateTimeField(nullable=True),
'ended_at': base.DateTimeField(nullable=True),
'state': fields.StringField(nullable=True),
'error': fields.StringField(nullable=True),
'entries': fields.StringField(nullable=True),
'operation_type': fields.UUIDField(),
'checkpoint_id': fields.UUIDField(nullable=True),
'plan_id': fields.UUIDField(nullable=True),
'provider_id': fields.UUIDField(nullable=True),
'restore_id': fields.UUIDField(nullable=True),
'scheduled_operation_id': fields.UUIDField(nullable=True),
'status': fields.StringField(nullable=True),
'started_at': fields.DateTimeField(nullable=True),
'ended_at': fields.DateTimeField(nullable=True),
'error_info': fields.StringField(nullable=True),
'extra_info': fields.StringField(nullable=True),
}
@staticmethod

View File

@ -547,10 +547,14 @@ class OperationLogTestCase(ModelBaseTestCase):
fake_operation_log = {
"id": "36ea41b2-c358-48a7-9117-70cb7617410a",
"project_id": "586cc6ce-e286-40bd-b2b5-dd32694d9944",
"operation_type": "protect",
"checkpoint_id": "dcb20606-ad71-40a3-80e4-ef0fafdad0c3",
"plan_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
"provider_id": "23902b02-5666-4ee6-8dfe-962ac09c3994",
"scheduled_operation_id": "2220f8b1-975d-4621-a872-fa9afb43cb6c",
"state": "failed",
"error": "Could not access bank",
"entries": "[entries:{'timestamp': '2015-08-27T09:50:51-05:00',"
"status": "failed",
"error_info": "Could not access bank",
"extra_info": "[entries:{'timestamp': '2015-08-27T09:50:51-05:00',"
"'message': 'Doing things'}]"
}
@ -562,7 +566,7 @@ class OperationLogTestCase(ModelBaseTestCase):
operation_log = db.operation_log_create(self.ctxt,
self.fake_operation_log)
self.assertTrue(uuidutils.is_uuid_like(operation_log['id']))
self.assertEqual('failed', operation_log.state)
self.assertEqual('failed', operation_log.status)
def test_operation_log_get(self):
operation_log = db.operation_log_create(self.ctxt,
@ -581,9 +585,9 @@ class OperationLogTestCase(ModelBaseTestCase):
operation_log = db.operation_log_create(self.ctxt,
self.fake_operation_log)
db.operation_log_update(self.ctxt, operation_log['id'],
{'state': 'finished'})
{'status': 'finished'})
operation_log = db.operation_log_get(self.ctxt, operation_log['id'])
self.assertEqual('finished', operation_log['state'])
self.assertEqual('finished', operation_log['status'])
def test_operation_log_update_nonexistent(self):
self.assertRaises(exception.OperationLogNotFound,

View File

@ -19,10 +19,14 @@ def fake_db_operation_log(**updates):
db_operation_log = {
"id": "36ea41b2-c358-48a7-9117-70cb7617410a",
"project_id": "586cc6ce-e286-40bd-b2b5-dd32694d9944",
"operation_type": "protect",
"checkpoint_id": "dcb20606-ad71-40a3-80e4-ef0fafdad0c3",
"plan_id": "cf56bd3e-97a7-4078-b6d5-f36246333fd9",
"provider_id": "23902b02-5666-4ee6-8dfe-962ac09c3994",
"scheduled_operation_id": "2220f8b1-975d-4621-a872-fa9afb43cb6c",
"state": "failed",
"error": "Could not access bank",
"entries": "[entries:{'timestamp': '2015-08-27T09:50:51-05:00',"
"status": "failed",
"error_info": "Could not access bank",
"extra_info": "[entries:{'timestamp': '2015-08-27T09:50:51-05:00',"
"'message': 'Doing things'}]"
}
for name, field in objects.OperationLog.fields.items():

View File

@ -46,10 +46,10 @@ class TestOperationLog(test_objects.BaseObjectsTestCase):
db_operation_log = fake_operation_log.fake_db_operation_log()
operation_log = objects.OperationLog._from_db_object(
self.context, objects.OperationLog(), db_operation_log)
operation_log.state = 'finished'
operation_log.status = 'finished'
operation_log.save()
operation_log_update.assert_called_once_with(
self.context, operation_log.id, {'state': 'finished'})
self.context, operation_log.id, {'status': 'finished'})
@mock.patch('karbor.db.sqlalchemy.api.operation_log_destroy')
def test_destroy(self, operation_log_destroy):
@ -63,5 +63,5 @@ class TestOperationLog(test_objects.BaseObjectsTestCase):
def test_obj_field_status(self):
operation_log = objects.OperationLog(context=self.context,
state='finished')
self.assertEqual('finished', operation_log.state)
status='finished')
self.assertEqual('finished', operation_log.status)