def test_node_delete_snapshot_external_has_children( self, mock_conn, mock_delete_snapshot_files): snapshot_xml = '''<domainsnapshot> <memory snapshot="external"/> <domain> <cpu mode='host-model'/> </domain> </domainsnapshot>''' snapshot = mock.Mock() snapshot.numChildren.return_value = 1 snapshot.getXMLDesc.return_value = snapshot_xml snapshot.delete.return_value = True domain = mock.Mock() domain.isActive.return_value = False domain.snapshotCreateXML.return_value = True domain.snapshotCurrent.return_value = snapshot domain.snapshotLookupByName.return_value = snapshot mock_conn.return_value.lookupByUUIDString.return_value = domain node = mock.Mock(uuid='test_node') dd = DevopsDriver() dd.node_delete_snapshot(node, 'snapname') self.assertEqual(snapshot.numChildren.called, True) self.assertEqual(domain.isActive.called, False) self.assertEqual(snapshot.delete.called, False)
def test_node_delete_snapshot_external(self, mock_conn, mock_delete_snapshot_files): domain_xml = '''<domain> <name>{0}</name> <cpu mode='host-model'/> <devices> <disk type='file' device='disk' snapshot='external'> <driver name='qemu' type='raw'/> <source file='{1}'/> <target dev='vda' bus='virtio'/> </disk> <disk type='file' device='disk' snapshot='external'> <driver name='qemu' type='raw'/> <source file='{2}'/> <target dev='vdb' bus='virtio'/> </disk> </devices> </domain>'''.format(factories.fuzzy_string('name_'), factories.fuzzy_string('/path/to/'), factories.fuzzy_string('/path/to/')) snapshot_xml = '''<domainsnapshot> <memory snapshot="external"/> <disks/> {0} </domainsnapshot>'''.format(domain_xml) snapshot = mock.Mock() snapshot.numChildren.return_value = 0 snapshot.getXMLDesc.return_value = snapshot_xml snapshot.delete.return_value = True 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.defineXML.return_value = True node = mock.Mock(uuid='test_node') dd = DevopsDriver() dd.node_delete_snapshot(node, 'snapname') self.assertEqual(domain.destroy.called, True) mock_delete_snapshot_files.assert_called_with(snapshot) snapshot.delete.assert_called_with(2) mock_conn().defineXML.assert_called_with( '{0}\n'.format(ET.tostring(ET.fromstring(domain_xml))))