/** * Update the Internet gateway information for the VPC in question. For the list of Internet * gateways received based on the vpc filter work through the list of attachments and VPCs * and update the Internet gateway information in the network state that maps to the VPC. */ @Override protected void consumeSuccess(DescribeInternetGatewaysRequest request, DescribeInternetGatewaysResult result) { for (InternetGateway resultGateway : result.getInternetGateways()) { for (InternetGatewayAttachment attachment : resultGateway.getAttachments()) { if (this.context.vpcs.containsKey(attachment.getVpcId())) { NetworkState networkStateToUpdate = this.context.vpcs .get(attachment.getVpcId()); networkStateToUpdate.customProperties.put(AWS_GATEWAY_ID, resultGateway.getInternetGatewayId()); this.context.vpcs.put(attachment.getVpcId(), networkStateToUpdate); } } } }
private void validateExistingIGW(AwsNetworkView awsNetworkView, AmazonEC2Client amazonEC2Client) { if (awsNetworkView.isExistingIGW()) { DescribeInternetGatewaysRequest describeInternetGatewaysRequest = new DescribeInternetGatewaysRequest(); describeInternetGatewaysRequest.withInternetGatewayIds(awsNetworkView.getExistingIGW()); DescribeInternetGatewaysResult describeInternetGatewaysResult = amazonEC2Client.describeInternetGateways(describeInternetGatewaysRequest); if (describeInternetGatewaysResult.getInternetGateways().size() < 1) { throw new CloudConnectorException(String.format(IGW_DOES_NOT_EXIST_MSG, awsNetworkView.getExistingIGW())); } else { InternetGateway internetGateway = describeInternetGatewaysResult.getInternetGateways().get(0); InternetGatewayAttachment attachment = internetGateway.getAttachments().get(0); if (attachment != null && !attachment.getVpcId().equals(awsNetworkView.getExistingVPC())) { throw new CloudConnectorException(String.format(IGWVPC_DOES_NOT_EXIST_MSG, awsNetworkView.getExistingIGW(), awsNetworkView.getExistingVPC())); } } } }
public InternetGateway getInternetGateway(String resourceId) { DescribeInternetGatewaysRequest req = new DescribeInternetGatewaysRequest() .withInternetGatewayIds(resourceId); DescribeInternetGatewaysResult res = this.client.describeInternetGateways(req); List<InternetGateway> internetGateways = res.getInternetGateways(); return internetGateways.isEmpty() ? null : internetGateways.get(0); }
@Override public CloudGateWays gateways(CloudCredential cloudCredential, Region region, Map<String, String> filters) throws Exception { AmazonEC2Client ec2Client = awsClient.createAccess(cloudCredential); Map<String, Set<CloudGateWay>> resultCloudGateWayMap = new HashMap<>(); CloudRegions regions = regions(cloudCredential, region, filters); for (Map.Entry<Region, List<AvailabilityZone>> regionListEntry : regions.getCloudRegions().entrySet()) { if (region == null || Strings.isNullOrEmpty(region.value()) || regionListEntry.getKey().value().equals(region.value())) { ec2Client.setRegion(RegionUtils.getRegion(regionListEntry.getKey().value())); DescribeInternetGatewaysRequest describeInternetGatewaysRequest = new DescribeInternetGatewaysRequest(); DescribeInternetGatewaysResult describeInternetGatewaysResult = ec2Client.describeInternetGateways(describeInternetGatewaysRequest); Set<CloudGateWay> gateWays = new HashSet<>(); for (InternetGateway internetGateway : describeInternetGatewaysResult.getInternetGateways()) { CloudGateWay cloudGateWay = new CloudGateWay(); cloudGateWay.setId(internetGateway.getInternetGatewayId()); cloudGateWay.setName(internetGateway.getInternetGatewayId()); List<String> vpcs = new ArrayList<>(); for (InternetGatewayAttachment internetGatewayAttachment : internetGateway.getAttachments()) { vpcs.add(internetGatewayAttachment.getVpcId()); } Map<String, Object> properties = new HashMap<>(); properties.put("attachment", vpcs); cloudGateWay.setProperties(properties); gateWays.add(cloudGateWay); } for (AvailabilityZone availabilityZone : regionListEntry.getValue()) { resultCloudGateWayMap.put(availabilityZone.value(), gateWays); } } } return new CloudGateWays(resultCloudGateWayMap); }
@Override public List<AbstractResource<?>> describeInternetGateways(Account account, Region region, DateTime dt, Ec2Filter... filters) { AmazonEC2 ec2 = findClient(account, region); DescribeInternetGatewaysRequest req = new DescribeInternetGatewaysRequest(); for (Ec2Filter filter : filters) { Filter f = new Filter().withName(filter.getName()).withValues(filter.getValues()); req.withFilters(f); } log.debug("start describing internet gateways for account:{} in region:{} via api", account.getId() + "=>" + account.getName(), region); DescribeInternetGatewaysResult res = ec2.describeInternetGateways(req); return converter.toVpcInternetGateways(res.getInternetGateways(), account.getId(), region, dt); }
/** * Describe internet gateway. * * @return InternetGateway */ protected final InternetGateway getInternetGateway() { InternetGateway internetGateway = null; DescribeInternetGatewaysRequest req = new DescribeInternetGatewaysRequest(); DescribeInternetGatewaysResult result = amazonEC2Client.describeInternetGateways(req); if (result != null && !result.getInternetGateways().isEmpty()) { internetGateway = result.getInternetGateways().get(0); } return internetGateway; }
/** * Describe internet gateways. * * @return List of InternetGateway */ protected final List<InternetGateway> getInternetGateways() { List<InternetGateway> internetGateways = null; DescribeInternetGatewaysRequest req = new DescribeInternetGatewaysRequest(); DescribeInternetGatewaysResult result = amazonEC2Client.describeInternetGateways(req); if (result != null && !result.getInternetGateways().isEmpty()) { internetGateways = result.getInternetGateways(); } return internetGateways; }
@Override public DescribeInternetGatewaysResult describeInternetGateways(DescribeInternetGatewaysRequest describeInternetGatewaysRequest) throws AmazonServiceException, AmazonClientException { throw new UnsupportedOperationException("Not supported in mock"); }
@Override public DescribeInternetGatewaysResult describeInternetGateways() throws AmazonServiceException, AmazonClientException { throw new UnsupportedOperationException("Not supported in mock"); }
@Override public boolean load(DescribeInternetGatewaysRequest request, ResultCapture<DescribeInternetGatewaysResult> extractor) { return resource.load(request, extractor); }
/** * Makes a call to the service to load this resource's attributes if they * are not loaded yet, and use a ResultCapture to retrieve the low-level * client response * The following request parameters will be populated from the data of this * <code>InternetGateway</code> resource, and any conflicting parameter * value set in the request will be overridden: * <ul> * <li> * <b><code>InternetGatewayIds.0</code></b> * - mapped from the <code>Id</code> identifier. * </li> * </ul> * * <p> * * @return Returns {@code true} if the resource is not yet loaded when this * method was invoked, which indicates that a service call has been * made to retrieve the attributes. * @see DescribeInternetGatewaysRequest */ boolean load(DescribeInternetGatewaysRequest request, ResultCapture<DescribeInternetGatewaysResult> extractor);