use of com.sequenceiq.cloudbreak.service.image.ImageChangeDto in project cloudbreak by hortonworks.
the class DistroXUpgradeService method initUpgrade.
private UpgradeV4Response initUpgrade(UpgradeV4Request request, UpgradeV4Response upgradeV4Response, NameOrCrn cluster, Long workspaceId, String userCrn) {
ImageInfoV4Response image = imageSelector.determineImageId(request, upgradeV4Response.getUpgradeCandidates());
ImageChangeDto imageChangeDto = createImageChangeDto(cluster, workspaceId, image);
Stack stack = stackService.getByNameOrCrnInWorkspace(cluster, workspaceId);
boolean lockComponents = request.getLockComponents() != null ? request.getLockComponents() : isComponentsLocked(stack, image);
validateOsUpgradeEntitled(lockComponents, request);
boolean replaceVms = determineReplaceVmsParam(upgradeV4Response, lockComponents, stack);
String upgradeVariant = calculateUpgradeVariant(stack, userCrn);
FlowIdentifier flowIdentifier = reactorFlowManager.triggerDistroXUpgrade(stack.getId(), imageChangeDto, replaceVms, lockComponents, upgradeVariant);
UpgradeV4Response response = new UpgradeV4Response("Upgrade started with Image: " + image.getImageId(), flowIdentifier);
response.setReplaceVms(replaceVms);
return response;
}
use of com.sequenceiq.cloudbreak.service.image.ImageChangeDto in project cloudbreak by hortonworks.
the class StackCommonServiceTest method testCreateImageChangeDtoWithoutCatalog.
@Test
public void testCreateImageChangeDtoWithoutCatalog() {
StackImageChangeV4Request stackImageChangeRequest = new StackImageChangeV4Request();
stackImageChangeRequest.setImageId("imageId");
when(stackService.getIdByNameOrCrnInWorkspace(STACK_NAME, WORKSPACE_ID)).thenReturn(STACK_ID);
ImageChangeDto result = underTest.createImageChangeDto(STACK_NAME, WORKSPACE_ID, stackImageChangeRequest);
assertEquals(STACK_ID, result.getStackId());
assertEquals(stackImageChangeRequest.getImageId(), result.getImageId());
assertNull(result.getImageCatalogName());
assertNull(result.getImageCatalogUrl());
}
use of com.sequenceiq.cloudbreak.service.image.ImageChangeDto in project cloudbreak by hortonworks.
the class StackCommonServiceTest method testCreateImageChangeDtoWithCatalog.
@Test
public void testCreateImageChangeDtoWithCatalog() {
StackImageChangeV4Request stackImageChangeRequest = new StackImageChangeV4Request();
stackImageChangeRequest.setImageCatalogName("catalog");
stackImageChangeRequest.setImageId("imageId");
ImageCatalog catalog = new ImageCatalog();
catalog.setName(stackImageChangeRequest.getImageCatalogName());
catalog.setImageCatalogUrl("catalogUrl");
when(imageCatalogService.getImageCatalogByName(WORKSPACE_ID, stackImageChangeRequest.getImageCatalogName())).thenReturn(catalog);
when(stackService.getIdByNameOrCrnInWorkspace(STACK_NAME, WORKSPACE_ID)).thenReturn(STACK_ID);
ImageChangeDto result = underTest.createImageChangeDto(STACK_NAME, WORKSPACE_ID, stackImageChangeRequest);
assertEquals(STACK_ID, result.getStackId());
assertEquals(stackImageChangeRequest.getImageId(), result.getImageId());
assertEquals(catalog.getName(), result.getImageCatalogName());
assertEquals(catalog.getImageCatalogUrl(), result.getImageCatalogUrl());
}
use of com.sequenceiq.cloudbreak.service.image.ImageChangeDto in project cloudbreak by hortonworks.
the class DistroXUpgradeServiceTest method testTriggerFlowWithPaywallCheck.
@Test
public void testTriggerFlowWithPaywallCheck() {
UpgradeV4Request request = new UpgradeV4Request();
UpgradeV4Response response = new UpgradeV4Response();
response.setUpgradeCandidates(List.of(mock(ImageInfoV4Response.class)));
when(upgradeAvailabilityService.checkForUpgrade(CLUSTER, WS_ID, request, USER_CRN)).thenReturn(response);
when(entitlementService.isInternalRepositoryForUpgradeAllowed(ACCOUNT_ID)).thenReturn(Boolean.FALSE);
when(clouderaManagerLicenseProvider.getLicense(any())).thenReturn(new JsonCMLicense());
ImageInfoV4Response imageInfoV4Response = new ImageInfoV4Response();
imageInfoV4Response.setImageId("imgId");
imageInfoV4Response.setImageCatalogName("catalogName");
when(imageSelector.determineImageId(request, response.getUpgradeCandidates())).thenReturn(imageInfoV4Response);
ArgumentCaptor<StackImageChangeV4Request> imageChangeRequestArgumentCaptor = ArgumentCaptor.forClass(StackImageChangeV4Request.class);
ImageChangeDto imageChangeDto = new ImageChangeDto(STACK_ID, imageInfoV4Response.getImageId());
when(stackCommonService.createImageChangeDto(eq(CLUSTER), eq(WS_ID), imageChangeRequestArgumentCaptor.capture())).thenReturn(imageChangeDto);
when(stackService.getByNameOrCrnInWorkspace(CLUSTER, WS_ID)).thenReturn(stack);
when(lockedComponentService.isComponentsLocked(stack, imageInfoV4Response.getImageId())).thenReturn(LOCK_COMPONENTS);
FlowIdentifier flowIdentifier = new FlowIdentifier(FlowType.FLOW_CHAIN, "asdf");
when(reactorFlowManager.triggerDistroXUpgrade(eq(STACK_ID), eq(imageChangeDto), anyBoolean(), eq(LOCK_COMPONENTS), anyString())).thenReturn(flowIdentifier);
UpgradeV4Response result = underTest.triggerUpgrade(CLUSTER, WS_ID, USER_CRN, request);
verify(paywallAccessChecker).checkPaywallAccess(any(), any());
assertEquals(flowIdentifier, result.getFlowIdentifier());
assertTrue(result.getReason().contains(imageInfoV4Response.getImageId()));
StackImageChangeV4Request imageChangeV4Request = imageChangeRequestArgumentCaptor.getValue();
assertEquals(imageInfoV4Response.getImageId(), imageChangeV4Request.getImageId());
assertEquals(imageInfoV4Response.getImageCatalogName(), imageChangeV4Request.getImageCatalogName());
}
use of com.sequenceiq.cloudbreak.service.image.ImageChangeDto in project cloudbreak by hortonworks.
the class DistroXUpgradeServiceTest method testTriggerFlowWhenReplaceVmsParamIsFalse.
@Test
public void testTriggerFlowWhenReplaceVmsParamIsFalse() {
// GIVEN
UpgradeV4Request request = new UpgradeV4Request();
UpgradeV4Response response = new UpgradeV4Response();
response.setReplaceVms(false);
response.setUpgradeCandidates(List.of(mock(ImageInfoV4Response.class)));
when(upgradeAvailabilityService.checkForUpgrade(CLUSTER, WS_ID, request, USER_CRN)).thenReturn(response);
when(entitlementService.isInternalRepositoryForUpgradeAllowed(ACCOUNT_ID)).thenReturn(Boolean.FALSE);
when(clouderaManagerLicenseProvider.getLicense(any())).thenReturn(new JsonCMLicense());
ImageInfoV4Response imageInfoV4Response = new ImageInfoV4Response();
imageInfoV4Response.setImageId("imgId");
imageInfoV4Response.setImageCatalogName("catalogName");
when(imageSelector.determineImageId(request, response.getUpgradeCandidates())).thenReturn(imageInfoV4Response);
ArgumentCaptor<StackImageChangeV4Request> imageChangeRequestArgumentCaptor = ArgumentCaptor.forClass(StackImageChangeV4Request.class);
ImageChangeDto imageChangeDto = new ImageChangeDto(STACK_ID, imageInfoV4Response.getImageId());
when(stackCommonService.createImageChangeDto(eq(CLUSTER), eq(WS_ID), imageChangeRequestArgumentCaptor.capture())).thenReturn(imageChangeDto);
when(stackService.getByNameOrCrnInWorkspace(CLUSTER, WS_ID)).thenReturn(stack);
when(lockedComponentService.isComponentsLocked(stack, imageInfoV4Response.getImageId())).thenReturn(LOCK_COMPONENTS);
FlowIdentifier flowIdentifier = new FlowIdentifier(FlowType.FLOW_CHAIN, "asdf");
when(reactorFlowManager.triggerDistroXUpgrade(eq(STACK_ID), eq(imageChangeDto), anyBoolean(), eq(LOCK_COMPONENTS), anyString())).thenReturn(flowIdentifier);
// WHEN
UpgradeV4Response result = underTest.triggerUpgrade(CLUSTER, WS_ID, USER_CRN, request);
// THEN
verify(reactorFlowManager).triggerDistroXUpgrade(STACK_ID, imageChangeDto, false, LOCK_COMPONENTS, "variant");
assertFalse(result.isReplaceVms());
}
Aggregations