ClientI有关于VMware接口的问题。
如何通过VMware网络客户端使用VMware应用程序接口执行开机/挂起虚拟机?
通常,使用VMware应用程序接口我直接在vCenter上绕过VMware网络客户端启动虚拟机,但我希望通过VMware网络客户端发送命令"PowerOnVM_Task“,然后已经在vСenter上发送命令。
我需要使用vmware API运行/挂起计算机,就像使用Web浏览器(Chrome、IE等)一样。
对不起,我的英语不好。
发布于 2014-02-11 13:21:06
假设您使用的是Java。
首先看一下Steve Jin的VI-Java API。然后了解Managed Object Reference。然后你就可以开始编码了.
现在看,这就是我所做的,但这需要许多其他的助手类和方法。所以你必须把问题的症结找出来。并尝试了解我是如何启动虚拟机的。您可以浏览Steve Jin的vi-java api的文档,在那里您可以找到一些可能对您有帮助的示例。
powerOnVM(ManagedObjectReference vmMOR){
try{
//Get the name of VM
String vmName= (String)client.getServiceUtil().getDynamicProperty(vmMOR, "name");
// You may need to perform other works like NIC config or relocating VM at exact host etc.
//Try to start thge VM
ManagedObjectReference taskMOR = client.getServiceInstance().powerOnVM_Task(vmMOR, null);
Thread hook = client.addShutdownHook(taskMOR);
client.startCancelThread(getRequestNo(), taskMOR);
// Wait for the task to complete.
client.getServiceUtil().waitForTask(taskMOR);
client.removeShutdownHook(hook);
// Get the task state
TaskInfo tinfo = (TaskInfo)client.getServiceUtil().getDynamicProperty(taskMOR, "info");
if (TaskInfoState.success.equals(tinfo.getState())) { // success
logDecoratedMsg("Virtual Machine " + vmName + " powered on successfully");
} else {
throw new Exception(tinfo.getError().getLocalizedMessage(), tinfo.getError().getFault());
}
}
catch(InvalidPowerState e){throw new Exception("Virtual Machine is in an invalid power state"}
}发布于 2014-02-12 04:19:31
如果我理解正确的话,您希望通过vSphere网络客户端以编程方式发出通电/挂起任务。我认为这是不可能的,因为web客户端不公开API。您必须直接连接到vCenter (web服务)。web客户端只是一个UI。为什么你不想直接连接到你的vCenter?
https://stackoverflow.com/questions/21684474
复制相似问题