You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by hu...@apache.org on 2014/07/04 14:01:21 UTC

[1/2] git commit: updated refs/heads/master to cc913cf

Repository: cloudstack
Updated Branches:
  refs/heads/master a600d8408 -> cc913cf0b


Fix CID 1116694 Resource leak

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/5c29f3ff
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/5c29f3ff
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/5c29f3ff

Branch: refs/heads/master
Commit: 5c29f3ffd76a6ceaf01533b27fd37ae52fabce2f
Parents: a600d84
Author: Hugo Trippaers <ht...@schubergphilis.com>
Authored: Fri Jul 4 13:44:02 2014 +0200
Committer: Hugo Trippaers <ht...@schubergphilis.com>
Committed: Fri Jul 4 13:50:31 2014 +0200

----------------------------------------------------------------------
 .../bridge/service/core/ec2/EC2Engine.java      | 144 +++++++++----------
 1 file changed, 68 insertions(+), 76 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/5c29f3ff/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
----------------------------------------------------------------------
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 efca95c..4879a4b 100644
--- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
+++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
@@ -35,7 +35,6 @@ import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.apache.commons.io.IOUtils;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 import org.xml.sax.SAXException;
@@ -124,18 +123,12 @@ public class EC2Engine extends ManagerBase {
         if (null != propertiesFile) {
             logger.info("Use EC2 properties file: " + propertiesFile.getAbsolutePath());
             Properties EC2Prop = new Properties();
-            FileInputStream ec2PropFile = null;
-            try {
-                EC2Prop.load(new FileInputStream(propertiesFile));
-                ec2PropFile = new FileInputStream(propertiesFile);
+            try (FileInputStream ec2PropFile = new FileInputStream(propertiesFile)) {
                 EC2Prop.load(ec2PropFile);
-
             } catch (FileNotFoundException e) {
                 logger.warn("Unable to open properties file: " + propertiesFile.getAbsolutePath(), e);
             } catch (IOException e) {
                 logger.warn("Unable to read properties file: " + propertiesFile.getAbsolutePath(), e);
-            } finally {
-                IOUtils.closeQuietly(ec2PropFile);
             }
             managementServer = EC2Prop.getProperty("managementServer");
             cloudAPIPort = EC2Prop.getProperty("cloudAPIPort", null);
@@ -372,12 +365,12 @@ public class EC2Engine extends ManagerBase {
                 CloudStackSecurityGroup resp = null;
                 if (ipPerm.getProtocol().equalsIgnoreCase("icmp")) {
                     resp =
-                        getApi().authorizeSecurityGroupIngress(null, constructList(ipPerm.getIpRangeSet()), null, null, ipPerm.getIcmpCode(), ipPerm.getIcmpType(),
-                            ipPerm.getProtocol(), null, request.getName(), null, secGroupList);
+                            getApi().authorizeSecurityGroupIngress(null, constructList(ipPerm.getIpRangeSet()), null, null, ipPerm.getIcmpCode(), ipPerm.getIcmpType(),
+                                    ipPerm.getProtocol(), null, request.getName(), null, secGroupList);
                 } else {
                     resp =
-                        getApi().authorizeSecurityGroupIngress(null, constructList(ipPerm.getIpRangeSet()), null, ipPerm.getToPort().longValue(), null, null,
-                            ipPerm.getProtocol(), null, request.getName(), ipPerm.getFromPort().longValue(), secGroupList);
+                            getApi().authorizeSecurityGroupIngress(null, constructList(ipPerm.getIpRangeSet()), null, ipPerm.getToPort().longValue(), null, null,
+                                    ipPerm.getProtocol(), null, request.getName(), ipPerm.getFromPort().longValue(), secGroupList);
                 }
                 if (resp != null) {
                     List<CloudStackIngressRule> ingressRules = resp.getIngressRules();
@@ -816,7 +809,7 @@ public class EC2Engine extends ManagerBase {
             CloudStackIpAddress cloudIp = cloudIps.get(0);
 
             List<CloudStackUserVm> vmList =
-                getApi().listVirtualMachines(null, null, true, null, null, null, null, request.getInstanceId(), null, null, null, null, null, null, null, null, null);
+                    getApi().listVirtualMachines(null, null, true, null, null, null, null, request.getInstanceId(), null, null, null, null, null, null, null, null, null);
             if (vmList == null || vmList.size() == 0) {
                 throw new Exception("Instance not found");
             }
@@ -973,8 +966,8 @@ public class EC2Engine extends ManagerBase {
             String osTypeId = imageSet[0].getOsTypeId();
 
             CloudStackTemplate resp =
-                getApi().createTemplate((request.getDescription() == null ? "" : request.getDescription()), request.getName(), osTypeId, null, null, null, null, null,
-                    null, volumeId);
+                    getApi().createTemplate((request.getDescription() == null ? "" : request.getDescription()), request.getName(), osTypeId, null, null, null, null, null,
+                            null, volumeId);
             if (resp == null || resp.getId() == null) {
                 throw new Exception("Image couldn't be created");
             }
@@ -1004,9 +997,9 @@ public class EC2Engine extends ManagerBase {
         EC2CreateImageResponse image = new EC2CreateImageResponse();
         try {
             List<CloudStackTemplate> templates =
-                getApi().registerTemplate((request.getDescription() == null ? request.getName() : request.getDescription()), request.getFormat(),
-                    request.getHypervisor(), request.getName(), toOSTypeId(request.getOsTypeName()), request.getLocation(), toZoneId(request.getZoneName(), null), null,
-                    null, null, null, null, null, null, null, null);
+                    getApi().registerTemplate((request.getDescription() == null ? request.getName() : request.getDescription()), request.getFormat(),
+                            request.getHypervisor(), request.getName(), toOSTypeId(request.getOsTypeName()), request.getLocation(), toZoneId(request.getZoneName(), null), null,
+                            null, null, null, null, null, null, null, null);
             if (templates != null) {
                 // technically we will only ever register a single template...
                 for (CloudStackTemplate template : templates) {
@@ -1227,7 +1220,7 @@ public class EC2Engine extends ManagerBase {
 
             // -> no volume name is given in the Amazon request but is required in the cloud API
             CloudStackVolume vol =
-                getApi().createVolume(UUID.randomUUID().toString(), null, diskOfferingId, null, size, snapshotId, toZoneId(request.getZoneName(), null));
+                    getApi().createVolume(UUID.randomUUID().toString(), null, diskOfferingId, null, size, snapshotId, toZoneId(request.getZoneName(), null));
             if (vol != null) {
                 resp.setAttached(vol.getAttached());
                 resp.setCreated(vol.getCreated());
@@ -1429,8 +1422,7 @@ public class EC2Engine extends ManagerBase {
                 logger.info("EC2 RunInstances - zone [" + request.getZoneName() + "] not found!");
                 throw new Exception("zone not found");
             }
-            // we choose first zone?
-            CloudStackZone zone = zones.get(0);
+            zones.get(0);
 
             // network
             //CloudStackNetwork network = findNetwork(zone);
@@ -1450,8 +1442,8 @@ public class EC2Engine extends ManagerBase {
             for (int i = 0; i < createInstances; i++) {
                 try {
                     CloudStackUserVm resp =
-                        getApi().deployVirtualMachine(svcOffering.getId(), request.getTemplateId(), zoneId, null, null, null, null, null, null, null,
-                            request.getKeyName(), null, null, groupIds, groupNames, request.getSize().longValue(), request.getUserData());
+                            getApi().deployVirtualMachine(svcOffering.getId(), request.getTemplateId(), zoneId, null, null, null, null, null, null, null,
+                                    request.getKeyName(), null, null, groupIds, groupNames, request.getSize().longValue(), request.getUserData());
                     EC2Instance vm = new EC2Instance();
                     vm.setId(resp.getId().toString());
                     vm.setName(resp.getName());
@@ -1674,7 +1666,7 @@ public class EC2Engine extends ManagerBase {
      * @param ifs - filter out unwanted instances
      */
     private EC2DescribeInstancesResponse listVirtualMachines(String[] virtualMachineIds, EC2InstanceFilterSet ifs, List<CloudStackKeyValue> resourceTags)
-        throws Exception {
+            throws Exception {
         EC2DescribeInstancesResponse instances = new EC2DescribeInstancesResponse();
 
         if (null == virtualMachineIds || 0 == virtualMachineIds.length) {
@@ -1698,7 +1690,7 @@ public class EC2Engine extends ManagerBase {
      * @param instanceId - if interested in volumes for a specific instance, null if instance is not important
      */
     private EC2DescribeVolumesResponse listVolumes(String volumeId, String instanceId, EC2DescribeVolumesResponse volumes, List<CloudStackKeyValue> resourceTagSet)
-        throws Exception {
+            throws Exception {
 
         List<CloudStackVolume> vols = getApi().listVolumes(null, null, null, volumeId, null, null, null, null, null, instanceId, null, resourceTagSet);
         if (vols != null && vols.size() > 0) {
@@ -1890,11 +1882,11 @@ public class EC2Engine extends ManagerBase {
      *         EC2Instance objects loaded.
      */
     private EC2DescribeInstancesResponse lookupInstances(String instanceId, EC2DescribeInstancesResponse instances, List<CloudStackKeyValue> resourceTagSet)
-        throws Exception {
+            throws Exception {
 
         String instId = instanceId != null ? instanceId : null;
         List<CloudStackUserVm> vms =
-            getApi().listVirtualMachines(null, null, true, null, null, null, null, instId, null, null, null, null, null, null, null, null, resourceTagSet);
+                getApi().listVirtualMachines(null, null, true, null, null, null, null, instId, null, null, null, null, null, null, null, null, resourceTagSet);
 
         if (vms != null && vms.size() > 0) {
             for (CloudStackUserVm cloudVm : vms) {
@@ -2310,7 +2302,7 @@ public class EC2Engine extends ManagerBase {
      */
     private CloudStackNetwork createDefaultGuestNetwork(String zoneId, CloudStackNetworkOffering offering, CloudStackAccount owner) throws Exception {
         return getApi().createNetwork(owner.getName() + "-network", owner.getName() + "-network", offering.getId(), zoneId, owner.getName(), owner.getDomainId(), true,
-            null, null, null, null, null, null, null, null);
+                null, null, null, null, null, null, null, null);
     }
 
     /**
@@ -2430,49 +2422,49 @@ public class EC2Engine extends ManagerBase {
         Integer devId = new Integer(deviceId);
         if (null != hypervisor && hypervisor.toLowerCase().contains("windows")) {
             switch (devId) {
-                case 1:
-                    return "xvdb";
-                case 2:
-                    return "xvdc";
-                case 3:
-                    return "xvdd";
-                case 4:
-                    return "xvde";
-                case 5:
-                    return "xvdf";
-                case 6:
-                    return "xvdg";
-                case 7:
-                    return "xvdh";
-                case 8:
-                    return "xvdi";
-                case 9:
-                    return "xvdj";
-                default:
-                    return new String("" + deviceId);
+            case 1:
+                return "xvdb";
+            case 2:
+                return "xvdc";
+            case 3:
+                return "xvdd";
+            case 4:
+                return "xvde";
+            case 5:
+                return "xvdf";
+            case 6:
+                return "xvdg";
+            case 7:
+                return "xvdh";
+            case 8:
+                return "xvdi";
+            case 9:
+                return "xvdj";
+            default:
+                return new String("" + deviceId);
             }
         } else {    // -> assume its unix
             switch (devId) {
-                case 1:
-                    return "/dev/sdb";
-                case 2:
-                    return "/dev/sdc";
-                case 3:
-                    return "/dev/sdd";
-                case 4:
-                    return "/dev/sde";
-                case 5:
-                    return "/dev/sdf";
-                case 6:
-                    return "/dev/sdg";
-                case 7:
-                    return "/dev/sdh";
-                case 8:
-                    return "/dev/sdi";
-                case 9:
-                    return "/dev/sdj";
-                default:
-                    return new String("" + deviceId);
+            case 1:
+                return "/dev/sdb";
+            case 2:
+                return "/dev/sdc";
+            case 3:
+                return "/dev/sdd";
+            case 4:
+                return "/dev/sde";
+            case 5:
+                return "/dev/sdf";
+            case 6:
+                return "/dev/sdg";
+            case 7:
+                return "/dev/sdh";
+            case 8:
+                return "/dev/sdi";
+            case 9:
+                return "/dev/sdj";
+            default:
+                return new String("" + deviceId);
             }
         }
     }
@@ -2697,8 +2689,8 @@ public class EC2Engine extends ManagerBase {
                 if (errorMessage.contains("Object vm_instance(uuid:") && errorMessage.contains(") does not exist")) {
                     throw new EC2ServiceException(ClientError.InvalidInstanceID_NotFound, "Specified Instance ID does not exist");
                 } else if (errorMessage.contains("Unable to find security group by name") || errorMessage.contains("Unable to find security group") ||
-                    (errorMessage.contains("Object security_group(uuid:") && errorMessage.contains(") does not exist")) ||
-                    errorMessage.contains("Unable to find group by name ")) {
+                        (errorMessage.contains("Object security_group(uuid:") && errorMessage.contains(") does not exist")) ||
+                        errorMessage.contains("Unable to find group by name ")) {
                     throw new EC2ServiceException(ClientError.InvalidGroup_NotFound, "Specified Security Group does not exist");
                 } else if (errorMessage.contains("Invalid port numbers")) {
                     throw new EC2ServiceException(ClientError.InvalidPermission_Malformed, "Specified Port value is invalid");
@@ -2717,7 +2709,7 @@ public class EC2Engine extends ManagerBase {
                 } else if (errorMessage.contains("Object snapshots(uuid:") && errorMessage.contains(") does not exist")) {
                     throw new EC2ServiceException(ClientError.InvalidSnapshot_NotFound, "Specified Snapshot ID doesn't exist");
                 } else if ((errorMessage.contains("A key pair with name '") && errorMessage.contains("' does not exist")) ||
-                    (errorMessage.contains("A key pair with name '") && errorMessage.contains("' was not found"))) {
+                        (errorMessage.contains("A key pair with name '") && errorMessage.contains("' was not found"))) {
                     throw new EC2ServiceException(ClientError.InvalidKeyPair_NotFound, "Specified Key pair name is invalid");
                 } else if (errorMessage.contains("A key pair with name '") && errorMessage.contains("' already exists")) {
                     throw new EC2ServiceException(ClientError.InvalidKeyPair_Duplicate, "Specified Key pair already exists");
@@ -2744,7 +2736,7 @@ public class EC2Engine extends ManagerBase {
                 } else if (errorMessage.contains("Unable to find tags by parameters specified")) {
                     throw new EC2ServiceException(ClientError.InvalidParameterValue, "Specified resourceTag for the specified resourceId doesn't exist");
                 } else if (errorMessage.contains("Failed to enable static nat for the ip address with specified ipId "
-                    + "as vm with specified vmId is already associated with specified currentIp")) {
+                        + "as vm with specified vmId is already associated with specified currentIp")) {
                     throw new EC2ServiceException(ClientError.InvalidParameterValue, "Specified publicIp is already associated to the specified VM");
                 } else if (errorMessage.contains("Specified IP address id is not associated with any vm Id")) {
                     throw new EC2ServiceException(ClientError.InvalidParameterValue, "Specified publicIp is not associated to any VM");
@@ -2792,7 +2784,7 @@ public class EC2Engine extends ManagerBase {
                     throw new EC2ServiceException(ClientError.InvalidAMIID_NotFound, "Specified ImageId is unavailable");
                 } else if (errorMessage.contains("cannot stop VM") && errorMessage.contains("when it is in state Starting")) {
                     throw new EC2ServiceException(ClientError.IncorrectInstanceState,
-                        "Unable to stop. One or more of the specified instances is in an incorrect state 'pending'");
+                            "Unable to stop. One or more of the specified instances is in an incorrect state 'pending'");
                 } else if (errorMessage.contains("Failed to authorize security group ingress rule(s)")) {
                     throw new EC2ServiceException(ClientError.InvalidParameterValue, "Specified Ip-permission is invalid" + " or the Ip-permission already exists");
                 } else if (errorMessage.contains("Failed to reboot vm instance")) {
@@ -2807,7 +2799,7 @@ public class EC2Engine extends ManagerBase {
                     throw new EC2ServiceException(ClientError.VolumeLimitExceeded, "You have reached the limit on the number of volumes that can be created");
                 } else if (errorMessage.contains("Maximum number of resources of type 'public_ip' for account") && errorMessage.contains("has been exceeded")) {
                     throw new EC2ServiceException(ClientError.AddressLimitExceeded,
-                        "You have reached the limit on the number of elastic ip addresses your account can have");
+                            "You have reached the limit on the number of elastic ip addresses your account can have");
                 } else if (errorMessage.contains("Unable to apply save userdata entry on router")) {
                     throw new EC2ServiceException(ClientError.InvalidParameterValue, "The value supplied for parameter UserData is invalid");
                 } else {
@@ -2855,7 +2847,7 @@ public class EC2Engine extends ManagerBase {
                 throw new EC2ServiceException(ServerError.InternalError, "Unable to start the instance that was stopped during image creation");
             } else if (errorMessage.contains("One or more of instanceIds specified is in stopped state")) {
                 throw new EC2ServiceException(ClientError.IncorrectInstanceState,
-                    "Unable to reboot. One or more of the specified instances is in an incorrect state 'stopped'");
+                        "Unable to reboot. One or more of the specified instances is in an incorrect state 'stopped'");
             } else if (errorMessage.contains("Specified ipAddress doesn't exist")) {
                 throw new EC2ServiceException(ClientError.InvalidParameterValue, "Specified publicIp doesn't exist");
             } else if (errorMessage.contains("Min Count is greater than the number of instances left to allocate")) {
@@ -2874,7 +2866,7 @@ public class EC2Engine extends ManagerBase {
                 throw new EC2ServiceException(ClientError.InvalidInstanceID_NotFound, "One or more of the specified instanceId not found");
             } else if (errorMessage.contains("Cannot modify, instance should be in stopped state")) {
                 throw new EC2ServiceException(ClientError.IncorrectInstanceState,
-                    "Unable to modify instance attribute. Specified instance is not in the correct state 'stopped'");
+                        "Unable to modify instance attribute. Specified instance is not in the correct state 'stopped'");
             } else {
                 throw new EC2ServiceException(ServerError.InternalError, "An unexpected error occured");
             }


[2/2] git commit: updated refs/heads/master to cc913cf

Posted by hu...@apache.org.
Fix CID 1116497 Resource leak

Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/cc913cf0
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/cc913cf0
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/cc913cf0

Branch: refs/heads/master
Commit: cc913cf0bb7e62b7a216e2de793336e61a49b485
Parents: 5c29f3f
Author: Hugo Trippaers <ht...@schubergphilis.com>
Authored: Fri Jul 4 13:50:03 2014 +0200
Committer: Hugo Trippaers <ht...@schubergphilis.com>
Committed: Fri Jul 4 13:50:33 2014 +0200

----------------------------------------------------------------------
 .../server/src/com/cloud/consoleproxy/ConsoleProxy.java         | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cc913cf0/services/console-proxy/server/src/com/cloud/consoleproxy/ConsoleProxy.java
----------------------------------------------------------------------
diff --git a/services/console-proxy/server/src/com/cloud/consoleproxy/ConsoleProxy.java b/services/console-proxy/server/src/com/cloud/consoleproxy/ConsoleProxy.java
index 02fda64..3b3b82f 100644
--- a/services/console-proxy/server/src/com/cloud/consoleproxy/ConsoleProxy.java
+++ b/services/console-proxy/server/src/com/cloud/consoleproxy/ConsoleProxy.java
@@ -307,6 +307,11 @@ public class ConsoleProxy {
                 s_logger.error(e.toString(), e);
             }
         }
+        try {
+            confs.close();
+        } catch (IOException e) {
+            s_logger.error("Failed to close consolepropxy.properties : " + e.toString(), e);
+        }
 
         start(conf);
     }