/**
   * Validates vCenter user credentials from create or update parameters.
   *
   * @param param either vCenter create or update param.
   * @param vcenter vCenter object.
   */
  private void validateVcenterCredentials(VcenterParam param, Vcenter vcenter) {
    if (StringUtils.isBlank(param.getPassword()) && vcenter != null) {
      param.setPassword(StringUtils.trimToNull(vcenter.getPassword()));
    }

    if (StringUtils.isBlank(param.getUserName()) && vcenter != null) {
      param.setUserName(StringUtils.trimToNull(vcenter.getUsername()));
    }

    ArgValidator.checkFieldNotNull(param.getUserName(), "username");
    ArgValidator.checkFieldNotNull(param.getPassword(), "password");
  }
 /**
  * Populate an instance of vcenter with the provided vcenter parameter
  *
  * @param vcenter the vcenter to be populated
  * @param param the parameter that contains the attributes.
  */
 protected void populateVcenterData(Vcenter vcenter, VcenterParam param) {
   vcenter.setLabel(param.getName());
   vcenter.setOsVersion(param.getOsVersion());
   vcenter.setUsername(param.getUserName());
   vcenter.setPassword(param.getPassword());
   vcenter.setIpAddress(param.findIpAddress());
   vcenter.setPortNumber(param.getPortNumber());
   vcenter.setUseSSL(param.getUseSsl());
 }
  protected static String validateVCenterAPIConnection(String hostname, VcenterParam vcenterParam) {
    try {
      URL url = new URL("https", hostname, vcenterParam.getPortNumber(), "/sdk");

      VCenterAPI vcenterAPI = new VCenterAPI(url);
      try {
        vcenterAPI.login(vcenterParam.getUserName(), vcenterParam.getPassword());
        AboutInfo aboutInfo = vcenterAPI.getAboutInfo();
        if (!StringUtils.equals(VCenterAPI.VCENTER_API_TYPE, aboutInfo.getApiType())) {
          throw APIException.badRequests.invalidNotAVCenter(hostname, aboutInfo.getFullName());
        }
        log.info(String.format("vCenter version: %s", aboutInfo.getVersion()));
      } finally {
        vcenterAPI.logout();
      }

    } catch (Exception e) {
      return getVcenterAPIMessage(e);
    }

    return null;
  }