package core.aws.resource.ec2;
import com.amazonaws.services.ec2.model.KeyPairInfo;
import core.aws.env.Environment;
import core.aws.resource.Resource;
import core.aws.resource.ResourceStatus;
import core.aws.resource.Resources;
import core.aws.task.ec2.CreateKeyPairTask;
import core.aws.task.ec2.DeleteKeyPairTask;
import core.aws.util.Asserts;
import core.aws.util.ToStringHelper;
import core.aws.workflow.Tasks;
import java.nio.file.Path;
/**
* @author neo
*/
public class KeyPair extends Resource {
public static Path keyFile(String keyName, Environment env) {
return env.envDir.resolve("keys/" + normalizeName(keyName) + ".pem");
}
static String normalizeName(String keyName) {
return keyName.replaceAll(":", "-");
}
public final String name;
public KeyPairInfo remoteKeyPair;
public KeyPair(String id, String name) {
super(id);
this.name = name;
}
@Override
public void validate(Resources resources) {
if (status == ResourceStatus.LOCAL_ONLY) {
Asserts.isTrue(name.length() <= 255, "max length of key pair name is 255");
Asserts.isTrue(name.matches("[a-zA-Z0-9\\-\\:]+"), "key pair name can only contain alphanumeric, '-' and ':'");
}
}
@Override
protected void createTasks(Tasks tasks) {
tasks.add(new CreateKeyPairTask(this));
}
@Override
protected void deleteTasks(Tasks tasks) {
tasks.add(new DeleteKeyPairTask(this));
}
@Override
public String toString() {
return new ToStringHelper(this)
.add(id)
.add(status)
.add("name", name)
.toString();
}
}