package com.sequenceiq.samples.core.service;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.services.autoscaling.model.AutoScalingGroup;
import com.amazonaws.services.autoscaling.model.AutoScalingInstanceDetails;
import com.amazonaws.services.autoscaling.model.LaunchConfiguration;
import com.amazonaws.services.ec2.model.SpotPrice;
import com.amazonaws.services.elasticloadbalancing.model.CreateLoadBalancerResult;
import com.amazonaws.services.elasticloadbalancing.model.RegisterInstancesWithLoadBalancerResult;
import java.util.Collection;
import java.util.List;
/**
* This service communicates with the AWS backend and can be used to describe,
* create and update LaunchConfigurations, AutoScalingGroups and
* ElasticLoadBalancers.
*/
public interface AutoScalingService {
CreateLoadBalancerResult createLoadBalancer(AWSCredentials credentials, String name, String... zones);
RegisterInstancesWithLoadBalancerResult registerInstancesToLoadBalancer(AWSCredentials credentials, String lbName);
List<LaunchConfiguration> describeAmazonLaunchConfigurations(AWSCredentials credentials);
List<AutoScalingGroup> describeAmazonAutoScalingGroups(AWSCredentials credentials);
List<AutoScalingInstanceDetails> describeAmazonAutoScalingInstances(AWSCredentials credentials);
void createAmazonAutoScalingGroup(AWSCredentials credentials, String name, int maxsize, int minsize, int coolDown, String configName,
Collection<String> loadBalancerNames, Collection<com.amazonaws.services.autoscaling.model.Tag> tags);
void updateAmazonAutoScalingGroupCoolDown(AWSCredentials credentials, String name, int coolDown);
void updateAmazonAutoScalingGroupMaxSize(AWSCredentials credentials, String name, int maxSize);
void updateAmazonAutoScalingGroupMinSize(AWSCredentials credentials, String name, int minSize);
List<SpotPrice> describeSpotPriceHistory(AWSCredentials credentials);
}