def test_save_flavor_pci_info(self): self.flags(pci_alias=[_fake_alias1, _fake_alias3]) expect_request = [ {'count': 3, 'spec': [{'vendor_id': '8086', 'product_id': '4443', 'device_type': "ACCEL", 'capability_type': 'pci'}], 'alias_name': 'QuicAssist'}, {'count': 1, 'spec': [{'vendor_id': '8086', 'product_id': '1111', 'device_type': "NIC", 'capability_type': 'pci'}], 'alias_name': 'IntelNIC'}, ] flavor = {'extra_specs': {"pci_passthrough:alias": "QuicAssist:3, IntelNIC: 1"}} meta = {} pci_request.save_flavor_pci_info(meta, flavor) real = jsonutils.loads(meta['pci_requests']) exp_real = zip(expect_request, real) for exp, real in exp_real: self.assertEqual(real, exp) meta = {} pci_request.save_flavor_pci_info(meta, flavor, "old_") real = jsonutils.loads(meta['old_pci_requests']) exp_real = zip(expect_request, real) for exp, real in exp_real: self.assertEqual(real, exp)
def save_flavor_info(metadata, instance_type, prefix=''): """Save properties from instance_type into instance's system_metadata, in the format of: [prefix]instance_type_[key] This can be used to update system_metadata in place from a type, as well as stash information about another instance_type for later use (such as during resize). """ for key in system_metadata_flavor_props.keys(): to_key = '%sinstance_type_%s' % (prefix, key) metadata[to_key] = instance_type[key] pci_request.save_flavor_pci_info(metadata, instance_type, prefix) return metadata