Search in sources :

Example 1 with BlueprintInputParameters

use of com.sequenceiq.cloudbreak.domain.BlueprintInputParameters in project cloudbreak by hortonworks.

the class BlueprintRequestToBlueprintConverter method prepareBlueprintInputs.

private void prepareBlueprintInputs(BlueprintRequest json, Blueprint blueprint) {
    List<BlueprintParameter> blueprintParameterList = new ArrayList<>();
    for (BlueprintParameterJson blueprintParameterJson : json.getInputs()) {
        BlueprintParameter blueprintParameter = new BlueprintParameter();
        blueprintParameter.setReferenceConfiguration(blueprintParameterJson.getReferenceConfiguration());
        blueprintParameter.setDescription(blueprintParameterJson.getDescription());
        blueprintParameter.setName(blueprintParameterJson.getName());
        blueprintParameterList.add(blueprintParameter);
    }
    BlueprintInputParameters inputParameters = new BlueprintInputParameters(blueprintParameterList);
    try {
        blueprint.setInputParameters(new Json(inputParameters));
    } catch (JsonProcessingException e) {
        throw new BadRequestException("Invalid Blueprint: Failed to parse inputs.", e);
    }
}
Also used : ArrayList(java.util.ArrayList) BadRequestException(com.sequenceiq.cloudbreak.controller.BadRequestException) BlueprintParameter(com.sequenceiq.cloudbreak.domain.BlueprintParameter) Json(com.sequenceiq.cloudbreak.domain.json.Json) BlueprintParameterJson(com.sequenceiq.cloudbreak.api.model.BlueprintParameterJson) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) BlueprintInputParameters(com.sequenceiq.cloudbreak.domain.BlueprintInputParameters) BlueprintParameterJson(com.sequenceiq.cloudbreak.api.model.BlueprintParameterJson)

Example 2 with BlueprintInputParameters

use of com.sequenceiq.cloudbreak.domain.BlueprintInputParameters in project cloudbreak by hortonworks.

the class BlueprintToBlueprintResponseConverter method convertInputParameters.

private Set<BlueprintParameterJson> convertInputParameters(Json inputParameters) throws IOException {
    Set<BlueprintParameterJson> result = new HashSet<>();
    if (inputParameters != null && StringUtils.isNoneEmpty(inputParameters.getValue())) {
        BlueprintInputParameters inputParametersObj = inputParameters.get(BlueprintInputParameters.class);
        List<BlueprintParameter> parameters = inputParametersObj.getParameters();
        for (BlueprintParameter record : parameters) {
            BlueprintParameterJson json = new BlueprintParameterJson();
            json.setDescription(record.getDescription());
            json.setName(record.getName());
            json.setReferenceConfiguration(record.getReferenceConfiguration());
            result.add(json);
        }
    }
    return result;
}
Also used : BlueprintParameter(com.sequenceiq.cloudbreak.domain.BlueprintParameter) BlueprintInputParameters(com.sequenceiq.cloudbreak.domain.BlueprintInputParameters) BlueprintParameterJson(com.sequenceiq.cloudbreak.api.model.BlueprintParameterJson) HashSet(java.util.HashSet)

Example 3 with BlueprintInputParameters

use of com.sequenceiq.cloudbreak.domain.BlueprintInputParameters 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 4 with BlueprintInputParameters

use of com.sequenceiq.cloudbreak.domain.BlueprintInputParameters in project cloudbreak by hortonworks.

the class DefaultBlueprintCache method loadBlueprintsFromFile.

@PostConstruct
public void loadBlueprintsFromFile() {
    for (String blueprintStrings : blueprintArray) {
        try {
            String[] split = blueprintStrings.split("=");
            if (blueprintUtils.isBlueprintNamePreConfigured(blueprintStrings, split)) {
                LOGGER.info("Load default validation '{}'.", blueprintStrings);
                BlueprintRequest blueprintJson = new BlueprintRequest();
                blueprintJson.setName(split[0].trim());
                JsonNode jsonNode = blueprintUtils.convertStringToJsonNode(blueprintUtils.readDefaultBlueprintFromFile(split));
                blueprintJson.setAmbariBlueprint(jsonNode.get("blueprint").toString());
                Blueprint bp = converter.convert(blueprintJson);
                JsonNode inputs = jsonNode.get("inputs");
                JsonNode description = jsonNode.get("description");
                bp.setDescription(description == null ? split[0] : description.asText(split[0]));
                BlueprintInputParameters inputParameters = new BlueprintInputParameters(blueprintUtils.prepareInputs(inputs));
                bp.setInputParameters(new Json(inputParameters));
                defaultBlueprints.put(bp.getName(), bp);
            }
        } catch (IOException e) {
            LOGGER.info("Can not read default validation from file: ", e);
        }
    }
}
Also used : Blueprint(com.sequenceiq.cloudbreak.domain.Blueprint) JsonNode(com.fasterxml.jackson.databind.JsonNode) Json(com.sequenceiq.cloudbreak.domain.json.Json) IOException(java.io.IOException) BlueprintRequest(com.sequenceiq.cloudbreak.api.model.BlueprintRequest) BlueprintInputParameters(com.sequenceiq.cloudbreak.domain.BlueprintInputParameters) PostConstruct(javax.annotation.PostConstruct)

Aggregations

BlueprintInputParameters (com.sequenceiq.cloudbreak.domain.BlueprintInputParameters)4 BlueprintParameterJson (com.sequenceiq.cloudbreak.api.model.BlueprintParameterJson)3 BlueprintParameter (com.sequenceiq.cloudbreak.domain.BlueprintParameter)3 Json (com.sequenceiq.cloudbreak.domain.json.Json)3 BadRequestException (com.sequenceiq.cloudbreak.controller.BadRequestException)2 IOException (java.io.IOException)2 HashSet (java.util.HashSet)2 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 JsonNode (com.fasterxml.jackson.databind.JsonNode)1 BlueprintInputJson (com.sequenceiq.cloudbreak.api.model.BlueprintInputJson)1 BlueprintRequest (com.sequenceiq.cloudbreak.api.model.BlueprintRequest)1 ConfigsResponse (com.sequenceiq.cloudbreak.api.model.ConfigsResponse)1 Blueprint (com.sequenceiq.cloudbreak.domain.Blueprint)1 RDSConfig (com.sequenceiq.cloudbreak.domain.RDSConfig)1 Stack (com.sequenceiq.cloudbreak.domain.Stack)1 ArrayList (java.util.ArrayList)1 PostConstruct (javax.annotation.PostConstruct)1