package com.sungardas.enhancedsnapshots.service.dev;
import com.amazonaws.services.ec2.model.*;
import com.sungardas.enhancedsnapshots.service.impl.AWSCommunicationServiceImpl;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Service;
@Service
@Profile("dev")
public class AWSCommunicationServiceDev extends AWSCommunicationServiceImpl {
@Value("${enhancedsnapshots.dev.hostname:localhost}")
private String hostname;
@Override
public void createTemporaryTag(final String resourceId, final String description) {
}
@Override
public void deleteTemporaryTag(final String resourceId) {
}
@Override
public Volume createVolume(final int size, final VolumeType type) {
return getVolume();
}
@Override
public Volume createIO1Volume(final int size, final int iopsPerGb) {
return getVolume();
}
@Override
public Snapshot createSnapshot(final Volume volume) {
return getSnapshot();
}
@Override
public void deleteSnapshot(final String snapshotId) {
}
@Override
public void cleanupSnapshots(final String volumeId, final String snapshotIdToLeave) {
}
@Override
public Snapshot waitForCompleteState(final Snapshot snapshot) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return snapshot;
}
@Override
public Snapshot syncSnapshot(final String snapshotId) {
return new Snapshot();
}
@Override
public Volume waitForVolumeState(final Volume volume, final VolumeState expectedState) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return volume;
}
@Override
public Instance getInstance(String instanceId) {
Instance instance = new Instance();
instance.setPlacement(new Placement());
return instance;
}
@Override
public void detachVolume(final Volume volume) {
}
@Override
public Volume createVolumeFromSnapshot(final String snapshotId, final String availabilityZoneName, final VolumeType type, final int iopsPerGb) {
return getVolume();
}
@Override
public Volume syncVolume(final Volume volume) {
return volume;
}
@Override
public void deleteVolume(final Volume volume) {
}
@Override
public synchronized void attachVolume(final Instance instance, final Volume volume) {
}
@Override
public void setResourceName(final String resourceId, final String value) {
}
@Override
public void addTag(final String resourceId, final String name, final String value) {
}
@Override
public boolean snapshotExists(final String snapshotId) {
return true;
}
@Override
public Snapshot getSnapshot(final String snapshotId) {
return getSnapshot();
}
@Override
public void restartAWSLogService() {
}
@Override
public String getCurrentAvailabilityZone() {
return describeAvailabilityZonesForCurrentRegion().get(0).getZoneName();
}
@Override
public void dropS3Bucket(String bucketName) {
return;
}
@Override
public Volume getVolume(String volumeId) {
return getVolume();
}
private Snapshot getSnapshot() {
return new Snapshot().withSnapshotId("DEV_SNAPSHOT_ID");
}
private Volume getVolume() {
return new Volume().withSize(100).withVolumeType("gp2").withVolumeId("DEV_VOLUME_ID").withAvailabilityZone("");
}
public String getDNSName(String instanceId) {
return hostname;
}
}