use of com.amazonaws.services.ec2.model.Subnet in project cloudbreak by hortonworks.
the class AwsResourceConnectorTest method testFindNonOverLappingCIDRWithNon24Subnets2.
@Test
public void testFindNonOverLappingCIDRWithNon24Subnets2() {
InstanceAuthentication instanceAuthentication = new InstanceAuthentication("sshkey", "", "cloudbreak");
Group group1 = new Group("group1", InstanceGroupType.CORE, Collections.emptyList(), null, null, instanceAuthentication, instanceAuthentication.getLoginUserName(), instanceAuthentication.getPublicKey());
Map<String, Object> networkParameters = new HashMap<>();
networkParameters.put("vpcId", "vpc-12345678");
networkParameters.put("internetGatewayId", "igw-12345678");
Network network = new Network(new Subnet(null), networkParameters);
CloudStack cloudStack = new CloudStack(singletonList(group1), network, null, emptyMap(), emptyMap(), null, instanceAuthentication, instanceAuthentication.getLoginUserName(), instanceAuthentication.getPublicKey());
AuthenticatedContext authenticatedContext = mock(AuthenticatedContext.class);
CloudContext cloudContext = mock(CloudContext.class);
Location location = mock(Location.class);
Vpc vpc = mock(Vpc.class);
DescribeVpcsResult describeVpcsResult = mock(DescribeVpcsResult.class);
AmazonEC2Client ec2Client = mock(AmazonEC2Client.class);
com.amazonaws.services.ec2.model.Subnet subnet1 = mock(com.amazonaws.services.ec2.model.Subnet.class);
com.amazonaws.services.ec2.model.Subnet subnet2 = mock(com.amazonaws.services.ec2.model.Subnet.class);
com.amazonaws.services.ec2.model.Subnet subnet3 = mock(com.amazonaws.services.ec2.model.Subnet.class);
com.amazonaws.services.ec2.model.Subnet subnet4 = mock(com.amazonaws.services.ec2.model.Subnet.class);
DescribeSubnetsResult subnetsResult = mock(DescribeSubnetsResult.class);
when(authenticatedContext.getCloudContext()).thenReturn(cloudContext);
when(cloudContext.getLocation()).thenReturn(location);
when(cloudContext.getName()).thenReturn(new String(new byte[] { 76 }));
when(location.getRegion()).thenReturn(Region.region("eu-west-1"));
when(awsClient.createAccess(any(), any())).thenReturn(ec2Client);
when(ec2Client.describeVpcs(any())).thenReturn(describeVpcsResult);
when(describeVpcsResult.getVpcs()).thenReturn(singletonList(vpc));
when(vpc.getCidrBlock()).thenReturn("10.0.0.0/16");
when(ec2Client.describeSubnets(any())).thenReturn(subnetsResult);
when(subnetsResult.getSubnets()).thenReturn(Arrays.asList(subnet1, subnet2, subnet3, subnet4));
when(subnet1.getCidrBlock()).thenReturn("10.0.0.0/20");
when(subnet2.getCidrBlock()).thenReturn("10.0.16.0/20");
when(subnet3.getCidrBlock()).thenReturn("10.0.32.0/20");
when(subnet4.getCidrBlock()).thenReturn("10.0.48.0/20");
String cidr = underTest.findNonOverLappingCIDR(authenticatedContext, cloudStack);
Assert.assertEquals("10.0.76.0/24", cidr);
}
use of com.amazonaws.services.ec2.model.Subnet in project eureka by Netflix.
the class ElasticNetworkInterfaceBinder method bind.
/**
* Binds an ENI to the instance.
*
* The candidate ENI's are deduced in the same wa the EIP binder works: Via dns records or via service urls,
* depending on configuration.
*
* It will try to attach the first ENI that is:
* Available
* For this subnet
* In the list of candidate ENI's
*
* @throws MalformedURLException
*/
public void bind() throws MalformedURLException {
InstanceInfo myInfo = ApplicationInfoManager.getInstance().getInfo();
String myInstanceId = ((AmazonInfo) myInfo.getDataCenterInfo()).get(AmazonInfo.MetaDataKey.instanceId);
String myZone = ((AmazonInfo) myInfo.getDataCenterInfo()).get(AmazonInfo.MetaDataKey.availabilityZone);
final List<String> ips = getCandidateIps();
Ordering<NetworkInterface> ipsOrder = Ordering.natural().onResultOf(new Function<NetworkInterface, Integer>() {
public Integer apply(NetworkInterface networkInterface) {
return ips.indexOf(networkInterface.getPrivateIpAddress());
}
});
AmazonEC2 ec2Service = getEC2Service();
String subnetId = instanceData(myInstanceId, ec2Service).getSubnetId();
DescribeNetworkInterfacesResult result = ec2Service.describeNetworkInterfaces(new DescribeNetworkInterfacesRequest().withFilters(new Filter("private-ip-address", ips)).withFilters(new Filter("status", Lists.newArrayList("available"))).withFilters(new Filter("subnet-id", Lists.newArrayList(subnetId))));
if (result.getNetworkInterfaces().isEmpty()) {
logger.info("No ip is free to be associated with this instance. Candidate ips are: {} for zone: {}", ips, myZone);
} else {
NetworkInterface selected = ipsOrder.min(result.getNetworkInterfaces());
ec2Service.attachNetworkInterface(new AttachNetworkInterfaceRequest().withNetworkInterfaceId(selected.getNetworkInterfaceId()).withDeviceIndex(1).withInstanceId(myInstanceId));
}
}
use of com.amazonaws.services.ec2.model.Subnet in project GNS by MobilityFirst.
the class AWSEC2 method createInstanceAndWait.
/**
* Create an Instance
*
* @param ec2
* @param amiRecord
* @param key
* @param securityGroup
* @return the instanceID string
*/
public static String createInstanceAndWait(AmazonEC2 ec2, AMIRecord amiRecord, String key, SecurityGroup securityGroup) {
RunInstancesRequest runInstancesRequest;
if (amiRecord.getVpcSubnet() != null) {
System.out.println("subnet: " + amiRecord.getVpcSubnet() + " securityGroup: " + securityGroup.getGroupName());
// new VPC
runInstancesRequest = new RunInstancesRequest().withMinCount(1).withMaxCount(1).withImageId(amiRecord.getName()).withInstanceType(amiRecord.getInstanceType()).withKeyName(key).withSubnetId(amiRecord.getVpcSubnet()).withSecurityGroupIds(Arrays.asList(securityGroup.getGroupId()));
} else {
runInstancesRequest = new RunInstancesRequest(amiRecord.getName(), 1, 1);
runInstancesRequest.setInstanceType(amiRecord.getInstanceType());
runInstancesRequest.setSecurityGroups(new ArrayList<>(Arrays.asList(securityGroup.getGroupName())));
runInstancesRequest.setKeyName(key);
}
RunInstancesResult runInstancesResult = ec2.runInstances(runInstancesRequest);
Instance instance = runInstancesResult.getReservation().getInstances().get(0);
String createdInstanceId = instance.getInstanceId();
System.out.println("Waiting for instance " + amiRecord.getName() + " to start");
long startTime = System.currentTimeMillis();
do {
ThreadUtils.sleep(1000);
if (System.currentTimeMillis() - startTime > 90000) {
// give it a minute and a half
System.out.println(createdInstanceId + " timed out waiting for start.");
return null;
}
// regrab the instance data from the server
instance = findInstance(ec2, createdInstanceId);
//System.out.print(instance.getState().getName());
System.out.print(".");
} while (instance != null && !instance.getState().getName().equals(InstanceStateRecord.RUNNING.getName()));
System.out.println();
return createdInstanceId;
}
use of com.amazonaws.services.ec2.model.Subnet in project herd by FINRAOS.
the class MockEc2OperationsImpl method describeSubnets.
/**
* In-memory implementation of describeSubnets. Returns the subnets from the pre-configured subnets. The method can be ordered to throw an
* AmazonServiceException with a specified error code by specifying a subnet ID with prefix "throw." followed by a string indicating the error code to
* throw. The exception thrown in this manner will always set the status code to 500.
*/
@Override
public DescribeSubnetsResult describeSubnets(AmazonEC2Client ec2Client, DescribeSubnetsRequest describeSubnetsRequest) {
List<Subnet> subnets = new ArrayList<>();
List<String> requestedSubnetIds = describeSubnetsRequest.getSubnetIds();
// add all subnets if request is empty (this is AWS behavior)
if (requestedSubnetIds.isEmpty()) {
requestedSubnetIds.addAll(mockSubnets.keySet());
}
for (String requestedSubnetId : requestedSubnetIds) {
MockSubnet mockSubnet = mockSubnets.get(requestedSubnetId);
// Throw exception if any of the subnet ID do not exist
if (mockSubnet == null) {
AmazonServiceException amazonServiceException;
if (requestedSubnetId.startsWith("throw.")) {
String errorCode = requestedSubnetId.substring("throw.".length());
amazonServiceException = new AmazonServiceException(errorCode);
amazonServiceException.setErrorCode(errorCode);
amazonServiceException.setStatusCode(500);
} else {
amazonServiceException = new AmazonServiceException("The subnet ID '" + requestedSubnetId + "' does not exist");
amazonServiceException.setErrorCode(Ec2DaoImpl.ERROR_CODE_SUBNET_ID_NOT_FOUND);
amazonServiceException.setStatusCode(400);
}
throw amazonServiceException;
}
subnets.add(mockSubnet.toAwsObject());
}
DescribeSubnetsResult describeSubnetsResult = new DescribeSubnetsResult();
describeSubnetsResult.setSubnets(subnets);
return describeSubnetsResult;
}
use of com.amazonaws.services.ec2.model.Subnet in project herd by FINRAOS.
the class MockSubnet method toAwsObject.
/**
* Converts this object into an AWS equivalent object.
*
* @return A new equivalent AWS object
*/
public Subnet toAwsObject() {
Subnet subnet = new Subnet();
subnet.setSubnetId(subnetId);
subnet.setAvailabilityZone(availabilityZone);
subnet.setAvailableIpAddressCount(availableIpAddressCount);
return subnet;
}
Aggregations