Search in sources :

Example 1 with RegisterScalableTargetRequest

use of com.amazonaws.services.applicationautoscaling.model.RegisterScalableTargetRequest in project titus-control-plane by Netflix.

the class AWSAppAutoScalingClient method createScalableTarget.

@Override
public Completable createScalableTarget(String jobId, int minCapacity, int maxCapacity) {
    RegisterScalableTargetRequest registerScalableTargetRequest = new RegisterScalableTargetRequest();
    registerScalableTargetRequest.setMinCapacity(minCapacity);
    registerScalableTargetRequest.setMaxCapacity(maxCapacity);
    registerScalableTargetRequest.setResourceId(AWSAppAutoScalingUtil.buildGatewayResourceId(jobId, awsAppScalingConfig.getAWSGatewayEndpointPrefix(), awsAppScalingConfig.getRegion(), awsAppScalingConfig.getAWSGatewayEndpointTargetStage()));
    registerScalableTargetRequest.setServiceNamespace(SERVICE_NAMESPACE);
    registerScalableTargetRequest.setScalableDimension(SCALABLE_DIMENSION);
    logger.info("RegisterScalableTargetRequest {}", registerScalableTargetRequest);
    return RetryWrapper.wrapWithExponentialRetry(String.format("createScalableTarget for job %s", jobId), Observable.create(emitter -> awsAppAutoScalingClientAsync.registerScalableTargetAsync(registerScalableTargetRequest, new AsyncHandler<RegisterScalableTargetRequest, RegisterScalableTargetResult>() {

        @Override
        public void onError(Exception exception) {
            logger.error("Register scalable target exception for {} - {}", jobId, exception.getMessage());
            awsAppAutoScalingMetrics.registerAwsCreateTargetError(exception);
            emitter.onError(exception);
        }

        @Override
        public void onSuccess(RegisterScalableTargetRequest request, RegisterScalableTargetResult registerScalableTargetResult) {
            int httpStatusCode = registerScalableTargetResult.getSdkHttpMetadata().getHttpStatusCode();
            logger.info("Registered scalable target for success {} - status {}", jobId, httpStatusCode);
            awsAppAutoScalingMetrics.registerAwsCreateTargetSuccess();
            emitter.onCompleted();
        }
    }), Emitter.BackpressureMode.NONE)).toCompletable();
}
Also used : RegisterScalableTargetRequest(com.amazonaws.services.applicationautoscaling.model.RegisterScalableTargetRequest) AsyncHandler(com.amazonaws.handlers.AsyncHandler) RegisterScalableTargetResult(com.amazonaws.services.applicationautoscaling.model.RegisterScalableTargetResult) AutoScalePolicyException(com.netflix.titus.api.appscale.service.AutoScalePolicyException) ValidationException(com.amazonaws.services.applicationautoscaling.model.ValidationException) ObjectNotFoundException(com.amazonaws.services.applicationautoscaling.model.ObjectNotFoundException)

Example 2 with RegisterScalableTargetRequest

use of com.amazonaws.services.applicationautoscaling.model.RegisterScalableTargetRequest in project aws-doc-sdk-examples by awsdocs.

the class EnableDynamoDBAutoscaling method main.

public static void main(String[] args) {
    ServiceNamespace ns = ServiceNamespace.Dynamodb;
    ScalableDimension tableWCUs = ScalableDimension.DynamodbTableWriteCapacityUnits;
    String resourceID = "table/TestTable";
    // Define the scalable target
    RegisterScalableTargetRequest rstRequest = new RegisterScalableTargetRequest().withServiceNamespace(ns).withResourceId(resourceID).withScalableDimension(tableWCUs).withMinCapacity(5).withMaxCapacity(10).withRoleARN("SERVICE_ROLE_ARN_GOES_HERE");
    try {
        aaClient.registerScalableTarget(rstRequest);
    } catch (Exception e) {
        System.err.println("Unable to register scalable target: ");
        System.err.println(e.getMessage());
    }
    // Verify that the target was created
    DescribeScalableTargetsRequest dscRequest = new DescribeScalableTargetsRequest().withServiceNamespace(ns).withScalableDimension(tableWCUs).withResourceIds(resourceID);
    try {
        DescribeScalableTargetsResult dsaResult = aaClient.describeScalableTargets(dscRequest);
        System.out.println("DescribeScalableTargets result: ");
        System.out.println(dsaResult);
        System.out.println();
    } catch (Exception e) {
        System.err.println("Unable to describe scalable target: ");
        System.err.println(e.getMessage());
    }
    System.out.println();
    // Configure a scaling policy
    TargetTrackingScalingPolicyConfiguration targetTrackingScalingPolicyConfiguration = new TargetTrackingScalingPolicyConfiguration().withPredefinedMetricSpecification(new PredefinedMetricSpecification().withPredefinedMetricType(MetricType.DynamoDBWriteCapacityUtilization)).withTargetValue(50.0).withScaleInCooldown(60).withScaleOutCooldown(60);
    // Create the scaling policy, based on your configuration
    PutScalingPolicyRequest pspRequest = new PutScalingPolicyRequest().withServiceNamespace(ns).withScalableDimension(tableWCUs).withResourceId(resourceID).withPolicyName("MyScalingPolicy").withPolicyType(PolicyType.TargetTrackingScaling).withTargetTrackingScalingPolicyConfiguration(targetTrackingScalingPolicyConfiguration);
    try {
        aaClient.putScalingPolicy(pspRequest);
    } catch (Exception e) {
        System.err.println("Unable to put scaling policy: ");
        System.err.println(e.getMessage());
    }
    // Verify that the scaling policy was created
    DescribeScalingPoliciesRequest dspRequest = new DescribeScalingPoliciesRequest().withServiceNamespace(ns).withScalableDimension(tableWCUs).withResourceId(resourceID);
    try {
        DescribeScalingPoliciesResult dspResult = aaClient.describeScalingPolicies(dspRequest);
        System.out.println("DescribeScalingPolicies result: ");
        System.out.println(dspResult);
    } catch (Exception e) {
        e.printStackTrace();
        System.err.println("Unable to describe scaling policy: ");
        System.err.println(e.getMessage());
    }
}
Also used : RegisterScalableTargetRequest(com.amazonaws.services.applicationautoscaling.model.RegisterScalableTargetRequest) ServiceNamespace(com.amazonaws.services.applicationautoscaling.model.ServiceNamespace) PutScalingPolicyRequest(com.amazonaws.services.applicationautoscaling.model.PutScalingPolicyRequest) ScalableDimension(com.amazonaws.services.applicationautoscaling.model.ScalableDimension) DescribeScalingPoliciesRequest(com.amazonaws.services.applicationautoscaling.model.DescribeScalingPoliciesRequest) DescribeScalingPoliciesResult(com.amazonaws.services.applicationautoscaling.model.DescribeScalingPoliciesResult) DescribeScalableTargetsRequest(com.amazonaws.services.applicationautoscaling.model.DescribeScalableTargetsRequest) TargetTrackingScalingPolicyConfiguration(com.amazonaws.services.applicationautoscaling.model.TargetTrackingScalingPolicyConfiguration) DescribeScalableTargetsResult(com.amazonaws.services.applicationautoscaling.model.DescribeScalableTargetsResult) PredefinedMetricSpecification(com.amazonaws.services.applicationautoscaling.model.PredefinedMetricSpecification)

Aggregations

RegisterScalableTargetRequest (com.amazonaws.services.applicationautoscaling.model.RegisterScalableTargetRequest)2 AsyncHandler (com.amazonaws.handlers.AsyncHandler)1 DescribeScalableTargetsRequest (com.amazonaws.services.applicationautoscaling.model.DescribeScalableTargetsRequest)1 DescribeScalableTargetsResult (com.amazonaws.services.applicationautoscaling.model.DescribeScalableTargetsResult)1 DescribeScalingPoliciesRequest (com.amazonaws.services.applicationautoscaling.model.DescribeScalingPoliciesRequest)1 DescribeScalingPoliciesResult (com.amazonaws.services.applicationautoscaling.model.DescribeScalingPoliciesResult)1 ObjectNotFoundException (com.amazonaws.services.applicationautoscaling.model.ObjectNotFoundException)1 PredefinedMetricSpecification (com.amazonaws.services.applicationautoscaling.model.PredefinedMetricSpecification)1 PutScalingPolicyRequest (com.amazonaws.services.applicationautoscaling.model.PutScalingPolicyRequest)1 RegisterScalableTargetResult (com.amazonaws.services.applicationautoscaling.model.RegisterScalableTargetResult)1 ScalableDimension (com.amazonaws.services.applicationautoscaling.model.ScalableDimension)1 ServiceNamespace (com.amazonaws.services.applicationautoscaling.model.ServiceNamespace)1 TargetTrackingScalingPolicyConfiguration (com.amazonaws.services.applicationautoscaling.model.TargetTrackingScalingPolicyConfiguration)1 ValidationException (com.amazonaws.services.applicationautoscaling.model.ValidationException)1 AutoScalePolicyException (com.netflix.titus.api.appscale.service.AutoScalePolicyException)1