Repository: incubator-stratos
Updated Branches:
  refs/heads/master f43aff4dd -> 3779ee91b


implementing support to define multiple network interface names in EC2 and 
Openstack IaaSes.


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/3779ee91
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/3779ee91
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/3779ee91

Branch: refs/heads/master
Commit: 3779ee91b0089e7bbf1abd96311b747fa50a9f67
Parents: f43aff4
Author: Nirmal Fernando <[email protected]>
Authored: Mon Feb 17 11:29:34 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Mon Feb 17 11:29:34 2014 +0530

----------------------------------------------------------------------
 .../cloud/controller/iaases/AWSEC2Iaas.java     | 51 ++++++++++++--------
 .../controller/iaases/OpenstackNovaIaas.java    |  8 +++
 .../util/CloudControllerConstants.java          |  1 +
 3 files changed, 39 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/3779ee91/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/AWSEC2Iaas.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/AWSEC2Iaas.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/AWSEC2Iaas.java
index aec86e9..d7fc931 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/AWSEC2Iaas.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/AWSEC2Iaas.java
@@ -53,8 +53,10 @@ import org.jclouds.ec2.features.ElasticBlockStoreApi;
 import org.jclouds.ec2.features.ElasticIPAddressApi;
 import org.jclouds.ec2.options.DescribeAvailabilityZonesOptions;
 import org.jclouds.ec2.options.DetachVolumeOptions;
+import org.jclouds.openstack.nova.v2_0.compute.options.NovaTemplateOptions;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Set;
 
@@ -81,27 +83,27 @@ public class AWSEC2Iaas extends Iaas {
        }
 
        public void buildTemplate() {
-               IaasProvider iaas = getIaasProvider();
-               if (iaas.getComputeService() == null) {
+               IaasProvider iaasInfo = getIaasProvider();
+               if (iaasInfo.getComputeService() == null) {
                        String msg = "Compute service is null for IaaS 
provider: "
-                                       + iaas.getName();
+                                       + iaasInfo.getName();
                        log.fatal(msg);
                        throw new CloudControllerException(msg);
                }
 
-               TemplateBuilder templateBuilder = iaas.getComputeService()
+               TemplateBuilder templateBuilder = iaasInfo.getComputeService()
                                .templateBuilder();
 
                // set image id specified
-               templateBuilder.imageId(iaas.getImage());
+               templateBuilder.imageId(iaasInfo.getImage());
 
-        if(!(iaas instanceof IaasProvider)) {
-           templateBuilder.locationId(iaas.getType());
+        if(!(iaasInfo instanceof IaasProvider)) {
+           templateBuilder.locationId(iaasInfo.getType());
         }
 
-               if (iaas.getProperty(CloudControllerConstants.INSTANCE_TYPE) != 
null) {
+               if 
(iaasInfo.getProperty(CloudControllerConstants.INSTANCE_TYPE) != null) {
                        // set instance type eg: m1.large
-                       
templateBuilder.hardwareId(iaas.getProperty(CloudControllerConstants.INSTANCE_TYPE));
+                       
templateBuilder.hardwareId(iaasInfo.getProperty(CloudControllerConstants.INSTANCE_TYPE));
                }
 
                // build the Template
@@ -111,7 +113,7 @@ public class AWSEC2Iaas extends Iaas {
                // blocking, but if you
                // wish to assign IPs manually, it can be non-blocking.
                // is auto-assign-ip mode or manual-assign-ip mode?
-               boolean blockUntilRunning = Boolean.parseBoolean(iaas
+               boolean blockUntilRunning = Boolean.parseBoolean(iaasInfo
                                
.getProperty(CloudControllerConstants.AUTO_ASSIGN_IP));
                template.getOptions().as(TemplateOptions.class)
                                .blockUntilRunning(blockUntilRunning);
@@ -122,43 +124,50 @@ public class AWSEC2Iaas extends Iaas {
                                .inboundPorts(new int[] {});
 
                // set EC2 specific options
-               if (iaas.getProperty(CloudControllerConstants.SUBNET_ID) != 
null) {
+               if (iaasInfo.getProperty(CloudControllerConstants.SUBNET_ID) != 
null) {
                        template.getOptions().as(AWSEC2TemplateOptions.class)
-                                       
.subnetId(iaas.getProperty(CloudControllerConstants.SUBNET_ID));
+                                       
.subnetId(iaasInfo.getProperty(CloudControllerConstants.SUBNET_ID));
                }
 
-               if 
(iaas.getProperty(CloudControllerConstants.AVAILABILITY_ZONE) != null) {
+               if 
(iaasInfo.getProperty(CloudControllerConstants.AVAILABILITY_ZONE) != null) {
                        template.getOptions().as(AWSEC2TemplateOptions.class)
-                                       
.placementGroup(iaas.getProperty(CloudControllerConstants.AVAILABILITY_ZONE));
+                                       
.placementGroup(iaasInfo.getProperty(CloudControllerConstants.AVAILABILITY_ZONE));
                }
 
         // security group names
-               if (iaas.getProperty(CloudControllerConstants.SECURITY_GROUPS) 
!= null) {
+               if 
(iaasInfo.getProperty(CloudControllerConstants.SECURITY_GROUPS) != null) {
                        template.getOptions()
                                        .as(AWSEC2TemplateOptions.class)
                                        .securityGroups(
-                                                       
iaas.getProperty(CloudControllerConstants.SECURITY_GROUPS).split(
+                                                       
iaasInfo.getProperty(CloudControllerConstants.SECURITY_GROUPS).split(
                                                                        
CloudControllerConstants.ENTRY_SEPARATOR));
 
                }
 
         // security group ids
-        if (iaas.getProperty(CloudControllerConstants.SECURITY_GROUP_IDS) != 
null) {
+        if (iaasInfo.getProperty(CloudControllerConstants.SECURITY_GROUP_IDS) 
!= null) {
             template.getOptions()
                     .as(AWSEC2TemplateOptions.class)
-                    
.securityGroupIds(iaas.getProperty(CloudControllerConstants.SECURITY_GROUP_IDS)
+                    
.securityGroupIds(iaasInfo.getProperty(CloudControllerConstants.SECURITY_GROUP_IDS)
                                         
.split(CloudControllerConstants.ENTRY_SEPARATOR));
 
         }
 
 
-               if (iaas.getProperty(CloudControllerConstants.KEY_PAIR) != 
null) {
+               if (iaasInfo.getProperty(CloudControllerConstants.KEY_PAIR) != 
null) {
                        template.getOptions().as(AWSEC2TemplateOptions.class)
-                                       
.keyPair(iaas.getProperty(CloudControllerConstants.KEY_PAIR));
+                                       
.keyPair(iaasInfo.getProperty(CloudControllerConstants.KEY_PAIR));
+               }
+               
+               if 
(iaasInfo.getProperty(CloudControllerConstants.NETWORK_INTERFACES) != null) {
+                       String networksStr = 
iaasInfo.getProperty(CloudControllerConstants.NETWORK_INTERFACES);
+                       String[] networksArray = 
networksStr.split(CloudControllerConstants.ENTRY_SEPARATOR);
+                       template.getOptions()
+                                       
.as(NovaTemplateOptions.class).networks(Arrays.asList(networksArray));
                }
 
                // set Template
-               iaas.setTemplate(template);
+               iaasInfo.setTemplate(template);
        }
 
        @Override

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/3779ee91/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/OpenstackNovaIaas.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/OpenstackNovaIaas.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/OpenstackNovaIaas.java
index 8e7b1ca..a077991 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/OpenstackNovaIaas.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/OpenstackNovaIaas.java
@@ -60,6 +60,7 @@ import 
org.jclouds.openstack.nova.v2_0.options.CreateVolumeOptions;
 import org.jclouds.rest.RestContext;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Set;
 
@@ -142,6 +143,13 @@ public class OpenstackNovaIaas extends Iaas {
                                        
.keyPairName(iaasInfo.getProperty(CloudControllerConstants.KEY_PAIR));
                }
                
+               if 
(iaasInfo.getProperty(CloudControllerConstants.NETWORK_INTERFACES) != null) {
+                       String networksStr = 
iaasInfo.getProperty(CloudControllerConstants.NETWORK_INTERFACES);
+                       String[] networksArray = 
networksStr.split(CloudControllerConstants.ENTRY_SEPARATOR);
+                       template.getOptions()
+                                       
.as(NovaTemplateOptions.class).networks(Arrays.asList(networksArray));
+               }
+               
                //TODO
 //             if (iaas.getProperty(CloudControllerConstants.HOST) != null) {
 //            template.getOptions().as(NovaTemplateOptions.class)

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/3779ee91/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
index 4deeda0..e1a4353 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerConstants.java
@@ -249,4 +249,5 @@ public final class CloudControllerConstants {
     public static final String INSTANCE_TYPE = "instanceType";
 
     public static final String LB_CLUSTER_ID_COL = "lbclusterId";
+       public static final String NETWORK_INTERFACES = "networkInterfaces";
 }

Reply via email to