Merge "Make notification objects use flavor capacity attributes"

This commit is contained in:
Jenkins 2016-08-06 05:58:08 +00:00 committed by Gerrit Code Review
commit 1d7443857f
2 changed files with 39 additions and 4 deletions

View File

@ -169,10 +169,10 @@ class FlavorPayload(base.NotificationPayloadBase):
SCHEMA = { SCHEMA = {
'flavorid': ('flavor', 'flavorid'), 'flavorid': ('flavor', 'flavorid'),
'memory_mb': ('instance', 'memory_mb'), 'memory_mb': ('flavor', 'memory_mb'),
'vcpus': ('instance', 'vcpus'), 'vcpus': ('flavor', 'vcpus'),
'root_gb': ('instance', 'root_gb'), 'root_gb': ('flavor', 'root_gb'),
'ephemeral_gb': ('instance', 'ephemeral_gb'), 'ephemeral_gb': ('flavor', 'ephemeral_gb'),
} }
fields = { fields = {

View File

@ -17,6 +17,8 @@ import mock
from oslo_utils import timeutils from oslo_utils import timeutils
from oslo_versionedobjects import fixture from oslo_versionedobjects import fixture
from nova.network import model as network_model
from nova.notifications import base as notification_base
from nova.notifications.objects import base as notification from nova.notifications.objects import base as notification
from nova import objects from nova import objects
from nova.objects import base from nova.objects import base
@ -328,3 +330,36 @@ def get_extra_data(obj_class):
extra_data += (schema_data,) extra_data += (schema_data,)
return extra_data return extra_data
class TestInstanceNotification(test.NoDBTestCase):
@mock.patch('nova.notifications.objects.instance.'
'InstanceUpdateNotification._emit')
def test_send_version_instance_update_uses_flavor(self, mock_emit):
# Make sure that the notification payload chooses the values in
# instance.flavor.$value instead of instance.$value
test_keys = ['memory_mb', 'vcpus', 'root_gb', 'ephemeral_gb']
flavor_values = {k: 123 for k in test_keys}
instance_values = {k: 456 for k in test_keys}
flavor = objects.Flavor(**flavor_values)
info_cache = objects.InstanceInfoCache(
network_info=network_model.NetworkInfo())
instance = objects.Instance(
flavor=flavor,
info_cache=info_cache,
**instance_values)
payload = {
'bandwidth': {},
'audit_period_ending': timeutils.utcnow(),
'audit_period_beginning': timeutils.utcnow(),
}
notification_base._send_versioned_instance_update(
mock.MagicMock(),
instance,
payload,
'host',
'compute')
payload = mock_emit.call_args_list[0][1]['payload']['nova_object.data']
flavor_payload = payload['flavor']['nova_object.data']
data = {k: flavor_payload[k] for k in test_keys}
self.assertEqual(flavor_values, data)