in Openstack you need to make a blocking call to IaaS in order to retrieve 
private IP addresses


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

Branch: refs/heads/master
Commit: 8102ac90f16e9e94f37b07f5a1ddbe5a87a8d0cd
Parents: 9c4e89c
Author: Nirmal Fernando <[email protected]>
Authored: Tue Apr 1 15:49:39 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Tue Apr 1 15:49:39 2014 +0530

----------------------------------------------------------------------
 .../controller/iaases/OpenstackNovaIaas.java    | 24 ++++++++------------
 .../cloud/controller/interfaces/Iaas.java       | 10 ++++----
 .../util/CloudControllerConstants.java          |  1 +
 3 files changed, 14 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8102ac90/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 6a5d221..dccbb2e 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
@@ -37,16 +37,12 @@ import 
org.apache.stratos.cloud.controller.util.CloudControllerConstants;
 import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
 import 
org.apache.stratos.cloud.controller.validate.OpenstackNovaPartitionValidator;
 import 
org.apache.stratos.cloud.controller.validate.interfaces.PartitionValidator;
-import org.jclouds.aws.ec2.compute.AWSEC2TemplateOptions;
 import org.jclouds.compute.ComputeServiceContext;
 import org.jclouds.compute.domain.NodeMetadata;
 import org.jclouds.compute.domain.NodeMetadataBuilder;
 import org.jclouds.compute.domain.Template;
 import org.jclouds.compute.domain.TemplateBuilder;
 import org.jclouds.compute.options.TemplateOptions;
-import org.jclouds.domain.Location;
-import org.jclouds.domain.LocationBuilder;
-import org.jclouds.domain.LocationScope;
 import org.jclouds.openstack.nova.v2_0.NovaApi;
 import org.jclouds.openstack.nova.v2_0.NovaApiMetadata;
 import org.jclouds.openstack.nova.v2_0.NovaAsyncApi;
@@ -72,6 +68,7 @@ import java.util.Collections;
 import java.util.LinkedHashSet;
 import java.util.Set;
 
+@SuppressWarnings("deprecation")
 public class OpenstackNovaIaas extends Iaas {
 
        private static final Log log = 
LogFactory.getLog(OpenstackNovaIaas.class);
@@ -124,12 +121,13 @@ public class OpenstackNovaIaas extends Iaas {
 
                Template template = templateBuilder.build();
 
-               // if you wish to auto assign IPs, instance spawning call 
should be
-               // 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(iaasInfo
-                               
.getProperty(CloudControllerConstants.AUTO_ASSIGN_IP));
+               // In Openstack the call to IaaS should be blocking, in order 
to retrieve 
+               // IP addresses.
+               boolean blockUntilRunning = true;
+               
if(iaasInfo.getProperty(CloudControllerConstants.BLOCK_UNTIL_RUNNING) != null) {
+                       blockUntilRunning = 
Boolean.parseBoolean(iaasInfo.getProperty(
+                                       
CloudControllerConstants.BLOCK_UNTIL_RUNNING));
+               }
                template.getOptions().as(TemplateOptions.class)
                                .blockUntilRunning(blockUntilRunning);
 
@@ -265,7 +263,6 @@ public class OpenstackNovaIaas extends Iaas {
 
                // wait till the fixed IP address gets assigned - this is 
needed before
                // we associate a public IP
-
                while (node.getPrivateAddresses() == null) {
                        CloudControllerUtil.sleep(1000);
                }
@@ -289,9 +286,6 @@ public class OpenstackNovaIaas extends Iaas {
                        retries++;
                }
 
-               NodeMetadataBuilder.fromNodeMetadata(node)
-                               .publicAddresses(ImmutableSet.of(ip)).build();
-
                log.info("Successfully associated an IP address " + ip
                                + " for node with id: " + node.getId());
 
@@ -336,7 +330,7 @@ public class OpenstackNovaIaas extends Iaas {
                boolean isAvailable = false;
                for (FloatingIP fip : unassignedIps) {
                        if(log.isDebugEnabled()) {
-                               
log.debug("penstackNovaIaas:associatePredefinedAddress:iterating over available 
floatingip:" + fip);
+                               
log.debug("OpenstackNovaIaas:associatePredefinedAddress:iterating over 
available floatingip:" + fip);
                        }
                        if (ip.equals(fip.getIp())) {
                                if(log.isDebugEnabled()) {

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8102ac90/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/Iaas.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/Iaas.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/Iaas.java
index 56be59c..492171d 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/Iaas.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/Iaas.java
@@ -77,8 +77,7 @@ public abstract class Iaas {
      * @ip preallocated floating Ip
      * @return associated public IP.
      */
-
-    abstract public String associatePredefinedAddress(NodeMetadata node, 
String ip);
+    public abstract String associatePredefinedAddress(NodeMetadata node, 
String ip);
     
     /**
      * This will deallocate/release the given IP address back to pool.
@@ -166,10 +165,9 @@ public abstract class Iaas {
      */
     public abstract void deleteVolume(String volumeId);
 
-    /*
-    This returns the device of the volume specified by the user. This is 
depends on IAAS.
-    For an instance /dev/sdf maps to /dev/xvdf in EC2
+    /**
+     * This returns the device of the volume specified by the user. This is 
depends on IAAS. 
+     * For an instance /dev/sdf maps to /dev/xvdf in EC2.
      */
-
     public abstract String getIaasDevice(String device);
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8102ac90/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 c7c77a2..eaa4d60 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,6 +249,7 @@ public final class CloudControllerConstants {
     public static final String SUBNET_ID = "subnetId";
     public static final String TAGS = "tags";
     public static final String AUTO_ASSIGN_IP = "autoAssignIp";
+    public static final String BLOCK_UNTIL_RUNNING = "blockUntilRunning";
     public static final String INSTANCE_TYPE = "instanceType";
     public static final String ASSOCIATE_PUBLIC_IP_ADDRESS = 
"associatePublicIpAddress";
     public static final String LB_CLUSTER_ID_COL = "lbclusterId";

Reply via email to