当前位置: 首页>>代码示例>>Java>>正文


Java Domain.free方法代码示例

本文整理汇总了Java中org.libvirt.Domain.free方法的典型用法代码示例。如果您正苦于以下问题:Java Domain.free方法的具体用法?Java Domain.free怎么用?Java Domain.free使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.libvirt.Domain的用法示例。


在下文中一共展示了Domain.free方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getVmState

import org.libvirt.Domain; //导入方法依赖的package包/类
public PowerState getVmState(final Connect conn, final String vmName) {
    int retry = 3;
    Domain vms = null;
    while (retry-- > 0) {
        try {
            vms = conn.domainLookupByName(vmName);
            final PowerState s = convertToPowerState(vms.getInfo().state);
            return s;
        } catch (final LibvirtException e) {
            logger.warn("Can't get vm state " + vmName + e.getMessage() + "retry:" + retry);
        } finally {
            try {
                if (vms != null) {
                    vms.free();
                }
            } catch (final LibvirtException l) {
                logger.trace("Ignoring libvirt error.", l);
            }
        }
    }
    return PowerState.PowerOff;
}
 
开发者ID:MissionCriticalCloud,项目名称:cosmic,代码行数:23,代码来源:LibvirtComputingResource.java

示例2: getVncPort

import org.libvirt.Domain; //导入方法依赖的package包/类
public Integer getVncPort(final Connect conn, final String vmName) throws LibvirtException {
    final LibvirtDomainXmlParser parser = new LibvirtDomainXmlParser();
    Domain dm = null;
    try {
        dm = conn.domainLookupByName(vmName);
        final String xmlDesc = dm.getXMLDesc(0);
        parser.parseDomainXml(xmlDesc);
        return parser.getVncPort();
    } finally {
        try {
            if (dm != null) {
                dm.free();
            }
        } catch (final LibvirtException l) {
            logger.trace("Ignoring libvirt error.", l);
        }
    }
}
 
开发者ID:MissionCriticalCloud,项目名称:cosmic,代码行数:19,代码来源:LibvirtComputingResource.java

示例3: getVmState

import org.libvirt.Domain; //导入方法依赖的package包/类
public PowerState getVmState(final Connect conn, final String vmName) {
    int retry = 3;
    Domain vms = null;
    while (retry-- > 0) {
        try {
            vms = conn.domainLookupByName(vmName);
            final PowerState s = convertToPowerState(vms.getInfo().state);
            return s;
        } catch (final LibvirtException e) {
            s_logger.warn("Can't get vm state " + vmName + e.getMessage() + "retry:" + retry);
        } finally {
            try {
                if (vms != null) {
                    vms.free();
                }
            } catch (final LibvirtException l) {
                s_logger.trace("Ignoring libvirt error.", l);
            }
        }
    }
    return PowerState.PowerOff;
}
 
开发者ID:apache,项目名称:cloudstack,代码行数:23,代码来源:LibvirtComputingResource.java

示例4: getVncPort

import org.libvirt.Domain; //导入方法依赖的package包/类
public Integer getVncPort(final Connect conn, final String vmName) throws LibvirtException {
    final LibvirtDomainXMLParser parser = new LibvirtDomainXMLParser();
    Domain dm = null;
    try {
        dm = conn.domainLookupByName(vmName);
        final String xmlDesc = dm.getXMLDesc(0);
        parser.parseDomainXML(xmlDesc);
        return parser.getVncPort();
    } finally {
        try {
            if (dm != null) {
                dm.free();
            }
        } catch (final LibvirtException l) {
            s_logger.trace("Ignoring libvirt error.", l);
        }
    }
}
 
开发者ID:apache,项目名称:cloudstack,代码行数:19,代码来源:LibvirtComputingResource.java

示例5: getVmNetworkStat

import org.libvirt.Domain; //导入方法依赖的package包/类
public List<VmNetworkStatsEntry> getVmNetworkStat(Connect conn, String vmName) throws LibvirtException {
    Domain dm = null;
    try {
        dm = getDomain(conn, vmName);

        List<VmNetworkStatsEntry> stats = new ArrayList<VmNetworkStatsEntry>();

        List<InterfaceDef> nics = getInterfaces(conn, vmName);

        for (InterfaceDef nic : nics) {
            DomainInterfaceStats nicStats = dm.interfaceStats(nic.getDevName());
            String macAddress = nic.getMacAddress();
            VmNetworkStatsEntry stat = new VmNetworkStatsEntry(vmName, macAddress, nicStats.tx_bytes, nicStats.rx_bytes);
            stats.add(stat);
        }

        return stats;
    } finally {
        if (dm != null) {
            dm.free();
        }
    }
}
 
开发者ID:apache,项目名称:cloudstack,代码行数:24,代码来源:LibvirtComputingResource.java

示例6: execute

import org.libvirt.Domain; //导入方法依赖的package包/类
@Override
public Answer execute(final CreateVMSnapshotCommand cmd, final LibvirtComputingResource libvirtComputingResource) {
    final String vmName = cmd.getVmName();
    final String vmSnapshotName = cmd.getTarget().getSnapshotName();

    Domain dm = null;
    try {
        final LibvirtUtilitiesHelper libvirtUtilitiesHelper = libvirtComputingResource.getLibvirtUtilitiesHelper();
        final Connect conn = libvirtUtilitiesHelper.getConnection();
        dm = libvirtComputingResource.getDomain(conn, vmName);

        if (dm == null) {
            return new CreateVMSnapshotAnswer(cmd, false, "Create VM Snapshot Failed due to can not find vm: " + vmName);
        }

        final DomainState domainState = dm.getInfo().state;
        if (domainState != DomainState.VIR_DOMAIN_RUNNING) {
            return new CreateVMSnapshotAnswer(cmd, false, "Create VM Snapshot Failed due to  vm is not running: " + vmName + " with domainState = " + domainState);
        }

        final String vmSnapshotXML = "<domainsnapshot><name>" + vmSnapshotName + "</name><memory snapshot='internal' /></domainsnapshot>";

        dm.snapshotCreateXML(vmSnapshotXML);

        return new CreateVMSnapshotAnswer(cmd, cmd.getTarget(), cmd.getVolumeTOs());
    } catch (final LibvirtException e) {
        final String msg = " Create VM snapshot failed due to " + e.toString();
        s_logger.warn(msg, e);
        return new CreateVMSnapshotAnswer(cmd, false, msg);
    } finally {
        if (dm != null) {
            try {
                dm.free();
            } catch (final LibvirtException l) {
                s_logger.trace("Ignoring libvirt error.", l);
            }
        }
    }
}
 
开发者ID:MissionCriticalCloud,项目名称:cosmic,代码行数:40,代码来源:LibvirtCreateVMSnapshotCommandWrapper.java

示例7: execute

import org.libvirt.Domain; //导入方法依赖的package包/类
@Override
public Answer execute(final UnPlugNicCommand command, final LibvirtComputingResource libvirtComputingResource) {
    final NicTO nic = command.getNic();
    final String vmName = command.getVmName();
    Domain vm = null;
    try {
        final LibvirtUtilitiesHelper libvirtUtilitiesHelper = libvirtComputingResource.getLibvirtUtilitiesHelper();

        final Connect conn = libvirtUtilitiesHelper.getConnectionByVmName(vmName);
        vm = libvirtComputingResource.getDomain(conn, vmName);
        final List<InterfaceDef> pluggedNics = libvirtComputingResource.getInterfaces(conn, vmName);

        for (final InterfaceDef pluggedNic : pluggedNics) {
            if (pluggedNic.getMacAddress().equalsIgnoreCase(nic.getMac())) {
                vm.detachDevice(pluggedNic.toString());
                // We don't know which "traffic type" is associated with
                // each interface at this point, so inform all vif drivers
                for (final VifDriver vifDriver : libvirtComputingResource.getAllVifDrivers()) {
                    vifDriver.unplug(pluggedNic);
                }
                return new UnPlugNicAnswer(command, true, "success");
            }
        }
        return new UnPlugNicAnswer(command, true, "success");
    } catch (final LibvirtException e) {
        final String msg = " Unplug Nic failed due to " + e.toString();
        s_logger.warn(msg, e);
        return new UnPlugNicAnswer(command, false, msg);
    } finally {
        if (vm != null) {
            try {
                vm.free();
            } catch (final LibvirtException l) {
                s_logger.trace("Ignoring libvirt error.", l);
            }
        }
    }
}
 
开发者ID:MissionCriticalCloud,项目名称:cosmic,代码行数:39,代码来源:LibvirtUnPlugNicCommandWrapper.java

示例8: attachOrDetachDevice

import org.libvirt.Domain; //导入方法依赖的package包/类
protected synchronized String attachOrDetachDevice(final Connect conn, final boolean attach, final String vmName,
                                                   final String xml) throws LibvirtException, InternalErrorException {
    Domain dm = null;
    try {
        dm = conn.domainLookupByName(vmName);
        if (attach) {
            logger.debug("Attaching device: " + xml);
            dm.attachDevice(xml);
        } else {
            logger.debug("Detaching device: " + xml);
            dm.detachDevice(xml);
        }
    } catch (final LibvirtException e) {
        if (attach) {
            logger.warn("Failed to attach device to " + vmName + ": " + e.getMessage());
        } else {
            logger.warn("Failed to detach device from " + vmName + ": " + e.getMessage());
        }
        throw e;
    } finally {
        if (dm != null) {
            try {
                dm.free();
            } catch (final LibvirtException l) {
                logger.trace("Ignoring libvirt error.", l);
            }
        }
    }

    return null;
}
 
开发者ID:MissionCriticalCloud,项目名称:cosmic,代码行数:32,代码来源:LibvirtComputingResource.java

示例9: getVmDiskStat

import org.libvirt.Domain; //导入方法依赖的package包/类
public List<VmDiskStatsEntry> getVmDiskStat(final Connect conn, final String vmName) throws LibvirtException {
    Domain dm = null;
    try {
        dm = getDomain(conn, vmName);

        final List<VmDiskStatsEntry> stats = new ArrayList<>();

        final List<LibvirtDiskDef> disks = getDisks(conn, vmName);

        for (final LibvirtDiskDef disk : disks) {
            if (disk.getDeviceType() != DeviceType.DISK) {
                break;
            }
            final DomainBlockStats blockStats = dm.blockStats(disk.getDiskLabel());
            final String path = disk.getDiskPath(); // for example, path = /mnt/pool_uuid/disk_path/
            String diskPath = null;
            if (path != null) {
                final String[] token = path.split("/");
                if (token.length > 3) {
                    diskPath = token[3];
                    final VmDiskStatsEntry stat = new VmDiskStatsEntry(vmName, diskPath, blockStats.wr_req, blockStats.rd_req,
                            blockStats.wr_bytes, blockStats.rd_bytes);
                    stats.add(stat);
                }
            }
        }

        return stats;
    } finally {
        if (dm != null) {
            dm.free();
        }
    }
}
 
开发者ID:MissionCriticalCloud,项目名称:cosmic,代码行数:35,代码来源:LibvirtComputingResource.java

示例10: attachOrDetachDevice

import org.libvirt.Domain; //导入方法依赖的package包/类
protected synchronized String attachOrDetachDevice(final Connect conn, final boolean attach, final String vmName,
                                                   final String xml) throws LibvirtException, InternalErrorException {
    Domain dm = null;
    try {
        dm = conn.domainLookupByName(vmName);

        if (attach) {
            logger.debug("Attaching device: " + xml);
            dm.attachDevice(xml);
        } else {
            logger.debug("Detaching device: " + xml);
            dm.detachDevice(xml);
        }
    } catch (final LibvirtException e) {
        if (attach) {
            logger.warn("Failed to attach device to " + vmName + ": " + e.getMessage());
        } else {
            logger.warn("Failed to detach device from " + vmName + ": " + e.getMessage());
        }
        throw e;
    } finally {
        if (dm != null) {
            try {
                dm.free();
            } catch (final LibvirtException l) {
                logger.trace("Ignoring libvirt error.", l);
            }
        }
    }

    return null;
}
 
开发者ID:MissionCriticalCloud,项目名称:cosmic,代码行数:33,代码来源:KvmStorageProcessor.java

示例11: attachOrDetachDevice

import org.libvirt.Domain; //导入方法依赖的package包/类
protected synchronized String attachOrDetachDevice(final Connect conn, final boolean attach, final String vmName, final String xml) throws LibvirtException, InternalErrorException {
    Domain dm = null;
    try {
        dm = conn.domainLookupByName(vmName);
        if (attach) {
            s_logger.debug("Attaching device: " + xml);
            dm.attachDevice(xml);
        } else {
            s_logger.debug("Detaching device: " + xml);
            dm.detachDevice(xml);
        }
    } catch (final LibvirtException e) {
        if (attach) {
            s_logger.warn("Failed to attach device to " + vmName + ": " + e.getMessage());
        } else {
            s_logger.warn("Failed to detach device from " + vmName + ": " + e.getMessage());
        }
        throw e;
    } finally {
        if (dm != null) {
            try {
                dm.free();
            } catch (final LibvirtException l) {
                s_logger.trace("Ignoring libvirt error.", l);
            }
        }
    }

    return null;
}
 
开发者ID:apache,项目名称:cloudstack,代码行数:31,代码来源:LibvirtComputingResource.java

示例12: getVmDiskStat

import org.libvirt.Domain; //导入方法依赖的package包/类
public List<VmDiskStatsEntry> getVmDiskStat(final Connect conn, final String vmName) throws LibvirtException {
    Domain dm = null;
    try {
        dm = getDomain(conn, vmName);

        final List<VmDiskStatsEntry> stats = new ArrayList<VmDiskStatsEntry>();

        final List<DiskDef> disks = getDisks(conn, vmName);

        for (final DiskDef disk : disks) {
            if (disk.getDeviceType() != DeviceType.DISK) {
                break;
            }
            final DomainBlockStats blockStats = dm.blockStats(disk.getDiskLabel());
            final String path = disk.getDiskPath(); // for example, path = /mnt/pool_uuid/disk_path/
            String diskPath = null;
            if (path != null) {
                final String[] token = path.split("/");
                if (token.length > 3) {
                    diskPath = token[3];
                    final VmDiskStatsEntry stat = new VmDiskStatsEntry(vmName, diskPath, blockStats.wr_req, blockStats.rd_req, blockStats.wr_bytes, blockStats.rd_bytes);
                    stats.add(stat);
                }
            }
        }

        return stats;
    } finally {
        if (dm != null) {
            dm.free();
        }
    }
}
 
开发者ID:apache,项目名称:cloudstack,代码行数:34,代码来源:LibvirtComputingResource.java

示例13: attachOrDetachDevice

import org.libvirt.Domain; //导入方法依赖的package包/类
protected synchronized String attachOrDetachDevice(final Connect conn, final boolean attach, final String vmName, final String xml) throws LibvirtException, InternalErrorException {
    Domain dm = null;
    try {
        dm = conn.domainLookupByName(vmName);

        if (attach) {
            s_logger.debug("Attaching device: " + xml);
            dm.attachDevice(xml);
        } else {
            s_logger.debug("Detaching device: " + xml);
            dm.detachDevice(xml);
        }
    } catch (final LibvirtException e) {
        if (attach) {
            s_logger.warn("Failed to attach device to " + vmName + ": " + e.getMessage());
        } else {
            s_logger.warn("Failed to detach device from " + vmName + ": " + e.getMessage());
        }
        throw e;
    } finally {
        if (dm != null) {
            try {
                dm.free();
            } catch (final LibvirtException l) {
                s_logger.trace("Ignoring libvirt error.", l);
            }
        }
    }

    return null;
}
 
开发者ID:apache,项目名称:cloudstack,代码行数:32,代码来源:KVMStorageProcessor.java

示例14: newDomainWrapper

import org.libvirt.Domain; //导入方法依赖的package包/类
public static LibVirtCleanupWrapper newDomainWrapper(final Domain domain)
{
    return new LibVirtCleanupWrapper() {
        protected void freeObject() throws LibvirtException
        {
            domain.free();
        }
    };
}
 
开发者ID:intrbiz,项目名称:virt,代码行数:10,代码来源:LibVirtCleanupWrapper.java

示例15: execute

import org.libvirt.Domain; //导入方法依赖的package包/类
@Override
public Answer execute(final DeleteVMSnapshotCommand cmd, final LibvirtComputingResource libvirtComputingResource) {
    final String vmName = cmd.getVmName();

    final KvmStoragePoolManager storagePoolMgr = libvirtComputingResource.getStoragePoolMgr();
    Domain dm = null;
    DomainSnapshot snapshot = null;
    try {
        final LibvirtUtilitiesHelper libvirtUtilitiesHelper = libvirtComputingResource.getLibvirtUtilitiesHelper();
        final Connect conn = libvirtUtilitiesHelper.getConnection();
        dm = libvirtComputingResource.getDomain(conn, vmName);

        snapshot = dm.snapshotLookupByName(cmd.getTarget().getSnapshotName());

        snapshot.delete(0); // only remove this snapshot, not children

        return new DeleteVMSnapshotAnswer(cmd, cmd.getVolumeTOs());
    } catch (final LibvirtException e) {
        final String msg = " Delete VM snapshot failed due to " + e.toString();

        if (dm == null) {
            s_logger.debug("Can not find running vm: " + vmName + ", now we are trying to delete the vm snapshot using qemu-img if the format of root volume is QCOW2");
            VolumeObjectTO rootVolume = null;
            for (VolumeObjectTO volume: cmd.getVolumeTOs()) {
                if (volume.getVolumeType() == Volume.Type.ROOT) {
                    rootVolume = volume;
                    break;
                }
            }
            if (rootVolume != null && ImageFormat.QCOW2.equals(rootVolume.getFormat())) {
                final PrimaryDataStoreTO primaryStore = (PrimaryDataStoreTO) rootVolume.getDataStore();
                final KvmPhysicalDisk rootDisk = storagePoolMgr.getPhysicalDisk(primaryStore.getPoolType(), primaryStore.getUuid(), rootVolume.getPath());
                final String command = "qemu-img snapshot -l " + rootDisk.getPath() + " | tail -n +3 | awk -F ' ' '{print $2}' | grep ^" + cmd.getTarget().getSnapshotName() + "$";
                final String qemu_img_snapshot = Script.runSimpleBashScript(command);
                if (qemu_img_snapshot == null) {
                    s_logger.info("Cannot find snapshot " + cmd.getTarget().getSnapshotName() + " in file " + rootDisk.getPath() + ", return true");
                    return new DeleteVMSnapshotAnswer(cmd, cmd.getVolumeTOs());
                }
                int result = Script.runSimpleBashScriptForExitValue("qemu-img snapshot -d " + cmd.getTarget().getSnapshotName() + " " + rootDisk.getPath());
                if (result != 0) {
                    return new DeleteVMSnapshotAnswer(cmd, false, "Delete VM Snapshot Failed due to can not remove snapshot from image file " +
                            rootDisk.getPath()  + " : " + result);
                } else {
                    return new DeleteVMSnapshotAnswer(cmd, cmd.getVolumeTOs());
                }
            }
        } else if (snapshot == null) {
            s_logger.debug("Can not find vm snapshot " + cmd.getTarget().getSnapshotName() + " on vm: " + vmName + ", return true");
            return new DeleteVMSnapshotAnswer(cmd, cmd.getVolumeTOs());
        }

        s_logger.warn(msg, e);
        return new DeleteVMSnapshotAnswer(cmd, false, msg);
    } finally {
        if (dm != null) {
            try {
                dm.free();
            } catch (final LibvirtException l) {
                s_logger.trace("Ignoring libvirt error.", l);
            }
        }
    }
}
 
开发者ID:MissionCriticalCloud,项目名称:cosmic,代码行数:64,代码来源:LibvirtDeleteVMSnapshotCommandWrapper.java


注:本文中的org.libvirt.Domain.free方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。