use of com.sequenceiq.cloudbreak.api.model.BlueprintParameterJson in project cloudbreak by hortonworks.
the class AmbariClusterService method prepareResults.
private void prepareResults(Iterable<BlueprintParameterJson> requests, Cluster cluster, Map<String, String> bpI, Map<String, String> results) {
if (cluster.getBlueprintInputs().getValue() != null) {
if (bpI != null) {
for (Entry<String, String> stringStringEntry : bpI.entrySet()) {
if (!results.keySet().contains(stringStringEntry.getKey())) {
results.put(stringStringEntry.getKey(), stringStringEntry.getValue());
}
}
}
}
for (BlueprintParameterJson request : requests) {
if (results.keySet().contains(request.getReferenceConfiguration())) {
results.put(request.getName(), results.get(request.getReferenceConfiguration()));
results.remove(request.getReferenceConfiguration());
}
}
}
use of com.sequenceiq.cloudbreak.api.model.BlueprintParameterJson 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);
}
}
use of com.sequenceiq.cloudbreak.api.model.BlueprintParameterJson 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;
}
use of com.sequenceiq.cloudbreak.api.model.BlueprintParameterJson 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());
}
}
}
use of com.sequenceiq.cloudbreak.api.model.BlueprintParameterJson 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;
}
Aggregations