VMware: Update flavor-related metadata on resize

Update the flavor-related metadata in the VM Notes in vSphere upon
instance resize. Otherwise, notes keep holding the previous flavor's
name and size.

Change-Id: Ib3c8d15f8073928a47ee860409a999a06acfc1a1
Closes-Bug: #1843265
This commit is contained in:
Ivaylo Mitev
2019-08-29 04:30:48 -07:00
parent ba3147420c
commit 4141bf63af
2 changed files with 32 additions and 3 deletions

View File

@@ -939,6 +939,9 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
extra_specs={})
self._vmops._resize_vm(self._context, self._instance, 'vm-ref', flavor,
None)
fake_get_metadata.assert_called_once_with(self._context,
self._instance,
flavor=flavor)
fake_resize_spec.assert_called_once_with(
self._session.vim.client.factory, 2, 1024, extra_specs,
metadata=self._metadata)
@@ -2807,6 +2810,30 @@ class VMwareVMOpsTestCase(test.NoDBTestCase):
"package:%s\n" % version.version_string_with_package())
self.assertEqual(expected, metadata)
def test_get_instance_metadata_flavor(self):
# Construct a flavor different from instance.flavor
flavor_int_meta_fields = ['memory_mb',
'vcpus',
'root_gb',
'ephemeral_gb',
'swap']
flavor = self._instance.flavor.obj_clone()
for field in flavor_int_meta_fields:
# Set int fields of flavor to instance.flavor value + 1
setattr(flavor, field, getattr(self._instance.flavor, field) + 1)
flavor.name = self._instance.flavor.name + '1'
metadata = self._vmops._get_instance_metadata(
self._context, self._instance, flavor)
# Verify metadata contains the values from flavor parameter
meta_lines = metadata.split('\n')
flavor_meta_fields = flavor_int_meta_fields[:]
flavor_meta_fields.append('name')
for field in flavor_meta_fields:
meta_repr = 'flavor:%s:%s' % (field, getattr(flavor, field))
self.assertIn(meta_repr, meta_lines)
@mock.patch.object(vmops.VMwareVMOps, '_get_extra_specs')
@mock.patch.object(vm_util, 'reconfigure_vm')
@mock.patch.object(vm_util, 'get_network_attach_config_spec',