use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.scale.UpscaleRequest in project cloudbreak by hortonworks.
the class FreeIpaUpscaleAction method action.
@Override
public FreeIpaUpscaleTestDto action(TestContext testContext, FreeIpaUpscaleTestDto testDto, FreeIpaClient client) throws Exception {
Log.whenJson(LOGGER, format(" FreeIPA upscale request:%n"), testDto.getRequest());
UpscaleRequest upscaleRequest = new UpscaleRequest();
upscaleRequest.setEnvironmentCrn(testDto.getRequest().getEnvironmentCrn());
upscaleRequest.setTargetAvailabilityType(testDto.getRequest().getTargetAvailabilityType());
testDto.setResponse(client.getDefaultClient().getFreeIpaV1Endpoint().upscale(upscaleRequest));
testDto.setFlow("FreeIPA upscale", testDto.getResponse().getFlowIdentifier());
testDto.setOperationId(testDto.getResponse().getOperationId());
Log.whenJson(LOGGER, format(" FreeIPA upscale started: %n"), testDto.getResponse());
return testDto;
}
use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.scale.UpscaleRequest in project cloudbreak by hortonworks.
the class FreeIpaScalingServiceTest method testUpscaleIfValidationPassesAndOperationRunningThenSucceed.
@Test
public void testUpscaleIfValidationPassesAndOperationRunningThenSucceed() {
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.UPSCALE, 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);
UpscaleRequest request = createUpscaleRequest();
UpscaleResponse response = underTest.upscale(ACCOUNT_ID, request);
assertEquals(response.getOperationId(), OPERATION_ID);
assertEquals(response.getOriginalAvailabilityType(), AvailabilityType.TWO_NODE_BASED);
assertEquals(response.getTargetAvailabilityType(), AvailabilityType.HA);
assertEquals(response.getFlowIdentifier(), flowIdentifier);
}
use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.scale.UpscaleRequest in project cloudbreak by hortonworks.
the class FreeIpaScalingServiceTest method testUpscaleIfValidationFailsThenErrorThrown.
@Test
public void testUpscaleIfValidationFailsThenErrorThrown() {
Stack stack = mock(Stack.class);
Set<InstanceMetaData> allInstances = createValidImSet();
when(stackService.getByEnvironmentCrnAndAccountIdWithListsAndMdcContext(ENV_CRN, ACCOUNT_ID)).thenReturn(stack);
when(stack.getNotDeletedInstanceMetaDataSet()).thenReturn(allInstances);
UpscaleRequest request = createUpscaleRequest();
doThrow(new BadRequestException("validation failed")).when(validationService).validateStackForUpscale(allInstances, stack, new ScalingPath(AvailabilityType.TWO_NODE_BASED, AvailabilityType.HA));
BadRequestException exception = Assertions.assertThrows(BadRequestException.class, () -> underTest.upscale(ACCOUNT_ID, request));
assertEquals(exception.getMessage(), "validation failed");
}
use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.scale.UpscaleRequest in project cloudbreak by hortonworks.
the class FreeIpaScalingService method upscale.
public UpscaleResponse upscale(String accountId, UpscaleRequest request) {
Stack stack = stackService.getByEnvironmentCrnAndAccountIdWithListsAndMdcContext(request.getEnvironmentCrn(), accountId);
Set<InstanceMetaData> allInstances = stack.getNotDeletedInstanceMetaDataSet();
AvailabilityType originalAvailabilityType = AvailabilityType.getByInstanceCount(allInstances.size());
logRequest(OperationType.UPSCALE, request, originalAvailabilityType);
validationService.validateStackForUpscale(allInstances, stack, new ScalingPath(originalAvailabilityType, request.getTargetAvailabilityType()));
return triggerUpscale(request, stack, originalAvailabilityType);
}
use of com.sequenceiq.freeipa.api.v1.freeipa.stack.model.scale.UpscaleRequest in project cloudbreak by hortonworks.
the class FreeIpaScalingService method triggerUpscale.
private UpscaleResponse triggerUpscale(UpscaleRequest request, Stack stack, AvailabilityType originalAvailabilityType) {
Operation operation = startScalingOperation(stack.getAccountId(), request.getEnvironmentCrn(), OperationType.UPSCALE);
UpscaleEvent upscaleEvent = new UpscaleEvent(UpscaleFlowEvent.UPSCALE_EVENT.event(), stack.getId(), request.getTargetAvailabilityType().getInstanceCount(), false, false, false, operation.getOperationId());
try {
LOGGER.info("Trigger upscale flow with event: {}", upscaleEvent);
FlowIdentifier flowIdentifier = flowManager.notify(UpscaleFlowEvent.UPSCALE_EVENT.event(), upscaleEvent);
UpscaleResponse response = new UpscaleResponse();
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);
}
}
Aggregations