use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class CloudStorageValidationServiceTest method testValidationWithFailingIdbrokerAndRandomHost.
@Test
void testValidationWithFailingIdbrokerAndRandomHost() throws CloudbreakOrchestratorException {
Stack stack = getStack();
when(stackService.getByIdWithClusterInTransaction(STACK_ID)).thenReturn(stack);
when(entitlementService.cloudStorageValidationOnVmEnabled(anyString())).thenReturn(true);
DetailedEnvironmentResponse environment = getEnvironment();
when(environmentClientService.getByCrn(ENV_CRN)).thenReturn(environment);
List<GatewayConfig> gatewayConfigs = getGatewayConfigs();
when(gatewayConfigService.getAllGatewayConfigs(stack)).thenReturn(gatewayConfigs);
Set<Node> nodes = getNodes();
when(stackUtil.collectNodes(stack)).thenReturn(nodes);
when(diagnosticCloudStorageConverter.loggingResponseToCloudStorageDiagnosticsParameters(environment.getTelemetry().getLogging(), REGION)).thenReturn(new AwsDiagnosticParameters());
doThrow(new CloudbreakOrchestratorFailedException("failed")).when(telemetryOrchestrator).validateCloudStorage(anyList(), anySet(), any(), anyMap(), any());
assertThrows(CloudbreakOrchestratorFailedException.class, () -> underTest.validateCloudStorage(STACK_ID), "If provisioning was done using the UI, then verify the log's instance profile and logs location base when provisioning");
ArgumentCaptor<Set<String>> targetHostnamesCaptor = ArgumentCaptor.forClass(Set.class);
verify(telemetryOrchestrator, times(2)).validateCloudStorage(anyList(), anySet(), targetHostnamesCaptor.capture(), anyMap(), any());
verify(eventService, times(1)).fireCloudbreakEvent(anyLong(), anyString(), any());
List<Set<String>> capturedTargetHostnames = targetHostnamesCaptor.getAllValues();
List<String> idbrokerTargets = capturedTargetHostnames.stream().flatMap(Collection::stream).filter(s -> s.equals(IDBROKER_HOSTNAME)).collect(Collectors.toList());
List<String> nonIdbrokerTargets = capturedTargetHostnames.stream().flatMap(Collection::stream).filter(s -> !s.equals(IDBROKER_HOSTNAME)).collect(Collectors.toList());
assertEquals(1, idbrokerTargets.size());
assertEquals(1, nonIdbrokerTargets.size());
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class StackUtil method collectNodesFromHostnames.
public Set<Node> collectNodesFromHostnames(Stack stack, Set<String> hostnames) {
Set<Node> agents = new HashSet<>();
for (InstanceGroup instanceGroup : stack.getInstanceGroups()) {
if (instanceGroup.getNodeCount() != 0) {
for (InstanceMetaData im : instanceGroup.getReachableInstanceMetaDataSet()) {
if (im.getDiscoveryFQDN() != null && hostnames.contains(im.getDiscoveryFQDN())) {
String instanceId = im.getInstanceId();
String instanceType = instanceGroup.getTemplate().getInstanceType();
agents.add(new Node(im.getPrivateIp(), im.getPublicIp(), instanceId, instanceType, im.getDiscoveryFQDN(), im.getInstanceGroupName()));
}
}
}
}
return agents;
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class CreateFullBackupHandler method runBackupForNodesSequentially.
private void runBackupForNodesSequentially(Set<Node> nodes, OrchestratorStateParams stateParameters) throws CloudbreakOrchestratorFailedException, CloneNotSupportedException {
for (Node node : nodes) {
OrchestratorStateParams orchestratorStateParams = stateParameters.clone();
LOGGER.info("Run full backup for {}", node);
orchestratorStateParams.setTargetHostNames(Set.of(node.getHostname()));
orchestrator.runOrchestratorState(orchestratorStateParams);
}
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class FreeIpaCloudStorageValidationService method validateCloudStorage.
private void validateCloudStorage(Stack stack, List<GatewayConfig> allGateways, Set<Node> allNodes, StackBasedExitCriteriaModel exitCriteriaModel) throws CloudbreakOrchestratorFailedException {
try {
if (stack.getTelemetry() != null && stack.getTelemetry().isCloudStorageLoggingEnabled()) {
Set<String> targetHostNames = allNodes.stream().map(Node::getHostname).limit(1).collect(Collectors.toSet());
CloudStorageDiagnosticsParameters cloudStorageParameters = diagnosticCloudStorageConverter.loggingToCloudStorageDiagnosticsParameters(stack.getTelemetry().getLogging(), stack.getRegion());
DiagnosticParameters parameters = new DiagnosticParameters();
parameters.setRoot(DiagnosticParameters.TELEMETRY_ROOT);
parameters.setCloudStorageDiagnosticsParameters(cloudStorageParameters);
telemetryOrchestrator.validateCloudStorage(allGateways, allNodes, targetHostNames, parameters.toMap(), exitCriteriaModel);
}
} catch (CloudbreakOrchestratorException e) {
String errorMessage = getErrorMessage(stack, "logging");
LOGGER.error(errorMessage, e);
throw new CloudbreakOrchestratorFailedException(errorMessage, e);
}
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class FreeIpaInstallService method installFreeIpa.
public void installFreeIpa(Long stackId) throws CloudbreakOrchestratorException {
Stack stack = stackService.getByIdWithListsInTransaction(stackId);
Set<InstanceMetaData> instanceMetaDatas = stack.getNotDeletedInstanceMetaDataSet();
List<GatewayConfig> gatewayConfigs = gatewayConfigService.getGatewayConfigs(stack, instanceMetaDatas);
Set<Node> allNodes = freeIpaNodeUtilService.mapInstancesToNodes(instanceMetaDatas);
installFreeIpa(stackId, stack, gatewayConfigs, allNodes);
}
Aggregations