use of com.sequenceiq.cloudbreak.domain.Stack in project cloudbreak by hortonworks.
the class ClusterStartHandler method accept.
@Override
public void accept(Event<ClusterStartRequest> event) {
ClusterStartRequest request = event.getData();
ClusterStartResult result;
try {
Stack stack = stackService.getByIdWithLists(request.getStackId());
int requestId = ambariClusterConnector.startCluster(stack);
result = new ClusterStartResult(request, requestId);
} catch (Exception e) {
result = new ClusterStartResult(e.getMessage(), e, request);
}
eventBus.notify(result.selector(), new Event<>(event.getHeaders(), result));
}
use of com.sequenceiq.cloudbreak.domain.Stack in project cloudbreak by hortonworks.
the class ClusterStopHandler method accept.
@Override
public void accept(Event<ClusterStopRequest> event) {
ClusterStopRequest request = event.getData();
ClusterStopResult result;
try {
Stack stack = stackService.getByIdWithLists(request.getStackId());
ambariClusterConnector.stopCluster(stack);
result = new ClusterStopResult(request);
} catch (Exception e) {
result = new ClusterStopResult(e.getMessage(), e, request);
}
eventBus.notify(result.selector(), new Event<>(event.getHeaders(), result));
}
use of com.sequenceiq.cloudbreak.domain.Stack in project cloudbreak by hortonworks.
the class ClusterCommonService method put.
public Response put(Long stackId, UpdateClusterJson updateJson) {
Stack stack = stackService.get(stackId);
MDCBuilder.buildMdcContext(stack);
UserNamePasswordJson userNamePasswordJson = updateJson.getUserNamePasswordJson();
if (userNamePasswordJson != null) {
ambariUserNamePasswordChange(stackId, stack, userNamePasswordJson);
return Response.status(Status.NO_CONTENT).build();
}
if (updateJson.getStatus() != null) {
LOGGER.info("Cluster status update request received. Stack id: {}, status: {} ", stackId, updateJson.getStatus());
clusterService.updateStatus(stackId, updateJson.getStatus());
return Response.status(Status.NO_CONTENT).build();
}
if (updateJson.getBlueprintId() != null && updateJson.getHostgroups() != null && stack.getCluster().isCreateFailed()) {
LOGGER.info("Cluster rebuild request received. Stack id: {}", stackId);
recreateCluster(stackId, updateJson);
return Response.status(Status.NO_CONTENT).build();
}
if (updateJson.getHostGroupAdjustment() != null) {
clusterHostgroupAdjustmentChange(stackId, updateJson, stack);
return Response.status(Status.NO_CONTENT).build();
}
LOGGER.error("Invalid cluster update request received. Stack id: {}", stackId);
throw new BadRequestException("Invalid update cluster request!");
}
use of com.sequenceiq.cloudbreak.domain.Stack in project cloudbreak by hortonworks.
the class ClusterCreationSetupService method prepare.
public Cluster prepare(ClusterRequest request, Stack stack, Blueprint blueprint, IdentityUser user) throws Exception {
String stackName = stack.getName();
long start = System.currentTimeMillis();
Cluster cluster = conversionService.convert(request, Cluster.class);
cluster.setStack(stack);
LOGGER.info("Cluster conversion took {} ms for stack {}", System.currentTimeMillis() - start, stackName);
start = System.currentTimeMillis();
cluster = clusterDecorator.decorate(cluster, request, blueprint, user, stack);
LOGGER.info("Cluster object decorated in {} ms for stack {}", System.currentTimeMillis() - start, stackName);
start = System.currentTimeMillis();
List<ClusterComponent> components = new ArrayList<>();
Set<Component> allComponent = componentConfigProvider.getAllComponentsByStackIdAndType(stack.getId(), Sets.newHashSet(ComponentType.AMBARI_REPO_DETAILS, ComponentType.HDP_REPO_DETAILS, ComponentType.IMAGE));
Optional<Component> stackAmbariRepoConfig = allComponent.stream().filter(c -> c.getComponentType().equals(ComponentType.AMBARI_REPO_DETAILS) && c.getName().equalsIgnoreCase(ComponentType.AMBARI_REPO_DETAILS.name())).findAny();
Optional<Component> stackHdpRepoConfig = allComponent.stream().filter(c -> c.getComponentType().equals(ComponentType.HDP_REPO_DETAILS) && c.getName().equalsIgnoreCase(ComponentType.HDP_REPO_DETAILS.name())).findAny();
Optional<Component> stackImageComponent = allComponent.stream().filter(c -> c.getComponentType().equals(ComponentType.IMAGE) && c.getName().equalsIgnoreCase(ComponentType.IMAGE.name())).findAny();
ClusterComponent ambariRepoConfig = determineAmbariRepoConfig(stackAmbariRepoConfig, request.getAmbariRepoDetailsJson(), stackImageComponent, cluster);
components.add(ambariRepoConfig);
ClusterComponent hdpRepoConfig = determineHDPRepoConfig(blueprint, stack.getId(), stackHdpRepoConfig, request, cluster, user, stackImageComponent);
components.add(hdpRepoConfig);
checkVDFFile(ambariRepoConfig, hdpRepoConfig, stackName);
LOGGER.info("Cluster components saved in {} ms for stack {}", System.currentTimeMillis() - start, stackName);
start = System.currentTimeMillis();
Cluster savedCluster = clusterService.create(user, stack, cluster, components);
LOGGER.info("Cluster object creation took {} ms for stack {}", System.currentTimeMillis() - start, stackName);
return savedCluster;
}
use of com.sequenceiq.cloudbreak.domain.Stack in project cloudbreak by hortonworks.
the class AmbariClusterService method updateStatus.
@Override
@Transactional(TxType.NEVER)
public void updateStatus(Long stackId, StatusRequest statusRequest) {
Stack stack = stackService.getByIdWithLists(stackId);
Cluster cluster = stack.getCluster();
if (cluster == null) {
throw new BadRequestException(String.format("There is no cluster installed on stack '%s'.", stack.getName()));
}
switch(statusRequest) {
case SYNC:
sync(stack);
break;
case STOPPED:
stop(stack, cluster);
break;
case STARTED:
start(stack, cluster);
break;
default:
throw new BadRequestException("Cannot update the status of cluster because status request not valid");
}
}
Aggregations