From da520dfe21e81d60f5a29f36bbe6e42b702ab800 Mon Sep 17 00:00:00 2001 From: prachi Date: Thu, 10 May 2012 14:25:23 -0700 Subject: [PATCH] awsapi - EIP related changes --- .../cloud/bridge/service/EC2MainServlet.java | 28 +++++++++++++++++-- .../bridge/service/core/ec2/EC2Engine.java | 5 ++-- 2 files changed, 29 insertions(+), 4 deletions(-) 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) {