package com.sungardas.enhancedsnapshots.service;
import com.amazonaws.services.ec2.model.*;
import java.util.List;
public interface AWSCommunicationService {
Snapshot createSnapshot(Volume volume);
void deleteSnapshot(String snapshotId);
void cleanupSnapshots(String volumeId, String snapshotIdToLeave);
Snapshot waitForCompleteState(Snapshot snapshot);
Snapshot syncSnapshot(String snapshotId);
Volume waitForVolumeState(Volume volume, VolumeState expectedState);
Volume syncVolume(Volume volume);
/**
* iopsPerGb paramenter is only required for io1 volume type, for other volume types it will be skipped
*/
Volume createVolumeFromSnapshot(String snapshotId, String availabilityZoneName, VolumeType type, int iopsPerGb);
void deleteVolume(Volume volume);
void attachVolume(Instance instance, Volume volume);
Volume getVolume(String volumeId);
List<AvailabilityZone> describeAvailabilityZonesForCurrentRegion();
String getCurrentAvailabilityZone();
void createTemporaryTag(String resourceId, String description);
void deleteTemporaryTag(String resourceId);
Volume createVolume(int size, VolumeType type);
Volume createIO1Volume(int size, int iopsPerGb);
Instance getInstance(String instanceId);
void detachVolume(Volume volume);
void setResourceName(String resourceid, String value);
void addTag(String resourceId, String name, String value);
boolean snapshotExists(String snapshotId);
boolean volumeExists(String volumeId);
Snapshot getSnapshot(String snapshotId);
void dropS3Bucket(String bucketName);
//TODO: awslog restarted after each sdfs remount
//TODO: need to clarify whether we still need restart it
//TODO: in case we need, it should be triggered by SystemService while restarting sdfs, not by SDFSStateService
void restartAWSLogService();
String getDNSName(String instanceId);
}