Search in sources :

Example 1 with ConfigsResponse

use of com.sequenceiq.cloudbreak.api.model.ConfigsResponse in project cloudbreak by hortonworks.

the class ClusterDecorator method prepareConnectedClusterParameters.

private void prepareConnectedClusterParameters(Cluster requestedCluster, IdentityUser user, ConnectedClusterRequest connectedClusterRequest) {
    if (connectedClusterRequest != null) {
        Long stackId;
        Stack publicStack;
        if (!Strings.isNullOrEmpty(connectedClusterRequest.getSourceClusterName())) {
            publicStack = stackService.getPublicStack(connectedClusterRequest.getSourceClusterName(), user);
            stackId = publicStack.getId();
        } else {
            stackId = connectedClusterRequest.getSourceClusterId();
            publicStack = stackService.get(connectedClusterRequest.getSourceClusterId());
        }
        // We should set the ldap to the source cluster ldap
        requestedCluster.setLdapConfig(publicStack.getCluster().getLdapConfig());
        // We should set the ranger metastore to the source cluster ranger metastore if exist!
        RDSConfig rangerRds = rdsConfigService.findByClusterIdAndType(publicStack.getOwner(), publicStack.getAccount(), publicStack.getCluster().getId(), RdsType.RANGER);
        if (rangerRds != null) {
            requestedCluster.getRdsConfigs().add(rangerRds);
        }
        try {
            Set<BlueprintParameterJson> requests = new HashSet<>();
            Json blueprintAttributes = requestedCluster.getBlueprint().getInputParameters();
            if (blueprintAttributes != null && StringUtils.isNoneEmpty(blueprintAttributes.getValue())) {
                BlueprintInputParameters inputParametersObj = blueprintAttributes.get(BlueprintInputParameters.class);
                for (BlueprintParameter blueprintParameter : inputParametersObj.getParameters()) {
                    BlueprintParameterJson blueprintParameterJson = new BlueprintParameterJson();
                    blueprintParameterJson.setName(blueprintParameter.getName());
                    blueprintParameterJson.setReferenceConfiguration(blueprintParameter.getReferenceConfiguration());
                    blueprintParameterJson.setDescription(blueprintParameter.getDescription());
                    requests.add(blueprintParameterJson);
                }
            }
            ConfigsResponse configsResponse = clusterService.retrieveOutputs(stackId, requests);
            Map<String, String> newInputs = requestedCluster.getBlueprintInputs().get(Map.class);
            for (BlueprintInputJson blueprintInputJson : configsResponse.getInputs()) {
                newInputs.put(blueprintInputJson.getName(), blueprintInputJson.getPropertyValue());
            }
            requestedCluster.setBlueprintInputs(new Json(newInputs));
        } catch (IOException e) {
            LOGGER.error("Could not propagate cluster input parameters", e);
            throw new BadRequestException("Could not propagate cluster input parameters: " + e.getMessage());
        }
    }
}
Also used : RDSConfig(com.sequenceiq.cloudbreak.domain.RDSConfig) ConfigsResponse(com.sequenceiq.cloudbreak.api.model.ConfigsResponse) BlueprintInputJson(com.sequenceiq.cloudbreak.api.model.BlueprintInputJson) BlueprintParameter(com.sequenceiq.cloudbreak.domain.BlueprintParameter) Json(com.sequenceiq.cloudbreak.domain.json.Json) BlueprintParameterJson(com.sequenceiq.cloudbreak.api.model.BlueprintParameterJson) BlueprintInputJson(com.sequenceiq.cloudbreak.api.model.BlueprintInputJson) IOException(java.io.IOException) BlueprintInputParameters(com.sequenceiq.cloudbreak.domain.BlueprintInputParameters) Stack(com.sequenceiq.cloudbreak.domain.Stack) BadRequestException(com.sequenceiq.cloudbreak.controller.BadRequestException) BlueprintParameterJson(com.sequenceiq.cloudbreak.api.model.BlueprintParameterJson) HashSet(java.util.HashSet)

Example 2 with ConfigsResponse

use of com.sequenceiq.cloudbreak.api.model.ConfigsResponse in project cloudbreak by hortonworks.

the class AmbariClusterService method retrieveOutputs.

@Override
public ConfigsResponse retrieveOutputs(Long stackId, Set<BlueprintParameterJson> requests) throws IOException {
    Stack stack = stackService.get(stackId);
    AmbariClient ambariClient = getAmbariClient(stack);
    Cluster cluster = stack.getCluster();
    List<String> targets = new ArrayList<>();
    Map<String, String> bpI = new HashMap<>();
    if (cluster.getBlueprintInputs().getValue() != null) {
        bpI = cluster.getBlueprintInputs().get(Map.class);
    }
    prepareTargets(requests, targets, bpI);
    Map<String, String> results = new HashMap<>();
    if (cluster.getAmbariIp() != null) {
        results = ambariClient.getConfigValuesByConfigIds(targets);
    }
    prepareResults(requests, cluster, bpI, results);
    prepareAdditionalInputParameters(results, cluster);
    Set<BlueprintInputJson> blueprintInputJsons = new HashSet<>();
    for (Entry<String, String> stringStringEntry : results.entrySet()) {
        for (BlueprintParameterJson blueprintParameter : requests) {
            if (stringStringEntry.getKey().equals(blueprintParameter.getName())) {
                BlueprintInputJson blueprintInputJson = new BlueprintInputJson();
                blueprintInputJson.setName(blueprintParameter.getName());
                blueprintInputJson.setPropertyValue(stringStringEntry.getValue());
                blueprintInputJsons.add(blueprintInputJson);
                break;
            }
        }
    }
    ConfigsResponse configsResponse = new ConfigsResponse();
    configsResponse.setInputs(blueprintInputJsons);
    return configsResponse;
}
Also used : HashMap(java.util.HashMap) ConfigsResponse(com.sequenceiq.cloudbreak.api.model.ConfigsResponse) ArrayList(java.util.ArrayList) BlueprintInputJson(com.sequenceiq.cloudbreak.api.model.BlueprintInputJson) Cluster(com.sequenceiq.cloudbreak.domain.Cluster) Stack(com.sequenceiq.cloudbreak.domain.Stack) Map(java.util.Map) HashMap(java.util.HashMap) AmbariClient(com.sequenceiq.ambari.client.AmbariClient) HashSet(java.util.HashSet) BlueprintParameterJson(com.sequenceiq.cloudbreak.api.model.BlueprintParameterJson)

Aggregations

BlueprintInputJson (com.sequenceiq.cloudbreak.api.model.BlueprintInputJson)2 BlueprintParameterJson (com.sequenceiq.cloudbreak.api.model.BlueprintParameterJson)2 ConfigsResponse (com.sequenceiq.cloudbreak.api.model.ConfigsResponse)2 Stack (com.sequenceiq.cloudbreak.domain.Stack)2 HashSet (java.util.HashSet)2 AmbariClient (com.sequenceiq.ambari.client.AmbariClient)1 BadRequestException (com.sequenceiq.cloudbreak.controller.BadRequestException)1 BlueprintInputParameters (com.sequenceiq.cloudbreak.domain.BlueprintInputParameters)1 BlueprintParameter (com.sequenceiq.cloudbreak.domain.BlueprintParameter)1 Cluster (com.sequenceiq.cloudbreak.domain.Cluster)1 RDSConfig (com.sequenceiq.cloudbreak.domain.RDSConfig)1 Json (com.sequenceiq.cloudbreak.domain.json.Json)1 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1