awsapi - EIP related changes

This commit is contained in:
prachi 2012-05-10 14:25:23 -07:00
parent 5c8d968eea
commit da520dfe21
2 changed files with 29 additions and 4 deletions

View File

@ -1,6 +1,8 @@
package com.cloud.bridge.service;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.UUID;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
@ -9,6 +11,7 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.cloud.bridge.persist.PersistContext;
import com.cloud.bridge.persist.dao.CloudStackConfigurationDao;
import com.cloud.bridge.persist.dao.UserCredentialsDao;
@ -55,9 +58,11 @@ public class EC2MainServlet extends HttpServlet{
protected void doGetOrPost(HttpServletRequest request, HttpServletResponse response) {
String action = request.getParameter( "Action" );
if(!isEC2APIEnabled){
throw new RuntimeException("EC2 API is disabled.");
//response.sendError(404, "EC2 API is disabled.");
response.setStatus(404);
faultResponse(response, "404" , "EC2 API is disabled.");
return;
}
if(action != null){
@ -82,4 +87,23 @@ public class EC2MainServlet extends HttpServlet{
}
}
private void faultResponse(HttpServletResponse response, String errorCode, String errorMessage) {
try {
OutputStreamWriter out = new OutputStreamWriter(response.getOutputStream());
response.setContentType("text/xml; charset=UTF-8");
out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
out.write("<Response><Errors><Error><Code>");
out.write(errorCode);
out.write("</Code><Message>");
out.write(errorMessage);
out.write("</Message></Error></Errors><RequestID>");
out.write(UUID.randomUUID().toString());
out.write("</RequestID></Response>");
out.flush();
out.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

View File

@ -890,7 +890,7 @@ public class EC2Engine {
public boolean disassociateAddress( EC2DisassociateAddress request ) {
try {
CloudStackIpAddress cloudIp = getApi().listPublicIpAddresses(null, null, null, null, null, request.getPublicIp(), null, null, null).get(0);
CloudStackInfoResponse resp = getApi().disassociateIpAddress(cloudIp.getId());
CloudStackInfoResponse resp = getApi().disableStaticNat(cloudIp.getId());
if (resp != null) {
return resp.getSuccess();
}
@ -917,8 +917,9 @@ public class EC2Engine {
CloudStackZone zone = findZone();
CloudStackNetwork net = findNetwork(zone);
// CloudStackIpAddress resp = getApi().associateIpAddress(null, null, null, "0036952d-48df-4422-9fd0-94b0885e18cb");
CloudStackIpAddress resp = getApi().associateIpAddress(null, null, null, net.getId());
CloudStackIpAddress resp = getApi().associateIpAddress(zone.getId(), caller.getName(), caller.getDomainId(), net != null ? net.getId():null);
ec2Address.setAssociatedInstanceId(resp.getId());
if (resp.getIpAddress() == null) {
List<CloudStackIpAddress> addrList = getApi().listPublicIpAddresses(null, null, null, null, null, null, null, null, null);
if (addrList != null && addrList.size() > 0) {