use of com.sequenceiq.freeipa.dto.Credential in project cloudbreak by hortonworks.
the class FreeIpaRecommendationServiceTest method testValidateCustomInstanceTypeWhenCustomInstanceTypeIsSmaller.
@Test
public void testValidateCustomInstanceTypeWhenCustomInstanceTypeIsSmaller() {
when(defaultInstanceTypeProvider.getForPlatform(eq("AWS"))).thenReturn("medium");
when(entitlementService.isFreeIpaSelectInstanceTypeEnabled(anyString())).thenReturn(Boolean.TRUE);
when(cloudParameterService.getVmTypesV2(any(), eq("eu-central-1"), eq("AWS"), eq(CdpResourceType.DEFAULT), any())).thenReturn(initCloudVmTypes());
BadRequestException badRequestException = assertThrows(BadRequestException.class, () -> underTest.validateCustomInstanceType(createStack("small"), new Credential("AWS", "Cred", null, "crn", "account")));
assertEquals("Invalid custom instance type for FreeIPA: master - small", badRequestException.getMessage());
}
use of com.sequenceiq.freeipa.dto.Credential in project cloudbreak by hortonworks.
the class CredentialService method convertToCredential.
private Credential convertToCredential(CredentialResponse credentialResponse) {
SecretResponse secretResponse = credentialResponse.getAttributes();
String attributes = secretService.getByResponse(secretResponse);
return new Credential(credentialResponse.getCloudPlatform(), credentialResponse.getName(), attributes, credentialResponse.getCrn(), credentialResponse.getAccountId());
}
use of com.sequenceiq.freeipa.dto.Credential in project cloudbreak by hortonworks.
the class FreeIpaCreationService method launchFreeIpa.
public DescribeFreeIpaResponse launchFreeIpa(CreateFreeIpaRequest request, String accountId) {
String userCrn = crnService.getUserCrn();
Future<String> ownerFuture = initiateOwnerFetching(userCrn);
Credential credential = credentialService.getCredentialByEnvCrn(request.getEnvironmentCrn());
DetailedEnvironmentResponse environment = measure(() -> cachedEnvironmentClientService.getByCrn(request.getEnvironmentCrn()), LOGGER, "Environment properties were queried under {} ms for environment {}", request.getEnvironmentCrn());
Stack stack = stackConverter.convert(request, environment, accountId, ownerFuture, userCrn, credential.getCloudPlatform());
stack.setAppVersion(appVersion);
GetPlatformTemplateRequest getPlatformTemplateRequest = templateService.triggerGetTemplate(stack, credential);
Telemetry telemetry = stack.getTelemetry();
if (telemetry != null) {
telemetry.setRules(accountTelemetryService.getAnonymizationRules(accountId));
}
cloudStorageFolderResolverService.updateStorageLocation(telemetry, FluentClusterType.FREEIPA.value(), stack.getName(), stack.getResourceCrn());
stack.setTelemetry(telemetry);
Backup backup = stack.getBackup();
backup = cloudBackupFolderResolverService.updateStorageLocation(backup, BackupClusterType.FREEIPA.value(), stack.getName(), stack.getResourceCrn());
stack.setBackup(backup);
fillInstanceMetadata(stack, environment);
String template = templateService.waitGetTemplate(getPlatformTemplateRequest);
stack.setTemplate(template);
SecurityConfig securityConfig = tlsSecurityService.generateSecurityKeys(accountId);
multiAzValidator.validateMultiAzForStack(stack.getPlatformvariant(), stack.getInstanceGroups());
freeIpaRecommendationService.validateCustomInstanceType(stack, credential);
try {
Triple<Stack, ImageEntity, FreeIpa> stackImageFreeIpaTuple = transactionService.required(() -> {
SecurityConfig savedSecurityConfig = securityConfigService.save(securityConfig);
stack.setSecurityConfig(savedSecurityConfig);
Stack savedStack = stackService.save(stack);
ImageSettingsRequest imageSettingsRequest = request.getImage();
ImageEntity image = imageService.create(savedStack, Objects.nonNull(imageSettingsRequest) ? imageSettingsRequest : new ImageSettingsRequest());
FreeIpa freeIpa = freeIpaService.create(savedStack, request.getFreeIpa());
return Triple.of(savedStack, image, freeIpa);
});
flowManager.notify(FlowChainTriggers.PROVISION_TRIGGER_EVENT, new StackEvent(FlowChainTriggers.PROVISION_TRIGGER_EVENT, stackImageFreeIpaTuple.getLeft().getId()));
InMemoryStateStore.putStack(stack.getId(), PollGroup.POLLABLE);
return stackToDescribeFreeIpaResponseConverter.convert(stackImageFreeIpaTuple.getLeft(), stackImageFreeIpaTuple.getMiddle(), stackImageFreeIpaTuple.getRight(), Optional.empty(), false);
} catch (TransactionService.TransactionExecutionException e) {
LOGGER.error("Creation of FreeIPA failed", e);
throw new BadRequestException("Creation of FreeIPA failed: " + e.getCause().getMessage(), e);
}
}
use of com.sequenceiq.freeipa.dto.Credential in project cloudbreak by hortonworks.
the class FreeIpaRecommendationService method getRecommendation.
public FreeIpaRecommendationResponse getRecommendation(String credentialCrn, String region, String availabilityZone) {
Credential credential = credentialService.getCredentialByCredCrn(credentialCrn);
String defaultInstanceType = defaultInstanceTypeProvider.getForPlatform(credential.getCloudPlatform());
Set<VmTypeResponse> availableVmTypes = getAvailableVmTypes(region, availabilityZone, credential, defaultInstanceType);
return new FreeIpaRecommendationResponse(availableVmTypes, defaultInstanceType);
}
use of com.sequenceiq.freeipa.dto.Credential in project cloudbreak by hortonworks.
the class FreeIpaRecommendationService method getAvailableVmTypes.
private Set<VmTypeResponse> getAvailableVmTypes(String region, String availabilityZone, Credential credential, String defaultInstanceType) {
CloudVmTypes vmTypes = cloudParameterService.getVmTypesV2(extendedCloudCredentialConverter.convert(credential), region, credential.getCloudPlatform(), CdpResourceType.DEFAULT, Maps.newHashMap());
Set<VmType> availableVmTypes = Collections.emptySet();
if (vmTypes.getCloudVmResponses() != null && StringUtils.isNotBlank(availabilityZone) && vmTypes.getDefaultCloudVmResponses().containsKey(availabilityZone)) {
availableVmTypes = vmTypes.getCloudVmResponses().get(availabilityZone);
} else if (vmTypes.getCloudVmResponses() != null && !vmTypes.getCloudVmResponses().isEmpty()) {
availableVmTypes = vmTypes.getCloudVmResponses().values().iterator().next();
}
Optional<VmType> defaultVmType = availableVmTypes.stream().filter(vmType -> defaultInstanceType.equals(vmType.value())).findAny();
return availableVmTypes.stream().filter(vmType -> filterVmTypeLargerThanDefault(vmType, defaultVmType)).map(vmType -> vmTypeConverter.convert(vmType)).collect(Collectors.toSet());
}
Aggregations