You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by li...@apache.org on 2013/06/28 07:34:11 UTC

[53/55] [abbrv] git commit: updated refs/heads/awsapi-ec2-version-update to f74b243

CLOUDSTACK-1444. Updated EC2SoapService and EC2SoapServiceImpl to be compatible with the java stubs generated from EC2 WSDL 2012-08-15.
 - by adding stubs for the new EC2 APIs (unsupported by CS AWSAPI)
 - by setting the new EC2 API response elements
 - by adding support for the new EC2 API request elements
[Support for EC2 API version 2012-08-15]


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

Branch: refs/heads/awsapi-ec2-version-update
Commit: 9d56244f411c60f6c269265ac004766ea67abe65
Parents: 7d2a33b
Author: Likitha Shetty <li...@citrix.com>
Authored: Mon Oct 15 18:32:56 2012 +0530
Committer: Likitha Shetty <li...@citrix.com>
Committed: Fri Jun 28 10:46:33 2013 +0530

----------------------------------------------------------------------
 .../cloud/bridge/service/EC2RestServlet.java    |   8 +-
 .../cloud/bridge/service/EC2SoapService.java    | 344 +++++++++++++++++-
 .../bridge/service/EC2SoapServiceImpl.java      | 362 ++++++++++++++++++-
 .../bridge/service/core/ec2/EC2Engine.java      |  24 +-
 .../service/core/ec2/EC2RunInstances.java       |  24 +-
 5 files changed, 732 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d56244f/awsapi/src/com/cloud/bridge/service/EC2RestServlet.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/bridge/service/EC2RestServlet.java b/awsapi/src/com/cloud/bridge/service/EC2RestServlet.java
index 40cabb6..de84aee 100644
--- a/awsapi/src/com/cloud/bridge/service/EC2RestServlet.java
+++ b/awsapi/src/com/cloud/bridge/service/EC2RestServlet.java
@@ -1259,8 +1259,12 @@ public class EC2RestServlet extends HttpServlet {
             String key = (String)names.nextElement();
             if ( key.startsWith("SecurityGroup")) {
                 String[] value = request.getParameterValues(key);
-                if (null != value && 0 < value.length)
-                    EC2request.addGroupName( value[0]);
+                if (null != value && 0 < value.length) {
+                    if ( key.startsWith("SecurityGroupId"))
+                        EC2request.addSecuritGroupId( value[0]);
+                    else
+                        EC2request.addSecuritGroupName( value[0]);
+                }
             }
         }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d56244f/awsapi/src/com/cloud/bridge/service/EC2SoapService.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/bridge/service/EC2SoapService.java b/awsapi/src/com/cloud/bridge/service/EC2SoapService.java
index 1f7f612..0202c33 100644
--- a/awsapi/src/com/cloud/bridge/service/EC2SoapService.java
+++ b/awsapi/src/com/cloud/bridge/service/EC2SoapService.java
@@ -568,4 +568,346 @@ public class EC2SoapService implements AmazonEC2SkeletonInterface {
 			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
 			return ec2Service.importVolume(importVolume);
 		}
-}
+		
+
+		@Override
+		public ResetNetworkInterfaceAttributeResponse resetNetworkInterfaceAttribute(
+				ResetNetworkInterfaceAttribute resetNetworkInterfaceAttribute) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.resetNetworkInterfaceAttribute(resetNetworkInterfaceAttribute);
+		}
+
+		@Override
+		public CreateRouteTableResponse createRouteTable(
+				CreateRouteTable createRouteTable) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.createRouteTable(createRouteTable);
+		}
+
+		@Override
+		public CreateNetworkAclEntryResponse createNetworkAclEntry(
+				CreateNetworkAclEntry createNetworkAclEntry) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.createNetworkAclEntry(createNetworkAclEntry);
+		}
+
+		@Override
+		public DescribeVolumeAttributeResponse describeVolumeAttribute(
+				DescribeVolumeAttribute describeVolumeAttribute) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.describeVolumeAttribute(describeVolumeAttribute);
+		}
+
+		@Override
+		public DeleteNetworkInterfaceResponse deleteNetworkInterface(
+				DeleteNetworkInterface deleteNetworkInterface) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.deleteNetworkInterface(deleteNetworkInterface);
+		}
+
+		@Override
+		public CreateInternetGatewayResponse createInternetGateway(
+				CreateInternetGateway createInternetGateway) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.createInternetGateway(createInternetGateway);
+		}
+
+		@Override
+		public DisassociateRouteTableResponse disassociateRouteTable(
+				DisassociateRouteTable disassociateRouteTable) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.disassociateRouteTable(disassociateRouteTable);
+		}
+
+		@Override
+		public ReplaceNetworkAclEntryResponse replaceNetworkAclEntry(
+				ReplaceNetworkAclEntry replaceNetworkAclEntry) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.replaceNetworkAclEntry(replaceNetworkAclEntry);
+		}
+
+		@Override
+		public AuthorizeSecurityGroupEgressResponse authorizeSecurityGroupEgress(
+				AuthorizeSecurityGroupEgress authorizeSecurityGroupEgress) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.authorizeSecurityGroupEgress(authorizeSecurityGroupEgress);
+		}
+
+		@Override
+		public DeleteNetworkAclEntryResponse deleteNetworkAclEntry(
+				DeleteNetworkAclEntry deleteNetworkAclEntry) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.deleteNetworkAclEntry(deleteNetworkAclEntry);
+		}
+
+		@Override
+		public DeleteRouteTableResponse deleteRouteTable(
+				DeleteRouteTable deleteRouteTable) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.deleteRouteTable(deleteRouteTable);
+		}
+
+		@Override
+		public DescribeNetworkInterfaceAttributeResponse describeNetworkInterfaceAttribute(
+				DescribeNetworkInterfaceAttribute describeNetworkInterfaceAttribute) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.describeNetworkInterfaceAttribute(describeNetworkInterfaceAttribute);
+		}
+
+		@Override
+		public CreateReservedInstancesListingResponse createReservedInstancesListing(
+				CreateReservedInstancesListing createReservedInstancesListing) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.createReservedInstancesListing(createReservedInstancesListing);
+		}
+
+		@Override
+		public CreateNetworkAclResponse createNetworkAcl(
+				CreateNetworkAcl createNetworkAcl) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.createNetworkAcl(createNetworkAcl);
+		}
+
+		@Override
+		public ModifyVolumeAttributeResponse modifyVolumeAttribute(
+				ModifyVolumeAttribute modifyVolumeAttribute) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.modifyVolumeAttribute(modifyVolumeAttribute);
+		}
+
+		@Override
+		public ReplaceNetworkAclAssociationResponse replaceNetworkAclAssociation(
+				ReplaceNetworkAclAssociation replaceNetworkAclAssociation) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.replaceNetworkAclAssociation(replaceNetworkAclAssociation);
+		}
+
+		@Override
+		public EnableVgwRoutePropagationResponse enableVgwRoutePropagation(
+				EnableVgwRoutePropagation enableVgwRoutePropagation) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.enableVgwRoutePropagation(enableVgwRoutePropagation);
+		}
+
+		@Override
+		public UnassignPrivateIpAddressesResponse unassignPrivateIpAddresses(
+				UnassignPrivateIpAddresses unassignPrivateIpAddresses) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.unassignPrivateIpAddresses(unassignPrivateIpAddresses);
+		}
+
+		@Override
+		public DeleteVpnConnectionRouteResponse deleteVpnConnectionRoute(
+				DeleteVpnConnectionRoute deleteVpnConnectionRoute) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.deleteVpnConnectionRoute(deleteVpnConnectionRoute);
+		}
+
+		@Override
+		public CancelReservedInstancesListingResponse cancelReservedInstancesListing(
+				CancelReservedInstancesListing cancelReservedInstancesListing) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.cancelReservedInstancesListing(cancelReservedInstancesListing);
+		}
+
+		@Override
+		public DescribeNetworkAclsResponse describeNetworkAcls(
+				DescribeNetworkAcls describeNetworkAcls) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.describeNetworkAcls(describeNetworkAcls);
+		}
+
+		@Override
+		public EnableVolumeIOResponse enableVolumeIO(
+				EnableVolumeIO enableVolumeIO) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.enableVolumeIO(enableVolumeIO);
+		}
+
+		@Override
+		public DescribeInternetGatewaysResponse describeInternetGateways(
+				DescribeInternetGateways describeInternetGateways) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.describeInternetGateways(describeInternetGateways);
+		}
+
+		@Override
+		public DescribeReservedInstancesListingsResponse describeReservedInstancesListings(
+				DescribeReservedInstancesListings describeReservedInstancesListings) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.describeReservedInstancesListings(describeReservedInstancesListings);
+		}
+
+		@Override
+		public DescribeInstanceStatusResponse describeInstanceStatus(
+				DescribeInstanceStatus describeInstanceStatus) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.describeInstanceStatus(describeInstanceStatus);
+		}
+
+		@Override
+		public ModifyNetworkInterfaceAttributeResponse modifyNetworkInterfaceAttribute(
+				ModifyNetworkInterfaceAttribute modifyNetworkInterfaceAttribute) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.modifyNetworkInterfaceAttribute(modifyNetworkInterfaceAttribute);
+		}
+
+		@Override
+		public DisableVgwRoutePropagationResponse disableVgwRoutePropagation(
+				DisableVgwRoutePropagation disableVgwRoutePropagation) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.disableVgwRoutePropagation(disableVgwRoutePropagation);
+		}
+
+		@Override
+		public DescribeVolumeStatusResponse describeVolumeStatus(
+				DescribeVolumeStatus describeVolumeStatus) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.describeVolumeStatus(describeVolumeStatus);
+		}
+
+		@Override
+		public DetachNetworkInterfaceResponse detachNetworkInterface(
+				DetachNetworkInterface detachNetworkInterface) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.detachNetworkInterface(detachNetworkInterface);
+		}
+
+		@Override
+		public DescribeNetworkInterfacesResponse describeNetworkInterfaces(
+				DescribeNetworkInterfaces describeNetworkInterfaces) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.describeNetworkInterfaces(describeNetworkInterfaces);
+		}
+
+		@Override
+		public CancelExportTaskResponse cancelExportTask(
+				CancelExportTask cancelExportTask) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.cancelExportTask(cancelExportTask);
+		}
+
+		@Override
+		public CreateRouteResponse createRoute(CreateRoute createRoute) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.createRoute(createRoute);
+		}
+
+		@Override
+		public DescribeRouteTablesResponse describeRouteTables(
+				DescribeRouteTables describeRouteTables) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.describeRouteTables(describeRouteTables);
+		}
+
+		@Override
+		public DeleteNetworkAclResponse deleteNetworkAcl(
+				DeleteNetworkAcl deleteNetworkAcl) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.deleteNetworkAcl(deleteNetworkAcl);
+		}
+
+		@Override
+		public DeleteRouteResponse deleteRoute(DeleteRoute deleteRoute) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.deleteRoute(deleteRoute);
+		}
+
+		@Override
+		public CreateVpnConnectionRouteResponse createVpnConnectionRoute(
+				CreateVpnConnectionRoute createVpnConnectionRoute) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.createVpnConnectionRoute(createVpnConnectionRoute);
+		}
+
+		@Override
+		public AttachInternetGatewayResponse attachInternetGateway(
+				AttachInternetGateway attachInternetGateway) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.attachInternetGateway(attachInternetGateway);
+		}
+
+		@Override
+		public ReplaceRouteTableAssociationResponse replaceRouteTableAssociation(
+				ReplaceRouteTableAssociation replaceRouteTableAssociation) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.replaceRouteTableAssociation(replaceRouteTableAssociation);
+		}
+
+		@Override
+		public AssociateRouteTableResponse associateRouteTable(
+				AssociateRouteTable associateRouteTable) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.associateRouteTable(associateRouteTable);
+		}
+
+		@Override
+		public DetachInternetGatewayResponse detachInternetGateway(
+				DetachInternetGateway detachInternetGateway) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.detachInternetGateway(detachInternetGateway);
+		}
+
+		@Override
+		public DescribeExportTasksResponse describeExportTasks(
+				DescribeExportTasks describeExportTasks) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.describeExportTasks(describeExportTasks);
+		}
+
+		@Override
+		public CreateInstanceExportTaskResponse createInstanceExportTask(
+				CreateInstanceExportTask createInstanceExportTask) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.createInstanceExportTask(createInstanceExportTask);
+		}
+
+		@Override
+		public AssignPrivateIpAddressesResponse assignPrivateIpAddresses(
+				AssignPrivateIpAddresses assignPrivateIpAddresses) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.assignPrivateIpAddresses(assignPrivateIpAddresses);
+		}
+
+		@Override
+		public ReportInstanceStatusResponse reportInstanceStatus(
+				ReportInstanceStatus reportInstanceStatus) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.reportInstanceStatus(reportInstanceStatus);
+		}
+
+		@Override
+		public DeleteInternetGatewayResponse deleteInternetGateway(
+				DeleteInternetGateway deleteInternetGateway) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.deleteInternetGateway(deleteInternetGateway);
+		}
+
+		@Override
+		public AttachNetworkInterfaceResponse attachNetworkInterface(
+				AttachNetworkInterface attachNetworkInterface) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.attachNetworkInterface(attachNetworkInterface);
+		}
+
+		@Override
+		public CreateNetworkInterfaceResponse createNetworkInterface(
+				CreateNetworkInterface createNetworkInterface) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.createNetworkInterface(createNetworkInterface);
+		}
+
+		@Override
+		public RevokeSecurityGroupEgressResponse revokeSecurityGroupEgress(
+				RevokeSecurityGroupEgress revokeSecurityGroupEgress) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.revokeSecurityGroupEgress(revokeSecurityGroupEgress);
+		}
+
+		@Override
+		public ReplaceRouteResponse replaceRoute(ReplaceRoute replaceRoute) {
+			AmazonEC2SkeletonInterface ec2Service = ServiceProvider.getInstance().getServiceImpl(AmazonEC2SkeletonInterface.class);
+			return ec2Service.replaceRoute(replaceRoute);
+	
+		}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d56244f/awsapi/src/com/cloud/bridge/service/EC2SoapServiceImpl.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/bridge/service/EC2SoapServiceImpl.java b/awsapi/src/com/cloud/bridge/service/EC2SoapServiceImpl.java
index f6ac971..3e3f578 100644
--- a/awsapi/src/com/cloud/bridge/service/EC2SoapServiceImpl.java
+++ b/awsapi/src/com/cloud/bridge/service/EC2SoapServiceImpl.java
@@ -122,8 +122,9 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
 	public AuthorizeSecurityGroupIngressResponse authorizeSecurityGroupIngress(AuthorizeSecurityGroupIngress authorizeSecurityGroupIngress) {
         AuthorizeSecurityGroupIngressType sgit = authorizeSecurityGroupIngress.getAuthorizeSecurityGroupIngress();        
         IpPermissionSetType ipPerms = sgit.getIpPermissions();
-        
-        EC2AuthorizeRevokeSecurityGroup request = toSecurityGroup( sgit.getGroupName(), ipPerms.getItem());
+
+        EC2AuthorizeRevokeSecurityGroup request = toSecurityGroup(
+                sgit.getAuthorizeSecurityGroupIngressTypeChoice_type0().getGroupName(), ipPerms.getItem());
 		return toAuthorizeSecurityGroupIngressResponse( engine.authorizeSecurityGroup( request ));
 	}
 
@@ -132,8 +133,9 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
 	{
         RevokeSecurityGroupIngressType sgit = revokeSecurityGroupIngress.getRevokeSecurityGroupIngress();        
         IpPermissionSetType ipPerms = sgit.getIpPermissions();
-        
-        EC2AuthorizeRevokeSecurityGroup request = toSecurityGroup( sgit.getGroupName(), ipPerms.getItem());
+
+        EC2AuthorizeRevokeSecurityGroup request = toSecurityGroup(
+                sgit.getRevokeSecurityGroupIngressTypeChoice_type0().getGroupName(), ipPerms.getItem());
 		return toRevokeSecurityGroupIngressResponse( engine.revokeSecurityGroup( request ));
 	}
 
@@ -478,8 +480,8 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
     @Override
     public ReleaseAddressResponse releaseAddress(ReleaseAddress releaseAddress) {
     	EC2ReleaseAddress request = new EC2ReleaseAddress();
-    	
-    	request.setPublicIp(releaseAddress.getReleaseAddress().getPublicIp());
+
+        request.setPublicIp(releaseAddress.getReleaseAddress().getReleaseAddressTypeChoice_type0().getPublicIp());
     	
         return toReleaseAddressResponse( engine.releaseAddress( request ) );
     }
@@ -487,10 +489,12 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
     @Override
     public AssociateAddressResponse associateAddress(AssociateAddress associateAddress) {
     	EC2AssociateAddress request = new EC2AssociateAddress();
-    	
-    	request.setPublicIp(associateAddress.getAssociateAddress().getPublicIp());
-    	request.setInstanceId(associateAddress.getAssociateAddress().getInstanceId());
-    	
+	
+        request.setPublicIp( associateAddress.getAssociateAddress().
+                getAssociateAddressTypeChoice_type0().getPublicIp());
+        request.setInstanceId(associateAddress.getAssociateAddress().
+                getAssociateAddressTypeChoice_type1().getInstanceId());
+
         return toAssociateAddressResponse( engine.associateAddress( request ) );
     }
 
@@ -794,7 +798,12 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
 		if (null != gst) {
 			GroupItemType[] items = gst.getItem();
 			if (null != items) {
-				for( int i=0; i < items.length; i++ ) request.addGroupName(items[i].getGroupId());
+                for( int i=0; i < items.length; i++ ) {
+                    if ( items[i].getGroupName() != null) // either SG-name or SG-id can be provided
+                        request.addSecuritGroupName( items[i].getGroupName());
+                    else
+                        request.addSecuritGroupId( items[i].getGroupId());
+                }
 		    }
 		}
 		return toRunInstancesResponse( engine.runInstances( request ), engine);
@@ -973,6 +982,7 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
 		    ProductCodesSetType param4 = new ProductCodesSetType();
 	        ProductCodesSetItemType param5 = new ProductCodesSetItemType();
 	        param5.setProductCode( "" );
+            param5.setType("");
             param4.addItem( param5 );		    
 		    param3.setProductCodes( param4 );
 		    
@@ -1342,6 +1352,7 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
 	        param3.setSnapshotId(snapId);
 	        param3.setAvailabilityZone( vol.getZoneName());
 	        param3.setStatus( vol.getState());
+	        param3.setVolumeType("standard");
 	        
         	// -> CloudStack seems to have issues with timestamp formats so just in case
 	        Calendar cal = EC2RestAuth.parseDateString(vol.getCreated());
@@ -1427,11 +1438,13 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
             if (null == groups || 0 == groups.length) {
                 GroupItemType param5 = new GroupItemType();
                 param5.setGroupId("");
+                param5.setGroupName("");
                 param4.addItem( param5 );
             } else {
                 for (EC2SecurityGroup group : groups) {
                     GroupItemType param5 = new GroupItemType();
                     param5.setGroupId(group.getId());
+                    param5.setGroupName("");
                     param4.addItem( param5 );
                 }
             }
@@ -1458,6 +1471,7 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
 	        ProductCodesSetType param9 = new ProductCodesSetType();
 	        ProductCodesSetItemType param10 = new ProductCodesSetItemType();
 	        param10.setProductCode( "" );
+            param10.setType("");
             param9.addItem( param10 );
 	        param7.setProductCodes( param9 );
 	        
@@ -1494,7 +1508,13 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
             param7.setRootDeviceType( "" );
         	String devicePath = engine.cloudDeviceIdToDevicePath( inst.getHypervisor(), inst.getRootDeviceId());
             param7.setRootDeviceName( devicePath );
-            
+
+            GroupSetType param14 = new GroupSetType();
+            GroupItemType param15 = new GroupItemType(); // VPC security group
+            param15.setGroupName("");
+            param15.setGroupName("");
+            param14.addItem(param15);
+            param7.setGroupSet(param14);
 
             param7.setInstanceLifecycle( "" );
             param7.setSpotInstanceRequestId( "" );
@@ -1542,6 +1562,8 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
     	AllocateAddressResponseType param1 = new AllocateAddressResponseType();
     	
     	param1.setPublicIp(ec2Address.getIpAddress());
+        param1.setDomain("standard");
+        param1.setAllocationId("");
     	param1.setRequestId(UUID.randomUUID().toString());
     	response.setAllocateAddressResponse(param1);
     	return response;
@@ -1561,7 +1583,8 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
     public static AssociateAddressResponse toAssociateAddressResponse(final boolean result) {
     	AssociateAddressResponse response = new AssociateAddressResponse();
     	AssociateAddressResponseType param1 = new AssociateAddressResponseType();
-    	
+
+        param1.setAssociationId("");
     	param1.setRequestId(UUID.randomUUID().toString());
     	param1.set_return(result);
     	
@@ -1761,6 +1784,7 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
 	        ProductCodesSetType param9 = new ProductCodesSetType();
 	        ProductCodesSetItemType param10 = new ProductCodesSetItemType();
 	        param10.setProductCode( "" );
+            param10.setType("");
             param9.addItem( param10 );
 	        param7.setProductCodes( param9 );
 	        
@@ -1809,7 +1833,14 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
             param19.setValue("");
             param18.addItem( param19 );
             param7.setTagSet( param18 );          
-            
+
+            GroupSetType param14 = new GroupSetType();
+            GroupItemType param15 = new GroupItemType();
+            param15.setGroupId("");
+            param15.setGroupName("");
+            param14.addItem(param15);
+            param7.setGroupSet(param14);
+
             String hypervisor = inst.getHypervisor();
             param7.setHypervisor((null != hypervisor ? hypervisor : ""));
 	        param6.addItem( param7 );
@@ -1907,6 +1938,7 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
         }
 		param1.setCreateTime( cal );
 
+        param1.setVolumeType("standard");
 		param1.setRequestId( UUID.randomUUID().toString());
         response.setCreateVolumeResponse( param1 );
 		return response;
@@ -2040,6 +2072,8 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
 			param3.setGroupName(group.getName());
 			String desc = group.getDescription();
 			param3.setGroupDescription((null != desc ? desc : ""));
+            param3.setGroupId(group.getId());
+            param3.setVpcId("");
 
 			IpPermissionSetType param4 = new IpPermissionSetType();
 			EC2IpPermission[] perms = group.getIpPermissionSet();
@@ -2101,11 +2135,16 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
 		return response;
 	}
 	
-	public static CreateSecurityGroupResponse toCreateSecurityGroupResponse( boolean success ) {
+
+    public static CreateSecurityGroupResponse toCreateSecurityGroupResponse( EC2SecurityGroup sg ) {
 		CreateSecurityGroupResponse response = new CreateSecurityGroupResponse();
 		CreateSecurityGroupResponseType param1 = new CreateSecurityGroupResponseType();
 
-		param1.set_return(success);
+        param1.setGroupId( sg.getId() );
+        if ( sg.getId() != null )
+            param1.set_return(true);
+        else
+            param1.set_return(false);
 		param1.setRequestId( UUID.randomUUID().toString());
 		response.setCreateSecurityGroupResponse( param1 );
 		return response;
@@ -2540,4 +2579,295 @@ public class EC2SoapServiceImpl implements AmazonEC2SkeletonInterface  {
 	public ResetSnapshotAttributeResponse resetSnapshotAttribute(ResetSnapshotAttribute resetSnapshotAttribute) {
 		throw new EC2ServiceException(ClientError.Unsupported, "This operation is not available");
 	}
+	
+
+	public ResetNetworkInterfaceAttributeResponse resetNetworkInterfaceAttribute(
+			ResetNetworkInterfaceAttribute resetNetworkInterfaceAttribute) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public CreateRouteTableResponse createRouteTable(
+			CreateRouteTable createRouteTable) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public CreateNetworkAclEntryResponse createNetworkAclEntry(
+			CreateNetworkAclEntry createNetworkAclEntry) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DescribeVolumeAttributeResponse describeVolumeAttribute(
+			DescribeVolumeAttribute describeVolumeAttribute) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DeleteNetworkInterfaceResponse deleteNetworkInterface(
+			DeleteNetworkInterface deleteNetworkInterface) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public CreateInternetGatewayResponse createInternetGateway(
+			CreateInternetGateway createInternetGateway) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DisassociateRouteTableResponse disassociateRouteTable(
+			DisassociateRouteTable disassociateRouteTable) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public ReplaceNetworkAclEntryResponse replaceNetworkAclEntry(
+			ReplaceNetworkAclEntry replaceNetworkAclEntry) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public AuthorizeSecurityGroupEgressResponse authorizeSecurityGroupEgress(
+			AuthorizeSecurityGroupEgress authorizeSecurityGroupEgress) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DeleteNetworkAclEntryResponse deleteNetworkAclEntry(
+			DeleteNetworkAclEntry deleteNetworkAclEntry) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DeleteRouteTableResponse deleteRouteTable(
+			DeleteRouteTable deleteRouteTable) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DescribeNetworkInterfaceAttributeResponse describeNetworkInterfaceAttribute(
+			DescribeNetworkInterfaceAttribute describeNetworkInterfaceAttribute) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public CreateReservedInstancesListingResponse createReservedInstancesListing(
+			CreateReservedInstancesListing createReservedInstancesListing) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public CreateNetworkAclResponse createNetworkAcl(
+			CreateNetworkAcl createNetworkAcl) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public ModifyVolumeAttributeResponse modifyVolumeAttribute(
+			ModifyVolumeAttribute modifyVolumeAttribute) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public ReplaceNetworkAclAssociationResponse replaceNetworkAclAssociation(
+			ReplaceNetworkAclAssociation replaceNetworkAclAssociation) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public EnableVgwRoutePropagationResponse enableVgwRoutePropagation(
+			EnableVgwRoutePropagation enableVgwRoutePropagation) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public UnassignPrivateIpAddressesResponse unassignPrivateIpAddresses(
+			UnassignPrivateIpAddresses unassignPrivateIpAddresses) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DeleteVpnConnectionRouteResponse deleteVpnConnectionRoute(
+			DeleteVpnConnectionRoute deleteVpnConnectionRoute) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public CancelReservedInstancesListingResponse cancelReservedInstancesListing(
+			CancelReservedInstancesListing cancelReservedInstancesListing) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DescribeNetworkAclsResponse describeNetworkAcls(
+			DescribeNetworkAcls describeNetworkAcls) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public EnableVolumeIOResponse enableVolumeIO(EnableVolumeIO enableVolumeIO) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DescribeInternetGatewaysResponse describeInternetGateways(
+			DescribeInternetGateways describeInternetGateways) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DescribeReservedInstancesListingsResponse describeReservedInstancesListings(
+			DescribeReservedInstancesListings describeReservedInstancesListings) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DescribeInstanceStatusResponse describeInstanceStatus(
+			DescribeInstanceStatus describeInstanceStatus) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public ModifyNetworkInterfaceAttributeResponse modifyNetworkInterfaceAttribute(
+			ModifyNetworkInterfaceAttribute modifyNetworkInterfaceAttribute) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DisableVgwRoutePropagationResponse disableVgwRoutePropagation(
+			DisableVgwRoutePropagation disableVgwRoutePropagation) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DescribeVolumeStatusResponse describeVolumeStatus(
+			DescribeVolumeStatus describeVolumeStatus) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DetachNetworkInterfaceResponse detachNetworkInterface(
+			DetachNetworkInterface detachNetworkInterface) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DescribeNetworkInterfacesResponse describeNetworkInterfaces(
+			DescribeNetworkInterfaces describeNetworkInterfaces) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public CancelExportTaskResponse cancelExportTask(
+			CancelExportTask cancelExportTask) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public CreateRouteResponse createRoute(CreateRoute createRoute) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DescribeRouteTablesResponse describeRouteTables(
+			DescribeRouteTables describeRouteTables) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DeleteNetworkAclResponse deleteNetworkAcl(
+			DeleteNetworkAcl deleteNetworkAcl) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DeleteRouteResponse deleteRoute(DeleteRoute deleteRoute) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public CreateVpnConnectionRouteResponse createVpnConnectionRoute(
+			CreateVpnConnectionRoute createVpnConnectionRoute) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public AttachInternetGatewayResponse attachInternetGateway(
+			AttachInternetGateway attachInternetGateway) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public ReplaceRouteTableAssociationResponse replaceRouteTableAssociation(
+			ReplaceRouteTableAssociation replaceRouteTableAssociation) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public AssociateRouteTableResponse associateRouteTable(
+			AssociateRouteTable associateRouteTable) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DetachInternetGatewayResponse detachInternetGateway(
+			DetachInternetGateway detachInternetGateway) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DescribeExportTasksResponse describeExportTasks(
+			DescribeExportTasks describeExportTasks) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public CreateInstanceExportTaskResponse createInstanceExportTask(
+			CreateInstanceExportTask createInstanceExportTask) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public AssignPrivateIpAddressesResponse assignPrivateIpAddresses(
+			AssignPrivateIpAddresses assignPrivateIpAddresses) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public ReportInstanceStatusResponse reportInstanceStatus(
+			ReportInstanceStatus reportInstanceStatus) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public DeleteInternetGatewayResponse deleteInternetGateway(
+			DeleteInternetGateway deleteInternetGateway) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public AttachNetworkInterfaceResponse attachNetworkInterface(
+			AttachNetworkInterface attachNetworkInterface) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public CreateNetworkInterfaceResponse createNetworkInterface(
+			CreateNetworkInterface createNetworkInterface) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public RevokeSecurityGroupEgressResponse revokeSecurityGroupEgress(
+			RevokeSecurityGroupEgress revokeSecurityGroupEgress) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
+
+	public ReplaceRouteResponse replaceRoute(ReplaceRoute replaceRoute) {
+		throw new EC2ServiceException(ClientError.Unsupported,
+				"This operation is not available");
+	}
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d56244f/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 f24bfed..d8f9df8 100644
--- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
+++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2Engine.java
@@ -236,18 +236,18 @@ public class EC2Engine extends ManagerBase {
      * @param groupDesc
      * @return
      */
-    public Boolean createSecurityGroup(String groupName, String groupDesc) {
+    public EC2SecurityGroup createSecurityGroup(String groupName, String groupDesc) {
+        EC2SecurityGroup sg = new EC2SecurityGroup();
         try {
             CloudStackSecurityGroup grp = getApi().createSecurityGroup(groupName, null, groupDesc, null);
             if (grp != null && grp.getId() != null) {
-                return true;
+            	sg.setId(grp.getId());
             }
-            return false;
         } catch( Exception e ) {
             logger.error( "EC2 CreateSecurityGroup - ", e);
             handleException(e);
         }
-        return false;
+        return sg;
     }
 
     /**
@@ -1360,6 +1360,8 @@ public class EC2Engine extends ManagerBase {
         int createInstances    = 0;
         int canCreateInstances = -1;
         int countCreated       = 0;
+        String groupIds   = null;
+        String groupNames = null;
 
         try {
             // ugly...
@@ -1401,13 +1403,25 @@ public class EC2Engine extends ManagerBase {
             // network
             CloudStackNetwork network = findNetwork(zone);
 
+            // for EC2 security groups either a group ID or a group name is accepted
+            String[] sgIdList = request.getSecurityGroupIdSet();
+            String[] sgNameList = request.getSecurityGroupNameSet();
+            if ( sgIdList.length != 0 && sgNameList.length != 0 )
+                throw new EC2ServiceException(ClientError.InvalidParameterCombination,
+                        " for EC2 groups either a group ID or a group name is accepted");
+
+            if (sgIdList.length != 0)
+                groupIds = constructList(sgIdList);
+            if (sgNameList.length != 0)
+                groupNames = constructList(sgNameList);
+
             // now actually deploy the vms
             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, (network != null ? network.getId() : null), 
-                            null, constructList(request.getGroupSet()), request.getSize().longValue(), request.getUserData());
+                            groupIds, groupNames, request.getSize().longValue(), request.getUserData());
                     EC2Instance vm = new EC2Instance();
                     vm.setId(resp.getId().toString());
                     vm.setName(resp.getName());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9d56244f/awsapi/src/com/cloud/bridge/service/core/ec2/EC2RunInstances.java
----------------------------------------------------------------------
diff --git a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2RunInstances.java b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2RunInstances.java
index e3735b5..9029faf 100644
--- a/awsapi/src/com/cloud/bridge/service/core/ec2/EC2RunInstances.java
+++ b/awsapi/src/com/cloud/bridge/service/core/ec2/EC2RunInstances.java
@@ -30,7 +30,8 @@ public class EC2RunInstances {
 	private int    maxCount;
 	private int    minCount;
     private Integer    size;  		// <- in gigs
-    private List<String> groupSet = new ArrayList<String>();
+    private List<String>  groupIdSet;
+    private List<String>  groupNameSet;
 	
 	public EC2RunInstances() {
 		instanceType = null;
@@ -42,6 +43,8 @@ public class EC2RunInstances {
 		maxCount     = 0;
 		minCount     = 0;
 		size		 = 0;
+        groupIdSet   = new ArrayList<String>();
+        groupNameSet = new ArrayList<String>();
 	}
 	
 	public void setInstanceType( String instanceType ) {
@@ -115,12 +118,21 @@ public class EC2RunInstances {
 	public void setSize(Integer size) {
 		this.size = size;
 	}
-	
-    public void addGroupName( String param ) {
-        groupSet.add( param );
+
+    public void addSecuritGroupId( String param ) {
+        groupIdSet.add( param );
     }
 		
-    public String[] getGroupSet() {
-        return groupSet.toArray(new String[0]);
+    public String[] getSecurityGroupIdSet() {
+        return groupIdSet.toArray(new String[0]);
+    }
+
+	public void addSecuritGroupName( String param ) {
+        groupNameSet.add( param );
     }
+		
+    public String[] getSecurityGroupNameSet() {
+        return groupNameSet.toArray(new String[0]);
+    }
+
 }