use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class SaltOrchestratorTest method testInstallFreeIpa.
@Test
public void testInstallFreeIpa() throws Exception {
GatewayConfig primaryGateway = mock(GatewayConfig.class);
Node primaryNode = mock(Node.class);
Callable<Boolean> callable = mock(Callable.class);
when(primaryNode.getHostname()).thenReturn("primary.example.com");
when(primaryGateway.getHostname()).thenReturn("primary.example.com");
PowerMockito.mockStatic(SaltStates.class);
PowerMockito.when(SaltStates.getGrains(any(), any(), any())).thenReturn(Map.of()).thenReturn(Map.of()).thenReturn(Map.of());
when(saltRunner.runner(any(OrchestratorBootstrap.class), any(ExitCriteria.class), any(ExitCriteriaModel.class))).thenReturn(callable);
ArgumentCaptor<SaltJobIdTracker> saltJobIdTrackerArgumentCaptor = ArgumentCaptor.forClass(SaltJobIdTracker.class);
saltOrchestrator.installFreeIpa(primaryGateway, List.of(primaryGateway), Set.of(primaryNode), exitCriteriaModel);
verify(saltRunner, times(1)).runner(saltJobIdTrackerArgumentCaptor.capture(), any(), any(), anyInt(), anyBoolean());
List<SaltJobIdTracker> jobIdTrackers = saltJobIdTrackerArgumentCaptor.getAllValues();
assertEquals(Set.of("primary.example.com"), jobIdTrackers.get(0).getSaltJobRunner().getTargetHostnames());
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class SaltOrchestratorTest method testInstallFreeIpaHa.
@Test
public void testInstallFreeIpaHa() throws Exception {
GatewayConfig primaryGateway = mock(GatewayConfig.class);
GatewayConfig replica1Config = mock(GatewayConfig.class);
GatewayConfig replica2Config = mock(GatewayConfig.class);
Node primaryNode = mock(Node.class);
Node replica1Node = mock(Node.class);
Node replica2Node = mock(Node.class);
Callable<Boolean> callable = mock(Callable.class);
when(primaryNode.getHostname()).thenReturn("primary.example.com");
when(replica1Node.getHostname()).thenReturn("replica1.example.com");
when(replica2Node.getHostname()).thenReturn("replica2.example.com");
when(primaryGateway.getHostname()).thenReturn("primary.example.com");
when(replica1Config.getHostname()).thenReturn("replica1.example.com");
when(replica2Config.getHostname()).thenReturn("replica2.example.com");
PowerMockito.mockStatic(SaltStates.class);
PowerMockito.when(SaltStates.getGrains(any(), any(), any())).thenReturn(Map.of()).thenReturn(Map.of()).thenReturn(Map.of());
when(saltRunner.runner(any(OrchestratorBootstrap.class), any(ExitCriteria.class), any(ExitCriteriaModel.class))).thenReturn(callable);
ArgumentCaptor<SaltJobIdTracker> saltJobIdTrackerArgumentCaptor = ArgumentCaptor.forClass(SaltJobIdTracker.class);
saltOrchestrator.installFreeIpa(primaryGateway, List.of(primaryGateway, replica1Config, replica2Config), Set.of(primaryNode, replica1Node, replica2Node), exitCriteriaModel);
verify(saltRunner, times(2)).runner(saltJobIdTrackerArgumentCaptor.capture(), any(), any(), anyInt(), anyBoolean());
List<SaltJobIdTracker> jobIdTrackers = saltJobIdTrackerArgumentCaptor.getAllValues();
assertEquals(Set.of("primary.example.com"), jobIdTrackers.get(0).getSaltJobRunner().getTargetHostnames());
assertEquals(Set.of("replica1.example.com", "replica2.example.com"), jobIdTrackers.get(1).getSaltJobRunner().getTargetHostnames());
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class SaltBootstrapTest method callFailTest.
@Test
public void callFailTest() throws IOException {
List<Map<String, JsonNode>> result = new ArrayList<>();
Map<String, JsonNode> ipAddressesForMinions = new HashMap<>();
ipAddressesForMinions.put("10-0-0-1.example.com", JsonUtil.readTree("[\"10.0.0.1\"]"));
ipAddressesForMinions.put("10-0-0-2.example.com", JsonUtil.readTree("[\"10.0.0.2\"]"));
result.add(ipAddressesForMinions);
minionIpAddressesResponse.setResult(result);
Set<Node> targets = new HashSet<>();
targets.add(new Node("10.0.0.1", null, null, "hg"));
targets.add(new Node("10.0.0.2", null, null, "hg"));
String missingNodeIp = "10.0.0.3";
targets.add(new Node(missingNodeIp, null, null, "hg"));
SaltBootstrap saltBootstrap = new SaltBootstrap(saltConnector, List.of(saltConnector), Collections.singletonList(gatewayConfig), targets, new BootstrapParams());
saltBootstrap = spy(saltBootstrap);
doReturn(mock(MinionAcceptor.class)).when(saltBootstrap).createMinionAcceptor();
try {
saltBootstrap.call();
fail("should throw exception");
} catch (Exception e) {
assertEquals(CloudbreakOrchestratorFailedException.class.getSimpleName(), e.getClass().getSimpleName());
assertThat(e.getMessage(), containsString("10.0.0.3"));
assertThat(e.getMessage(), not(containsString("10.0.0.2")));
assertThat(e.getMessage(), not(containsString("10.0.0.1")));
}
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class SaltBootstrapTest method callTest.
@Test
public void callTest() throws Exception {
List<Map<String, JsonNode>> result = new ArrayList<>();
Map<String, JsonNode> ipAddressesForMinions = new HashMap<>();
ipAddressesForMinions.put("10-0-0-1.example.com", JsonUtil.readTree("[\"10.0.0.1\"]"));
ipAddressesForMinions.put("10-0-0-2.example.com", JsonUtil.readTree("[\"10.0.0.2\"]"));
ipAddressesForMinions.put("10-0-0-3.example.com", JsonUtil.readTree("[\"10.0.0.3\"]"));
result.add(ipAddressesForMinions);
minionIpAddressesResponse.setResult(result);
Set<Node> targets = new HashSet<>();
targets.add(new Node("10.0.0.1", null, null, "hg"));
targets.add(new Node("10.0.0.2", null, null, "hg"));
targets.add(new Node("10.0.0.3", null, null, "hg"));
SaltBootstrap saltBootstrap = new SaltBootstrap(saltConnector, List.of(saltConnector), Collections.singletonList(gatewayConfig), targets, new BootstrapParams());
saltBootstrap = spy(saltBootstrap);
doReturn(mock(MinionAcceptor.class)).when(saltBootstrap).createMinionAcceptor();
saltBootstrap.call();
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class GrainAddRunnerTest method submitTest.
@Test
public void submitTest() throws SaltJobFailedException {
Set<String> targets = new HashSet<>();
targets.add("10-0-0-1.example.com");
targets.add("10-0-0-2.example.com");
targets.add("10-0-0-3.example.com");
Set<Node> allNode = new HashSet<>();
allNode.add(new Node("10.0.0.1", "5.5.5.1", "i-1234", "m5.xlarge", "10-0-0-1.example.com", "hg"));
allNode.add(new Node("10.0.0.2", "5.5.5.2", "i-1234", "m5.xlarge", "10-0-0-2.example.com", "hg"));
allNode.add(new Node("10.0.0.3", "5.5.5.3", "i-1234", "m5.xlarge", "10-0-0-3.example.com", "hg"));
PowerMockito.mockStatic(SaltStates.class);
ApplyResponse applyResponse = new ApplyResponse();
List<Map<String, JsonNode>> result = new ArrayList<>();
Map<String, JsonNode> nodes = new HashMap<>();
ObjectMapper objectMapper = new ObjectMapper();
String[] grains = { "ambari_server" };
nodes.put("10-0-0-1.example.com", objectMapper.valueToTree(grains));
nodes.put("10-0-0-2.example.com", objectMapper.valueToTree(grains));
nodes.put("10-0-0-3.example.com", objectMapper.valueToTree(grains));
result.add(nodes);
applyResponse.setResult(result);
PowerMockito.when(SaltStates.addGrain(any(), any(), anyString(), any())).thenReturn(applyResponse);
PowerMockito.when(SaltStates.getGrains(any(), any(), any())).thenReturn(nodes);
GrainAddRunner addRoleChecker = new GrainAddRunner(targets, allNode, "ambari_server");
SaltConnector saltConnector = Mockito.mock(SaltConnector.class);
String missingIps = addRoleChecker.submit(saltConnector);
assertThat(addRoleChecker.getTargetHostnames(), empty());
assertEquals(missingIps, "[]");
}
Aggregations