Refactor InstancePayload creation
The code that filled ip_addresses and flavor fields of the InstancePayload was duplicated to multiple places. Now it is refactored to a single place. Implements: bp versioned-notification-transformation-ocata Change-Id: I1399d15285677aab4dd79704d21fbaf2bb5e1361
This commit is contained in:
parent
edf51119fa
commit
2066534f57
@ -36,7 +36,6 @@ from nova import notifications
|
||||
from nova.notifications.objects import aggregate as aggregate_notification
|
||||
from nova.notifications.objects import base as notification_base
|
||||
from nova.notifications.objects import exception as notification_exception
|
||||
from nova.notifications.objects import flavor as flavor_notification
|
||||
from nova.notifications.objects import instance as instance_notification
|
||||
from nova import objects
|
||||
from nova.objects import fields
|
||||
@ -328,23 +327,6 @@ def notify_about_instance_usage(notifier, context, instance, event_suffix,
|
||||
method(context, 'compute.instance.%s' % event_suffix, usage_info)
|
||||
|
||||
|
||||
def _get_instance_ips(instance):
|
||||
network_info = get_nw_info_for_instance(instance)
|
||||
ips = []
|
||||
if network_info is not None:
|
||||
for vif in network_info:
|
||||
for ip in vif.fixed_ips():
|
||||
ips.append(instance_notification.IpPayload(
|
||||
label=vif["network"]["label"],
|
||||
mac=vif["address"],
|
||||
meta=vif["meta"],
|
||||
port_uuid=vif["id"],
|
||||
version=ip["version"],
|
||||
address=ip["address"],
|
||||
device_name=vif["devname"]))
|
||||
return ips
|
||||
|
||||
|
||||
def _get_fault_and_priority_from_exc(exception):
|
||||
fault = None
|
||||
priority = fields.NotificationPriority.INFO
|
||||
@ -367,15 +349,10 @@ def notify_about_instance_action(context, instance, host, action, phase=None,
|
||||
:param binary: the binary emitting the notification
|
||||
:param exception: the thrown exception (used in error notifications)
|
||||
"""
|
||||
ips = _get_instance_ips(instance)
|
||||
|
||||
flavor = flavor_notification.FlavorPayload(instance.flavor)
|
||||
fault, priority = _get_fault_and_priority_from_exc(exception)
|
||||
payload = instance_notification.InstanceActionPayload(
|
||||
instance=instance,
|
||||
fault=fault,
|
||||
ip_addresses=ips,
|
||||
flavor=flavor)
|
||||
fault=fault)
|
||||
notification = instance_notification.InstanceActionNotification(
|
||||
context=context,
|
||||
priority=priority,
|
||||
@ -403,16 +380,10 @@ def notify_about_volume_swap(context, instance, host, action, phase,
|
||||
:param new_volume_id: the ID of the volume that is copied to and attached
|
||||
:param exception: an exception
|
||||
"""
|
||||
ips = _get_instance_ips(instance)
|
||||
|
||||
flavor = flavor_notification.FlavorPayload(instance.flavor)
|
||||
|
||||
fault, priority = _get_fault_and_priority_from_exc(exception)
|
||||
payload = instance_notification.InstanceActionVolumeSwapPayload(
|
||||
instance=instance,
|
||||
fault=fault,
|
||||
ip_addresses=ips,
|
||||
flavor=flavor,
|
||||
old_volume_id=old_volume_id,
|
||||
new_volume_id=new_volume_id)
|
||||
|
||||
|
@ -34,7 +34,6 @@ from nova.image import glance
|
||||
from nova import network
|
||||
from nova.network import model as network_model
|
||||
from nova.notifications.objects import base as notification_base
|
||||
from nova.notifications.objects import flavor as flavor_notification
|
||||
from nova.notifications.objects import instance as instance_notification
|
||||
from nova import objects
|
||||
from nova.objects import base as obj_base
|
||||
@ -280,17 +279,11 @@ def _send_versioned_instance_update(context, instance, payload, host, service):
|
||||
out_bytes=bw['bw_out'])
|
||||
for label, bw in payload['bandwidth'].items()]
|
||||
|
||||
network_info = instance.info_cache.network_info
|
||||
flavor = flavor_notification.FlavorPayload(instance.flavor)
|
||||
|
||||
versioned_payload = instance_notification.InstanceUpdatePayload(
|
||||
instance=instance,
|
||||
state_update=state_update,
|
||||
audit_period=audit_period,
|
||||
bandwidth=bandwidth,
|
||||
ip_addresses=instance_notification.IpPayload.from_network_info(
|
||||
network_info),
|
||||
flavor=flavor,
|
||||
old_display_name=payload.get('old_display_name'))
|
||||
|
||||
notification = instance_notification.InstanceUpdateNotification(
|
||||
|
@ -11,6 +11,7 @@
|
||||
# under the License.
|
||||
|
||||
from nova.notifications.objects import base
|
||||
from nova.notifications.objects import flavor as flavor_payload
|
||||
from nova.objects import base as nova_base
|
||||
from nova.objects import fields
|
||||
|
||||
@ -90,6 +91,20 @@ class InstancePayload(base.NotificationPayloadBase):
|
||||
|
||||
def __init__(self, instance, **kwargs):
|
||||
super(InstancePayload, self).__init__(**kwargs)
|
||||
|
||||
# Note(gibi): ugly but needed to avoid cyclic import
|
||||
from nova.compute import utils
|
||||
|
||||
network_info = utils.get_nw_info_for_instance(instance)
|
||||
ips = IpPayload.from_network_info(network_info)
|
||||
|
||||
flavor = flavor_payload.FlavorPayload(flavor=instance.flavor)
|
||||
|
||||
super(InstancePayload, self).__init__(
|
||||
ip_addresses=ips,
|
||||
flavor=flavor,
|
||||
**kwargs)
|
||||
|
||||
self.populate_schema(instance=instance)
|
||||
|
||||
|
||||
@ -103,12 +118,10 @@ class InstanceActionPayload(InstancePayload):
|
||||
'fault': fields.ObjectField('ExceptionPayload', nullable=True),
|
||||
}
|
||||
|
||||
def __init__(self, instance, fault, ip_addresses, flavor, **kwargs):
|
||||
def __init__(self, instance, fault, **kwargs):
|
||||
super(InstanceActionPayload, self).__init__(
|
||||
instance=instance,
|
||||
fault=fault,
|
||||
ip_addresses=ip_addresses,
|
||||
flavor=flavor,
|
||||
**kwargs)
|
||||
|
||||
|
||||
@ -123,13 +136,10 @@ class InstanceActionVolumeSwapPayload(InstanceActionPayload):
|
||||
'new_volume_id': fields.UUIDField(),
|
||||
}
|
||||
|
||||
def __init__(self, instance, fault, ip_addresses, flavor,
|
||||
old_volume_id, new_volume_id):
|
||||
def __init__(self, instance, fault, old_volume_id, new_volume_id):
|
||||
super(InstanceActionVolumeSwapPayload, self).__init__(
|
||||
instance=instance,
|
||||
fault=fault,
|
||||
ip_addresses=ip_addresses,
|
||||
flavor=flavor,
|
||||
old_volume_id=old_volume_id,
|
||||
new_volume_id=new_volume_id)
|
||||
|
||||
@ -146,12 +156,10 @@ class InstanceUpdatePayload(InstancePayload):
|
||||
'old_display_name': fields.StringField(nullable=True)
|
||||
}
|
||||
|
||||
def __init__(self, instance, flavor, ip_addresses, state_update,
|
||||
audit_period, bandwidth, old_display_name):
|
||||
def __init__(self, instance, state_update, audit_period, bandwidth,
|
||||
old_display_name):
|
||||
super(InstanceUpdatePayload, self).__init__(
|
||||
instance=instance,
|
||||
flavor=flavor,
|
||||
ip_addresses=ip_addresses,
|
||||
state_update=state_update,
|
||||
audit_period=audit_period,
|
||||
bandwidth=bandwidth,
|
||||
|
Loading…
Reference in New Issue
Block a user