use of com.sequenceiq.freeipa.flow.freeipa.upscale.event.UpscaleEvent 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);
}
}
use of com.sequenceiq.freeipa.flow.freeipa.upscale.event.UpscaleEvent in project cloudbreak by hortonworks.
the class RepairFlowEventChainFactory method createFlowTriggerEventQueue.
@Override
public FlowTriggerEventQueue createFlowTriggerEventQueue(RepairEvent event) {
Set<String> terminatedOrRemovedInstanceIdsSet = new HashSet<>(event.getRepairInstanceIds());
terminatedOrRemovedInstanceIdsSet.addAll(event.getAdditionalTerminatedInstanceIds());
ArrayList<String> terminatedOrRemovedInstanceIds = new ArrayList<>(terminatedOrRemovedInstanceIdsSet);
Queue<Selectable> flowEventChain = new ConcurrentLinkedQueue<>();
flowEventChain.add(new ChangePrimaryGatewayEvent(ChangePrimaryGatewayFlowEvent.CHANGE_PRIMARY_GATEWAY_EVENT.event(), event.getResourceId(), terminatedOrRemovedInstanceIds, Boolean.FALSE, event.getOperationId(), event.accepted()));
flowEventChain.add(new DownscaleEvent(DownscaleFlowEvent.DOWNSCALE_EVENT.event(), event.getResourceId(), terminatedOrRemovedInstanceIds, event.getInstanceCountByGroup(), true, true, false, event.getOperationId()));
flowEventChain.add(new UpscaleEvent(UpscaleFlowEvent.UPSCALE_EVENT.event(), event.getResourceId(), event.getInstanceCountByGroup(), true, true, false, event.getOperationId()));
flowEventChain.add(new ChangePrimaryGatewayEvent(ChangePrimaryGatewayFlowEvent.CHANGE_PRIMARY_GATEWAY_EVENT.event(), event.getResourceId(), terminatedOrRemovedInstanceIds, true, event.getOperationId()));
return new FlowTriggerEventQueue(getName(), event, flowEventChain);
}
use of com.sequenceiq.freeipa.flow.freeipa.upscale.event.UpscaleEvent in project cloudbreak by hortonworks.
the class UpgradeFlowEventChainFactory method createScaleEventsForNonPgwInstances.
private List<Selectable> createScaleEventsForNonPgwInstances(UpgradeEvent event, int instanceCountForUpscale, int instanceCountForDownscale) {
LOGGER.debug("Add scale events for non primary gateway instances. upscale count: [{}] downscale count: [{}]", instanceCountForUpscale, instanceCountForDownscale);
List<Selectable> events = new ArrayList<>(event.getInstanceIds().size() * 2);
for (String instanceId : event.getInstanceIds()) {
LOGGER.debug("Add upscale and downscale event for [{}]", instanceId);
events.add(new UpscaleEvent(UpscaleFlowEvent.UPSCALE_EVENT.event(), event.getResourceId(), instanceCountForUpscale, Boolean.FALSE, true, false, event.getOperationId()));
events.add(new DownscaleEvent(DownscaleFlowEvent.DOWNSCALE_EVENT.event(), event.getResourceId(), Lists.newArrayList(instanceId), instanceCountForDownscale, false, true, false, event.getOperationId()));
}
return events;
}
use of com.sequenceiq.freeipa.flow.freeipa.upscale.event.UpscaleEvent in project cloudbreak by hortonworks.
the class UpgradeFlowEventChainFactory method createScaleEventsAndChangePgw.
private List<Selectable> createScaleEventsAndChangePgw(UpgradeEvent event, int instanceCountForUpscale, int instanceCountForDownscale) {
LOGGER.debug("Add events for primary gateway with id: [{}]", event.getPrimareGwInstanceId());
List<Selectable> events = new ArrayList<>(PRIMARY_GW_EVENT_COUNT);
events.add(new UpscaleEvent(UpscaleFlowEvent.UPSCALE_EVENT.event(), event.getResourceId(), instanceCountForUpscale, Boolean.FALSE, true, false, event.getOperationId()));
ArrayList<String> oldInstances = new ArrayList<>(event.getInstanceIds());
oldInstances.add(event.getPrimareGwInstanceId());
events.add(new ChangePrimaryGatewayEvent(ChangePrimaryGatewayFlowEvent.CHANGE_PRIMARY_GATEWAY_EVENT.event(), event.getResourceId(), oldInstances, Boolean.FALSE, event.getOperationId()));
events.add(new DownscaleEvent(DownscaleFlowEvent.DOWNSCALE_EVENT.event(), event.getResourceId(), Lists.newArrayList(event.getPrimareGwInstanceId()), instanceCountForDownscale, false, true, false, event.getOperationId()));
return events;
}
use of com.sequenceiq.freeipa.flow.freeipa.upscale.event.UpscaleEvent in project cloudbreak by hortonworks.
the class FreeIpaUpscaleActions method startingAction.
@Bean(name = "UPSCALE_STARTING_STATE")
public Action<?, ?> startingAction() {
return new AbstractUpscaleAction<>(UpscaleEvent.class) {
@Override
protected void doExecute(StackContext context, UpscaleEvent payload, Map<Object, Object> variables) {
Stack stack = context.getStack();
String operationId = payload.getOperationId();
setOperationId(variables, operationId);
setInstanceCountByGroup(variables, payload.getInstanceCountByGroup());
setRepair(variables, payload.isRepair());
setChainedAction(variables, payload.isChained());
setFinalChain(variables, payload.isFinalChain());
LOGGER.info("Starting upscale {}", payload);
stackUpdater.updateStackStatus(stack.getId(), getInProgressStatus(variables), "Starting upscale");
sendEvent(context, UPSCALE_STARTING_FINISHED_EVENT.selector(), new StackEvent(stack.getId()));
}
};
}
Aggregations