Search in sources :

Example 26 with Region

use of com.sequenceiq.environment.environment.domain.Region in project cloudbreak by hortonworks.

the class AzureEnvironmentSecurityGroupValidator method validateSecurityGroup.

private void validateSecurityGroup(EnvironmentDto environmentDto, ValidationResult.ValidationResultBuilder resultBuilder, String securityGroupIds) {
    Region region = environmentDto.getRegions().iterator().next();
    PlatformResourceRequest request = platformParameterService.getPlatformResourceRequest(environmentDto.getAccountId(), environmentDto.getCredential().getName(), null, region.getName(), getCloudPlatform().name(), null);
    CloudSecurityGroups securityGroups = platformParameterService.getSecurityGroups(request);
    boolean securityGroupFoundInRegion = false;
    Map<String, Set<CloudSecurityGroup>> cloudSecurityGroupsResponses = securityGroups.getCloudSecurityGroupsResponses();
    if (Objects.nonNull(cloudSecurityGroupsResponses)) {
        Set<CloudSecurityGroup> cloudSecurityGroups = cloudSecurityGroupsResponses.get(region.getName());
        for (String securityGroupId : getSecurityGroupIds(securityGroupIds)) {
            securityGroupFoundInRegion = false;
            if (Objects.nonNull(cloudSecurityGroups)) {
                for (CloudSecurityGroup cloudSecurityGroup : cloudSecurityGroups) {
                    String groupId = cloudSecurityGroup.getGroupId();
                    if (!Strings.isNullOrEmpty(groupId) && groupId.equalsIgnoreCase(securityGroupId)) {
                        securityGroupFoundInRegion = true;
                        break;
                    }
                }
            }
            if (!securityGroupFoundInRegion) {
                break;
            }
        }
    }
    if (!securityGroupFoundInRegion) {
        LOGGER.info("The security groups {} are not presented in the region {}", securityGroupIds, region.getName());
        resultBuilder.error(securityGroupNotInTheSameRegion(securityGroupIds, region.getName()));
    }
}
Also used : Set(java.util.Set) CloudSecurityGroups(com.sequenceiq.cloudbreak.cloud.model.CloudSecurityGroups) Region(com.sequenceiq.environment.environment.domain.Region) PlatformResourceRequest(com.sequenceiq.environment.platformresource.PlatformResourceRequest) CloudSecurityGroup(com.sequenceiq.cloudbreak.cloud.model.CloudSecurityGroup)

Example 27 with Region

use of com.sequenceiq.environment.environment.domain.Region in project cloudbreak by hortonworks.

the class EnvironmentDetailsToCDPEnvironmentDetailsConverter method convert.

public UsageProto.CDPEnvironmentDetails convert(EnvironmentDetails srcEnvironmentDetails) {
    UsageProto.CDPEnvironmentDetails.Builder cdpEnvironmentDetails = UsageProto.CDPEnvironmentDetails.newBuilder();
    cdpEnvironmentDetails.setNumberOfAvailabilityZones(DEFAULT_INTEGER_VALUE);
    if (srcEnvironmentDetails != null) {
        if (srcEnvironmentDetails.getRegions() != null) {
            cdpEnvironmentDetails.setRegion(srcEnvironmentDetails.getRegions().stream().map(Region::getName).filter(Objects::nonNull).map(region -> region.toLowerCase().replace(" ", "")).sorted().distinct().collect(Collectors.joining(",")));
        }
        if (srcEnvironmentDetails.getCloudPlatform() != null) {
            cdpEnvironmentDetails.setEnvironmentType(UsageProto.CDPEnvironmentsEnvironmentType.Value.valueOf(srcEnvironmentDetails.getCloudPlatform()));
        }
        NetworkDto network = srcEnvironmentDetails.getNetwork();
        if (network != null && network.getSubnetMetas() != null) {
            if (network.getSubnetMetas().isEmpty()) {
                cdpEnvironmentDetails.setNumberOfAvailabilityZones(0);
            } else {
                List<String> availabilityZones = network.getSubnetMetas().values().stream().map(CloudSubnet::getAvailabilityZone).filter(Objects::nonNull).sorted().distinct().collect(Collectors.toUnmodifiableList());
                if (!availabilityZones.isEmpty()) {
                    cdpEnvironmentDetails.setNumberOfAvailabilityZones(availabilityZones.size());
                    cdpEnvironmentDetails.setAvailabilityZones(String.join(",", availabilityZones));
                }
            }
        }
        cdpEnvironmentDetails.setNetworkDetails(networkDetailsConverter.convert(srcEnvironmentDetails));
        cdpEnvironmentDetails.setAwsDetails(convertAwsDetails(srcEnvironmentDetails.getParameters()));
        cdpEnvironmentDetails.setAzureDetails(convertAzureDetails(srcEnvironmentDetails.getParameters()));
        cdpEnvironmentDetails.setGcpDetails(convertGcpDetails(srcEnvironmentDetails.getParameters()));
        Map<String, String> userTags = srcEnvironmentDetails.getUserDefinedTags();
        if (userTags != null && !userTags.isEmpty()) {
            cdpEnvironmentDetails.setUserTags(JsonUtil.writeValueAsStringSilentSafe(userTags));
        }
    }
    UsageProto.CDPEnvironmentDetails ret = cdpEnvironmentDetails.build();
    LOGGER.debug("Converted CDPEnvironmentDetails event: {}", ret);
    return ret;
}
Also used : NetworkDto(com.sequenceiq.environment.network.dto.NetworkDto) Region(com.sequenceiq.environment.environment.domain.Region) UsageProto(com.cloudera.thunderhead.service.common.usage.UsageProto) CloudSubnet(com.sequenceiq.cloudbreak.cloud.model.CloudSubnet)

Aggregations

Region (com.sequenceiq.environment.environment.domain.Region)27 PlatformResourceRequest (com.sequenceiq.environment.platformresource.PlatformResourceRequest)15 EnvironmentDto (com.sequenceiq.environment.environment.dto.EnvironmentDto)12 Test (org.junit.jupiter.api.Test)10 ValidationResultBuilder (com.sequenceiq.cloudbreak.validation.ValidationResult.ValidationResultBuilder)9 EnvironmentValidationDto (com.sequenceiq.environment.environment.dto.EnvironmentValidationDto)9 Environment (com.sequenceiq.environment.environment.domain.Environment)7 Set (java.util.Set)7 HashMap (java.util.HashMap)6 CloudSecurityGroups (com.sequenceiq.cloudbreak.cloud.model.CloudSecurityGroups)4 Credential (com.sequenceiq.environment.credential.domain.Credential)4 Map (java.util.Map)4 Optional (java.util.Optional)4 Logger (org.slf4j.Logger)4 LoggerFactory (org.slf4j.LoggerFactory)4 CloudSecurityGroup (com.sequenceiq.cloudbreak.cloud.model.CloudSecurityGroup)3 UsageProto (com.cloudera.thunderhead.service.common.usage.UsageProto)2 Lists (com.google.common.collect.Lists)2 CompositeAuthResourcePropertyProvider (com.sequenceiq.authorization.service.CompositeAuthResourcePropertyProvider)2 EnvironmentPropertyProvider (com.sequenceiq.authorization.service.EnvironmentPropertyProvider)2