use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class ClusterHostServiceRunner method updateClusterConfigs.
public void updateClusterConfigs(@Nonnull Stack stack, @Nonnull Cluster cluster) {
try {
Set<Node> allNodes = stackUtil.collectNodes(stack);
Set<Node> reachableNodes = stackUtil.collectReachableNodesByInstanceStates(stack);
List<GatewayConfig> gatewayConfigs = gatewayConfigService.getAllGatewayConfigs(stack);
List<GrainProperties> grainsProperties = grainPropertiesService.createGrainProperties(gatewayConfigs, cluster, reachableNodes);
SaltConfig saltConfig = createSaltConfig(stack, cluster, grainsProperties);
ExitCriteriaModel exitCriteriaModel = clusterDeletionBasedModel(stack.getId(), cluster.getId());
hostOrchestrator.initSaltConfig(stack, gatewayConfigs, allNodes, saltConfig, exitCriteriaModel);
hostOrchestrator.runService(gatewayConfigs, reachableNodes, saltConfig, exitCriteriaModel);
} catch (CloudbreakOrchestratorException | IOException e) {
throw new CloudbreakServiceException(e.getMessage(), e);
}
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class CmDiagnosticsFlowService method executeCmDiagnosticOperation.
private void executeCmDiagnosticOperation(Long stackId, String operation, Set<String> excludeHosts, CmDiagnosticsFlowOperation func) throws CloudbreakOrchestratorFailedException {
LOGGER.debug("CM Diagnostics {} will be called only on the primary gateway address", operation);
Stack stack = stackService.getByIdWithListsInTransaction(stackId);
List<GatewayConfig> gatewayConfigs = gatewayConfigService.getAllGatewayConfigs(stack);
String primaryGatewayIp = gatewayConfigService.getPrimaryGatewayIp(stack);
Set<String> hosts = Set.of(primaryGatewayIp);
OrchestratorMetadataFilter filter = OrchestratorMetadataFilter.Builder.newBuilder().includeHosts(hosts).exlcudeHosts(excludeHosts).build();
Set<Node> filteredNodes = filter.apply(stack.getAllNodes());
ClusterDeletionBasedExitCriteriaModel exitModel = new ClusterDeletionBasedExitCriteriaModel(stackId, stack.getCluster().getId());
if (filteredNodes.isEmpty()) {
LOGGER.debug("CM Diagnostics {} has been skipped. (no target minions)", operation);
} else {
LOGGER.debug("CM Diagnostics operation '{}' has been started.", operation);
func.apply(gatewayConfigs, filteredNodes, exitModel);
LOGGER.debug("CM Diagnostics operation '{}' has been finished.", operation);
}
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class RestartClusterManagerServerHandler method restartCMServer.
private void restartCMServer(Stack stack) throws Exception {
Cluster cluster = stack.getCluster();
InstanceMetaData gatewayInstance = stack.getPrimaryGatewayInstance();
GatewayConfig gatewayConfig = gatewayConfigService.getGatewayConfig(stack, gatewayInstance, cluster.hasGateway());
Set<String> gatewayFQDN = Collections.singleton(gatewayInstance.getDiscoveryFQDN());
ExitCriteriaModel exitModel = ClusterDeletionBasedExitCriteriaModel.clusterDeletionBasedModel(stack.getId(), cluster.getId());
Set<Node> nodes = stackUtil.collectReachableNodes(stack);
Set<String> agentTargets = nodes.stream().map(Node::getHostname).collect(Collectors.toSet());
hostOrchestrator.updateAgentCertDirectoryPermission(gatewayConfig, agentTargets, nodes, exitModel);
hostOrchestrator.restartClusterManagerOnMaster(gatewayConfig, gatewayFQDN, nodes, exitModel);
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class AmbariStopServerAndAgentHandler method accept.
@Override
public void accept(Event<AmbariStopServerAndAgentRequest> event) {
AmbariStopServerAndAgentRequest request = event.getData();
Long stackId = request.getResourceId();
AmbariStopServerAndAgentResult result;
try {
Stack stack = stackService.getByIdWithListsInTransaction(stackId);
GatewayConfig primaryGatewayConfig = gatewayConfigService.getPrimaryGatewayConfig(stack);
Set<Node> allNodes = stackUtil.collectNodes(stack);
hostOrchestrator.stopClusterManagerOnMaster(primaryGatewayConfig, allNodes, clusterDeletionBasedModel(stack.getId(), stack.getCluster().getId()));
result = new AmbariStopServerAndAgentResult(request);
} catch (Exception e) {
String message = "Failed to start ambari agent and/or server on new host.";
LOGGER.error(message, e);
result = new AmbariStopServerAndAgentResult(message, e, request);
}
eventBus.notify(result.selector(), new Event<>(event.getHeaders(), result));
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class RemoveHostsHandler method removeHostsFromOrchestrator.
private PollingResult removeHostsFromOrchestrator(Stack stack, List<String> hostNames, HostOrchestrator hostOrchestrator, List<GatewayConfig> allGatewayConfigs) throws CloudbreakException {
LOGGER.debug("Remove hosts from orchestrator: {}", hostNames);
try {
Map<String, String> removeNodePrivateIPsByFQDN = new HashMap<>();
stack.getNotTerminatedInstanceMetaDataSet().stream().filter(instanceMetaData -> instanceMetaData.getDiscoveryFQDN() != null).filter(instanceMetaData -> hostNames.stream().anyMatch(hn -> hn.equals(instanceMetaData.getDiscoveryFQDN()))).forEach(instanceMetaData -> removeNodePrivateIPsByFQDN.put(instanceMetaData.getDiscoveryFQDN(), instanceMetaData.getPrivateIp()));
Set<Node> remainingNodes = stackUtil.collectNodes(stack).stream().filter(node -> !removeNodePrivateIPsByFQDN.containsValue(node.getPrivateIp())).collect(Collectors.toSet());
ExitCriteriaModel exitCriteriaModel = clusterDeletionBasedModel(stack.getId(), stack.getCluster().getId());
hostOrchestrator.tearDown(stack, allGatewayConfigs, removeNodePrivateIPsByFQDN, remainingNodes, exitCriteriaModel);
} catch (CloudbreakOrchestratorException e) {
LOGGER.error("Failed to delete orchestrator components while decommissioning: ", e);
throw new CloudbreakException("Removing selected nodes from master node failed, " + "please check if selected nodes are still reachable from master node using terminal and " + "nodes are in sync between CM, CDP and provider side or you can remove selected nodes forcefully.");
}
return SUCCESS;
}
Aggregations