package com.clouck.wrapper.aws;
import java.util.List;
import org.joda.time.DateTime;
import com.amazonaws.services.ec2.model.CreateVolumePermission;
import com.amazonaws.services.ec2.model.LaunchPermission;
import com.amazonaws.services.ec2.model.ProductCode;
import com.clouck.application.Ec2Filter;
import com.clouck.model.Account;
import com.clouck.model.Region;
import com.clouck.model.aws.AbstractResource;
public interface Ec2Wrapper {
List<AbstractResource<?>> describeReservations(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describeSecurityGroups(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describeAMIs(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describeVolumes(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describeSnapshots(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describeKeyPairs(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describeElasticIPs(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describePlacementGroups(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describeNetworkInterfaces(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describeVpcs(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describeSubnets(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describeRouteTables(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describeInternetGateways(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describeDhcpOptions(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describeNetworkAcls(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<AbstractResource<?>> describeSpotInstanceRequests(Account account, Region region, DateTime dt, Ec2Filter... filters);
List<LaunchPermission> findImageLaunchPermissions(Account account, Region region, String imageId);
Boolean findTerminationProtection(Account account, Region region, String instanceId);
String findShutdownBehavior(Account account, Region region, String instanceId);
String findUserData(Account account, Region region, String instanceId);
List<CreateVolumePermission> findCreateVolumePermissions(Account account, Region region, String snapshotId);
Boolean findAutoEnableIO(Account account, Region region, String volumeId);
List<ProductCode> findProductCodes(Account account, Region region, String volumeId);
List<ProductCode> findSnapshotProductCodes(Account account, Region region, String snapshotId);
}