def test_to_legacy_with_pre_result(self): obj = migrate_data.XenapiLiveMigrateData(sr_uuid_map={'a': 'b'}) self.assertNotIn('sr_uuid_map', obj.to_legacy_dict()) legacy = obj.to_legacy_dict(True) self.assertEqual({'a': 'b'}, legacy['pre_live_migration_result']['sr_uuid_map']) obj2 = migrate_data.XenapiLiveMigrateData() obj2.from_legacy_dict(legacy) self.assertEqual({'a': 'b'}, obj2.sr_uuid_map)
def test_from_legacy_dict_missing_attrs(self): obj = migrate_data.XenapiLiveMigrateData( is_volume_backed=False, destination_sr_ref='foo', sr_uuid_map={'apple': 'banana'}) legacy = obj.to_legacy_dict() obj2 = migrate_data.XenapiLiveMigrateData() obj2.from_legacy_dict(legacy) self.assertFalse(obj2.block_migration) self.assertNotIn('migrate_send_data', obj2) self.assertNotIn('sr_uuid_map', obj2)
def test_from_legacy_dict(self): obj = migrate_data.XenapiLiveMigrateData( is_volume_backed=False, block_migration=False, destination_sr_ref='foo', migrate_send_data={'key': 'val'}, sr_uuid_map={'apple': 'banana'}) legacy = obj.to_legacy_dict() legacy['ignore_this_thing'] = True obj2 = migrate_data.XenapiLiveMigrateData() obj2.from_legacy_dict(legacy) self.assertEqual(obj.destination_sr_ref, obj2.destination_sr_ref)
def test_detect_implementation_xenapi(self): legacy = migrate_data.XenapiLiveMigrateData( migrate_send_data={}, destination_sr_ref='foo').to_legacy_dict() self.assertIsInstance( migrate_data.LiveMigrateData.detect_implementation(legacy), migrate_data.XenapiLiveMigrateData)
def test_to_legacy_dict_missing_attrs(self): obj = migrate_data.XenapiLiveMigrateData( is_volume_backed=False, destination_sr_ref='foo', sr_uuid_map={'apple': 'banana'}) expected = { 'is_volume_backed': False, } self.assertEqual(expected, obj.to_legacy_dict()) obj = migrate_data.XenapiLiveMigrateData(is_volume_backed=False, destination_sr_ref='foo') expected = { 'is_volume_backed': False, 'pre_live_migration_result': { 'sr_uuid_map': {}, }, } self.assertEqual(expected, obj.to_legacy_dict(True))
def test_obj_make_compatible(self): obj = migrate_data.XenapiLiveMigrateData( is_volume_backed=False, block_migration=False, destination_sr_ref='foo', migrate_send_data={'key': 'val'}, sr_uuid_map={'apple': 'banana'}, vif_uuid_map={'orange': 'lemon'}) primitive = obj.obj_to_primitive('1.0') self.assertNotIn('vif_uuid_map', primitive['nova_object.data']) primitive2 = obj.obj_to_primitive('1.1') self.assertIn('vif_uuid_map', primitive2['nova_object.data'])
def test_to_legacy_dict(self): obj = migrate_data.XenapiLiveMigrateData( is_volume_backed=False, block_migration=False, destination_sr_ref='foo', migrate_send_data={'key': 'val'}, sr_uuid_map={'apple': 'banana'}) expected = { 'is_volume_backed': False, 'block_migration': False, 'migrate_data': { 'destination_sr_ref': 'foo', 'migrate_send_data': {'key': 'val'}, } } self.assertEqual(expected, obj.to_legacy_dict())
def test_obj_make_compatible(self): obj = migrate_data.XenapiLiveMigrateData( is_volume_backed=False, block_migration=False, destination_sr_ref='foo', migrate_send_data={'key': 'val'}, sr_uuid_map={'apple': 'banana'}, vif_uuid_map={'orange': 'lemon'}, old_vol_attachment_ids={uuids.volume: uuids.attachment}, wait_for_vif_plugged=True) primitive = obj.obj_to_primitive('1.0') self.assertNotIn('vif_uuid_map', primitive['nova_object.data']) primitive2 = obj.obj_to_primitive('1.1') self.assertIn('vif_uuid_map', primitive2['nova_object.data']) self.assertNotIn('old_vol_attachment_ids', primitive2) primitive3 = obj.obj_to_primitive('1.2')['nova_object.data'] self.assertNotIn('wait_for_vif_plugged', primitive3)