Esempio n. 1
0
  @Override
  protected boolean validate() {
    T params = getParameters();
    setClusterId(params.getVdsStaticData().getClusterId());
    params.setVdsForUniqueId(null);
    // Check if this is a valid cluster
    boolean returnValue = validateCluster();
    if (returnValue) {
      HostValidator validator = getHostValidator();
      returnValue =
          validate(validator.nameNotEmpty())
              && validate(validator.nameLengthIsLegal())
              && validate(validator.hostNameIsValid())
              && validate(validator.nameNotUsed())
              && validate(validator.hostNameNotUsed())
              && validate(validator.portIsValid())
              && validate(validator.sshUserNameNotEmpty())
              && validate(validator.validateSingleHostAttachedToLocalStorage())
              && validate(validator.securityKeysExists())
              && validate(
                  validator.provisioningComputeResourceValid(
                      params.isProvisioned(), params.getComputeResource()))
              && validate(
                  validator.provisioningHostGroupValid(
                      params.isProvisioned(), params.getHostGroup()))
              && validate(
                  validator.passwordNotEmpty(
                      params.isPending(), params.getAuthMethod(), params.getPassword()))
              && validate(
                  validator.supportsDeployingHostedEngine(
                      params.getHostedEngineDeployConfiguration()));
    }

    if (!(returnValue
        && isPowerManagementLegal(
            params.getVdsStaticData().isPmEnabled(),
            params.getFenceAgents(),
            getCluster().getCompatibilityVersion().toString())
        && canConnect(params.getvds()))) {
      return false;
    }

    if (params.getVdsStaticData().getOpenstackNetworkProviderId() != null
        && !validateNetworkProviderProperties(
            params.getVdsStaticData().getOpenstackNetworkProviderId(),
            params.getNetworkMappings())) {
      return false;
    }

    if (isGlusterSupportEnabled() && clusterHasNonInitializingServers()) {
      // allow simultaneous installation of hosts, but if a host has completed install, only
      // allow addition of another host if it can be peer probed to cluster.
      VDS upServer = getGlusterUtil().getUpServer(getClusterId());
      if (upServer == null) {
        return failValidation(EngineMessage.ACTION_TYPE_FAILED_NO_GLUSTER_HOST_TO_PEER_PROBE);
      }
    }

    return true;
  }