package se.kth.karamel.webservice.calls.nova;
import org.apache.log4j.Logger;
import se.kth.karamel.client.api.KaramelApi;
import se.kth.karamel.common.exception.KaramelException;
import se.kth.karamel.common.util.NovaCredentials;
import se.kth.karamel.webservice.calls.AbstractCall;
import se.kth.karamel.webservicemodel.NovaJSON;
import se.kth.karamel.webservicemodel.StatusResponseJSON;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
/**
* Created by alberto on 12/6/15.
*/
@Path("/nova/validateCredentials")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class ValidateNovaCredentials extends AbstractCall {
private static final Logger logger = Logger.getLogger(ValidateNovaCredentials.class);
public ValidateNovaCredentials(KaramelApi karamelApi) {
super(karamelApi);
}
@PUT
public Response validateCredentials(NovaJSON providerJSON) {
Response response = null;
logger.debug(" Received request to validate the nova credentials.");
try {
NovaCredentials credentials = new NovaCredentials();
credentials.setAccountName(providerJSON.getAccountName());
credentials.setAccountPass(providerJSON.getAccountPass());
credentials.setEndpoint(providerJSON.getEndpoint());
credentials.setRegion(providerJSON.getRegion());
credentials.setNetworkId(providerJSON.getNetworkId());
if (karamelApi.updateNovaCredentialsIfValid(credentials)) {
response = Response.status(Response.Status.OK).
entity(new StatusResponseJSON(StatusResponseJSON.SUCCESS_STRING, "success")).build();
} else {
response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).
entity(new StatusResponseJSON(StatusResponseJSON.ERROR_STRING, "Invalid Credentials")).build();
}
} catch (KaramelException e) {
response = buildExceptionResponse(e);
}
return response;
}
}