def test_node_revert_snapshot_recreate_disks_has_children(self, mock_conn): snapshot_xml = '''<domainsnapshot> <memory snapshot="external"/> <domain> <cpu mode='host-model'/> </domain> </domainsnapshot>''' snapshot = mock.Mock() snapshot.children_num = 1 snapshot.getXMLDesc.return_value = snapshot_xml domain = mock.Mock() domain.isActive.return_value = True domain.snapshotCreateXML.return_value = True domain.snapshotCurrent.return_value = snapshot domain.snapshotLookupByName.return_value = snapshot mock_conn.return_value.lookupByUUIDString.return_value = domain mock_conn.return_value.storageVolLookupByKey.return_value = mock.Mock() node = mock.Mock(uuid='test_node') dd = DevopsDriver() dd.node_revert_snapshot_recreate_disks(node, 'snapname') self.assertEqual(mock_conn.storageVolLookupByKey.called, False)
def test_node_revert_snapshot_recreate_disks(self, mock_conn): disk1_file = factories.fuzzy_string('/var/lib/libvirt/images/') disk2_file = factories.fuzzy_string('/var/lib/libvirt/images/') snapshot_xml = '''<domainsnapshot> <memory snapshot="no"/> <disks> <disk name='vda' snapshot='external'> <source file='{0}'/> </disk> <disk name='vdb' snapshot='external'> <source file='{1}'/> </disk> </disks> <domain> <cpu mode='host-model'/> </domain> </domainsnapshot>'''.format(disk1_file, disk2_file) snapshot = mock.Mock() snapshot.getXMLDesc.return_value = snapshot_xml snapshot.numChildren.return_value = 0 domain = mock.Mock() domain.isActive.return_value = True domain.snapshotCreateXML.return_value = True domain.snapshotCurrent.return_value = False domain.snapshotLookupByName.return_value = snapshot mock_conn.return_value.lookupByUUIDString.return_value = domain pool = mock.Mock() pool.createXML.return_value = mock.Mock() def define_volume(*args): volume_xml = '<{0}/>'.format(args[0]) volume = mock.Mock() volume.XMLDesc.return_value = volume_xml volume.storagePoolLookupByVolume.return_value = pool volume.detele.return_value = True return volume volume1 = define_volume(disk1_file) volume2 = define_volume(disk2_file) def return_volume(*args): if args[0] == disk1_file: return volume1 elif args[0] == disk2_file: return volume2 mock_conn.return_value.storageVolLookupByKey.side_effect = \ return_volume node = mock.Mock(uuid='test_node') dd = DevopsDriver() dd.node_revert_snapshot_recreate_disks(node, 'snapname') self.assertEqual(volume1.delete.called, True) self.assertEqual(volume2.delete.called, True) mock_conn().storageVolLookupByKey.assert_has_calls( [mock.call(disk1_file), mock.call(disk2_file)], any_order=True) pool.createXML.assert_has_calls( [mock.call(volume1.XMLDesc()), mock.call(volume2.XMLDesc())], any_order=True)