package org.libvirt;
import org.libvirt.jna.DomainSnapshotPointer;
import org.libvirt.jna.Libvirt;
public class DomainSnapshot {
/**
* the native virDomainSnapshotPtr.
*/
DomainSnapshotPointer VDSP;
/**
* The Connect Object that represents the Hypervisor of this Domain Snapshot
*/
private Connect virConnect;
/**
* The libvirt connection from the hypervisor
*/
protected Libvirt libvirt;
public DomainSnapshot(Connect virConnect, DomainSnapshotPointer VDSP) {
this.VDSP = VDSP;
this.virConnect = virConnect;
libvirt = virConnect.libvirt;
}
/**
* Delete the Snapshot
*
* @see <a
* href="http://www.libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotDelete">Libvirt
* Documentation</a>
* @param flags
* controls teh deletion
* @return
* @throws LibvirtException
*/
public int delete(int flags) throws LibvirtException {
int success = 0;
if (VDSP != null) {
success = libvirt.virDomainSnapshotDelete(VDSP, flags);
processError();
VDSP = null;
}
return success;
}
@Override
public void finalize() throws LibvirtException {
free();
}
/**
* Release the domain snapshot handle. The underlying snapshot continues to
* exist.
*
* @throws LibvirtException
* @return 0 on success, or -1 on error.
*/
public int free() throws LibvirtException {
int success = 0;
if (VDSP != null) {
success = libvirt.virDomainSnapshotFree(VDSP);
processError();
VDSP = null;
}
return success;
}
/**
* Fetches an XML document describing attributes of the snapshot.
*
* @see <a
* href="http://www.libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotGetXMLDesc">Libvirt
* Documentation</a>
* @return the XML document
*/
public String getXMLDesc() throws LibvirtException {
String returnValue = libvirt.virDomainSnapshotGetXMLDesc(VDSP, 0);
processError();
return returnValue;
}
/**
* Error handling logic to throw errors. Must be called after every libvirt
* call.
*/
protected void processError() throws LibvirtException {
virConnect.processError();
}
}