use of com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster in project cloudbreak by hortonworks.
the class ClusterCreationSetupService method prepare.
public Cluster prepare(ClusterV4Request request, Stack stack, Blueprint blueprint, User user, String parentEnvironmentCloudPlatform) throws IOException, CloudbreakImageCatalogException, TransactionExecutionException {
String stackName = stack.getName();
Cluster clusterStub = stack.getCluster();
stack.setCluster(null);
if (request.getCloudStorage() != null) {
FileSystem fileSystem = cloudStorageConverter.requestToFileSystem(request.getCloudStorage());
measure(() -> fileSystemConfigService.createWithMdcContextRestore(fileSystem, stack.getWorkspace(), user), LOGGER, "File system saving took {} ms for stack {}", stackName);
}
clusterStub.setStack(stack);
clusterStub.setWorkspace(stack.getWorkspace());
Cluster cluster = measure(() -> clusterDecorator.decorate(clusterStub, request, blueprint, user, stack.getWorkspace(), stack, parentEnvironmentCloudPlatform), LOGGER, "Cluster decorator {} ms for stack {}", stackName);
List<ClusterComponent> components = multiCheckedMeasure((MultiCheckedSupplier<List<ClusterComponent>, IOException, CloudbreakImageCatalogException>) () -> {
if (blueprint != null) {
Set<Component> allComponent = componentConfigProviderService.getAllComponentsByStackIdAndType(stack.getId(), Sets.newHashSet(ComponentType.CM_REPO_DETAILS, ComponentType.CDH_PRODUCT_DETAILS, ComponentType.IMAGE));
Optional<Component> stackCmRepoConfig = allComponent.stream().filter(c -> c.getComponentType().equals(ComponentType.CM_REPO_DETAILS)).findAny();
List<Component> stackCdhRepoConfig = allComponent.stream().filter(c -> c.getComponentType().equals(ComponentType.CDH_PRODUCT_DETAILS)).collect(Collectors.toList());
Optional<Component> stackImageComponent = allComponent.stream().filter(c -> c.getComponentType().equals(ComponentType.IMAGE) && c.getName().equalsIgnoreCase(ComponentType.IMAGE.name())).findAny();
return clouderaManagerClusterCreationSetupService.prepareClouderaManagerCluster(request, cluster, stackCmRepoConfig, stackCdhRepoConfig, stackImageComponent);
}
return Collections.emptyList();
}, LOGGER, "Cluster components saved in {} ms for stack {}", stackName);
return clusterOperationService.create(stack, cluster, components, user);
}
use of com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster in project cloudbreak by hortonworks.
the class ClusterToClusterV4ResponseConverter method convert.
public ClusterV4Response convert(Cluster source) {
ClusterV4Response clusterResponse = new ClusterV4Response();
clusterResponse.setId(source.getId());
clusterResponse.setName(source.getName());
Stack stack = source.getStack();
clusterResponse.setStatus(stack.getStatus());
clusterResponse.setStatusReason(stack.getStatusReason());
setUptime(source, clusterResponse);
clusterResponse.setDescription(source.getDescription() == null ? "" : source.getDescription());
String managerAddress = stackUtil.extractClusterManagerAddress(stack);
Map<String, Collection<ClusterExposedServiceV4Response>> clusterExposedServicesForTopologies = serviceEndpointCollector.prepareClusterExposedServices(source, managerAddress);
clusterResponse.setExposedServices(clusterExposedServicesForTopologies);
convertCustomQueue(source, clusterResponse);
convertNullableProperties(source, clusterResponse);
convertContainerConfig(source, clusterResponse);
clusterResponse.setCreationFinished(source.getCreationFinished());
decorateResponseWithProxyConfig(source, clusterResponse);
clusterResponse.setCloudStorage(getCloudStorage(source));
clusterResponse.setCm(ClusterToClouderaManagerV4ResponseConverter.convert(source));
clusterResponse.setDatabases(source.getRdsConfigs().stream().filter(rds -> ResourceStatus.USER_MANAGED.equals(rds.getStatus())).map(rds -> rdsConfigToDatabaseV4ResponseConverter.convert(rds)).collect(Collectors.toList()));
clusterResponse.setWorkspace(workspaceToWorkspaceResourceV4ResponseConverter.convert(source.getWorkspace()));
clusterResponse.setBlueprint(getIfNotNull(source.getBlueprint(), blueprintToBlueprintV4ResponseConverter::convert));
clusterResponse.setExtendedBlueprintText(getExtendedBlueprintText(source));
convertDpSecrets(source, clusterResponse);
clusterResponse.setServerIp(stackUtil.extractClusterManagerIp(stack));
clusterResponse.setServerFqdn(source.getFqdn());
clusterResponse.setServerUrl(serviceEndpointCollector.getManagerServerUrl(source, managerAddress));
clusterResponse.setCustomConfigurationsName(getIfNotNull(source.getCustomConfigurations(), configurations -> configurations.getName()));
clusterResponse.setCustomConfigurationsCrn(getIfNotNull(source.getCustomConfigurations(), configurations -> configurations.getCrn()));
clusterResponse.setDatabaseServerCrn(source.getDatabaseServerCrn());
clusterResponse.setRangerRazEnabled(source.isRangerRazEnabled());
clusterResponse.setCertExpirationState(source.getCertExpirationState());
return clusterResponse;
}
use of com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster in project cloudbreak by hortonworks.
the class ClusterBootstrapper method bootstrapNewNodesOnHost.
private void bootstrapNewNodesOnHost(Stack stack, List<GatewayConfig> allGatewayConfigs, Set<Node> nodes, Set<Node> allNodes) throws CloudbreakOrchestratorException {
LOGGER.info("Bootstrap new nodes: {}", nodes);
Cluster cluster = stack.getCluster();
Boolean enableKnox = cluster.getGateway() != null;
for (InstanceMetaData gateway : stack.getNotTerminatedAndNotZombieGatewayInstanceMetadata()) {
GatewayConfig gatewayConfig = gatewayConfigService.getGatewayConfig(stack, gateway, enableKnox);
ExtendedPollingResult bootstrapApiPolling = hostBootstrapApiPollingService.pollWithAbsoluteTimeout(hostBootstrapApiCheckerTask, new HostBootstrapApiContext(stack, gatewayConfig, hostOrchestrator), POLL_INTERVAL, MAX_POLLING_ATTEMPTS);
validatePollingResultForCancellation(bootstrapApiPolling.getPollingResult(), "Polling of bootstrap API was cancelled.");
}
byte[] stateZip = null;
ClusterComponent stateComponent = clusterComponentProvider.getComponent(cluster.getId(), ComponentType.SALT_STATE);
if (stateComponent != null) {
String content = (String) stateComponent.getAttributes().getMap().getOrDefault(ComponentType.SALT_STATE.name(), "");
if (!content.isEmpty()) {
stateZip = Base64.decodeBase64(content);
}
}
BootstrapParams params = createBootstrapParams(stack);
hostOrchestrator.bootstrapNewNodes(allGatewayConfigs, nodes, allNodes, stateZip, params, clusterDeletionBasedModel(stack.getId(), null));
InstanceMetaData primaryGateway = stack.getPrimaryGatewayInstance();
GatewayConfig gatewayConfig = gatewayConfigService.getGatewayConfig(stack, primaryGateway, enableKnox);
ExtendedPollingResult allNodesAvailabilityPolling = hostClusterAvailabilityPollingService.pollWithAbsoluteTimeout(hostClusterAvailabilityCheckerTask, new HostOrchestratorClusterContext(stack, hostOrchestrator, gatewayConfig, nodes), POLL_INTERVAL, MAX_POLLING_ATTEMPTS);
validatePollingResultForCancellation(allNodesAvailabilityPolling.getPollingResult(), "Polling of new nodes availability was cancelled.");
if (allNodesAvailabilityPolling.isTimeout()) {
clusterBootstrapperErrorHandler.terminateFailedNodes(hostOrchestrator, null, stack, gatewayConfig, nodes);
}
}
use of com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster in project cloudbreak by hortonworks.
the class ClusterServiceRunner method redeployGatewayCertificate.
public void redeployGatewayCertificate(Long stackId) {
Stack stack = stackService.getByIdWithListsInTransaction(stackId);
Long clusterId = stack.getCluster().getId();
Cluster cluster = clusterService.findOneWithLists(clusterId).orElseThrow(NotFoundException.notFound("Cluster", clusterId));
hostRunner.redeployGatewayCertificate(stack, cluster);
}
use of com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster in project cloudbreak by hortonworks.
the class ClusterServiceRunner method redeployGatewayPillar.
public void redeployGatewayPillar(Long stackId) {
Stack stack = stackService.getByIdWithListsInTransaction(stackId);
Long clusterId = stack.getCluster().getId();
Cluster cluster = clusterService.findOneWithLists(clusterId).orElseThrow(NotFoundException.notFound("Cluster", clusterId));
hostRunner.redeployGatewayPillarOnly(stack, cluster);
}
Aggregations