package core.aws.resource.elb;
import com.amazonaws.services.identitymanagement.model.ServerCertificate;
import core.aws.env.Environment;
import core.aws.resource.Resource;
import core.aws.task.elb.CreateServerCertTask;
import core.aws.task.elb.DeleteServerCertTask;
import core.aws.workflow.Tasks;
/**
* @author neo
*/
public class ServerCert extends Resource {
public static String certPath(Environment env) {
return String.format("/%s/", env.name.replaceAll("-", ""));
}
public String name;
public String certificate;
public String privateKey;
public String chain;
public ServerCertificate remoteCert;
public ServerCert(String id) {
super(id);
}
@Override
protected void createTasks(Tasks tasks) {
tasks.add(new CreateServerCertTask(this));
}
@Override
protected void deleteTasks(Tasks tasks) {
tasks.add(new DeleteServerCertTask(this));
}
@Override
protected void updateTasks(Tasks tasks) {
if (changed()) {
DeleteServerCertTask deleteTask = tasks.add(new DeleteServerCertTask(this));
CreateServerCertTask createTask = tasks.add(new CreateServerCertTask(this));
createTask.dependsOn(deleteTask);
}
}
public boolean changed() {
String remoteCertBody = normalize(remoteCert.getCertificateBody());
String localCertBody = normalize(certificate);
return !remoteCertBody.equals(localCertBody);
}
private String normalize(String cert) {
// clean windows/unix line separator and spaces
return cert.replace("\r", "").replace("\n", "").replace(" ", "");
}
}