use of com.sequenceiq.cloudbreak.api.endpoint.v4.stacks.request.tags.upgrade.UpgradeV4Request in project cloudbreak by hortonworks.
the class DistroXUpgradeV1ControllerTest method testShowAvailableImages.
@Test
public void testShowAvailableImages() {
DistroXUpgradeV1Request distroxUpgradeRequest = new DistroXUpgradeV1Request();
UpgradeV4Request upgradeV4Request = new UpgradeV4Request();
upgradeV4Request.setShowAvailableImages(UpgradeShowAvailableImages.SHOW);
when(upgradeAvailabilityService.isRuntimeUpgradeEnabledByAccountId(ACCOUNT_ID)).thenReturn(true);
when(upgradeAvailabilityService.isOsUpgradeEnabledByAccountId(ACCOUNT_ID)).thenReturn(true);
when(upgradeConverter.convert(distroxUpgradeRequest, new InternalUpgradeSettings(false, true, true))).thenReturn(upgradeV4Request);
UpgradeV4Response upgradeV4Response = new UpgradeV4Response();
when(upgradeAvailabilityService.checkForUpgrade(NameOrCrn.ofName(CLUSTER_NAME), WORKSPACE_ID, upgradeV4Request, USER_CRN)).thenReturn(upgradeV4Response);
when(upgradeConverter.convert(upgradeV4Response)).thenReturn(new DistroXUpgradeV1Response());
ThreadBasedUserCrnProvider.doAs(USER_CRN, () -> underTest.upgradeClusterByName(CLUSTER_NAME, distroxUpgradeRequest));
verify(upgradeAvailabilityService).checkForUpgrade(NameOrCrn.ofName(CLUSTER_NAME), WORKSPACE_ID, upgradeV4Request, USER_CRN);
verifyNoInteractions(upgradeService);
}
use of com.sequenceiq.cloudbreak.api.endpoint.v4.stacks.request.tags.upgrade.UpgradeV4Request in project cloudbreak by hortonworks.
the class DistroXUpgradeV1ControllerTest method testUpgradeCalled.
@Test
public void testUpgradeCalled() {
DistroXUpgradeV1Request distroxUpgradeRequest = new DistroXUpgradeV1Request();
UpgradeV4Request upgradeV4Request = new UpgradeV4Request();
upgradeV4Request.setDryRun(Boolean.FALSE);
when(upgradeAvailabilityService.isRuntimeUpgradeEnabledByAccountId(ACCOUNT_ID)).thenReturn(true);
when(upgradeAvailabilityService.isOsUpgradeEnabledByAccountId(ACCOUNT_ID)).thenReturn(true);
when(upgradeConverter.convert(distroxUpgradeRequest, new InternalUpgradeSettings(false, true, true))).thenReturn(upgradeV4Request);
UpgradeV4Response upgradeV4Response = new UpgradeV4Response();
when(upgradeService.triggerUpgrade(NameOrCrn.ofName(CLUSTER_NAME), WORKSPACE_ID, USER_CRN, upgradeV4Request)).thenReturn(upgradeV4Response);
when(upgradeConverter.convert(upgradeV4Response)).thenReturn(new DistroXUpgradeV1Response());
ThreadBasedUserCrnProvider.doAs(USER_CRN, () -> underTest.upgradeClusterByName(CLUSTER_NAME, distroxUpgradeRequest));
verify(upgradeService).triggerUpgrade(NameOrCrn.ofName(CLUSTER_NAME), WORKSPACE_ID, USER_CRN, upgradeV4Request);
}
use of com.sequenceiq.cloudbreak.api.endpoint.v4.stacks.request.tags.upgrade.UpgradeV4Request in project cloudbreak by hortonworks.
the class UpgradeConverter method convert.
public UpgradeV4Request convert(DistroXUpgradeV1Request source, InternalUpgradeSettings internalUpgradeSettings) {
UpgradeV4Request request = new UpgradeV4Request();
request.setImageId(source.getImageId());
request.setRuntime(source.getRuntime());
request.setDryRun(source.getDryRun());
request.setLockComponents(source.getLockComponents());
request.setInternalUpgradeSettings(internalUpgradeSettings);
Optional.ofNullable(source.getShowAvailableImages()).ifPresent(value -> request.setShowAvailableImages(UpgradeShowAvailableImages.valueOf(value.name())));
request.setReplaceVms(convertReplaceVms(source));
return request;
}
use of com.sequenceiq.cloudbreak.api.endpoint.v4.stacks.request.tags.upgrade.UpgradeV4Request in project cloudbreak by hortonworks.
the class DistroXUpgradeAvailabilityService method checkForUpgrade.
public UpgradeV4Response checkForUpgrade(NameOrCrn nameOrCrn, Long workspaceId, UpgradeV4Request request, String userCrn) {
Stack stack = stackService.getByNameOrCrnInWorkspace(nameOrCrn, workspaceId);
String accountId = Crn.safeFromString(userCrn).getAccountId();
UpgradeV4Response response = stackUpgradeOperations.checkForClusterUpgrade(accountId, stack, workspaceId, request);
List<ImageInfoV4Response> filteredCandidates = filterCandidates(accountId, stack, request, response);
List<ImageInfoV4Response> razValidatedCandidates = validateRangerRazCandidates(accountId, stack, filteredCandidates);
response.setUpgradeCandidates(razValidatedCandidates);
return response;
}
use of com.sequenceiq.cloudbreak.api.endpoint.v4.stacks.request.tags.upgrade.UpgradeV4Request in project cloudbreak by hortonworks.
the class DistroXUpgradeAvailabilityService method filterCandidates.
private List<ImageInfoV4Response> filterCandidates(String accountId, Stack stack, UpgradeV4Request request, UpgradeV4Response upgradeV4Response) {
BlueprintUpgradeOption upgradeOption = stack.getCluster().getBlueprint().getBlueprintUpgradeOption();
if (upgradeOption != BlueprintUpgradeOption.GA) {
LOGGER.debug("Running filtering logic as upgrade option is {}, not GA", upgradeOption);
filterOnlyPatchUpgradesIfRuntimeUpgradeDisabled(accountId, stack.getName(), upgradeV4Response);
}
List<ImageInfoV4Response> filteredCandidates;
String stackName = stack.getName();
boolean differentDataHubAndDataLakeVersionAllowed = entitlementService.isDifferentDataHubAndDataLakeVersionAllowed(accountId);
if (differentDataHubAndDataLakeVersionAllowed) {
LOGGER.info("Different Data Hub version is enabled, not filtering based on Data Lake version, Data Hub: {}", stackName);
filteredCandidates = upgradeV4Response.getUpgradeCandidates();
} else {
LOGGER.info("Filter Data Hub upgrade images based on the Data Lake version, Data Hub: {}", stackName);
filteredCandidates = filterForDatalakeVersion(stack, upgradeV4Response);
}
if (CollectionUtils.isNotEmpty(filteredCandidates) && Objects.nonNull(request)) {
if (LATEST_ONLY == request.getShowAvailableImages()) {
filteredCandidates = filterForLatestImagePerRuntime(filteredCandidates);
} else if (request.isDryRun()) {
filteredCandidates = filterForLatestImage(filteredCandidates);
}
}
return filteredCandidates;
}
Aggregations