List of usage examples for com.amazonaws.services.ec2 AmazonEC2 startInstances
StartInstancesResult startInstances(StartInstancesRequest startInstancesRequest);
Starts an Amazon EBS-backed instance that you've previously stopped.
From source file:aws.example.ec2.StartStopInstance.java
License:Open Source License
public static void startInstance(String instance_id) { final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); DryRunSupportedRequest<StartInstancesRequest> dry_request = () -> { StartInstancesRequest request = new StartInstancesRequest().withInstanceIds(instance_id); return request.getDryRunRequest(); };/* w ww . jav a2 s. co m*/ DryRunResult dry_response = ec2.dryRun(dry_request); if (!dry_response.isSuccessful()) { System.out.printf("Failed dry run to start instance %s", instance_id); throw dry_response.getDryRunResponse(); } StartInstancesRequest request = new StartInstancesRequest().withInstanceIds(instance_id); ec2.startInstances(request); System.out.printf("Successfully started instance %s", instance_id); }
From source file:com.urbancode.terraform.tasks.aws.helpers.AWSHelper.java
License:Apache License
public void startInstances(List<String> instanceIds, AmazonEC2 ec2Client) throws RemoteException, InterruptedException { StartInstancesRequest startRequest = new StartInstancesRequest(instanceIds); ec2Client.startInstances(startRequest); for (String instanceId : instanceIds) { waitForState(instanceId, "running", 8, ec2Client); }/* www . j a v a2 s.c om*/ }
From source file:ec2.StartStopInstance.java
License:Open Source License
public static void startInstance(String instanceId) { final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient(); DryRunSupportedRequest<StartInstancesRequest> startInstanceDryRun = () -> { StartInstancesRequest request = new StartInstancesRequest().withInstanceIds(instanceId); return request.getDryRunRequest(); };//from w ww . j a va2 s . c o m DryRunResult dryRunResponse = ec2.dryRun(startInstanceDryRun); if (!dryRunResponse.isSuccessful()) { System.out.printf("Failed dry run to start instance %s", instanceId); throw dryRunResponse.getDryRunResponse(); } StartInstancesRequest request = new StartInstancesRequest().withInstanceIds(instanceId); ec2.startInstances(request); System.out.printf("Successfully started instance %s", instanceId); }
From source file:edu.umass.cs.aws.support.AWSEC2.java
License:Apache License
/** * Start an instance//from w ww.ja va 2 s .c om * * @param ec2 * @param createdInstanceId */ public static void startInstance(AmazonEC2 ec2, String createdInstanceId) { System.out.println("Starting Instance:" + createdInstanceId); List<String> instanceIds = new LinkedList<>(); instanceIds.add(createdInstanceId); StartInstancesRequest startIR = new StartInstancesRequest(instanceIds); ec2.startInstances(startIR); }
From source file:hudson.plugins.ec2.EC2ComputerLauncher.java
License:Open Source License
@Override public void launch(SlaveComputer _computer, TaskListener listener) { try {//from www . j av a 2 s.c o m EC2Computer computer = (EC2Computer) _computer; PrintStream logger = listener.getLogger(); final String baseMsg = "Node " + computer.getName() + "(" + computer.getInstanceId() + ")"; String msg; OUTER: while (true) { switch (computer.getState()) { case PENDING: msg = baseMsg + " is still pending/launching, waiting 5s"; break; case STOPPING: msg = baseMsg + " is still stopping, waiting 5s"; break; case RUNNING: msg = baseMsg + " is ready"; LOGGER.finer(msg); logger.println(msg); break OUTER; case STOPPED: msg = baseMsg + " is stopped, sending start request"; LOGGER.finer(msg); logger.println(msg); AmazonEC2 ec2 = computer.getCloud().connect(); List<String> instances = new ArrayList<String>(); instances.add(computer.getInstanceId()); StartInstancesRequest siRequest = new StartInstancesRequest(instances); StartInstancesResult siResult = ec2.startInstances(siRequest); msg = baseMsg + ": sent start request, result: " + siResult; LOGGER.finer(baseMsg); logger.println(baseMsg); continue OUTER; case SHUTTING_DOWN: case TERMINATED: // abort msg = baseMsg + " is terminated or terminating, aborting launch"; LOGGER.info(msg); logger.println(msg); return; default: msg = baseMsg + " is in an unknown state, retrying in 5s"; break; } // check every 5 secs Thread.sleep(5000); // and report to system log and console LOGGER.finest(msg); logger.println(msg); } launch(computer, logger, computer.describeInstance()); } catch (AmazonClientException e) { e.printStackTrace(listener.error(e.getMessage())); } catch (IOException e) { e.printStackTrace(listener.error(e.getMessage())); } catch (InterruptedException e) { e.printStackTrace(listener.error(e.getMessage())); } }
From source file:hudson.plugins.ec2.SlaveTemplate.java
License:Open Source License
/** * Provisions an On-demand EC2 slave by launching a new instance or * starting a previously-stopped instance. *//*from w ww. java2s . com*/ private EC2AbstractSlave provisionOndemand(TaskListener listener) throws AmazonClientException, IOException { PrintStream logger = listener.getLogger(); AmazonEC2 ec2 = getParent().connect(); try { String msg = "Launching " + ami + " for template " + description; logger.println(msg); LOGGER.info(msg); KeyPair keyPair = getKeyPair(ec2); RunInstancesRequest riRequest = new RunInstancesRequest(ami, 1, 1); InstanceNetworkInterfaceSpecification net = new InstanceNetworkInterfaceSpecification(); if (useEphemeralDevices) { setupEphemeralDeviceMapping(riRequest); } else { setupCustomDeviceMapping(riRequest); } List<Filter> diFilters = new ArrayList<Filter>(); diFilters.add(new Filter("image-id").withValues(ami)); if (StringUtils.isNotBlank(getZone())) { Placement placement = new Placement(getZone()); if (getUseDedicatedTenancy()) { placement.setTenancy("dedicated"); } riRequest.setPlacement(placement); diFilters.add(new Filter("availability-zone").withValues(getZone())); } if (StringUtils.isNotBlank(getSubnetId())) { if (getAssociatePublicIp()) { net.setSubnetId(getSubnetId()); } else { riRequest.setSubnetId(getSubnetId()); } diFilters.add(new Filter("subnet-id").withValues(getSubnetId())); /* If we have a subnet ID then we can only use VPC security groups */ if (!securityGroupSet.isEmpty()) { List<String> group_ids = getEc2SecurityGroups(ec2); if (!group_ids.isEmpty()) { if (getAssociatePublicIp()) { net.setGroups(group_ids); } else { riRequest.setSecurityGroupIds(group_ids); } diFilters.add(new Filter("instance.group-id").withValues(group_ids)); } } } else { /* No subnet: we can use standard security groups by name */ riRequest.setSecurityGroups(securityGroupSet); if (securityGroupSet.size() > 0) diFilters.add(new Filter("instance.group-name").withValues(securityGroupSet)); } String userDataString = Base64.encodeBase64String(userData.getBytes()); riRequest.setUserData(userDataString); riRequest.setKeyName(keyPair.getKeyName()); diFilters.add(new Filter("key-name").withValues(keyPair.getKeyName())); riRequest.setInstanceType(type.toString()); diFilters.add(new Filter("instance-type").withValues(type.toString())); if (getAssociatePublicIp()) { net.setAssociatePublicIpAddress(true); net.setDeviceIndex(0); riRequest.withNetworkInterfaces(net); } boolean hasCustomTypeTag = false; HashSet<Tag> inst_tags = null; if (tags != null && !tags.isEmpty()) { inst_tags = new HashSet<Tag>(); for (EC2Tag t : tags) { inst_tags.add(new Tag(t.getName(), t.getValue())); diFilters.add(new Filter("tag:" + t.getName()).withValues(t.getValue())); if (StringUtils.equals(t.getName(), EC2Tag.TAG_NAME_JENKINS_SLAVE_TYPE)) { hasCustomTypeTag = true; } } } if (!hasCustomTypeTag) { if (inst_tags == null) { inst_tags = new HashSet<Tag>(); } inst_tags.add(new Tag(EC2Tag.TAG_NAME_JENKINS_SLAVE_TYPE, "demand")); } DescribeInstancesRequest diRequest = new DescribeInstancesRequest(); diFilters.add(new Filter("instance-state-name").withValues(InstanceStateName.Stopped.toString(), InstanceStateName.Stopping.toString())); diRequest.setFilters(diFilters); msg = "Looking for existing instances with describe-instance: " + diRequest; logger.println(msg); LOGGER.fine(msg); DescribeInstancesResult diResult = ec2.describeInstances(diRequest); Instance existingInstance = null; if (StringUtils.isNotBlank(getIamInstanceProfile())) { riRequest.setIamInstanceProfile( new IamInstanceProfileSpecification().withArn(getIamInstanceProfile())); // cannot filter on IAM Instance Profile, so search in result reservationLoop: for (Reservation reservation : diResult.getReservations()) { for (Instance instance : reservation.getInstances()) { if (instance.getIamInstanceProfile() != null && instance.getIamInstanceProfile().getArn().equals(getIamInstanceProfile())) { existingInstance = instance; break reservationLoop; } } } } else if (diResult.getReservations().size() > 0) { existingInstance = diResult.getReservations().get(0).getInstances().get(0); } if (existingInstance == null) { // Have to create a new instance Instance inst = ec2.runInstances(riRequest).getReservation().getInstances().get(0); /* Now that we have our instance, we can set tags on it */ if (inst_tags != null) { for (int i = 0; i < 5; i++) { try { updateRemoteTags(ec2, inst_tags, inst.getInstanceId()); break; } catch (AmazonServiceException e) { if (e.getErrorCode().equals("InvalidInstanceRequestID.NotFound")) { Thread.sleep(5000); continue; } throw e; } } // That was a remote request - we should also update our local instance data. inst.setTags(inst_tags); } msg = "No existing instance found - created: " + inst; logger.println(msg); LOGGER.info(msg); return newOndemandSlave(inst); } msg = "Found existing stopped instance: " + existingInstance; logger.println(msg); LOGGER.info(msg); List<String> instances = new ArrayList<String>(); instances.add(existingInstance.getInstanceId()); StartInstancesRequest siRequest = new StartInstancesRequest(instances); StartInstancesResult siResult = ec2.startInstances(siRequest); msg = "Starting existing instance: " + existingInstance + " result:" + siResult; logger.println(msg); LOGGER.fine(msg); for (EC2AbstractSlave ec2Node : NodeIterator.nodes(EC2AbstractSlave.class)) { if (ec2Node.getInstanceId().equals(existingInstance.getInstanceId())) { msg = "Found existing corresponding Jenkins slave: " + ec2Node; logger.println(msg); LOGGER.finer(msg); return ec2Node; } } // Existing slave not found msg = "Creating new Jenkins slave for existing instance: " + existingInstance; logger.println(msg); LOGGER.info(msg); return newOndemandSlave(existingInstance); } catch (FormException e) { throw new AssertionError(); // we should have discovered all configuration issues upfront } catch (InterruptedException e) { throw new RuntimeException(e); } }
From source file:jp.classmethod.aws.gradle.ec2.AmazonEC2StartInstanceTask.java
License:Apache License
@TaskAction public void startInstance() { // to enable conventionMappings feature List<String> instanceIds = getInstanceIds(); if (instanceIds.isEmpty()) { return;//from ww w. j a v a2s. c o m } AmazonEC2PluginExtension ext = getProject().getExtensions().getByType(AmazonEC2PluginExtension.class); AmazonEC2 ec2 = ext.getClient(); startInstancesResult = ec2.startInstances(new StartInstancesRequest(instanceIds)); getLogger().info("Start EC2 instance {} requested", instanceIds); }
From source file:org.xmlsh.aws.gradle.ec2.AmazonEC2StartInstanceTask.java
License:BSD License
@TaskAction public void startInstance() { // to enable conventionMappings feature List<String> instanceIds = getInstanceIds(); if (instanceIds.isEmpty()) return;/*from w ww . j a v a 2 s . co m*/ AmazonEC2PluginExtension ext = getProject().getExtensions().getByType(AmazonEC2PluginExtension.class); AmazonEC2 ec2 = ext.getClient(); startInstancesResult = ec2.startInstances(new StartInstancesRequest(instanceIds)); getLogger().info("Start EC2 instance {} requested", instanceIds); }