@Override
  public IVirtualMachine createVirtualMachine(String site, LaunchVmOptions launchVmOptions)
      throws AdapterException {
    // site 只为兼容vmware vcloud vapp逻辑结构,h3cloud不需要处理站点。

    H3CloudServer server = new H3CloudServer();

    if (launchVmOptions.getVmName() == null) {
      throw new AdapterException("vm's name cannot be null when creating h3cloud server.");
    }

    server.setName(launchVmOptions.getVmName());

    server.setDescription(launchVmOptions.getDescription());

    server.setImageUuid(launchVmOptions.getImageOptions().getImageId());

    server.setNetworkUuid(launchVmOptions.getNetworkConfigOptions().getNetworkConfigId());

    server.setFlavorUuid(launchVmOptions.getHardwareOptions().getId());

    if (launchVmOptions.getNetworkConfigOptions().getPrivateIpAddress() != null
        && !"".equals(launchVmOptions.getNetworkConfigOptions().getPrivateIpAddress())) {
      server.setPrivateIp(launchVmOptions.getNetworkConfigOptions().getPrivateIpAddress());
    }

    server = serverService.create(server);

    H3CloudVirtualMachine vm = new H3CloudVirtualMachine(method, server);
    return vm;
  }
  @Override
  public IVirtualMachine virtualMachineMove(String siteSource, String vmId, String siteDestination)
      throws AdapterException {
    H3CloudServer server = serverService.getH3CServerById(vmId);

    H3CloudVirtualMachine vm = new H3CloudVirtualMachine(method, server);
    vm.powerOn();
    return vm;
  }
 @Override
 public IVirtualMachine getVirtualMachineById(String vmId) throws AdapterException {
   H3CloudServer server = serverService.getH3CServerById(vmId);
   IVirtualMachine vm = null;
   if (server != null) {
     vm = new H3CloudVirtualMachine(method, server);
   }
   return vm;
 }
  // H3Cloud查询虚拟机,start = 0; size = 10
  @Override
  public IVirtualMachine[] getVirtualMachines() throws AdapterException {
    List<H3CloudServer> servers = serverService.getH3CServers();
    IVirtualMachine[] vms = null;

    if (!servers.isEmpty()) {
      vms = new IVirtualMachine[servers.size()];
      int i = 0;
      for (H3CloudServer server : servers) {
        IVirtualMachine vm = new H3CloudVirtualMachine(method, server);
        vms[i] = vm;
        i++;
      }
    }

    return vms;
  }
  @Override
  public IVirtualMachine createVirtualMachine(LaunchVmOptions launchVmOptions)
      throws AdapterException {
    H3CloudServer server = new H3CloudServer();

    if (launchVmOptions.getVmName() == null) {
      throw new AdapterException("vm's name cannot be null when creating h3cloud server.");
    }

    server.setName(launchVmOptions.getVmName());
    server.setDescription(launchVmOptions.getDescription());

    server.setImageUuid(launchVmOptions.getImageOptions().getImageId());

    server.setNetworkUuid(launchVmOptions.getNetworkConfigOptions().getNetworkConfigId());

    server.setFlavorUuid(launchVmOptions.getHardwareOptions().getId());

    server = serverService.create(server);

    H3CloudVirtualMachine vm = new H3CloudVirtualMachine(method, server);
    return vm;
  }