diff --git a/awsapi/src/com/cloud/bridge/service/EC2MainServlet.java b/awsapi/src/com/cloud/bridge/service/EC2MainServlet.java
index a0bcd41e486..6448c84c15c 100644
--- a/awsapi/src/com/cloud/bridge/service/EC2MainServlet.java
+++ b/awsapi/src/com/cloud/bridge/service/EC2MainServlet.java
@@ -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("");
+ out.write("");
+ out.write(errorCode);
+ out.write("");
+ out.write(errorMessage);
+ out.write("");
+ out.write(UUID.randomUUID().toString());
+ out.write("");
+ out.flush();
+ out.close();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
}
\ No newline at end of file
diff --git a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
index 3ff4f4f2741..864b4710747 100644
--- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
+++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
@@ -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 addrList = getApi().listPublicIpAddresses(null, null, null, null, null, null, null, null, null);
if (addrList != null && addrList.size() > 0) {