本文整理汇总了Java中com.amazonaws.services.ec2.model.DescribeSpotInstanceRequestsResult.getSpotInstanceRequests方法的典型用法代码示例。如果您正苦于以下问题:Java DescribeSpotInstanceRequestsResult.getSpotInstanceRequests方法的具体用法?Java DescribeSpotInstanceRequestsResult.getSpotInstanceRequests怎么用?Java DescribeSpotInstanceRequestsResult.getSpotInstanceRequests使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.amazonaws.services.ec2.model.DescribeSpotInstanceRequestsResult
的用法示例。
在下文中一共展示了DescribeSpotInstanceRequestsResult.getSpotInstanceRequests方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: spotInstanceRequestExists
import com.amazonaws.services.ec2.model.DescribeSpotInstanceRequestsResult; //导入方法依赖的package包/类
/**
* Checks whether the specified Spot instance request is visible, <em>i.e.</em> can
* be located by a describe Spot instance request call.
*
* @param spotInstanceRequestId the Spot instance request ID
* @return whether the Spot instance request is visible, <em>i.e.</em> can
* be located by a describe Spot instance request call
*/
@VisibleForTesting
protected boolean spotInstanceRequestExists(String spotInstanceRequestId) {
DescribeSpotInstanceRequestsResult result;
try {
result = client.describeSpotInstanceRequests(
new DescribeSpotInstanceRequestsRequest()
.withSpotInstanceRequestIds(spotInstanceRequestId)
);
} catch (AmazonServiceException e) {
if ("InvalidSpotInstanceRequestID.NotFound".equals(e.getErrorCode())) {
return false;
}
throw AWSExceptions.propagate(e);
}
for (SpotInstanceRequest spotInstanceRequest : result.getSpotInstanceRequests()) {
if (spotInstanceRequestId.equals(spotInstanceRequest.getSpotInstanceRequestId())) {
return true;
}
}
return false;
}
示例2: getSpotStatus
import com.amazonaws.services.ec2.model.DescribeSpotInstanceRequestsResult; //导入方法依赖的package包/类
public SpotState getSpotStatus() {
if (spotRequestId == null)
return SpotState.SPOT_REQUEST_NOT_FOUND;
com.amazonaws.services.ec2.AmazonEC2 client = AmazonEC2.connect();
DescribeSpotInstanceRequestsRequest spotInstanceReq = new DescribeSpotInstanceRequestsRequest();
List<String> spotInstanceRequestIds = new ArrayList<String>();
spotInstanceRequestIds.add(spotRequestId);
spotInstanceReq.setSpotInstanceRequestIds(spotInstanceRequestIds);
DescribeSpotInstanceRequestsResult res = client
.describeSpotInstanceRequests(spotInstanceReq);
List<SpotInstanceRequest> reqs = res.getSpotInstanceRequests();
if (reqs.size() > 0) {
SpotInstanceRequest req = reqs.get(0);
id = req.getInstanceId();
return SpotState.valueFromRequest(req);
} else {
return SpotState.SPOT_REQUEST_NOT_FOUND;
}
}
示例3: execute
import com.amazonaws.services.ec2.model.DescribeSpotInstanceRequestsResult; //导入方法依赖的package包/类
@Override
public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) {
LOG.info(">> retrieving instance Ids from spot request Ids");
@SuppressWarnings("unchecked")
List<String> requestIds =
(List<String>) execution.getVariable(ProcessVariables.SPOT_INSTANCE_REQUEST_IDS);
DescribeSpotInstanceRequestsResult result = client.describeSpotInstanceRequests(
new DescribeSpotInstanceRequestsRequest().withSpotInstanceRequestIds(requestIds));
List<String> instanceIds = new ArrayList<String>();
for (SpotInstanceRequest spotRequest : result.getSpotInstanceRequests()) {
if (spotRequest.getInstanceId() != null) {
instanceIds.add(spotRequest.getInstanceId());
}
}
execution.setVariable(ProcessVariables.INSTANCE_IDS, instanceIds);
}
示例4: execute
import com.amazonaws.services.ec2.model.DescribeSpotInstanceRequestsResult; //导入方法依赖的package包/类
@Override
public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) {
LOG.info(">> Checking if all spot requests match predicate {}", predicate);
@SuppressWarnings("unchecked")
List<String> requestIds = (List<String>) execution.getVariable(ProcessVariables.SPOT_INSTANCE_REQUEST_IDS);
checkNotNull(requestIds, "process variable '{}' not found", ProcessVariables.SPOT_INSTANCE_REQUEST_IDS);
DescribeSpotInstanceRequestsRequest describeRequest = new DescribeSpotInstanceRequestsRequest();
describeRequest.setSpotInstanceRequestIds(requestIds);
// Retrieve all of the requests we want to monitor.
DescribeSpotInstanceRequestsResult describeResult = client.describeSpotInstanceRequests(describeRequest);
List<SpotInstanceRequest> requests = describeResult.getSpotInstanceRequests();
if (Iterables.all(requests, predicate)) {
LOG.info(">> All {} requests match predicate {} ", requests, predicate);
execution.setVariable(resultVariable, true);
} else {
LOG.info("<< Not all requests {} match predicate {}", requests, predicate);
execution.setVariable(resultVariable, false);
}
}
示例5: shutdownInstances
import com.amazonaws.services.ec2.model.DescribeSpotInstanceRequestsResult; //导入方法依赖的package包/类
public void shutdownInstances() {
AmazonEC2 ec2 = new AmazonEC2Client(getAwsCredentials());
ec2.setEndpoint(getOrCry("ec2endpoint"));
try {
// cancel spot request, so no new instances will be launched
DescribeSpotInstanceRequestsRequest describeRequest = new DescribeSpotInstanceRequestsRequest();
DescribeSpotInstanceRequestsResult describeResult = ec2
.describeSpotInstanceRequests(describeRequest);
List<SpotInstanceRequest> describeResponses = describeResult
.getSpotInstanceRequests();
List<String> spotRequestIds = new ArrayList<String>();
List<String> instanceIds = new ArrayList<String>();
for (SpotInstanceRequest describeResponse : describeResponses) {
spotRequestIds.add(describeResponse.getSpotInstanceRequestId());
if ("active".equals(describeResponse.getState())) {
instanceIds.add(describeResponse.getInstanceId());
}
}
ec2.cancelSpotInstanceRequests(new CancelSpotInstanceRequestsRequest()
.withSpotInstanceRequestIds(spotRequestIds));
log.info("Cancelled spot request");
if (instanceIds.size() > 0) {
ec2.terminateInstances(new TerminateInstancesRequest(
instanceIds));
log.info("Shut down " + instanceIds.size() + " instances");
}
} catch (Exception e) {
log.warn("Failed to shutdown instances - ", e);
}
}
示例6: getActiveSpotInstanceId
import com.amazonaws.services.ec2.model.DescribeSpotInstanceRequestsResult; //导入方法依赖的package包/类
public List<String> getActiveSpotInstanceId(
List<String> spotInstanceRequestIds) {
DescribeSpotInstanceRequestsRequest describeRequest = new DescribeSpotInstanceRequestsRequest();
describeRequest.setSpotInstanceRequestIds(spotInstanceRequestIds);
System.out
.println("Checking to determine if Spot Bids have reached the active state...");
List<String> instanceIds = new ArrayList<String>();
try {
DescribeSpotInstanceRequestsResult describeResult = ec2
.describeSpotInstanceRequests(describeRequest);
List<SpotInstanceRequest> describeResponses = describeResult
.getSpotInstanceRequests();
for (SpotInstanceRequest describeResponse : describeResponses) {
System.out.println(" "
+ describeResponse.getSpotInstanceRequestId()
+ " is in the " + describeResponse.getState()
+ " state.");
if (describeResponse.getState().equals("open"))
return null;
if (describeResponse.getState().equals("active"))
instanceIds.add(describeResponse.getInstanceId());
}
} catch (AmazonServiceException e) {
System.out.println("Error when calling describeSpotInstances");
System.out.println("Caught Exception: " + e.getMessage());
System.out.println("Reponse Status Code: " + e.getStatusCode());
System.out.println("Error Code: " + e.getErrorCode());
System.out.println("Request ID: " + e.getRequestId());
return null;
}
return instanceIds;
}
示例7: call
import com.amazonaws.services.ec2.model.DescribeSpotInstanceRequestsResult; //导入方法依赖的package包/类
@Override
public List<SpotInstanceRequest> call() throws AmazonClientException {
DescribeSpotInstanceRequestsRequest request = new DescribeSpotInstanceRequestsRequest();
if (this.spotRequestIds != null) {
request.withSpotInstanceRequestIds(this.spotRequestIds);
}
if (this.filters != null) {
request.withFilters(this.filters);
}
DescribeSpotInstanceRequestsResult result = getClient().getApi().describeSpotInstanceRequests(request);
return result.getSpotInstanceRequests();
}
示例8: execute
import com.amazonaws.services.ec2.model.DescribeSpotInstanceRequestsResult; //导入方法依赖的package包/类
@Override
public void execute(AmazonEC2 client, Pool pool, DelegateExecution execution) throws IOException {
/* before sending a new request, we check to see if we already registered
a launch group with the process ID, if yes, we don't re-send the request */
final String businessKey = execution.getProcessBusinessKey();
/* we timeout if requests have already been sent - the activity is being retried. */
Optional<Object> alreadySent = Optional.fromNullable(
execution.getVariable(ProcessVariables.SPOT_INSTANCE_REQUEST_IDS));
if (alreadySent.isPresent()) {
DescribeSpotInstanceRequestsRequest describeRequest = new DescribeSpotInstanceRequestsRequest()
.withFilters(new Filter()
.withName("launch-group").withValues(businessKey)
.withName("state").withValues("open", "active"));
Stopwatch stopwatch = new Stopwatch().start();
while (stopwatch.elapsedTime(TimeUnit.MINUTES) < 2) {
DescribeSpotInstanceRequestsResult result = client.describeSpotInstanceRequests(describeRequest);
List<SpotInstanceRequest> pending = result.getSpotInstanceRequests();
if (pending.size() > 0) {
LOG.info("Not resending spot instance requests {} for businessKey: {}.", pending, businessKey);
execution.setVariable(ProcessVariables.SPOT_INSTANCE_REQUEST_IDS,
collectSpotInstanceRequestIds(pending));
return;
}
LOG.info("The describe call has not returned anything yet, waiting 20s and retrying.");
Uninterruptibles.sleepUninterruptibly(20, TimeUnit.SECONDS);
}
}
final RequestSpotInstancesRequest request = createSpotInstancesRequest(pool, execution);
execution.setVariable(ProcessVariables.SPOT_REQUESTS_SENT, true);
RequestSpotInstancesResult requestResult = client.requestSpotInstances(request);
List<String> spotInstanceRequestIds = collectSpotInstanceRequestIds(requestResult.getSpotInstanceRequests());
execution.setVariable(ProcessVariables.SPOT_INSTANCE_REQUEST_IDS, spotInstanceRequestIds);
}
示例9: checkForOrphanedSpotInstanceRequests
import com.amazonaws.services.ec2.model.DescribeSpotInstanceRequestsResult; //导入方法依赖的package包/类
/**
* Identifies reusable Spot instance requests orphaned by a previous call.
*
* @return the reusable Spot instance requests orphaned by a previous call
*/
@VisibleForTesting
protected Set<String> checkForOrphanedSpotInstanceRequests() {
Set<String> orphanedSpotInstanceRequests = Sets.newHashSet();
LOG.info(">> Checking for orphaned Spot instance requests");
String idTagName = ec2TagHelper.getClouderaDirectorIdTagName();
DescribeSpotInstanceRequestsRequest describeSpotInstanceRequestsRequest =
new DescribeSpotInstanceRequestsRequest().withFilters(
new Filter()
.withName("tag:" + idTagName)
.withValues(virtualInstanceIds));
DescribeSpotInstanceRequestsResult describeSpotInstanceRequestsResult =
client.describeSpotInstanceRequests(describeSpotInstanceRequestsRequest);
for (SpotInstanceRequest existingSpotInstanceRequest :
describeSpotInstanceRequestsResult.getSpotInstanceRequests()) {
String spotInstanceRequestId = existingSpotInstanceRequest.getSpotInstanceRequestId();
String virtualInstanceId = null;
for (Tag tag : existingSpotInstanceRequest.getTags()) {
if (idTagName.equals(tag.getKey())) {
virtualInstanceId = tag.getValue();
}
}
if (virtualInstanceId == null) {
LOG.warn(">> Orphaned Spot instance request {} has no virtual instance id",
spotInstanceRequestId);
} else {
SpotAllocationRecord spotAllocationRecord = getSpotAllocationRecord(virtualInstanceId);
SpotInstanceState spotInstanceState =
SpotInstanceState.fromValue(existingSpotInstanceRequest.getState());
switch (spotInstanceState) {
case Active:
spotAllocationRecord.spotInstanceRequestId = spotInstanceRequestId;
String ec2InstanceId = existingSpotInstanceRequest.getInstanceId();
LOG.info(">> Reusing fulfilled orphaned Spot instance request {} / {} / {}",
spotInstanceRequestId, virtualInstanceId, ec2InstanceId);
if (spotAllocationRecord.ec2InstanceId == null) {
spotAllocationRecord.ec2InstanceId = ec2InstanceId;
}
break;
case Cancelled:
case Closed:
case Failed:
break;
default:
if (existingSpotInstanceRequest.getValidUntil().getTime() > System.currentTimeMillis()) {
LOG.info(">> Reusing pending orphaned Spot instance request {} / {}",
spotInstanceRequestId, virtualInstanceId);
spotAllocationRecord.spotInstanceRequestId = spotInstanceRequestId;
}
break;
}
}
}
return orphanedSpotInstanceRequests;
}
示例10: checkSpotInstance
import com.amazonaws.services.ec2.model.DescribeSpotInstanceRequestsResult; //导入方法依赖的package包/类
@Parameters({"region", "hostGroupToCheck", "scalingAdjustment"})
@Test
public void checkSpotInstance(Regions region, String hostGroupToCheck, @Optional Integer scalingAdjustment) {
//GIVEN
Integer spotInstanceCount = 0;
IntegrationTestContext itContext = getItContext();
String stackId = itContext.getContextParam(CloudbreakITContextConstants.STACK_ID);
StackV1Endpoint stackV1Endpoint = getCloudbreakClient().stackV1Endpoint();
StackResponse stackResponse = stackV1Endpoint.get(Long.valueOf(stackId), new HashSet<>());
List<InstanceGroupResponse> instanceGroups = stackResponse.getInstanceGroups();
List<String> instanceIdList = new ArrayList<>();
List<String> hostGroupList = Arrays.asList(hostGroupToCheck.split(","));
for (InstanceGroupResponse instanceGroup : instanceGroups) {
if (hostGroupList.contains(instanceGroup.getGroup())) {
Set<InstanceMetaDataJson> instanceMetaData = instanceGroup.getMetadata();
for (InstanceMetaDataJson metaData : instanceMetaData) {
instanceIdList.add(metaData.getInstanceId());
}
}
}
//WHEN
AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard().withRegion(region).build();
DescribeSpotInstanceRequestsResult describeSpotInstanceRequestsResult = ec2.describeSpotInstanceRequests();
List<SpotInstanceRequest> spotInstanceRequests = describeSpotInstanceRequestsResult.getSpotInstanceRequests();
//THEN
Assert.assertFalse(spotInstanceRequests.isEmpty());
List<String> spotInstanceIdList = new ArrayList<>();
for (SpotInstanceRequest request : spotInstanceRequests) {
spotInstanceIdList.add(request.getInstanceId());
}
for (String id : instanceIdList) {
Assert.assertTrue(spotInstanceIdList.contains(id));
if (spotInstanceIdList.contains(id)) {
spotInstanceCount += 1;
}
}
if (scalingAdjustment != null) {
Assert.assertNotNull(itContext.getContextParam(CloudbreakITContextConstants.INSTANCE_COUNT, List.class));
Integer instanceCountPrev = 0;
for (String hostGroup : hostGroupList) {
List<Map<String, Integer>> instanceList = itContext.getContextParam(CloudbreakITContextConstants.INSTANCE_COUNT, List.class);
Assert.assertTrue(instanceList.size() >= 2);
instanceCountPrev += instanceList.get(instanceList.size() - 2).get(hostGroup);
}
Assert.assertEquals(Integer.valueOf(instanceCountPrev + scalingAdjustment), spotInstanceCount);
}
}