use of com.sequenceiq.freeipa.entity.StackAuthentication in project cloudbreak by hortonworks.
the class InstanceMetaDataToCloudInstanceConverter method convert.
public CloudInstance convert(InstanceMetaData metaDataEntity) {
InstanceGroup group = metaDataEntity.getInstanceGroup();
Optional<StackAuthenticationView> stackAuthenticationView = instanceMetaDataService.getStackAuthenticationViewByInstanceMetaDataId(metaDataEntity.getId());
Template template = metaDataEntity.getInstanceGroup().getTemplate();
Optional<StackAuthentication> stackAuthentication = stackAuthenticationView.map(StackAuthenticationView::getStackAuthentication);
InstanceStatus status = getInstanceStatus(metaDataEntity);
String imageId = stackAuthenticationView.map(StackAuthenticationView::getStackId).map(stackId -> imageService.getByStackId(stackId)).map(ImageEntity::getImageName).orElse(null);
InstanceTemplate instanceTemplate = stackToCloudStackConverter.buildInstanceTemplate(template, group.getGroupName(), metaDataEntity.getPrivateId(), status, imageId);
InstanceAuthentication instanceAuthentication = new InstanceAuthentication(stackAuthentication.map(StackAuthentication::getPublicKey).orElse(null), stackAuthentication.map(StackAuthentication::getPublicKeyId).orElse(null), stackAuthentication.map(StackAuthentication::getLoginUserName).orElse(null));
Map<String, Object> params = new HashMap<>();
params.put(SUBNET_ID, metaDataEntity.getSubnetId());
params.put(CloudInstance.INSTANCE_NAME, metaDataEntity.getInstanceName());
Stack stack = stackAuthenticationView.map(StackAuthenticationView::getStackId).map(stackService::getStackById).orElseThrow(NotFoundException::new);
Map<String, Object> cloudInstanceParameters = stackToCloudStackConverter.buildCloudInstanceParameters(stack.getEnvironmentCrn(), metaDataEntity);
params.putAll(cloudInstanceParameters);
return new CloudInstance(metaDataEntity.getInstanceId(), instanceTemplate, instanceAuthentication, metaDataEntity.getSubnetId(), stack.getAvailabilityZone(), params);
}
use of com.sequenceiq.freeipa.entity.StackAuthentication in project cloudbreak by hortonworks.
the class StackAuthenticationRequestToStackAuthenticationConverter method convert.
public StackAuthentication convert(StackAuthenticationRequest source) {
StackAuthentication stackAuthentication = new StackAuthentication();
stackAuthentication.setLoginUserName(Strings.isNullOrEmpty(source.getLoginUserName()) ? "freeipa" : source.getLoginUserName());
stackAuthentication.setPublicKey(source.getPublicKey());
stackAuthentication.setPublicKeyId(source.getPublicKeyId());
return stackAuthentication;
}
use of com.sequenceiq.freeipa.entity.StackAuthentication in project cloudbreak by hortonworks.
the class StackToCreateFreeIpaRequestConverterTest method testConvert.
@Test
void testConvert() {
// Initialize
Stack stack = new Stack();
stack.setEnvironmentCrn(ENVIRONMENT_CRN);
stack.setName(NAME + "_" + TERMINATION_TIME);
stack.setRegion(REGION);
stack.setAvailabilityZone(AVAILIBILTYY_ZONE);
stack.setGatewayport(GATEWAY_PORT);
stack.setUseCcm(true);
stack.setTunnel(Tunnel.CCMV2);
stack.setPlatformvariant(CLOUD_PLATFORM);
StackStatus stackStatus = new StackStatus();
stackStatus.setStack(stack);
stackStatus.setDetailedStackStatus(DetailedStackStatus.DELETE_COMPLETED);
stackStatus.setStatus(Status.DELETE_COMPLETED);
stack.setStackStatus(stackStatus);
InstanceGroup ig = new InstanceGroup();
ig.setGroupName(INSTANCE_GROUP_NAME);
Template template = new Template();
template.setInstanceType(INSTANCE_TYPE);
template.setAttributes(new Json(Map.of(AwsInstanceTemplate.EC2_SPOT_PERCENTAGE, EC2_SPOT_PERCENTAGE, AwsInstanceTemplate.EC2_SPOT_MAX_PRICE, EC2_SPOT_MAX_PRICE)));
template.setVolumeType(VOLUME_TYPE);
template.setVolumeCount(VOLUMNE_COUNT);
template.setVolumeSize(VOLUMNE_SIZE);
ig.setTemplate(template);
InstanceGroupNetwork igNetwork = new InstanceGroupNetwork();
igNetwork.setAttributes(new Json(Map.of(NetworkConstants.SUBNET_IDS, SUBNET_IDS)));
ig.setInstanceGroupNetwork(igNetwork);
ig.setNodeCount(NODE_COUNT);
SecurityGroup sg = new SecurityGroup();
sg.setSecurityGroupIds(SECURITY_GROUP_IDS);
SecurityRule sr = new SecurityRule();
sr.setModifiable(true);
sr.setPorts(PORT);
sr.setProtocol(PROTOCOL);
sr.setCidr(CIDR);
sg.setSecurityRules(Set.of(sr));
ig.setSecurityGroup(sg);
ig.setInstanceGroupType(InstanceGroupType.MASTER);
stack.setInstanceGroups(Set.of(ig));
StackAuthentication stackAuthentication = new StackAuthentication();
stackAuthentication.setLoginUserName(LOGIN_NAME);
stackAuthentication.setPublicKey(PUBLIC_KEY);
stackAuthentication.setPublicKeyId(PUBLIC_KEY_ID);
stack.setStackAuthentication(stackAuthentication);
Network network = new Network();
network.setNetworkCidrs(List.of(CIDR));
network.setOutboundInternetTraffic(OutboundInternetTraffic.ENABLED);
network.setAttributes(new Json(Map.of("vpcId", VPC_ID, "subnetId", SUBNET_ID)));
network.setCloudPlatform(CLOUD_PLATFORM);
stack.setNetwork(network);
ImageEntity image = new ImageEntity();
image.setImageCatalogUrl(IMAGE_CATALOG_URL);
image.setImageId(IMAGE_ID);
image.setOs(IMAGE_OS);
stack.setImage(image);
FreeIpa freeIpa = new FreeIpa();
freeIpa.setAdminGroupName(ADMIN_GROUP_NAME);
freeIpa.setAdminPassword(ADMIN_PASSWORD);
freeIpa.setDomain(DOMAIN);
freeIpa.setHostname(HOSTNAME);
Telemetry telemetry = new Telemetry();
Map<String, Object> fluentAttributes = Map.of("fluent", "attributes");
telemetry.setFluentAttributes(fluentAttributes);
Logging logging = new Logging();
logging.setStorageLocation(STORAGE_LOCATION);
S3CloudStorageV1Parameters s3Storage = new S3CloudStorageV1Parameters();
logging.setS3(s3Storage);
AdlsGen2CloudStorageV1Parameters adlsStorage = new AdlsGen2CloudStorageV1Parameters();
logging.setAdlsGen2(adlsStorage);
GcsCloudStorageV1Parameters gcsStorage = new GcsCloudStorageV1Parameters();
logging.setGcs(gcsStorage);
CloudwatchParams cloudwatchParamsStorage = new CloudwatchParams();
logging.setCloudwatch(cloudwatchParamsStorage);
telemetry.setLogging(logging);
Features features = new Features();
features.setClusterLogsCollection(new FeatureSetting());
features.setMonitoring(new FeatureSetting());
features.setCloudStorageLogging(new FeatureSetting());
features.setWorkloadAnalytics(new FeatureSetting());
telemetry.setFeatures(features);
WorkloadAnalytics workloadAnalytics = new WorkloadAnalytics();
workloadAnalytics.setAttributes(Map.of());
telemetry.setWorkloadAnalytics(workloadAnalytics);
stack.setTelemetry(telemetry);
Backup backup = new Backup();
backup.setStorageLocation(BACKUP_STORAGE_LOCATION);
S3CloudStorageV1Parameters s3BackupLocation = new S3CloudStorageV1Parameters();
backup.setS3(s3BackupLocation);
AdlsGen2CloudStorageV1Parameters adlsBackupLocation = new AdlsGen2CloudStorageV1Parameters();
backup.setAdlsGen2(adlsBackupLocation);
GcsCloudStorageV1Parameters gcsBackupLocation = new GcsCloudStorageV1Parameters();
backup.setGcs(gcsBackupLocation);
stack.setBackup(backup);
StackTags tags = new StackTags(USER_DEFINED_TAGS, APPLICATION_TAGS, DEFAULT_TAGS);
stack.setTags(new Json(tags));
when(freeIpaService.findByStack(stack)).thenReturn(freeIpa);
// Convert
CreateFreeIpaRequest request = underTest.convert(stack);
// Validate
assertNotNull(request);
assertEquals(ENVIRONMENT_CRN, request.getEnvironmentCrn());
assertEquals(NAME, request.getName());
assertEquals(GATEWAY_PORT, request.getGatewayPort());
assertTrue(request.getUseCcm());
assertEquals(Tunnel.CCMV2, request.getTunnel());
assertEquals(CLOUD_PLATFORM, request.getVariant());
PlacementRequest placementRequest = request.getPlacement();
assertNotNull(placementRequest);
assertEquals(REGION, placementRequest.getRegion());
assertEquals(AVAILIBILTYY_ZONE, placementRequest.getAvailabilityZone());
assertEquals(1, request.getInstanceGroups().size());
InstanceGroupRequest igRequest = request.getInstanceGroups().get(0);
assertEquals(INSTANCE_GROUP_NAME, igRequest.getName());
InstanceTemplateRequest templateRequest = igRequest.getInstanceTemplate();
assertNotNull(templateRequest);
assertEquals(INSTANCE_TYPE, templateRequest.getInstanceType());
assertNotNull(templateRequest.getAws());
assertNotNull(templateRequest.getAws().getSpot());
assertEquals(EC2_SPOT_PERCENTAGE, templateRequest.getAws().getSpot().getPercentage());
assertEquals(EC2_SPOT_MAX_PRICE, templateRequest.getAws().getSpot().getMaxPrice());
List<VolumeRequest> volumeRequests = templateRequest.getAttachedVolumes().stream().collect(Collectors.toList());
assertEquals(1, volumeRequests.size());
assertEquals(VOLUME_TYPE, volumeRequests.get(0).getType());
assertEquals(VOLUMNE_COUNT, volumeRequests.get(0).getCount());
assertEquals(VOLUMNE_SIZE, volumeRequests.get(0).getSize());
assertNotNull(igRequest.getNetwork());
assertNotNull(igRequest.getNetwork().getAws());
assertEquals(SUBNET_IDS, igRequest.getNetwork().getAws().getSubnetIds());
assertEquals(NODE_COUNT, ig.getNodeCount());
assertNotNull(igRequest.getSecurityGroup());
assertEquals(SECURITY_GROUP_IDS, igRequest.getSecurityGroup().getSecurityGroupIds());
List<SecurityRuleRequest> srRequst = igRequest.getSecurityGroup().getSecurityRules();
assertEquals(1, srRequst.size());
assertTrue(srRequst.get(0).isModifiable());
assertEquals(List.of(PORT), srRequst.get(0).getPorts());
assertEquals(PROTOCOL, srRequst.get(0).getProtocol());
assertEquals(CIDR, srRequst.get(0).getSubnet());
assertEquals(InstanceGroupType.MASTER, ig.getInstanceGroupType());
StackAuthenticationRequest stackAuthenticationRequest = request.getAuthentication();
assertNotNull(stackAuthenticationRequest);
assertEquals(LOGIN_NAME, stackAuthenticationRequest.getLoginUserName());
assertEquals(PUBLIC_KEY, stackAuthenticationRequest.getPublicKey());
assertEquals(PUBLIC_KEY_ID, stackAuthenticationRequest.getPublicKeyId());
NetworkRequest networkRequest = request.getNetwork();
assertNotNull(networkRequest);
assertEquals(CloudPlatform.AWS, networkRequest.getCloudPlatform());
assertEquals(List.of(CIDR), networkRequest.getNetworkCidrs());
assertEquals(OutboundInternetTraffic.ENABLED, networkRequest.getOutboundInternetTraffic());
assertNotNull(networkRequest.getAws());
assertNull(networkRequest.getAzure());
assertNull(networkRequest.getGcp());
assertNull(networkRequest.getMock());
assertNull(networkRequest.getYarn());
assertEquals(CloudPlatform.AWS, networkRequest.getAws().getCloudPlatform());
assertEquals(VPC_ID, networkRequest.getAws().getVpcId());
assertEquals(SUBNET_ID, networkRequest.getAws().getSubnetId());
ImageSettingsRequest imageSettingsRequest = request.getImage();
assertNotNull(imageSettingsRequest);
assertEquals(IMAGE_ID, imageSettingsRequest.getId());
assertEquals(IMAGE_CATALOG_URL, imageSettingsRequest.getCatalog());
assertEquals(IMAGE_OS, imageSettingsRequest.getOs());
FreeIpaServerRequest freeIpaServerRequest = request.getFreeIpa();
assertNotNull(freeIpaServerRequest);
assertEquals(ADMIN_GROUP_NAME, freeIpaServerRequest.getAdminGroupName());
assertEquals(ADMIN_PASSWORD, freeIpaServerRequest.getAdminPassword());
assertEquals(DOMAIN, freeIpaServerRequest.getDomain());
assertEquals(HOSTNAME, freeIpaServerRequest.getHostname());
TelemetryRequest telemetryRequest = request.getTelemetry();
assertNotNull(telemetryRequest);
assertEquals(fluentAttributes, telemetryRequest.getFluentAttributes());
assertNotNull(telemetryRequest.getLogging());
assertEquals(STORAGE_LOCATION_REQUEST, telemetryRequest.getLogging().getStorageLocation());
assertEquals(s3Storage, telemetryRequest.getLogging().getS3());
assertEquals(adlsStorage, telemetryRequest.getLogging().getAdlsGen2());
assertEquals(gcsStorage, telemetryRequest.getLogging().getGcs());
assertNotNull(telemetryRequest.getLogging().getCloudwatch());
assertNotNull(telemetryRequest.getFeatures());
assertNotNull(telemetryRequest.getFeatures().getClusterLogsCollection());
assertNotNull(telemetryRequest.getFeatures().getMonitoring());
assertNotNull(telemetryRequest.getFeatures().getCloudStorageLogging());
assertNotNull(telemetryRequest.getFeatures().getWorkloadAnalytics());
assertNotNull(telemetryRequest.getWorkloadAnalytics());
assertEquals(Map.of(), telemetryRequest.getWorkloadAnalytics().getAttributes());
BackupRequest backupRequest = request.getBackup();
assertNotNull(backupRequest);
assertEquals(BACKUP_STORAGE_LOCATION_REQUEST, backupRequest.getStorageLocation());
assertEquals(s3BackupLocation, backupRequest.getS3());
assertEquals(adlsBackupLocation, backupRequest.getAdlsGen2());
assertEquals(gcsBackupLocation, backupRequest.getGcs());
assertEquals(USER_DEFINED_TAGS, request.getTags());
}
use of com.sequenceiq.freeipa.entity.StackAuthentication in project cloudbreak by hortonworks.
the class CreateFreeIpaRequestToStackConverterTest method testConvertForInstanceGroupsWhenDiskEncryptionSetIdIsPresent.
@Test
void testConvertForInstanceGroupsWhenDiskEncryptionSetIdIsPresent() {
CreateFreeIpaRequest source = createCreateFreeIpaRequest();
DetailedEnvironmentResponse environmentResponse = new DetailedEnvironmentResponse();
environmentResponse.setAzure(AzureEnvironmentParameters.builder().withResourceEncryptionParameters(AzureResourceEncryptionParameters.builder().withDiskEncryptionSetId("dummyDiskEncryptionSetId").build()).build());
when(crnService.createCrn(ACCOUNT_ID, CrnResourceDescriptor.FREEIPA)).thenReturn("resourceCrn");
when(stackAuthenticationConverter.convert(source.getAuthentication())).thenReturn(new StackAuthentication());
when(instanceGroupConverter.convert(any(), any(), any(), any(), any(), any(), mapCaptorForEncryption.capture())).thenReturn(new InstanceGroup());
when(telemetryConverter.convert(source.getTelemetry())).thenReturn(new Telemetry());
when(backupConverter.convert(source.getTelemetry())).thenReturn(new Backup());
when(entitlementService.internalTenant(ACCOUNT_ID)).thenReturn(Boolean.FALSE);
when(costTagging.prepareDefaultTags(any())).thenReturn(new HashMap<>());
Future<String> owner = CompletableFuture.completedFuture("dummyUser");
underTest.convert(source, environmentResponse, ACCOUNT_ID, owner, "crn1", CloudPlatform.AZURE.name());
assertEquals(mapCaptorForEncryption.getValue().get(DISK_ENCRYPTION_SET_ID), "dummyDiskEncryptionSetId");
}
use of com.sequenceiq.freeipa.entity.StackAuthentication in project cloudbreak by hortonworks.
the class CreateFreeIpaRequestToStackConverterTest method testConvertForInstanceGroupsWhenEncryptionKeyIsPresentForGcp.
@Test
void testConvertForInstanceGroupsWhenEncryptionKeyIsPresentForGcp() {
CreateFreeIpaRequest source = createCreateFreeIpaRequest();
DetailedEnvironmentResponse environmentResponse = new DetailedEnvironmentResponse();
environmentResponse.setGcp(GcpEnvironmentParameters.builder().withResourceEncryptionParameters(GcpResourceEncryptionParameters.builder().withEncryptionKey("dummyEncryptionKey").build()).build());
when(crnService.createCrn(ACCOUNT_ID, CrnResourceDescriptor.FREEIPA)).thenReturn("resourceCrn");
when(stackAuthenticationConverter.convert(source.getAuthentication())).thenReturn(new StackAuthentication());
when(instanceGroupConverter.convert(any(), any(), any(), any(), any(), any(), mapCaptorForEncryption.capture())).thenReturn(new InstanceGroup());
when(telemetryConverter.convert(source.getTelemetry())).thenReturn(new Telemetry());
when(backupConverter.convert(source.getTelemetry())).thenReturn(new Backup());
when(entitlementService.internalTenant(ACCOUNT_ID)).thenReturn(Boolean.FALSE);
when(costTagging.prepareDefaultTags(any())).thenReturn(new HashMap<>());
Future<String> owner = CompletableFuture.completedFuture("dummyUser");
underTest.convert(source, environmentResponse, ACCOUNT_ID, owner, "crn1", CloudPlatform.GCP.name());
assertEquals(mapCaptorForEncryption.getValue().get(GCP_KMS_ENCRYPTION_KEY), "dummyEncryptionKey");
}
Aggregations