Merge "Add host field to InstanceActionEvent"
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
from oslo_utils import timeutils
|
from oslo_utils import timeutils
|
||||||
|
from oslo_utils import versionutils
|
||||||
|
|
||||||
from nova import db
|
from nova import db
|
||||||
from nova import objects
|
from nova import objects
|
||||||
@@ -120,7 +121,8 @@ class InstanceActionEvent(base.NovaPersistentObject, base.NovaObject,
|
|||||||
base.NovaObjectDictCompat):
|
base.NovaObjectDictCompat):
|
||||||
# Version 1.0: Initial version
|
# Version 1.0: Initial version
|
||||||
# Version 1.1: event_finish_with_failure decorated with serialize_args
|
# Version 1.1: event_finish_with_failure decorated with serialize_args
|
||||||
VERSION = '1.1'
|
# Version 1.2: Add 'host' field
|
||||||
|
VERSION = '1.2'
|
||||||
fields = {
|
fields = {
|
||||||
'id': fields.IntegerField(),
|
'id': fields.IntegerField(),
|
||||||
'event': fields.StringField(nullable=True),
|
'event': fields.StringField(nullable=True),
|
||||||
@@ -129,8 +131,14 @@ class InstanceActionEvent(base.NovaPersistentObject, base.NovaObject,
|
|||||||
'finish_time': fields.DateTimeField(nullable=True),
|
'finish_time': fields.DateTimeField(nullable=True),
|
||||||
'result': fields.StringField(nullable=True),
|
'result': fields.StringField(nullable=True),
|
||||||
'traceback': fields.StringField(nullable=True),
|
'traceback': fields.StringField(nullable=True),
|
||||||
|
'host': fields.StringField(nullable=True),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def obj_make_compatible(self, primitive, target_version):
|
||||||
|
target_version = versionutils.convert_version_to_tuple(target_version)
|
||||||
|
if target_version < (1, 2) and 'host' in primitive:
|
||||||
|
del primitive['host']
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _from_db_object(context, event, db_event):
|
def _from_db_object(context, event, db_event):
|
||||||
for field in event.fields:
|
for field in event.fields:
|
||||||
@@ -140,11 +148,13 @@ class InstanceActionEvent(base.NovaPersistentObject, base.NovaObject,
|
|||||||
return event
|
return event
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def pack_action_event_start(context, instance_uuid, event_name):
|
def pack_action_event_start(context, instance_uuid, event_name,
|
||||||
|
host=None):
|
||||||
values = {'event': event_name,
|
values = {'event': event_name,
|
||||||
'instance_uuid': instance_uuid,
|
'instance_uuid': instance_uuid,
|
||||||
'request_id': context.request_id,
|
'request_id': context.request_id,
|
||||||
'start_time': timeutils.utcnow()}
|
'start_time': timeutils.utcnow(),
|
||||||
|
'host': host}
|
||||||
return values
|
return values
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@@ -168,9 +178,10 @@ class InstanceActionEvent(base.NovaPersistentObject, base.NovaObject,
|
|||||||
return cls._from_db_object(context, cls(), db_event)
|
return cls._from_db_object(context, cls(), db_event)
|
||||||
|
|
||||||
@base.remotable_classmethod
|
@base.remotable_classmethod
|
||||||
def event_start(cls, context, instance_uuid, event_name, want_result=True):
|
def event_start(cls, context, instance_uuid, event_name, want_result=True,
|
||||||
|
host=None):
|
||||||
values = cls.pack_action_event_start(context, instance_uuid,
|
values = cls.pack_action_event_start(context, instance_uuid,
|
||||||
event_name)
|
event_name, host=host)
|
||||||
db_event = db.action_event_start(context, values)
|
db_event = db.action_event_start(context, values)
|
||||||
if want_result:
|
if want_result:
|
||||||
return cls._from_db_object(context, cls(), db_event)
|
return cls._from_db_object(context, cls(), db_event)
|
||||||
|
|||||||
@@ -53,12 +53,14 @@ def format_action(action, expect_traceback=True):
|
|||||||
return action
|
return action
|
||||||
|
|
||||||
|
|
||||||
def format_event(event, expect_traceback=True):
|
def format_event(event, expect_traceback=True, expect_host=False):
|
||||||
'''Remove keys that aren't serialized.'''
|
'''Remove keys that aren't serialized.'''
|
||||||
to_delete = ['id', 'created_at', 'updated_at', 'deleted_at', 'deleted',
|
to_delete = ['id', 'created_at', 'updated_at', 'deleted_at', 'deleted',
|
||||||
'action_id']
|
'action_id']
|
||||||
if not expect_traceback:
|
if not expect_traceback:
|
||||||
to_delete.append('traceback')
|
to_delete.append('traceback')
|
||||||
|
if not expect_host:
|
||||||
|
to_delete.append('host')
|
||||||
for key in to_delete:
|
for key in to_delete:
|
||||||
if key in event:
|
if key in event:
|
||||||
del(event[key])
|
del(event[key])
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ FAKE_EVENTS = {
|
|||||||
'updated_at': None,
|
'updated_at': None,
|
||||||
'deleted_at': None,
|
'deleted_at': None,
|
||||||
'deleted': False,
|
'deleted': False,
|
||||||
|
'host': 'host1'
|
||||||
},
|
},
|
||||||
{'id': 2,
|
{'id': 2,
|
||||||
'action_id': FAKE_ACTION_ID1,
|
'action_id': FAKE_ACTION_ID1,
|
||||||
@@ -84,6 +85,7 @@ FAKE_EVENTS = {
|
|||||||
'updated_at': None,
|
'updated_at': None,
|
||||||
'deleted_at': None,
|
'deleted_at': None,
|
||||||
'deleted': False,
|
'deleted': False,
|
||||||
|
'host': 'host1'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
FAKE_ACTION_ID2: [{'id': 3,
|
FAKE_ACTION_ID2: [{'id': 3,
|
||||||
@@ -99,6 +101,7 @@ FAKE_EVENTS = {
|
|||||||
'updated_at': None,
|
'updated_at': None,
|
||||||
'deleted_at': None,
|
'deleted_at': None,
|
||||||
'deleted': False,
|
'deleted': False,
|
||||||
|
'host': 'host2'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ fake_event = {
|
|||||||
'finish_time': None,
|
'finish_time': None,
|
||||||
'result': 'fake-result',
|
'result': 'fake-result',
|
||||||
'traceback': 'fake-tb',
|
'traceback': 'fake-tb',
|
||||||
|
'host': 'fake-host',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1097,7 +1097,7 @@ object_data = {
|
|||||||
'ImageMetaProps': '1.20-ffd686cde289814695d5f89522aa5aef',
|
'ImageMetaProps': '1.20-ffd686cde289814695d5f89522aa5aef',
|
||||||
'Instance': '2.4-4437eb8b2737c3054ea579b8efe31dc5',
|
'Instance': '2.4-4437eb8b2737c3054ea579b8efe31dc5',
|
||||||
'InstanceAction': '1.1-f9f293e526b66fca0d05c3b3a2d13914',
|
'InstanceAction': '1.1-f9f293e526b66fca0d05c3b3a2d13914',
|
||||||
'InstanceActionEvent': '1.1-e56a64fa4710e43ef7af2ad9d6028b33',
|
'InstanceActionEvent': '1.2-b2f368b8a29d8d872b1f6ea841e820a0',
|
||||||
'InstanceActionEventList': '1.1-13d92fb953030cdbfee56481756e02be',
|
'InstanceActionEventList': '1.1-13d92fb953030cdbfee56481756e02be',
|
||||||
'InstanceActionList': '1.1-a2b2fb6006b47c27076d3a1d48baa759',
|
'InstanceActionList': '1.1-a2b2fb6006b47c27076d3a1d48baa759',
|
||||||
'InstanceDeviceMetadata': '1.0-74d78dd36aa32d26d2769a1b57caf186',
|
'InstanceDeviceMetadata': '1.0-74d78dd36aa32d26d2769a1b57caf186',
|
||||||
|
|||||||
Reference in New Issue
Block a user