use of com.sequenceiq.cloudbreak.cloud.model.network.SubnetType.PUBLIC in project cloudbreak by hortonworks.
the class GcpPlatformResources method securityGroups.
@Override
public CloudSecurityGroups securityGroups(ExtendedCloudCredential cloudCredential, Region region, Map<String, String> filters) throws IOException {
Compute compute = gcpComputeFactory.buildCompute(cloudCredential);
String projectId = gcpStackUtil.getProjectId(cloudCredential);
Map<String, Set<CloudSecurityGroup>> result = new HashMap<>();
FirewallList firewallList = compute.firewalls().list(projectId).execute();
if (firewallList.getItems() != null) {
for (Firewall firewall : firewallList.getItems()) {
Map<String, Object> properties = new HashMap<>();
properties.put("network", getNetworkName(firewall));
CloudSecurityGroup cloudSecurityGroup = new CloudSecurityGroup(firewall.getName(), firewall.getName(), properties);
result.computeIfAbsent(region.value(), k -> new HashSet<>()).add(cloudSecurityGroup);
}
}
if (filters != null) {
String sharedProjectId = filters.get(SHARED_PROJECT_ID);
if (!Strings.isNullOrEmpty(sharedProjectId)) {
try {
FirewallList sharedProjectFirewalls = compute.firewalls().list(sharedProjectId).execute();
if (sharedProjectFirewalls.getItems() != null) {
for (Firewall firewall : sharedProjectFirewalls.getItems()) {
Map<String, Object> properties = new HashMap<>();
properties.put("network", getNetworkName(firewall));
CloudSecurityGroup cloudSecurityGroup = new CloudSecurityGroup(firewall.getName(), firewall.getName(), properties);
result.computeIfAbsent(region.value(), k -> new HashSet<>()).add(cloudSecurityGroup);
}
}
} catch (Exception ex) {
LOGGER.warn(String.format("We can not read the host project with id %s", sharedProjectId));
}
}
}
return new CloudSecurityGroups(result);
}
use of com.sequenceiq.cloudbreak.cloud.model.network.SubnetType.PUBLIC in project cloudbreak by hortonworks.
the class GcpPlatformResources method accessConfigs.
@Override
public CloudAccessConfigs accessConfigs(ExtendedCloudCredential cloudCredential, Region region, Map<String, String> filters) {
Iam iam = gcpIamFactory.buildIam(cloudCredential);
String projectId = gcpStackUtil.getProjectId(cloudCredential);
Set<CloudAccessConfig> collect = new HashSet<>();
try {
Iam.Projects.ServiceAccounts.List listServiceAccountEmailsRequest = iam.projects().serviceAccounts().list("projects/" + projectId).setPageSize(DEFAULT_PAGE_SIZE);
ListServiceAccountsResponse response;
do {
response = listServiceAccountEmailsRequest.execute();
Set<CloudAccessConfig> accessConfigs = response.getAccounts().stream().map(e -> new CloudAccessConfig(e.getName(), e.getEmail(), new HashMap<>())).collect(Collectors.toSet());
collect.addAll(accessConfigs);
listServiceAccountEmailsRequest.setPageToken(response.getNextPageToken());
} while (response.getNextPageToken() != null);
return new CloudAccessConfigs(collect);
} catch (Exception ex) {
return new CloudAccessConfigs(collect);
}
}
use of com.sequenceiq.cloudbreak.cloud.model.network.SubnetType.PUBLIC in project cloudbreak by hortonworks.
the class AwsPlatformResources method collectInstanceStorageCount.
public InstanceStoreMetadata collectInstanceStorageCount(AuthenticatedContext ac, List<String> instanceTypes, List<String> entitlements) {
Location location = ac.getCloudContext().getLocation();
try {
String accountId = ac.getCloudContext().getAccountId();
ExtendedCloudCredential extendedCloudCredential = new ExtendedCloudCredential(ac.getCloudCredential(), ac.getCloudContext().getPlatform().value(), "", ac.getCloudContext().getCrn(), accountId, entitlements);
CloudVmTypes cloudVmTypes = virtualMachines(extendedCloudCredential, location.getRegion(), Map.of());
Map<String, Set<VmType>> cloudVmResponses = cloudVmTypes.getCloudVmResponses();
Map<String, VolumeParameterConfig> instanceTypeToInstanceStorageMap = cloudVmResponses.getOrDefault(location.getAvailabilityZone().value(), Set.of()).stream().filter(vmType -> instanceTypes.contains(vmType.value())).filter(vmType -> Objects.nonNull(vmType.getMetaData().getEphemeralConfig())).collect(Collectors.toMap(VmType::value, vmType -> vmType.getMetaData().getEphemeralConfig()));
return new InstanceStoreMetadata(instanceTypeToInstanceStorageMap);
} catch (Exception e) {
LOGGER.warn("Failed to get vm type data: {}", instanceTypes, e);
throw new CloudConnectorException(e.getMessage(), e);
}
}
use of com.sequenceiq.cloudbreak.cloud.model.network.SubnetType.PUBLIC in project cloudbreak by hortonworks.
the class AzureNetworkConnectorTest method testCreateNetworkWithSubnetsShouldReturnTheNetworkNameAndSubnetName.
@Test
public void testCreateNetworkWithSubnetsShouldReturnTheNetworkNameAndSubnetName() {
String networkCidr = "0.0.0.0/16";
Set<NetworkSubnetRequest> subnets = new HashSet<>(Arrays.asList(createSubnetRequest(SUBNET_CIDR_0), createSubnetRequest(SUBNET_CIDR_1)));
Deployment templateDeployment = mock(Deployment.class);
ResourceGroup resourceGroup = mock(ResourceGroup.class);
Map<String, Map> outputs = createOutput();
ArrayList<SubnetRequest> subnetRequests = Lists.newArrayList(publicSubnetRequest("10.0.1.0/24", 0), publicSubnetRequest("10.0.1.0/24", 1));
NetworkCreationRequest networkCreationRequest = createNetworkRequest(networkCidr, subnets);
when(resourceGroup.name()).thenReturn(ENV_NAME);
when(azureSubnetRequestProvider.provide(anyString(), anyList(), anyList(), anyBoolean())).thenReturn(subnetRequests);
when(azureUtils.generateResourceGroupNameByNameAndId(anyString(), anyString())).thenReturn(ENV_NAME);
when(azureClientService.getClient(networkCreationRequest.getCloudCredential())).thenReturn(azureClient);
when(azureNetworkTemplateBuilder.build(networkCreationRequest, subnetRequests, resourceGroup.name())).thenReturn(TEMPLATE);
when(azureClient.createTemplateDeployment(ENV_NAME, STACK_NAME, TEMPLATE, PARAMETER)).thenReturn(templateDeployment);
when(azureClient.createResourceGroup(ENV_NAME, REGION.value(), Collections.emptyMap())).thenReturn(resourceGroup);
when(resourceGroup.name()).thenReturn(ENV_NAME);
when(templateDeployment.outputs()).thenReturn(outputs);
CreatedCloudNetwork actual = underTest.createNetworkWithSubnets(networkCreationRequest);
assertEquals(ENV_NAME, actual.getNetworkId());
assertTrue(actual.getSubnets().stream().anyMatch(cloudSubnet -> cloudSubnet.getSubnetId().equals(SUBNET_ID_0)));
assertTrue(actual.getSubnets().stream().anyMatch(cloudSubnet -> cloudSubnet.getSubnetId().equals(SUBNET_ID_1)));
assertTrue(actual.getSubnets().size() == 2);
}
use of com.sequenceiq.cloudbreak.cloud.model.network.SubnetType.PUBLIC in project cloudbreak by hortonworks.
the class GcpPlatformResources method networks.
@Override
public CloudNetworks networks(ExtendedCloudCredential cloudCredential, Region region, Map<String, String> filters) throws Exception {
Compute compute = gcpComputeFactory.buildCompute(cloudCredential);
String projectId = gcpStackUtil.getProjectId(cloudCredential);
Map<String, Set<CloudNetwork>> result = new HashMap<>();
String networkId = null;
List<String> subnetIds = new ArrayList<>();
String sharedProjectId = null;
if (filters != null) {
networkId = filters.getOrDefault("networkId", null);
subnetIds = getSubnetIds(filters);
sharedProjectId = filters.getOrDefault("sharedProjectId", null);
}
LOGGER.debug("Get subnets with filter values, networkId : {}, subnetId : {}", networkId, subnetIds);
Set<CloudNetwork> cloudNetworks = new HashSet<>();
NetworkList networkList = getNetworkList(compute, projectId, networkId, sharedProjectId);
SubnetworkList subnetworkList = getSubnetworkList(region, compute, projectId, subnetIds, sharedProjectId);
// GCP VPCs are global. Subnets have a global scope in region. So picking the first availability zone in the region for subnet.
String zone = compute.regions().get(projectId, region.value()).execute().getZones().stream().findFirst().map(tmpZone -> tmpZone.substring(tmpZone.lastIndexOf('/') + 1)).orElse(null);
LOGGER.debug("Zone chosen for the subnets is {}", zone);
for (Network network : networkList.getItems()) {
Map<String, Object> properties = new HashMap<>();
properties.put("gatewayIPv4", Strings.nullToEmpty(network.getGatewayIPv4()));
properties.put("description", Strings.nullToEmpty(network.getDescription()));
properties.put("IPv4Range", Strings.nullToEmpty(network.getIPv4Range()));
properties.put("creationTimestamp", Strings.nullToEmpty(network.getCreationTimestamp()));
Set<CloudSubnet> subnets = new HashSet<>();
if (subnetworkList != null && network.getSubnetworks() != null && subnetworkList.getItems() != null) {
for (Subnetwork subnetwork : subnetworkList.getItems()) {
if (network.getSubnetworks().contains(subnetwork.getSelfLink())) {
boolean igwAvailable = !Strings.isNullOrEmpty(subnetwork.getGatewayAddress());
subnets.add(new CloudSubnet(subnetwork.getId().toString(), subnetwork.getName(), zone, subnetwork.getIpCidrRange(), subnetwork.getPrivateIpGoogleAccess(), !subnetwork.getPrivateIpGoogleAccess(), igwAvailable, igwAvailable ? PUBLIC : PRIVATE));
}
}
}
CloudNetwork cloudNetwork = new CloudNetwork(network.getName(), network.getId().toString(), subnets, properties);
cloudNetworks.add(cloudNetwork);
}
result.put(region.value(), cloudNetworks);
return new CloudNetworks(result);
}
Aggregations