package org.openstack.atlas.api.mgmt.resources;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openstack.atlas.api.helpers.ResponseFactory;
import org.openstack.atlas.api.mgmt.resources.providers.ManagementDependencyProvider;
import org.openstack.atlas.docs.loadbalancers.api.v1.Errorpage;
import org.openstack.atlas.service.domain.operations.Operation;
import org.openstack.atlas.service.domain.pojos.MessageDataContainer;
import org.openstack.atlas.service.domain.util.Constants;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.core.Response;
public class ErrorpageResource extends ManagementDependencyProvider {
private final Log LOG = LogFactory.getLog(ErrorpageResource.class);
private int clusterId;
@GET
public Response retrieveErrorpage() {
Errorpage errorpage = new Errorpage();
String errorcontent;
try {
errorcontent = loadBalancerService.getDefaultErrorPage();
errorpage.setContent(errorcontent);
} catch (Exception ex) {
return ResponseFactory.getErrorResponse(ex, null, null);
}
errorpage.setContent(errorcontent);
Response resp = Response.status(200).entity(errorpage).build();
return resp;
}
@PUT
public Response setDefaultErrorPage(Errorpage errorpage) {
MessageDataContainer dataContainer;
String content = errorpage.getContent();
if (content == null) {
return getValidationFaultResponse("You must provide Content to set ErrorPage");
} else if (content.length() > Constants.MAX_ERRORPAGE_CONTENT_LENGTH) {
String msg = String.format("Your content length must be less than %d bytes\n", Constants.MAX_ERRORPAGE_CONTENT_LENGTH);
return getValidationFaultResponse(msg);
}
try {
loadBalancerService.setDefaultErrorPage(content);
} catch (Exception ex) {
return ResponseFactory.getErrorResponse(ex, null, null);
}
dataContainer = new MessageDataContainer();
dataContainer.setErrorFileContents(content);
dataContainer.setClusterId(clusterId);
try {
getManagementAsyncService().callAsyncLoadBalancingOperation(Operation.UPDATE_ERRORFILE, dataContainer);
} catch (Exception ex) {
return ResponseFactory.getErrorResponse(ex, null, null);
}
return Response.status(202).build();
}
public Log getLOG() {
return LOG;
}
public int getClusterId() {
return clusterId;
}
public void setClusterId(int clusterId) {
this.clusterId = clusterId;
}
}