use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.scale.DownscaleRequest in project cloudbreak by hortonworks.
the class FreeIpaScalingServiceTest method testDownscaleIfValidationPassesAndOperationRunningThenSucceed.
@Test
public void testDownscaleIfValidationPassesAndOperationRunningThenSucceed() {
Stack stack = mock(Stack.class);
Set<InstanceMetaData> allInstances = createValidImSet();
Operation operation = createOperation(true);
when(stack.getAccountId()).thenReturn(ACCOUNT_ID);
when(stackService.getByEnvironmentCrnAndAccountIdWithListsAndMdcContext(ENV_CRN, ACCOUNT_ID)).thenReturn(stack);
when(operationService.startOperation(ACCOUNT_ID, OperationType.DOWNSCALE, List.of(ENV_CRN), List.of())).thenReturn(operation);
when(stack.getNotDeletedInstanceMetaDataSet()).thenReturn(allInstances);
FlowIdentifier flowIdentifier = new FlowIdentifier(FlowType.FLOW, POLLABLE_ID);
when(flowManager.notify(anyString(), any())).thenReturn(flowIdentifier);
DownscaleRequest request = createDownscaleRequest();
DownscaleResponse response = underTest.downscale(ACCOUNT_ID, request);
assertEquals(response.getOperationId(), OPERATION_ID);
assertEquals(response.getOriginalAvailabilityType(), AvailabilityType.TWO_NODE_BASED);
assertEquals(response.getTargetAvailabilityType(), AvailabilityType.NON_HA);
assertEquals(response.getFlowIdentifier(), flowIdentifier);
}
use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.scale.DownscaleRequest in project cloudbreak by hortonworks.
the class FreeIpaScalingService method triggerDownscale.
private DownscaleResponse triggerDownscale(DownscaleRequest request, Stack stack, AvailabilityType originalAvailabilityType) {
Operation operation = startScalingOperation(stack.getAccountId(), request.getEnvironmentCrn(), OperationType.DOWNSCALE);
ArrayList<String> instanceIdList = getDownscaleCandidates(stack, originalAvailabilityType, request.getTargetAvailabilityType());
DownscaleEvent downscaleEvent = new DownscaleEvent(DownscaleFlowEvent.DOWNSCALE_EVENT.event(), stack.getId(), instanceIdList, request.getTargetAvailabilityType().getInstanceCount(), false, false, false, operation.getOperationId());
try {
LOGGER.info("Trigger downscale flow with event: {}", downscaleEvent);
FlowIdentifier flowIdentifier = flowManager.notify(DownscaleFlowEvent.DOWNSCALE_EVENT.event(), downscaleEvent);
DownscaleResponse response = new DownscaleResponse();
response.setOperationId(operation.getOperationId());
response.setOriginalAvailabilityType(originalAvailabilityType);
response.setTargetAvailabilityType(request.getTargetAvailabilityType());
response.setFlowIdentifier(flowIdentifier);
return response;
} catch (Exception e) {
String exception = handleFlowException(operation, e, stack);
throw new BadRequestException(exception);
}
}
use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.scale.DownscaleRequest in project cloudbreak by hortonworks.
the class FreeIpaScalingServiceTest method createDownscaleRequest.
private DownscaleRequest createDownscaleRequest() {
DownscaleRequest request = new DownscaleRequest();
request.setEnvironmentCrn(ENV_CRN);
request.setTargetAvailabilityType(AvailabilityType.NON_HA);
return request;
}
use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.scale.DownscaleRequest in project cloudbreak by hortonworks.
the class FreeIpaScalingServiceTest method testDownscaleIfValidationPassesAndOperationFailedThenThrowException.
@Test
public void testDownscaleIfValidationPassesAndOperationFailedThenThrowException() {
Stack stack = mock(Stack.class);
Set<InstanceMetaData> allInstances = createValidImSet();
Operation operation = createOperation(false);
when(stack.getAccountId()).thenReturn(ACCOUNT_ID);
when(stackService.getByEnvironmentCrnAndAccountIdWithListsAndMdcContext(ENV_CRN, ACCOUNT_ID)).thenReturn(stack);
when(operationService.startOperation(ACCOUNT_ID, OperationType.DOWNSCALE, List.of(ENV_CRN), List.of())).thenReturn(operation);
when(stack.getNotDeletedInstanceMetaDataSet()).thenReturn(allInstances);
DownscaleRequest request = createDownscaleRequest();
BadRequestException exception = Assertions.assertThrows(BadRequestException.class, () -> underTest.downscale(ACCOUNT_ID, request));
assertEquals(exception.getMessage(), "downscale operation couldn't be started with: operationError");
}
use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.scale.DownscaleRequest in project cloudbreak by hortonworks.
the class FreeIpaScalingServiceTest method testDownscaleIfValidationFailsThenErrorThrown.
@Test
public void testDownscaleIfValidationFailsThenErrorThrown() {
Stack stack = mock(Stack.class);
Set<InstanceMetaData> allInstances = createValidImSet();
when(stackService.getByEnvironmentCrnAndAccountIdWithListsAndMdcContext(ENV_CRN, ACCOUNT_ID)).thenReturn(stack);
when(stack.getNotDeletedInstanceMetaDataSet()).thenReturn(allInstances);
DownscaleRequest request = createDownscaleRequest();
doThrow(new BadRequestException("validation failed")).when(validationService).validateStackForDownscale(allInstances, stack, new ScalingPath(AvailabilityType.TWO_NODE_BASED, AvailabilityType.NON_HA));
BadRequestException exception = Assertions.assertThrows(BadRequestException.class, () -> underTest.downscale(ACCOUNT_ID, request));
assertEquals(exception.getMessage(), "validation failed");
}
Aggregations