use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class HighStateRunnerTest method submit.
@Test
public void submit() {
String target1 = "10.0.0.1";
String target2 = "10.0.0.2";
targets = new HashSet<>();
targets.add(target1);
targets.add(target2);
allNode = new HashSet<>();
allNode.add(new Node("10.0.0.1", "5.5.5.1", "10-0-0-1.example.com", "hg"));
allNode.add(new Node("10.0.0.2", "5.5.5.2", "10-0-0-2.example.com", "hg"));
allNode.add(new Node("10.0.0.3", "5.5.5.3", "10-0-0-3.example.com", "hg"));
HighStateRunner highStateRunner = new HighStateRunner(targets, allNode);
SaltConnector saltConnector = Mockito.mock(SaltConnector.class);
PowerMockito.mockStatic(SaltStates.class);
String jobId = "1";
PowerMockito.when(SaltStates.highstate(any(), any())).thenReturn(jobId);
String jid = highStateRunner.submit(saltConnector);
assertEquals(jobId, jid);
PowerMockito.verifyStatic(SaltStates.class);
ArgumentCaptor<Target<String>> targetCaptor = ArgumentCaptor.forClass(Target.class);
SaltStates.highstate(eq(saltConnector), targetCaptor.capture());
String order1 = target1 + "," + target2;
String order2 = target2 + "," + target1;
String actual = targetCaptor.getValue().getTarget();
assertTrue(order1.equals(actual) || order2.equals(actual));
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class StateRunnerTest method submit.
@Test
public void submit() throws Exception {
targets = new HashSet<>();
targets.add("10-0-0-1.example.com");
allNode = new HashSet<>();
allNode.add(new Node("10.0.0.1", "5.5.5.1", "10-0-0-1.example.com", "hg"));
allNode.add(new Node("10.0.0.2", "5.5.5.2", "10-0-0-2.example.com", "hg"));
allNode.add(new Node("10.0.0.3", "5.5.5.3", "10-0-0-3.example.com", "hg"));
StateRunner stateRunner = new StateRunner(targets, allNode, "example_state");
SaltConnector saltConnector = Mockito.mock(SaltConnector.class);
PowerMockito.mockStatic(SaltStates.class);
String jobId = "1";
ApplyResponse applyResponse = new ApplyResponse();
List<Map<String, JsonNode>> result = new ArrayList<>();
Map<String, JsonNode> nodes = new HashMap<>();
ObjectMapper objectMapper = new ObjectMapper();
nodes.put("jid", objectMapper.valueToTree(jobId));
result.add(nodes);
applyResponse.setResult(result);
PowerMockito.when(SaltStates.applyState(any(), any(), any())).thenReturn(applyResponse);
String jid = stateRunner.submit(saltConnector);
assertEquals(jobId, jid);
PowerMockito.verifyStatic(SaltStates.class);
ArgumentCaptor acHostList = ArgumentCaptor.forClass(HostList.class);
SaltStates.applyState(eq(saltConnector), eq("example_state"), (Target<String>) acHostList.capture());
assertThat(acHostList.getValue(), IsInstanceOf.instanceOf(HostList.class));
HostList hostList = (HostList) acHostList.getValue();
assertEquals("10-0-0-1.example.com", hostList.getTarget());
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class PillarSaveTest method testDiscovery.
@Test
public void testDiscovery() throws Exception {
SaltConnector saltConnector = mock(SaltConnector.class);
GenericResponses responses = new GenericResponses();
GenericResponse response = new GenericResponse();
response.setStatusCode(HttpStatus.OK.value());
response.setAddress("10.0.0.2");
responses.setResponses(Collections.singletonList(response));
when(saltConnector.pillar(any(), any(Pillar.class))).thenReturn(responses);
Set<Node> nodes = new HashSet<>();
nodes.add(new Node("10.0.0.1", "1.1.1.1", "i-1234", "m5.xlarge", "10-0-0-1.example.com", "hg"));
nodes.add(new Node("10.0.0.2", "1.1.1.2", "i-1234", "m5.xlarge", "10-0-0-2.example.com", "hg"));
nodes.add(new Node("10.0.0.3", "1.1.1.3", "i-1234", "m5.xlarge", "10-0-0-3.example.com", "hg"));
PillarSave pillarSave = PillarSave.createHostsPillar(saltConnector, Sets.newHashSet("10.0.0.1"), nodes);
pillarSave.call();
ArgumentCaptor<Pillar> pillarCaptor = ArgumentCaptor.forClass(Pillar.class);
ArgumentCaptor<Set<String>> targetCaptor = ArgumentCaptor.forClass(Set.class);
verify(saltConnector).pillar(targetCaptor.capture(), pillarCaptor.capture());
Pillar pillar = pillarCaptor.getValue();
Map<String, Map<String, Map<String, Object>>> pillarJson = (Map<String, Map<String, Map<String, Object>>>) pillar.getJson();
Map<String, Map<String, Object>> hostMap = pillarJson.entrySet().iterator().next().getValue();
for (Node node : nodes) {
Assert.assertEquals(node.getHostname(), hostMap.get(node.getPrivateIp()).get("fqdn"));
Assert.assertEquals(node.getHostname().split("\\.")[0], hostMap.get(node.getPrivateIp()).get("hostname"));
Assert.assertEquals(Boolean.TRUE, hostMap.get(node.getPrivateIp()).get("public_address"));
}
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class CloudStorageValidationService method validateCloudStorage.
public void validateCloudStorage(Long stackId) throws CloudbreakOrchestratorException {
Stack stack = stackService.getByIdWithClusterInTransaction(stackId);
String accountId = Crn.safeFromString(stack.getResourceCrn()).getAccountId();
if (!entitlementService.cloudStorageValidationOnVmEnabled(accountId)) {
LOGGER.info("Cloud storage validation on VM entitlement is missing, not validating cloud storage on VM.");
return;
}
DetailedEnvironmentResponse environment = environmentClientService.getByCrn(stack.getEnvironmentCrn());
if (environment.isCloudStorageLoggingEnabled()) {
ExitCriteriaModel exitCriteriaModel = new ClusterDeletionBasedExitCriteriaModel(stack.getId(), stack.getCluster().getId());
List<GatewayConfig> allGateways = gatewayConfigService.getAllGatewayConfigs(stack);
Set<Node> allNodes = stackUtil.collectNodes(stack);
runIdBrokerValidation(stack, allGateways, allNodes, environment, exitCriteriaModel);
runRandomHostValidation(stack, allGateways, allNodes, environment, exitCriteriaModel);
}
}
use of com.sequenceiq.cloudbreak.common.orchestration.Node in project cloudbreak by hortonworks.
the class StackUtil method collectNewNodesWithDiskData.
public Set<Node> collectNewNodesWithDiskData(Stack stack, Set<String> newNodeAddresses) {
Set<Node> agents = new HashSet<>();
List<Resource> volumeSets = stack.getDiskResources();
Map<String, Map<String, Object>> instanceToVolumeInfoMap = createInstanceToVolumeInfoMap(volumeSets);
for (InstanceGroup instanceGroup : stack.getInstanceGroups()) {
if (instanceGroup.getNodeCount() != 0) {
for (InstanceMetaData im : instanceGroup.getNotDeletedAndNotZombieInstanceMetaDataSet()) {
if (im.getDiscoveryFQDN() != null && (newNodeAddresses.isEmpty() || newNodeAddresses.contains(im.getPrivateIp()))) {
String instanceId = im.getInstanceId();
String instanceType = instanceGroup.getTemplate().getInstanceType();
String dataVolumes = getOrDefault(instanceToVolumeInfoMap, instanceId, "dataVolumes", "");
String serialIds = getOrDefault(instanceToVolumeInfoMap, instanceId, "serialIds", "");
String fstab = getOrDefault(instanceToVolumeInfoMap, instanceId, "fstab", "");
String uuids = getOrDefault(instanceToVolumeInfoMap, instanceId, "uuids", "");
Integer databaseVolumeIndex = getOrDefault(instanceToVolumeInfoMap, instanceId, "dataBaseVolumeIndex", -1);
TemporaryStorage temporaryStorage = Optional.ofNullable(instanceGroup.getTemplate().getTemporaryStorage()).orElse(TemporaryStorage.ATTACHED_VOLUMES);
NodeVolumes nodeVolumes = new NodeVolumes(databaseVolumeIndex, dataVolumes, serialIds, fstab, uuids);
agents.add(new Node(im.getPrivateIp(), im.getPublicIp(), instanceId, instanceType, im.getDiscoveryFQDN(), im.getInstanceGroupName(), nodeVolumes, temporaryStorage));
}
}
}
}
return agents;
}
Aggregations