用于使用Web服务SDK管理ESXi的java程序

时间:2012-01-10 06:13:30

标签: java vmware esxi vmware-sdk

使用vmware Web服务SDK和Axis 1.4,ESXi 4.1作为服务器,我可以设置java环境。 我在工作站上安装了esxi 4.1 我编译了pdf

中给出的示例程序

我从网站http://www.vmware.com/support/developer/vc-sdk/visdk400pubs/sdk40programmingguide.pdf下载了pdf  我通过命令提示符

成功编译并运行了示例程序SimpleClient.java

我想创建一些任务,并向我的教授展示这些任务可以像云服务一样。

这些任务也在gettingstartedguide.pdf中给出,pdf说任务可以完成。

pdf可用谷歌搜索“vmware gettingstartedguide.pdf web service SDK”

这些是必须在ESXi 4.1上执行的任务 1.创建虚拟机。 2.打开虚拟机电源。 3.关闭虚拟机电源。 4.挂起虚拟机 5。恢复虚拟机

如果我能够完成上述任务,那么我可以将这些任务作为网络环境。

我不太了解vmware。 我想执行上面的任务我们需要连接服务器(并且该程序在gettingstartedGuide.pdf中也是可用的)

我无法继续进行哪个任务链接(就像我们能够连接服务器时可以执行上述5个任务一样)。

如果不使用esxi创建会话我不知道如何创建虚拟机。

我对流程如何管理上述任务几乎没有什么困惑。

请帮帮我。

任何建议对我来说都是富有成效的一步。

感谢你

2 个答案:

答案 0 :(得分:1)

我建议您使用VMWare VI Java API执行上述任务。它相对简单易用。我还建议您浏览博客doublecloud.org以获取更多信息。

答案 1 :(得分:1)

/*================================================================================
Copyright (c) 2008 VMware, Inc. All Rights Reserved.

Redistribution and use in source and binary forms, with or without modification, 
are permitted provided that the following conditions are met:

 * Redistributions of source code must retain the above copyright notice, 
this list of conditions and the following disclaimer.

 * Redistributions in binary form must reproduce the above copyright notice, 
this list of conditions and the following disclaimer in the documentation 
and/or other materials provided with the distribution.

 * Neither the name of VMware, Inc. nor the names of its contributors may be used
to endorse or promote products derived from this software without specific prior 
written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
POSSIBILITY OF SUCH DAMAGE.
================================================================================*/

package com.vmware.vim25.mo.samples.vm;

import java.net.URL;

import com.vmware.vim25.mo.Folder;
import com.vmware.vim25.mo.InventoryNavigator;
import com.vmware.vim25.mo.ServiceInstance;
import com.vmware.vim25.mo.Task;
import com.vmware.vim25.mo.VirtualMachine;

/**
 * http://vijava.sf.net
 * @author Steve Jin
 */

public class VMpowerOps 
{
  public static void main(String[] args) throws Exception 
  {
    if(args.length!=5)
    {
      System.out.println("Usage: java VMpowerOps <url> " +
            "<username> <password> <vmname> <op>");
      System.out.println("op - reboot|poweron|poweroff" +
            "|reset|standby|suspend|shutdown");
      System.exit(0);
    }

    String vmname = args[3];
    String op = args[4];

    ServiceInstance si = new ServiceInstance(
        new URL(args[0]), args[1], args[2], true);

    Folder rootFolder = si.getRootFolder();
    VirtualMachine vm = (VirtualMachine) new InventoryNavigator(
      rootFolder).searchManagedEntity("VirtualMachine", vmname);

    if(vm==null)
    {
      System.out.println("No VM " + vmname + " found");
      si.getServerConnection().logout();
      return;
    }

    if("reboot".equalsIgnoreCase(op))
    {
      vm.rebootGuest();
      System.out.println(vmname + " guest OS rebooted");
    }
    else if("poweron".equalsIgnoreCase(op))
    {
      Task task = vm.powerOnVM_Task(null);
      if(task.waitForMe()==Task.SUCCESS)
      {
        System.out.println(vmname + " powered on");
      }
    }
    else if("poweroff".equalsIgnoreCase(op))
    {
      Task task = vm.powerOffVM_Task();
      if(task.waitForMe()==Task.SUCCESS)
      {
        System.out.println(vmname + " powered off");
      }
    }
    else if("reset".equalsIgnoreCase(op))
    {
      Task task = vm.resetVM_Task();
      if(task.waitForMe()==Task.SUCCESS)
      {
        System.out.println(vmname + " reset");
      }
    }
    else if("standby".equalsIgnoreCase(op))
    {
      vm.standbyGuest();
      System.out.println(vmname + " guest OS stoodby");
    }
    else if("suspend".equalsIgnoreCase(op))
    {
      Task task = vm.suspendVM_Task();
      if(task.waitForMe()==Task.SUCCESS)
      {
        System.out.println(vmname + " suspended");
      }
    }
    else if("shutdown".equalsIgnoreCase(op))
    {
      Task task = vm.suspendVM_Task();
      if(task.waitForMe()==Task.SUCCESS)
      {
        System.out.println(vmname + " suspended");
      }
    }
    else
    {
      System.out.println("Invalid operation. Exiting...");
    }
    si.getServerConnection().logout();
  }
}