Search in sources :

Example 26 with Node

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());
}
Also used : Assertions.assertThrows(org.junit.jupiter.api.Assertions.assertThrows) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) Stack(com.sequenceiq.cloudbreak.domain.stack.Stack) Cluster(com.sequenceiq.cloudbreak.domain.stack.cluster.Cluster) ArgumentMatchers.anySet(org.mockito.ArgumentMatchers.anySet) ArgumentMatchers.anyLong(org.mockito.ArgumentMatchers.anyLong) EntitlementService(com.sequenceiq.cloudbreak.auth.altus.EntitlementService) Mock(org.mockito.Mock) ArgumentMatchers.anyMap(org.mockito.ArgumentMatchers.anyMap) TelemetryOrchestrator(com.sequenceiq.cloudbreak.orchestrator.host.TelemetryOrchestrator) Mockito.verifyNoInteractions(org.mockito.Mockito.verifyNoInteractions) Mockito.doThrow(org.mockito.Mockito.doThrow) FeaturesResponse(com.sequenceiq.common.api.telemetry.response.FeaturesResponse) ArgumentCaptor(org.mockito.ArgumentCaptor) CloudbreakEventService(com.sequenceiq.cloudbreak.structuredevent.event.CloudbreakEventService) ExtendWith(org.junit.jupiter.api.extension.ExtendWith) AwsDiagnosticParameters(com.sequenceiq.common.model.diagnostics.AwsDiagnosticParameters) DetailedEnvironmentResponse(com.sequenceiq.environment.api.v1.environment.model.response.DetailedEnvironmentResponse) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) TelemetryResponse(com.sequenceiq.common.api.telemetry.response.TelemetryResponse) InjectMocks(org.mockito.InjectMocks) LoggingResponse(com.sequenceiq.common.api.telemetry.response.LoggingResponse) MockitoExtension(org.mockito.junit.jupiter.MockitoExtension) Collection(java.util.Collection) Node(com.sequenceiq.cloudbreak.common.orchestration.Node) Set(java.util.Set) S3CloudStorageV1Parameters(com.sequenceiq.common.api.cloudstorage.old.S3CloudStorageV1Parameters) Mockito.times(org.mockito.Mockito.times) EnvironmentClientService(com.sequenceiq.cloudbreak.service.environment.EnvironmentClientService) FeatureSetting(com.sequenceiq.common.api.type.FeatureSetting) Mockito.when(org.mockito.Mockito.when) ArgumentMatchers.anyList(org.mockito.ArgumentMatchers.anyList) CloudbreakOrchestratorException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorException) Collectors(java.util.stream.Collectors) Mockito.verify(org.mockito.Mockito.verify) Test(org.junit.jupiter.api.Test) GatewayConfigService(com.sequenceiq.cloudbreak.service.GatewayConfigService) DiagnosticCloudStorageConverter(com.sequenceiq.cloudbreak.telemetry.converter.DiagnosticCloudStorageConverter) List(java.util.List) StackUtil(com.sequenceiq.cloudbreak.util.StackUtil) CloudbreakOrchestratorFailedException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorFailedException) GatewayConfig(com.sequenceiq.cloudbreak.orchestrator.model.GatewayConfig) StackService(com.sequenceiq.cloudbreak.service.stack.StackService) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ArgumentMatchers.anySet(org.mockito.ArgumentMatchers.anySet) Set(java.util.Set) Node(com.sequenceiq.cloudbreak.common.orchestration.Node) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) Stack(com.sequenceiq.cloudbreak.domain.stack.Stack) AwsDiagnosticParameters(com.sequenceiq.common.model.diagnostics.AwsDiagnosticParameters) CloudbreakOrchestratorFailedException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorFailedException) DetailedEnvironmentResponse(com.sequenceiq.environment.api.v1.environment.model.response.DetailedEnvironmentResponse) Collection(java.util.Collection) GatewayConfig(com.sequenceiq.cloudbreak.orchestrator.model.GatewayConfig) Test(org.junit.jupiter.api.Test)

Example 27 with Node

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;
}
Also used : InstanceMetaData(com.sequenceiq.cloudbreak.domain.stack.instance.InstanceMetaData) Node(com.sequenceiq.cloudbreak.common.orchestration.Node) HashSet(java.util.HashSet) InstanceGroup(com.sequenceiq.cloudbreak.domain.stack.instance.InstanceGroup)

Example 28 with Node

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);
    }
}
Also used : Node(com.sequenceiq.cloudbreak.common.orchestration.Node) OrchestratorStateParams(com.sequenceiq.cloudbreak.orchestrator.host.OrchestratorStateParams)

Example 29 with Node

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);
    }
}
Also used : CloudStorageDiagnosticsParameters(com.sequenceiq.common.model.diagnostics.CloudStorageDiagnosticsParameters) CloudbreakOrchestratorException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorException) CloudbreakOrchestratorFailedException(com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorFailedException) Node(com.sequenceiq.cloudbreak.common.orchestration.Node) DiagnosticParameters(com.sequenceiq.common.model.diagnostics.DiagnosticParameters)

Example 30 with Node

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);
}
Also used : InstanceMetaData(com.sequenceiq.freeipa.entity.InstanceMetaData) Node(com.sequenceiq.cloudbreak.common.orchestration.Node) Stack(com.sequenceiq.freeipa.entity.Stack) GatewayConfig(com.sequenceiq.cloudbreak.orchestrator.model.GatewayConfig)

Aggregations

Node (com.sequenceiq.cloudbreak.common.orchestration.Node)126 GatewayConfig (com.sequenceiq.cloudbreak.orchestrator.model.GatewayConfig)57 HashSet (java.util.HashSet)42 Map (java.util.Map)32 JsonNode (com.fasterxml.jackson.databind.JsonNode)30 CloudbreakOrchestratorFailedException (com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorFailedException)29 Test (org.junit.Test)29 HashMap (java.util.HashMap)28 Stack (com.sequenceiq.cloudbreak.domain.stack.Stack)27 CloudbreakOrchestratorException (com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorException)26 ArrayList (java.util.ArrayList)26 InstanceMetaData (com.sequenceiq.cloudbreak.domain.stack.instance.InstanceMetaData)25 ExitCriteriaModel (com.sequenceiq.cloudbreak.orchestrator.state.ExitCriteriaModel)25 Set (java.util.Set)25 Test (org.junit.jupiter.api.Test)25 List (java.util.List)22 CloudbreakServiceException (com.sequenceiq.cloudbreak.common.exception.CloudbreakServiceException)21 IOException (java.io.IOException)21 Collectors (java.util.stream.Collectors)21 BootstrapParams (com.sequenceiq.cloudbreak.orchestrator.model.BootstrapParams)19