use of com.sequenceiq.freeipa.flow.freeipa.upscale.event.ValidateInstancesHealthEvent in project cloudbreak by hortonworks.
the class ValidateInstancesHealthHandler method fetchInstancesHealth.
private List<NodeHealthDetails> fetchInstancesHealth(ValidateInstancesHealthEvent event) {
Stack stack = stackService.getStackById(event.getResourceId());
MDCBuilder.buildMdcContext(stack);
Set<InstanceMetaData> instanceMetaDatas = instanceMetaDataService.getNotTerminatedByInstanceIds(stack.getId(), event.getInstanceIds());
List<NodeHealthDetails> healthDetails = instanceMetaDatas.stream().map(im -> getInstanceHealthDetails(stack, im)).collect(Collectors.toList());
LOGGER.info("Fetched healthdetails for instances {} - {}", event.getInstanceIds(), healthDetails);
return healthDetails;
}
use of com.sequenceiq.freeipa.flow.freeipa.upscale.event.ValidateInstancesHealthEvent in project cloudbreak by hortonworks.
the class ValidateInstancesHealthHandlerTest method testExceptionDuringHealthCheck.
@Test
public void testExceptionDuringHealthCheck() throws FreeIpaClientException {
Stack stack = new Stack();
stack.setId(1L);
when(stackService.getStackById(1L)).thenReturn(stack);
List<String> instanceIds = List.of("im1", "im2");
InstanceMetaData im1 = new InstanceMetaData();
im1.setInstanceId("im1");
im1.setDiscoveryFQDN("im1Fqdn");
InstanceMetaData im2 = new InstanceMetaData();
im2.setInstanceId("im2");
im2.setDiscoveryFQDN("im2Fqdn");
when(instanceMetaDataService.getNotTerminatedByInstanceIds(1L, instanceIds)).thenReturn(Set.of(im1, im2));
when(healthService.getInstanceHealthDetails(stack, im1)).thenReturn(createHealthyNodeDetail(im1));
when(healthService.getInstanceHealthDetails(stack, im2)).thenThrow(new FreeIpaClientException("nono"));
ValidateInstancesHealthEvent validateInstancesHealthEvent = new ValidateInstancesHealthEvent(1L, instanceIds);
UpscaleFailureEvent result = (UpscaleFailureEvent) underTest.doAccept(new HandlerEvent<>(new Event<>(validateInstancesHealthEvent)));
assertEquals(1L, result.getResourceId());
assertEquals(PHASE, result.getFailedPhase());
assertTrue(result.getSuccess().contains("im1"));
assertEquals(1, result.getFailureDetails().size());
assertEquals("nono", result.getFailureDetails().get("im2"));
assertEquals("Unhealthy instances found: [im2]", result.getException().getMessage());
}
use of com.sequenceiq.freeipa.flow.freeipa.upscale.event.ValidateInstancesHealthEvent in project cloudbreak by hortonworks.
the class ValidateInstancesHealthHandlerTest method testUnHealthy.
@Test
public void testUnHealthy() throws FreeIpaClientException {
Stack stack = new Stack();
stack.setId(1L);
when(stackService.getStackById(1L)).thenReturn(stack);
List<String> instanceIds = List.of("im1", "im2");
InstanceMetaData im1 = new InstanceMetaData();
im1.setInstanceId("im1");
im1.setDiscoveryFQDN("im1Fqdn");
InstanceMetaData im2 = new InstanceMetaData();
im2.setInstanceId("im2");
im2.setDiscoveryFQDN("im2Fqdn");
when(instanceMetaDataService.getNotTerminatedByInstanceIds(1L, instanceIds)).thenReturn(Set.of(im1, im2));
when(healthService.getInstanceHealthDetails(stack, im1)).thenReturn(createHealthyNodeDetail(im1));
NodeHealthDetails unhealthy = createHealthyNodeDetail(im2);
unhealthy.setStatus(InstanceStatus.UNHEALTHY);
unhealthy.setIssues(List.of("bad"));
when(healthService.getInstanceHealthDetails(stack, im2)).thenReturn(unhealthy);
ValidateInstancesHealthEvent validateInstancesHealthEvent = new ValidateInstancesHealthEvent(1L, instanceIds);
UpscaleFailureEvent result = (UpscaleFailureEvent) underTest.doAccept(new HandlerEvent<>(new Event<>(validateInstancesHealthEvent)));
assertEquals(1L, result.getResourceId());
assertEquals(PHASE, result.getFailedPhase());
assertTrue(result.getSuccess().contains("im1"));
assertEquals(1, result.getFailureDetails().size());
assertEquals("bad", result.getFailureDetails().get("im2"));
assertEquals("Unhealthy instances found: [im2]", result.getException().getMessage());
}
use of com.sequenceiq.freeipa.flow.freeipa.upscale.event.ValidateInstancesHealthEvent in project cloudbreak by hortonworks.
the class ValidateInstancesHealthHandlerTest method testDefaultFailureEvent.
@Test
public void testDefaultFailureEvent() {
Exception e = new Exception("puff");
Event<ValidateInstancesHealthEvent> event = new Event<>(new ValidateInstancesHealthEvent(3L, List.of()));
UpscaleFailureEvent result = (UpscaleFailureEvent) underTest.defaultFailureEvent(2L, e, event);
assertEquals(e, result.getException());
assertEquals(2L, result.getResourceId());
assertEquals(PHASE, result.getFailedPhase());
}
use of com.sequenceiq.freeipa.flow.freeipa.upscale.event.ValidateInstancesHealthEvent in project cloudbreak by hortonworks.
the class ValidateInstancesHealthHandlerTest method testHealthy.
@Test
public void testHealthy() throws FreeIpaClientException {
Stack stack = new Stack();
stack.setId(1L);
when(stackService.getStackById(1L)).thenReturn(stack);
List<String> instanceIds = List.of("im1", "im2");
InstanceMetaData im1 = new InstanceMetaData();
im1.setInstanceId("im1");
im1.setDiscoveryFQDN("im1Fqdn");
InstanceMetaData im2 = new InstanceMetaData();
im2.setInstanceId("im2");
im2.setDiscoveryFQDN("im2Fqdn");
when(instanceMetaDataService.getNotTerminatedByInstanceIds(1L, instanceIds)).thenReturn(Set.of(im1, im2));
when(healthService.getInstanceHealthDetails(stack, im1)).thenReturn(createHealthyNodeDetail(im1));
when(healthService.getInstanceHealthDetails(stack, im2)).thenReturn(createHealthyNodeDetail(im2));
StackEvent result = (StackEvent) underTest.doAccept(new HandlerEvent<>(new Event<>(new ValidateInstancesHealthEvent(1L, instanceIds))));
assertEquals(UPSCALE_VALIDATE_NEW_INSTANCES_HEALTH_FINISHED_EVENT.event(), result.selector());
assertEquals(1L, result.getResourceId());
}
Aggregations