correctly setting ComputeService and Template

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

Branch: refs/heads/master
Commit: 469b8c6a0842486d66ee5c9168a01f696587d2b3
Parents: 56f573e
Author: Nirmal Fernando <[email protected]>
Authored: Tue Feb 11 19:50:03 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Tue Feb 11 19:50:03 2014 +0530

----------------------------------------------------------------------
 .../axiom/parser/CartridgeConfigParser.java     | 384 -------------------
 .../parser/CloudControllerConfigParser.java     |   2 +-
 .../impl/CloudControllerServiceImpl.java        |  12 +-
 .../cloud/controller/pojo/IaasProvider.java     |   2 +-
 .../controller/util/CloudControllerUtil.java    |  46 ++-
 .../OpenstackNovaPartitionValidator.java        |   2 +-
 6 files changed, 47 insertions(+), 401 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/469b8c6a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/axiom/parser/CartridgeConfigParser.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/axiom/parser/CartridgeConfigParser.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/axiom/parser/CartridgeConfigParser.java
deleted file mode 100644
index 911adc0..0000000
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/axiom/parser/CartridgeConfigParser.java
+++ /dev/null
@@ -1,384 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one 
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
- * KIND, either express or implied.  See the License for the 
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.stratos.cloud.controller.axiom.parser;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.xml.namespace.QName;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMNode;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.cloud.controller.axiom.AxiomXpathParserUtil;
-import 
org.apache.stratos.cloud.controller.exception.MalformedConfigurationFileException;
-import org.apache.stratos.cloud.controller.pojo.AppType;
-import org.apache.stratos.cloud.controller.pojo.Cartridge;
-import org.apache.stratos.cloud.controller.pojo.IaasProvider;
-import org.apache.stratos.cloud.controller.pojo.PortMapping;
-import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
-import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
-
-/**
- * Parse the cartridge definition files.
- * @author nirmal
- *
- */
-public class CartridgeConfigParser {
-    private static final Log log = 
LogFactory.getLog(CartridgeConfigParser.class);
-
-    /**
-     * Parse the config file.
-     * @param elt document element.
-     * @throws MalformedConfigurationFileException
-     */
-    public static List<Cartridge> parse(String file, OMElement elt) throws 
MalformedConfigurationFileException {
-
-        return extractCartridges(file, elt);
-    }
-
-    private static List<Cartridge> extractCartridges(String file, OMElement 
elt) throws MalformedConfigurationFileException{
-
-        FasterLookUpDataHolder dataHolder = 
FasterLookUpDataHolder.getInstance();
-
-        List<IaasProvider> iaasProviders = dataHolder.getIaasProviders();
-
-        if (iaasProviders == null) {
-            dataHolder.setIaasProviders((iaasProviders = new 
ArrayList<IaasProvider>()));
-        }
-
-        List<Cartridge> cartridges = new ArrayList<Cartridge>();
-
-        String xpath = CloudControllerConstants.CARTRIDGES_ELEMENT_XPATH;
-
-        // cartridges can be found from this XPATH
-        List<?> cartridgeNodes = AxiomXpathParserUtil.getMatchingNodes(xpath, 
elt);
-
-        if (cartridgeNodes == null || cartridgeNodes.isEmpty()) {
-            // or from this XPATH
-            xpath = CloudControllerConstants.CARTRIDGE_ELEMENT_XPATH;
-            cartridgeNodes = AxiomXpathParserUtil.getMatchingNodes(xpath, elt);
-        }
-
-        if (cartridgeNodes == null || cartridgeNodes.isEmpty()) {
-            log.warn("No cartridge found in this configuration file : " + 
file);
-            return cartridges;
-        }
-
-        for (Object obj : cartridgeNodes) {
-
-            if (obj instanceof OMNode) {
-                OMNode cartridgeNode = (OMNode) obj;
-
-                if (cartridgeNode.getType() == OMNode.ELEMENT_NODE) {
-
-                    OMElement cartridgeElement = (OMElement) cartridgeNode;
-
-                    // retrieve Attributes of a Cartridge definition
-                    String type = cartridgeElement.getAttributeValue(new QName(
-                            CloudControllerConstants.TYPE_ATTR));
-                    String host = cartridgeElement.getAttributeValue(new QName(
-                            CloudControllerConstants.HOST_ATTR));
-                    String provider = cartridgeElement.getAttributeValue(new 
QName(
-                            CloudControllerConstants.PROVIDER_ATTR));
-
-                    String version =
-                            cartridgeElement.getAttributeValue(new QName(
-                                    CloudControllerConstants.VERSION_ATTR));
-
-                    boolean multiTenant = 
Boolean.valueOf(cartridgeElement.getAttributeValue(new QName(
-                            CloudControllerConstants.MULTI_TENANT_ATTR)));
-
-                    Cartridge aCartridge;
-
-                    if ((aCartridge = dataHolder.getCartridge(type)) == null) {
-
-                        aCartridge = new Cartridge(type, host, provider, 
version, multiTenant);
-                    }
-
-                    // read displayName
-                    Iterator<?> itName =
-                            cartridgeElement.getChildrenWithName(new QName(
-                                    
CloudControllerConstants.DISPLAY_NAME_ELEMENT));
-
-                    if (itName.hasNext()) {
-                        OMElement name = (OMElement) itName.next();
-
-                        aCartridge.setDisplayName(name.getText());
-                    }
-
-                    // read description
-                    Iterator<?> it =
-                            cartridgeElement.getChildrenWithName(new QName(
-                                    
CloudControllerConstants.DESCRIPTION_ELEMENT));
-
-                    if (it.hasNext()) {
-                        OMElement desc = (OMElement) it.next();
-
-                        aCartridge.setDescription(desc.getText());
-                    }
-
-                    // load properties of this cartridge
-                    IaasProviderConfigParser.loadProperties(file, 
cartridgeElement, aCartridge.getProperties());
-
-                    // retrieve the list of IaaS providers
-                    List<?> iaasProviderNodes = 
AxiomXpathParserUtil.getMatchingNodes(xpath + 
CloudControllerConstants.IAAS_PROVIDER_ELEMENT_XPATH,
-                            cartridgeElement);
-
-                    getIaasProviders(file, elt, iaasProviders, 
cartridgeElement.toString(), aCartridge, iaasProviderNodes);
-
-                    // load dirs
-                    List<?> deploymentNodes = 
AxiomXpathParserUtil.getMatchingNodes(xpath + 
CloudControllerConstants.DEPLOYMENT_ELEMENT_XPATH,
-                            cartridgeElement);
-                    setDeploymentDirs(file, cartridgeElement.toString(), 
aCartridge, deploymentNodes);
-
-                    // load port mappings
-                    List<?> portMappingNodes =
-                            AxiomXpathParserUtil.getMatchingNodes(xpath +
-                                    
CloudControllerConstants.PORT_MAPPING_ELEMENT_XPATH,
-                                    cartridgeElement);
-                    getPortMappings(file, cartridgeElement.toString(), 
aCartridge, portMappingNodes);
-
-                    // load appTypes
-                    List<?> appTypesNodes =
-                            AxiomXpathParserUtil.getMatchingNodes(xpath +
-                                    
CloudControllerConstants.APP_TYPES_ELEMENT_XPATH,
-                                    cartridgeElement);
-                    getAppTypes(file, cartridgeElement.toString(), aCartridge, 
appTypesNodes);
-
-                    cartridges.add(aCartridge);
-
-                    if (dataHolder.getCartridge(type) == null) {
-                        dataHolder.addCartridge(aCartridge);
-                    }
-                }
-            }
-        }
-
-        return cartridges;
-    }
-
-    
-    /**
-     * @param iaasProviders
-     * @param cartridgeElementString
-     * @param aCartridge
-     * @param iaasProviderNodes
-     */
-    private static void getIaasProviders(final String fileName, final 
OMElement elt, List<IaasProvider> iaasProviders,
-                                  String cartridgeElementString, Cartridge 
aCartridge,
-                                  List<?> iaasProviderNodes) {
-        for (Object nodeObj : iaasProviderNodes) {
-            if (nodeObj instanceof OMNode) {
-                OMNode iaasProviderNode = (OMNode) nodeObj;
-
-                if (iaasProviderNode.getType() == OMNode.ELEMENT_NODE) {
-
-                    OMElement iaasElt = (OMElement) iaasProviderNode;
-
-                    // add the IaasProvider to this cartridge
-                    
aCartridge.addIaasProvider(IaasProviderConfigParser.getIaasProvider(fileName, 
elt, iaasElt, iaasProviders));
-
-                } else {
-                    String msg =
-                            "Essential '" +
-                                    
CloudControllerConstants.IAAS_PROVIDER_ELEMENT +
-                                    "' element cannot" + " be found in " +
-                                    cartridgeElementString + " of " +
-                                    fileName;
-                    handleException(msg);
-                }
-
-            }
-        }
-    }
-    
-    /**
-     * @param cartridgeElementString Cartridges section as a {@link String}
-     * @param aCartridge             {@link Cartridge} instance.
-     * @param deploymentNodes        list of deployment directory nodes
-     */
-    private static void setDeploymentDirs(String fileName, String 
cartridgeElementString, Cartridge aCartridge,
-                                   List<?> deploymentNodes) {
-        Object nodeObj;
-        if ((nodeObj = deploymentNodes.get(0)) instanceof OMNode) {
-            OMNode deploymentNode = (OMNode) nodeObj;
-
-            if (deploymentNode.getType() == OMNode.ELEMENT_NODE) {
-
-                OMElement deployElt = (OMElement) deploymentNode;
-
-                if (deployElt.getAttributeValue(new QName(
-                        CloudControllerConstants.BASE_DIR_ATTR)) != null) {
-
-                    aCartridge.setBaseDir(deployElt.getAttributeValue(new 
QName(
-                            CloudControllerConstants.BASE_DIR_ATTR)));
-                }
-
-                for (Iterator<?> iterator =
-                             deployElt.getChildrenWithName(new QName(
-                                     
CloudControllerConstants.DIRECTORY_ELEMENT)); iterator.hasNext();) {
-                    OMElement dir = (OMElement) iterator.next();
-                    aCartridge.addDeploymentDir(dir.getText());
-                }
-
-            } else {
-                String msg =
-                        "Essential '" + 
CloudControllerConstants.DEPLOYMENT_ELEMENT +
-                                "' element cannot" + " be found in " +
-                                cartridgeElementString + " of " + fileName;
-                handleException(msg);
-            }
-
-        }
-    }
-    
-    /**
-     * @param cartridgeElementString Cartridges section as a {@link String}
-     * @param aCartridge             {@link Cartridge} instance.
-     * @param portMappingNodes       nodes of port mapping elements
-     */
-    private static void getPortMappings(final String fileName, String 
cartridgeElementString, Cartridge aCartridge,
-                                 List<?> portMappingNodes) {
-        Object nodeObj;
-        if (!portMappingNodes.isEmpty()) {
-            if ((nodeObj = portMappingNodes.get(0)) instanceof OMNode) {
-                OMNode portMappingNode = (OMNode) nodeObj;
-
-                if (portMappingNode.getType() == OMNode.ELEMENT_NODE) {
-
-                    OMElement portMappingElt = (OMElement) portMappingNode;
-
-                    for (Iterator<?> iterator =
-                                 portMappingElt.getChildrenWithName(new QName(
-                                         
CloudControllerConstants.HTTP_ELEMENT)); iterator.hasNext();) {
-                        OMElement httpElt = (OMElement) iterator.next();
-
-                        String port =
-                                httpElt.getAttributeValue(new QName(
-                                        CloudControllerConstants.PORT_ATTR));
-                        String proxyPort =
-                                httpElt.getAttributeValue(new QName(
-                                        
CloudControllerConstants.PROXY_PORT_ATTR));
-
-                        PortMapping mapping =
-                                new PortMapping(
-                                        CloudControllerConstants.HTTP_ELEMENT,
-                                        port, proxyPort);
-
-                        aCartridge.addPortMapping(mapping);
-                    }
-
-                    for (Iterator<?> iterator =
-                                 portMappingElt.getChildrenWithName(new QName(
-                                         
CloudControllerConstants.HTTPS_ELEMENT)); iterator.hasNext();) {
-                        OMElement httpsElt = (OMElement) iterator.next();
-
-                        String port =
-                                httpsElt.getAttributeValue(new QName(
-                                        CloudControllerConstants.PORT_ATTR));
-                        String proxyPort =
-                                httpsElt.getAttributeValue(new QName(
-                                        
CloudControllerConstants.PROXY_PORT_ATTR));
-
-                        PortMapping mapping =
-                                new PortMapping(
-                                        CloudControllerConstants.HTTPS_ELEMENT,
-                                        port, proxyPort);
-
-                        aCartridge.addPortMapping(mapping);
-                    }
-
-                } else {
-                    String msg =
-                            "Essential '" +
-                                    
CloudControllerConstants.PORT_MAPPING_ELEMENT +
-                                    "' element cannot" + " be found in " +
-                                    cartridgeElementString + " of " +
-                                    fileName;
-                    handleException(msg);
-                }
-
-            }
-        }
-    }
-    
-    /**
-     * @param cartridgeElementString Cartridges section as a {@link String}
-     * @param aCartridge             {@link 
org.apache.stratos.cloud.controller.pojo.Cartridge} instance.
-     * @param appTypesNodes          nodes of App types.
-     */
-    private static void getAppTypes(final String fileName, String 
cartridgeElementString, Cartridge aCartridge,
-                             List<?> appTypesNodes) {
-        Object nodeObj;
-        if (!appTypesNodes.isEmpty()) {
-            if ((nodeObj = appTypesNodes.get(0)) instanceof OMNode) {
-                OMNode appTypeNode = (OMNode) nodeObj;
-
-                if (appTypeNode.getType() == OMNode.ELEMENT_NODE) {
-
-                    OMElement appTypesElt = (OMElement) appTypeNode;
-
-                    for (Iterator<?> iterator =
-                                 appTypesElt.getChildrenWithName(new QName(
-                                         
CloudControllerConstants.APP_TYPE_ELEMENT)); iterator.hasNext();) {
-                        OMElement appElt = (OMElement) iterator.next();
-
-                        String name =
-                                appElt.getAttributeValue(new QName(
-                                        CloudControllerConstants.NAME_ATTR));
-                        String appSpecificMapping =
-                                appElt.getAttributeValue(new QName(
-                                        
CloudControllerConstants.APP_SPECIFIC_MAPPING_ATTR));
-
-                        AppType appType;
-
-                        if (appSpecificMapping == null) {
-                            appType = new AppType(name);
-                        } else {
-                            appType =
-                                    new AppType(name,
-                                            
Boolean.valueOf(appSpecificMapping));
-                        }
-
-                        aCartridge.addAppType(appType);
-                    }
-
-                } else {
-                    String msg =
-                            "Essential '" + 
CloudControllerConstants.APP_TYPE_ELEMENT +
-                                    "' element cannot" + " be found in " +
-                                    cartridgeElementString + " of " +
-                                    fileName;
-                    handleException(msg);
-                }
-
-            }
-        }
-    }
-
-
-    private static void handleException(final String msg) throws 
MalformedConfigurationFileException{
-        log.error(msg);
-        throw new MalformedConfigurationFileException(msg);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/469b8c6a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/axiom/parser/CloudControllerConfigParser.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/axiom/parser/CloudControllerConfigParser.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/axiom/parser/CloudControllerConfigParser.java
index 0179ce2..455602f 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/axiom/parser/CloudControllerConfigParser.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/axiom/parser/CloudControllerConfigParser.java
@@ -76,7 +76,7 @@ public class CloudControllerConfigParser {
         }
         
         for (OMNode node : nodeList) {
-            
iaasProviders.add(IaasProviderConfigParser.getIaasProvider(FILE_NAME, elt, 
node, iaasProviders));
+            
iaasProviders.add(IaasProviderConfigParser.getIaasProvider(FILE_NAME, elt, 
node, null));
         }
     }
     

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/469b8c6a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 3432703..a6abb18 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -139,7 +139,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
         }
         
         for (IaasProvider iaasProvider : iaases) {
-            CloudControllerUtil.setIaas(iaasProvider);
+            CloudControllerUtil.getIaas(iaasProvider);
         }
         
         // TODO transaction begins
@@ -262,7 +262,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
                     log.debug("Iaas is null of Iaas Provider: "+type+". Trying 
to build IaaS...");
                 }
                 try {
-                    iaas = CloudControllerUtil.setIaas(iaasProvider);
+                    iaas = CloudControllerUtil.getIaas(iaasProvider);
                 } catch (InvalidIaasProviderException e) {
                     String msg ="Instance start up failed. 
"+memberContext.toString()+
                             "Unable to build Iaas of this IaasProvider 
[Provider] : " + type;
@@ -357,7 +357,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
                
                if(iaas == null) {
                        try {
-                               iaas = 
CloudControllerUtil.setIaas(iaasProvider);
+                               iaas = 
CloudControllerUtil.getIaas(iaasProvider);
                        } catch (InvalidIaasProviderException e) {
                                String msg = "Iaas could not be loaded from : 
"+iaasProvider;
                                log.fatal(msg, e);
@@ -799,7 +799,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
            if (iaas == null) {
                
                try {
-                   iaas = CloudControllerUtil.setIaas(iaasProvider);
+                   iaas = CloudControllerUtil.getIaas(iaasProvider);
                } catch (InvalidIaasProviderException e) {
                    String msg =
                            "Instance termination failed. " +ctxt.toString()  +
@@ -1028,7 +1028,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
             if (iaas == null) {
                 
                 try {
-                    iaas = CloudControllerUtil.setIaas(iaasProvider);
+                    iaas = CloudControllerUtil.getIaas(iaasProvider);
                 } catch (InvalidIaasProviderException e) {
                     String msg =
                             "Invalid Partition - " + partition.toString() +
@@ -1085,7 +1085,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
         if (iaas == null) {
             
                try {
-                iaas = CloudControllerUtil.setIaas(iaasProvider);
+                iaas = CloudControllerUtil.getIaas(iaasProvider);
             } catch (InvalidIaasProviderException e) {
                 String msg =
                         "Invalid Partition - " + partition.toString() +

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/469b8c6a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/IaasProvider.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/IaasProvider.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/IaasProvider.java
index 307611d..5c4c4ed 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/IaasProvider.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/IaasProvider.java
@@ -210,7 +210,7 @@ public class IaasProvider implements Serializable{
     public Iaas getIaas() {
        if (iaas == null) {
                try {
-                               iaas = CloudControllerUtil.setIaas(this);
+                               iaas = CloudControllerUtil.getIaas(this);
                        } catch (InvalidIaasProviderException e) {
                                return null;
                        }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/469b8c6a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
index 580b9a9..9358441 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
@@ -24,6 +24,7 @@ import 
org.apache.stratos.cloud.controller.deployment.partition.Partition;
 import org.apache.stratos.cloud.controller.exception.CloudControllerException;
 import 
org.apache.stratos.cloud.controller.exception.InvalidIaasProviderException;
 import org.apache.stratos.cloud.controller.interfaces.Iaas;
+import org.apache.stratos.cloud.controller.jcloud.ComputeServiceBuilderUtil;
 import org.apache.stratos.cloud.controller.persist.Deserializer;
 import org.apache.stratos.cloud.controller.pojo.AppType;
 import org.apache.stratos.cloud.controller.pojo.Cartridge;
@@ -203,21 +204,34 @@ public class CloudControllerUtil {
     
     public static Iaas setIaas(IaasProvider iaasProvider) throws 
InvalidIaasProviderException {
 
-               Iaas iaas;
+       Iaas iaas = loadIaas(iaasProvider);
+
                try {
-                       Constructor<?> c = 
Class.forName(iaasProvider.getClassName())
-                                       .getConstructor(IaasProvider.class);
-                       iaas = (Iaas) c.newInstance(iaasProvider);
+                       iaas.buildComputeServiceAndTemplate();
+                       iaasProvider.setIaas(iaas);
+                       return iaas;
                } catch (Exception e) {
-                       String msg = "Class [" + iaasProvider.getClassName()
-                                       + "] which represents the iaas of type: 
["
-                                       + iaasProvider.getType() + "] has 
failed to instantiate.";
+                       String msg = "Unable to build the jclouds object for 
iaas "
+                                       + "of type: " + iaasProvider.getType();
                        log.error(msg, e);
                        throw new InvalidIaasProviderException(msg, e);
                }
+       }
+    
+    public static Iaas getIaas(IaasProvider iaasProvider) throws 
InvalidIaasProviderException {
+       if(iaasProvider.getImage() != null) {
+               return setIaas(iaasProvider);
+       } else {
+               return setDefaultIaas(iaasProvider);
+       }
+    }
+    
+    public static Iaas setDefaultIaas(IaasProvider iaasProvider) throws 
InvalidIaasProviderException {
+
+               Iaas iaas = loadIaas(iaasProvider);
 
                try {
-                       iaas.buildComputeServiceAndTemplate();
+                       
ComputeServiceBuilderUtil.buildDefaultComputeService(iaasProvider);
                        iaasProvider.setIaas(iaas);
                        return iaas;
                } catch (Exception e) {
@@ -227,6 +241,22 @@ public class CloudControllerUtil {
                        throw new InvalidIaasProviderException(msg, e);
                }
        }
+
+       private static Iaas loadIaas(IaasProvider iaasProvider)
+                       throws InvalidIaasProviderException {
+               try {
+                       Constructor<?> c = 
Class.forName(iaasProvider.getClassName())
+                                       .getConstructor(IaasProvider.class);
+                       Iaas iaas = (Iaas) c.newInstance(iaasProvider);
+                       return iaas;
+               } catch (Exception e) {
+                       String msg = "Class [" + iaasProvider.getClassName()
+                                       + "] which represents the iaas of type: 
["
+                                       + iaasProvider.getType() + "] has 
failed to instantiate.";
+                       log.error(msg, e);
+                       throw new InvalidIaasProviderException(msg, e);
+               }
+       }
        
        public static List<Object> getKeysFromValue(Map<?, ?> hm, Object value) 
{
                List<Object> list = new ArrayList<Object>();

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/469b8c6a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/validate/OpenstackNovaPartitionValidator.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/validate/OpenstackNovaPartitionValidator.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/validate/OpenstackNovaPartitionValidator.java
index f2b9c54..1df0887 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/validate/OpenstackNovaPartitionValidator.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/validate/OpenstackNovaPartitionValidator.java
@@ -61,7 +61,7 @@ public class OpenstackNovaPartitionValidator implements 
PartitionValidator {
                 iaas.isValidRegion(region);
                 
                 IaasProvider updatedIaasProvider = new 
IaasProvider(iaasProvider);
-                Iaas updatedIaas = 
CloudControllerUtil.setIaas(updatedIaasProvider);
+                Iaas updatedIaas = 
CloudControllerUtil.getIaas(updatedIaasProvider);
                 updatedIaas.setIaasProvider(updatedIaasProvider);
                 
                 if (properties.containsKey(Scope.host.toString())) {

Reply via email to