use of com.sequenceiq.cloudbreak.service.upgrade.UpgradeImageInfo in project cloudbreak by hortonworks.
the class ClusterUpgradeValidationActions method clusterUpgradeImageValidation.
@Bean(name = "CLUSTER_UPGRADE_IMAGE_VALIDATION_STATE")
public Action<?, ?> clusterUpgradeImageValidation() {
return new AbstractClusterUpgradeValidationAction<>(ClusterUpgradeValidationEvent.class) {
@Override
protected void doExecute(StackContext context, ClusterUpgradeValidationEvent payload, Map<Object, Object> variables) throws CloudbreakImageNotFoundException, CloudbreakImageCatalogException {
LOGGER.info("Starting cluster upgrade image validation.");
UpgradeImageInfo upgradeImageInfo = upgradeImageInfoFactory.create(payload.getImageId(), payload.getResourceId());
Image targetImage = stackImageService.getImageModelFromStatedImage(context.getStack(), upgradeImageInfo.getCurrentImage(), upgradeImageInfo.getTargetStatedImage());
variables.put(TARGET_IMAGE, targetImage);
CloudStack cloudStack = context.getCloudStack().replaceImage(targetImage);
ClusterUpgradeImageValidationEvent event = new ClusterUpgradeImageValidationEvent(payload.getResourceId(), payload.getImageId(), cloudStack, context.getCloudCredential(), context.getCloudContext(), upgradeImageInfo.getTargetStatedImage().getImage());
sendEvent(context, event.selector(), event);
}
@Override
protected Object getFailurePayload(ClusterUpgradeValidationEvent payload, Optional<StackContext> flowContext, Exception ex) {
return new ClusterUpgradeValidationFailureEvent(payload.getResourceId(), ex);
}
};
}
use of com.sequenceiq.cloudbreak.service.upgrade.UpgradeImageInfo in project cloudbreak by hortonworks.
the class ClusterUpgradeActions method initClusterUpgrade.
@Bean(name = "CLUSTER_UPGRADE_INIT_STATE")
public Action<?, ?> initClusterUpgrade() {
return new AbstractClusterUpgradeAction<>(ClusterUpgradeTriggerEvent.class) {
@Inject
private ImageComponentUpdaterService imageComponentUpdaterService;
@Inject
private ClusterUpgradeTargetImageService clusterUpgradeTargetImageService;
@Override
protected void doExecute(ClusterUpgradeContext context, ClusterUpgradeTriggerEvent payload, Map<Object, Object> variables) {
try {
UpgradeImageInfo images = imageComponentUpdaterService.updateForUpgrade(payload.getImageId(), payload.getResourceId());
variables.put(CURRENT_IMAGE, images.getCurrentStatedImage());
variables.put(TARGET_IMAGE, images.getTargetStatedImage());
clusterUpgradeTargetImageService.saveImage(context.getStackId(), images.getTargetStatedImage());
clusterUpgradeService.initUpgradeCluster(context.getStackId(), getTargetImage(variables));
Selectable event = new ClusterUpgradeInitRequest(context.getStackId(), isPatchUpgrade(images.getCurrentStatedImage().getImage(), images.getTargetStatedImage().getImage()));
sendEvent(context, event.selector(), event);
} catch (Exception e) {
LOGGER.error("Error during updating cluster components with image id: [{}]", payload.getImageId(), e);
ClusterUpgradeFailedEvent upgradeFailedEvent = new ClusterUpgradeFailedEvent(payload.getResourceId(), e, DetailedStackStatus.CLUSTER_MANAGER_UPGRADE_FAILED);
sendEvent(context, upgradeFailedEvent);
}
}
@Override
protected Object getFailurePayload(ClusterUpgradeTriggerEvent payload, Optional<ClusterUpgradeContext> flowContext, Exception ex) {
return ClusterUpgradeFailedEvent.from(payload, ex, DetailedStackStatus.CLUSTER_MANAGER_UPGRADE_FAILED);
}
@Override
protected ClusterUpgradeContext createFlowContext(FlowParameters flowParameters, StateContext<FlowState, FlowEvent> stateContext, ClusterUpgradeTriggerEvent payload) {
return ClusterUpgradeContext.from(flowParameters, payload);
}
};
}
Aggregations