use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class StackUtilTest method collectAndCheckReachableNodes.
@Test
void collectAndCheckReachableNodes() throws NodesUnreachableException {
Stack stack = createStack();
ArrayList<String> necessaryNodes = new ArrayList<>();
necessaryNodes.add("node1.example.com");
necessaryNodes.add("node3.example.com");
Set<Node> nodes = new HashSet<>();
nodes.add(new Node("1.1.1.1", "1.1.1.1", "1", "m5.xlarge", "node1.example.com", "worker"));
nodes.add(new Node("1.1.1.3", "1.1.1.3", "3", "m5.xlarge", "node3.example.com", "worker"));
when(hostOrchestrator.getResponsiveNodes(nodesCaptor.capture(), any())).thenReturn(new NodeReachabilityResult(nodes, Set.of()));
stackUtil.collectAndCheckReachableNodes(stack, necessaryNodes);
verify(hostOrchestrator).getResponsiveNodes(nodesCaptor.capture(), any());
List<String> fqdns = nodesCaptor.getValue().stream().map(Node::getHostname).collect(Collectors.toList());
assertTrue(fqdns.contains("node1.example.com"));
assertFalse("Terminated node should be filtered out", fqdns.contains("node2.example.com"));
assertTrue(fqdns.contains("node3.example.com"));
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class OrchestratorRecipeExecutor method collectNodes.
private Set<Node> collectNodes(Stack stack, Set<String> hostNames) {
Set<Node> agents = new HashSet<>();
for (InstanceGroup instanceGroup : stack.getInstanceGroups()) {
for (InstanceMetaData im : instanceGroup.getNotDeletedAndNotZombieInstanceMetaDataSet()) {
if (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 ClusterService method updateInstancesToZombie.
public void updateInstancesToZombie(Long stackId, Set<Node> unreachableNodes) {
Set<String> unreachableInstanceIds = unreachableNodes.stream().map(Node::getInstanceId).collect(Collectors.toSet());
LOGGER.debug("Update instance statuses to ZOMBIE, instanceIds: {}", unreachableInstanceIds);
try {
transactionService.required(() -> {
Set<InstanceMetaData> notDeletedInstanceMetadatas = instanceMetaDataService.getNotDeletedAndNotZombieInstanceMetadataByStackId(stackId);
notDeletedInstanceMetadatas.stream().filter(instanceMetadata -> unreachableInstanceIds.contains(instanceMetadata.getInstanceId())).forEach(instanceMetadata -> {
instanceMetadata.setInstanceStatus(ZOMBIE);
instanceMetaDataService.save(instanceMetadata);
});
});
} catch (TransactionExecutionException e) {
throw new TransactionRuntimeExecutionException(e);
}
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class SaltCheckerConclusionStepTest method checkShouldFallbackForOldImageVersionsAndBeSuccessfulIfNoUnreachableNodeFound.
@Test
public void checkShouldFallbackForOldImageVersionsAndBeSuccessfulIfNoUnreachableNodeFound() throws NodesUnreachableException {
RPCResponse<SaltHealthReport> response = new RPCResponse<>();
RPCMessage message = new RPCMessage();
message.setMessage("rpc response");
response.setMessages(List.of(message));
when(nodeStatusService.saltPing(eq(1L))).thenReturn(response);
when(stackService.getByIdWithListsInTransaction(eq(1L))).thenReturn(new Stack());
Set<Node> nodes = Set.of(createNode("host1"), createNode("host2"));
when(stackUtil.collectNodes(any())).thenReturn(nodes);
when(stackUtil.collectAndCheckReachableNodes(any(), anyCollection())).thenReturn(nodes);
Conclusion stepResult = underTest.check(1L);
assertFalse(stepResult.isFailureFound());
assertNull(stepResult.getConclusion());
assertNull(stepResult.getDetails());
assertEquals(SaltCheckerConclusionStep.class, stepResult.getConclusionStepClass());
verify(nodeStatusService, times(1)).saltPing(eq(1L));
verify(stackService, times(1)).getByIdWithListsInTransaction(eq(1L));
verify(stackUtil, times(1)).collectNodes(any());
verify(stackUtil, times(1)).collectAndCheckReachableNodes(any(), any());
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class RdsRecoverySetupServiceTest method testRunRecoverState.
@Test
public void testRunRecoverState() throws CloudbreakOrchestratorFailedException {
ReflectionTestUtils.setField(postgresConfigService, "databasesReusedDuringRecovery", List.of("HIVE"));
Stack stack = TestUtil.stack(TestUtil.cluster());
Long stackId = stack.getId();
Node node1 = new Node("", "", "", "", "node1fqdn", "");
Node node2 = new Node("", "", "", "", "node2fqdn", "");
when(gatewayConfigService.getGatewayConfig(any(Stack.class), any(InstanceMetaData.class), anyBoolean())).thenReturn(gatewayConfig);
when(stackService.getByIdWithListsInTransaction(stackId)).thenReturn(stack);
when(stackUtil.collectReachableNodes(stack)).thenReturn(Set.of(node1, node2));
ArgumentCaptor<OrchestratorGrainRunnerParams> grainRunnerParamsArgumentCaptor = ArgumentCaptor.forClass(OrchestratorGrainRunnerParams.class);
underTest.addRecoverRole(stackId);
verify(hostOrchestrator).runOrchestratorGrainRunner(grainRunnerParamsArgumentCaptor.capture());
OrchestratorGrainRunnerParams grainRunnerParams = grainRunnerParamsArgumentCaptor.getValue();
assertEquals(Set.of("test-is1-1-1"), grainRunnerParams.getTargetHostNames());
assertEquals(Set.of(node1, node2), grainRunnerParams.getAllNodes());
assertEquals(gatewayConfig, grainRunnerParams.getPrimaryGatewayConfig());
assertEquals("roles", grainRunnerParams.getKey());
assertEquals("recover", grainRunnerParams.getValue());
}
Aggregations