package com.urbancode.terraform.tasks.rackspace;
import org.apache.log4j.Logger;
import com.urbancode.terraform.credentials.common.Credentials;
import com.urbancode.terraform.credentials.common.CredentialsException;
import com.urbancode.terraform.credentials.rackspace.CredentialsRackspace;
import com.urbancode.terraform.tasks.common.EnvironmentTask;
import com.urbancode.terraform.tasks.common.TerraformContext;
import com.urbancode.x2o.tasks.CreationException;
import com.urbancode.x2o.tasks.DestructionException;
import com.urbancode.x2o.tasks.RestorationException;
public class ContextRackspace extends TerraformContext {
//**********************************************************************************************
// CLASS
//**********************************************************************************************
static private final Logger log = Logger.getLogger(ContextRackspace.class);
//**********************************************************************************************
// INSTANCE
//**********************************************************************************************
private EnvironmentTaskRackspace env;
private CredentialsRackspace creds;
protected RackspaceRestClient client;
//----------------------------------------------------------------------------------------------
@Override
public void create() throws CreationException {
client = new RackspaceRestClient();
try {
client.authenticate(creds.getUser(), creds.getApiKey());
env.create();
} catch (AuthenticationException e) {
log.error("Authentication failed. Cannot create environment.");
throw new CreationException(e);
}
}
//----------------------------------------------------------------------------------------------
@Override
public void destroy() throws DestructionException {
client = new RackspaceRestClient();
try {
client.authenticate(creds.getUser(), creds.getApiKey());
env.destroy();
} catch (AuthenticationException e) {
log.error("Authentication failed. Cannot destroy environment.");
throw new DestructionException(e);
}
}
//----------------------------------------------------------------------------------------------
@Override
public void restore() throws RestorationException {
// TODO Rackspace update commands
}
//----------------------------------------------------------------------------------------------
@Override
public void setCredentials(Credentials credentials)
throws CredentialsException {
this.creds = (CredentialsRackspace) credentials;
}
//----------------------------------------------------------------------------------------------
@Override
public EnvironmentTask getEnvironment() {
return env;
}
//----------------------------------------------------------------------------------------------
@Override
public Credentials fetchCredentials() {
return creds;
}
//----------------------------------------------------------------------------------------------
public EnvironmentTaskRackspace createEnvironment() {
this.env = new EnvironmentTaskRackspace(this);
return this.env;
}
}