Updated Branches:
  refs/heads/master 9052f2650 -> 8b81d3c2f

refactoring IaaS abstract class


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

Branch: refs/heads/master
Commit: 172c86ccade592df37c16c3c3ed19806e372021a
Parents: 87f8d5d
Author: Nirmal Fernando <[email protected]>
Authored: Sun Jan 26 17:51:47 2014 +0530
Committer: Nirmal Fernando <[email protected]>
Committed: Sun Jan 26 17:51:47 2014 +0530

----------------------------------------------------------------------
 .../controller/deployers/CartridgeDeployer.java | 213 -------------------
 .../cloud/controller/iaases/AWSEC2Iaas.java     |  60 +++---
 .../controller/iaases/OpenstackNovaIaas.java    |  80 ++++---
 .../cloud/controller/iaases/VCloudIaas.java     |  53 ++---
 .../impl/CloudControllerServiceImpl.java        |  63 +++---
 .../cloud/controller/interfaces/Iaas.java       |  51 +++--
 .../validate/AWSEC2PartitionValidator.java      |   7 +-
 .../OpenstackNovaPartitionValidator.java        |   7 +-
 8 files changed, 179 insertions(+), 355 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/172c86cc/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/deployers/CartridgeDeployer.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/deployers/CartridgeDeployer.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/deployers/CartridgeDeployer.java
deleted file mode 100644
index 1e6f6cd..0000000
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/deployers/CartridgeDeployer.java
+++ /dev/null
@@ -1,213 +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.deployers;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.axis2.context.ConfigurationContext;
-import org.apache.axis2.deployment.AbstractDeployer;
-import org.apache.axis2.deployment.DeploymentException;
-import org.apache.axis2.deployment.repository.util.DeploymentFileData;
-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.axiom.parser.CartridgeConfigParser;
-import org.apache.stratos.cloud.controller.concurrent.ThreadExecutor;
-import org.apache.stratos.cloud.controller.exception.CloudControllerException;
-import 
org.apache.stratos.cloud.controller.exception.MalformedConfigurationFileException;
-import org.apache.stratos.cloud.controller.interfaces.Iaas;
-import org.apache.stratos.cloud.controller.pojo.Cartridge;
-import org.apache.stratos.cloud.controller.pojo.IaasProvider;
-import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
-import org.apache.stratos.cloud.controller.topology.TopologyBuilder;
-import org.wso2.carbon.utils.CarbonUtils;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * All the {@link org.apache.stratos.cloud.controller.pojo.Cartridge}s will 
get deployed / undeployed / updated via this class.
- */
-public class CartridgeDeployer extends AbstractDeployer{
-    
-    private static final Log log = LogFactory.getLog(CartridgeDeployer.class);
-    
-    private FasterLookUpDataHolder serviceContextLookUpStructure;
-    private Map<String, List<Cartridge>> fileToCartridgeListMap;
-    private File cartridgesSchema, cartridgeSchema;
-
-    public void init(ConfigurationContext arg0) {
-        fileToCartridgeListMap = new ConcurrentHashMap<String, 
List<Cartridge>>();
-        String etcDir = CarbonUtils.getCarbonConfigDirPath() + File.separator 
+ "etc" + File.separator;
-        cartridgesSchema = new File(etcDir+"cartridges.xsd");
-        cartridgeSchema = new File(etcDir+"cartridge.xsd");
-    }
-
-    public void setDirectory(String arg0) {
-        // component xml handles this
-    }
-
-    public void setExtension(String arg0) {
-        // component xml handles this
-    }
-    
-    public void deploy(DeploymentFileData deploymentFileData) throws 
DeploymentException {
-        
-        log.debug("Started to deploy the deployment artifact: 
"+deploymentFileData.getFile());
-
-        try {
-            OMElement docElt = 
AxiomXpathParserUtil.parse(deploymentFileData.getFile());
-            String fileName = deploymentFileData.getFile().getAbsolutePath();
-            
-               // validate
-            validateCartridge(docElt, fileName);
-            
-                       // deploy - grab cartridges
-                       List<Cartridge> cartridges = 
CartridgeConfigParser.parse(fileName, docElt);
-
-                       // update map
-                       
fileToCartridgeListMap.put(deploymentFileData.getAbsolutePath(),
-                                                  new 
ArrayList<Cartridge>(cartridges));
-                       
-                       ThreadExecutor exec = ThreadExecutor.getInstance();
-                       // create Jclouds objects, for each IaaS
-                       for (Cartridge cartridge : cartridges) {
-                               // jclouds object building is time consuming, 
hence I use Java executor framework
-                               exec.execute(new 
JcloudsObjectBuilder(cartridge, deploymentFileData));
-                       }
-
-                       TopologyBuilder.handleServiceCreated(cartridges);
-                       log.info("Successfully deployed the Cartridge 
definition specified at " + deploymentFileData.getAbsolutePath());
-                       
-        } catch (Exception e) {
-                       String msg = "Invalid deployment artefact at 
"+deploymentFileData.getAbsolutePath();
-            // back up the file - this will in-turn triggers undeploy()
-            File f = deploymentFileData.getFile();
-            f.renameTo(new File(deploymentFileData.getAbsolutePath()+".back"));
-            log.error(msg, e);
-            throw new DeploymentException(msg, e);
-               }
-    }
-    
-    private void validateCartridge(final OMElement elt, final String fileName) 
throws MalformedConfigurationFileException {
-        boolean validated = false;
-        Exception firstException = null;
-
-        try{
-            // first try to validate using cartridges schema
-            AxiomXpathParserUtil.validate(elt, cartridgesSchema);
-            validated = true;
-            
-        }catch (Exception e) {
-            firstException = e;
-        }
-        
-        if(!validated){
-            try{
-                // Now try to validate using cartridge schema
-                AxiomXpathParserUtil.validate(elt, cartridgeSchema);
-                validated = true;
-                log.debug("Cartridge validation was successful.");
-                
-            }catch (Exception e) {
-                String msg = "Cartridge XML validation failed. Invalid 
Cartridge XML: "+fileName;
-                log.error(msg, firstException);
-                throw new MalformedConfigurationFileException(msg, 
firstException);
-            }
-        }
-        
-        
-    }
-
-    public void undeploy(String file) throws DeploymentException {
-        
-       serviceContextLookUpStructure = FasterLookUpDataHolder.getInstance();
-       
-        // grab the entry from Map
-        if(fileToCartridgeListMap.containsKey(file)){
-            // remove 'em
-            
TopologyBuilder.handleServiceRemoved(fileToCartridgeListMap.get(file));
-            
serviceContextLookUpStructure.removeCartridges(fileToCartridgeListMap.get(file));
-            
-            log.info("Successfully undeployed the Cartridge definition 
specified at "+file);
-        }
-        
-    }
-    
-    private void handleException(String msg, Exception e) {
-        log.fatal(msg, e);
-        throw new CloudControllerException(msg, e);
-    }
-    
-    /**
-     * JcloudsObjectBuilder job
-     *
-     */
-    class JcloudsObjectBuilder implements Runnable{
-       
-       private Cartridge cartridge;
-       private DeploymentFileData file;
-
-       public JcloudsObjectBuilder (Cartridge cartridge, DeploymentFileData 
file){
-               this.cartridge = cartridge;
-               this.file = file;
-       }
-       
-               @Override
-        public void run() {
-
-                       for (IaasProvider iaasProvider : cartridge.getIaases()) 
{
-                               try {
-                                       Iaas iaas = (Iaas) 
Class.forName(iaasProvider.getClassName()).newInstance();
-                                       
iaas.buildComputeServiceAndTemplate(iaasProvider);
-                                       iaasProvider.setIaas(iaas);
-//                    if(iaasProvider.getListOfRegions() != null) {
-//                        for(Region region : iaasProvider.getListOfRegions()) 
{
-//                            iaas.buildComputeServiceAndTemplate(region);
-//                            for(Zone zone : region.getListOfZones()) {
-//                                
zone.setComputeService(region.getComputeService());
-//                                iaas.buildTemplate(zone);
-//                                for(Host host: zone.getListOfHosts()) {
-//                                    
host.setComputeService(region.getComputeService());
-//                                    iaas.buildTemplate(host);
-//                                }
-//                            }
-//
-//                        }
-//                    }
-                                       
-                               } catch (Exception e) {
-                                       rename();
-                                       handleException(e.getMessage(), e);
-                               }
-                       }
-                       
-        }
-               
-               private void rename(){
-                       // back up the file
-            File f = file.getFile();
-            f.renameTo(new File(file.getAbsolutePath()+".back"));
-               }
-       
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/172c86cc/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 aad717c..3248d1d 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
@@ -64,22 +64,27 @@ import java.util.Set;
 @SuppressWarnings("deprecation")
 public class AWSEC2Iaas extends Iaas {
 
+       public AWSEC2Iaas(IaasProvider iaasProvider) {
+               super(iaasProvider);
+       }
+
        private static final Log log = LogFactory.getLog(AWSEC2Iaas.class);
        private static final String SUCCESSFUL_LOG_LINE = "A key-pair is 
created successfully in ";
        private static final String FAILED_LOG_LINE = "Key-pair is unable to 
create in ";
 
        @Override
-       public void buildComputeServiceAndTemplate(IaasProvider iaasInfo) {
+       public void buildComputeServiceAndTemplate() {
 
                // builds and sets Compute Service
-               ComputeServiceBuilderUtil.buildDefaultComputeService(iaasInfo);
+               
ComputeServiceBuilderUtil.buildDefaultComputeService(getIaasProvider());
 
                // builds and sets Template
-               buildTemplate(iaasInfo);
+               buildTemplate();
 
        }
 
-       public void buildTemplate(IaasProvider iaas) {
+       public void buildTemplate() {
+               IaasProvider iaas = getIaasProvider();
                if (iaas.getComputeService() == null) {
                        String msg = "Compute service is null for IaaS 
provider: "
                                        + iaas.getName();
@@ -160,8 +165,8 @@ public class AWSEC2Iaas extends Iaas {
        }
 
        @Override
-       public void setDynamicPayload(IaasProvider iaasInfo) {
-
+       public void setDynamicPayload() {
+               IaasProvider iaasInfo = getIaasProvider();
                if (iaasInfo.getTemplate() != null && iaasInfo.getPayload() != 
null) {
 
                        
iaasInfo.getTemplate().getOptions().as(AWSEC2TemplateOptions.class)
@@ -171,9 +176,10 @@ public class AWSEC2Iaas extends Iaas {
        }
 
        @Override
-       public synchronized boolean createKeyPairFromPublicKey(
-                       IaasProvider iaasInfo, String region, String 
keyPairName,
+       public synchronized boolean createKeyPairFromPublicKey(String region, 
String keyPairName,
                        String publicKey) {
+               
+               IaasProvider iaasInfo = getIaasProvider();
 
                String ec2Msg = " ec2. Region: " + region + " - Key Pair Name: 
";
 
@@ -203,9 +209,10 @@ public class AWSEC2Iaas extends Iaas {
        }
 
        @Override
-       public synchronized String associateAddress(IaasProvider iaasInfo,
-                       NodeMetadata node) {
+       public synchronized String associateAddress(NodeMetadata node) {
 
+               IaasProvider iaasInfo = getIaasProvider();
+               
                ComputeServiceContext context = iaasInfo.getComputeService()
                                .getContext();
                AWSEC2Client ec2Client = 
context.unwrap(AWSEC2ApiMetadata.CONTEXT_TOKEN).getApi();
@@ -272,19 +279,6 @@ public class AWSEC2Iaas extends Iaas {
                return ip;
 
        }
-       
-       @Override
-       public void mapPersistanceVolumes(Template template, 
List<PersistanceMapping> persistancemapings){
-               if(persistancemapings ==null || persistancemapings.isEmpty())
-                       return;
-               
-        Iterator< PersistanceMapping> it = persistancemapings.iterator();
-        while(it.hasNext()){  
-               PersistanceMapping maping = it.next();
-               template.getOptions().as(EC2TemplateOptions.class)
-               .mapEBSSnapshotToDeviceName(maping.getDevice(), 
maping.getSnapshotId(), maping.getSize(), maping.isRemoveOntermination());
-        }
-    }
 
        /**
         * @param ec2Client
@@ -306,8 +300,10 @@ public class AWSEC2Iaas extends Iaas {
        }
 
        @Override
-       public synchronized void releaseAddress(IaasProvider iaasInfo, String 
ip) {
+       public synchronized void releaseAddress(String ip) {
 
+               IaasProvider iaasInfo = getIaasProvider();
+               
                ComputeServiceContext context = iaasInfo.getComputeService()
                                .getContext();
                AWSEC2Client ec2Client = 
context.unwrap(AWSEC2ApiMetadata.CONTEXT_TOKEN).getApi();
@@ -320,8 +316,10 @@ public class AWSEC2Iaas extends Iaas {
        }
 
     @Override
-    public boolean isValidRegion(IaasProvider iaasInfo, String region) throws 
InvalidRegionException {
-        
+    public boolean isValidRegion(String region) throws InvalidRegionException {
+       
+       IaasProvider iaasInfo = getIaasProvider();
+       
         if (region == null || iaasInfo == null) {
             String msg =
                          "Region or IaaSProvider is null: region: " + region + 
" - IaaSProvider: " +
@@ -346,7 +344,10 @@ public class AWSEC2Iaas extends Iaas {
     }
 
     @Override
-    public boolean isValidZone(IaasProvider iaasInfo, String region, String 
zone) throws InvalidZoneException {
+    public boolean isValidZone(String region, String zone) throws 
InvalidZoneException {
+       
+       IaasProvider iaasInfo = getIaasProvider();
+       
         if (zone == null || iaasInfo == null) {
             String msg =
                          "Zone or IaaSProvider is null: zone: " + zone + " - 
IaaSProvider: " +
@@ -379,7 +380,10 @@ public class AWSEC2Iaas extends Iaas {
     }
 
     @Override
-    public boolean isValidHost(IaasProvider iaasInfo, String zone, String 
host) throws InvalidHostException {
+    public boolean isValidHost(String zone, String host) throws 
InvalidHostException {
+       
+       IaasProvider iaasInfo = getIaasProvider();
+       
         // there's no such concept in EC2
         String msg = "Invalid host: " + host +" in the zone: "+zone+ " and of 
the iaas: "+iaasInfo.getType();
         log.error(msg);

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/172c86cc/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 6fe664a..2f45f9b 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
@@ -32,7 +32,6 @@ import 
org.apache.stratos.cloud.controller.exception.InvalidZoneException;
 import org.apache.stratos.cloud.controller.interfaces.Iaas;
 import org.apache.stratos.cloud.controller.jcloud.ComputeServiceBuilderUtil;
 import org.apache.stratos.cloud.controller.pojo.IaasProvider;
-import org.apache.stratos.cloud.controller.pojo.PersistanceMapping;
 import org.apache.stratos.cloud.controller.util.CloudControllerConstants;
 import org.apache.stratos.cloud.controller.util.CloudControllerUtil;
 import 
org.apache.stratos.cloud.controller.validate.OpenstackNovaPartitionValidator;
@@ -55,37 +54,45 @@ import 
org.jclouds.openstack.nova.v2_0.extensions.KeyPairApi;
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.List;
 
 public class OpenstackNovaIaas extends Iaas {
 
+
        private static final Log log = 
LogFactory.getLog(OpenstackNovaIaas.class);
        private static final String SUCCESSFUL_LOG_LINE = "A key-pair is 
created successfully in ";
        private static final String FAILED_LOG_LINE = "Key-pair is unable to 
create in ";
 
+       public OpenstackNovaIaas(IaasProvider iaasProvider) {
+               super(iaasProvider);
+       }
+       
        @Override
-       public void buildComputeServiceAndTemplate(IaasProvider iaasInfo) {
+       public void buildComputeServiceAndTemplate() {
 
+               IaasProvider iaasInfo = getIaasProvider();
+               
                // builds and sets Compute Service
                ComputeServiceBuilderUtil.buildDefaultComputeService(iaasInfo);
 
                // builds and sets Template
-               buildTemplate(iaasInfo);
+               buildTemplate();
 
        }
 
-       public void buildTemplate(IaasProvider iaas) {
-               if (iaas.getComputeService() == null) {
+       public void buildTemplate() {
+               IaasProvider iaasInfo = getIaasProvider();
+               
+               if (iaasInfo.getComputeService() == null) {
                        throw new CloudControllerException(
                                        "Compute service is null for IaaS 
provider: "
-                                                       + iaas.getName());
+                                                       + iaasInfo.getName());
                }
 
-               TemplateBuilder templateBuilder = iaas.getComputeService()
+               TemplateBuilder templateBuilder = iaasInfo.getComputeService()
                                .templateBuilder();
-               templateBuilder.imageId(iaas.getImage());
-        if(!(iaas instanceof IaasProvider)) {
-           templateBuilder.locationId(iaas.getType());
+               templateBuilder.imageId(iaasInfo.getImage());
+        if(!(iaasInfo instanceof IaasProvider)) {
+           templateBuilder.locationId(iaasInfo.getType());
         }
 
         // to avoid creation of template objects in each and every time, we
@@ -94,7 +101,7 @@ public class OpenstackNovaIaas extends Iaas {
                String instanceType;
 
                // set instance type
-               if (((instanceType = 
iaas.getProperty(CloudControllerConstants.INSTANCE_TYPE)) != null)) {
+               if (((instanceType = 
iaasInfo.getProperty(CloudControllerConstants.INSTANCE_TYPE)) != null)) {
 
                        templateBuilder.hardwareId(instanceType);
                }
@@ -105,7 +112,7 @@ public class OpenstackNovaIaas 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);
@@ -115,17 +122,17 @@ public class OpenstackNovaIaas extends Iaas {
                template.getOptions().as(TemplateOptions.class)
                                .inboundPorts(new int[] {});
 
-               if (iaas.getProperty(CloudControllerConstants.SECURITY_GROUPS) 
!= null) {
+               if 
(iaasInfo.getProperty(CloudControllerConstants.SECURITY_GROUPS) != null) {
                        template.getOptions()
                                        .as(NovaTemplateOptions.class)
                                        .securityGroupNames(
-                                                       
iaas.getProperty(CloudControllerConstants.SECURITY_GROUPS).split(
+                                                       
iaasInfo.getProperty(CloudControllerConstants.SECURITY_GROUPS).split(
                                                                        
CloudControllerConstants.ENTRY_SEPARATOR));
                }
 
-               if (iaas.getProperty(CloudControllerConstants.KEY_PAIR) != 
null) {
+               if (iaasInfo.getProperty(CloudControllerConstants.KEY_PAIR) != 
null) {
                        template.getOptions().as(NovaTemplateOptions.class)
-                                       
.keyPairName(iaas.getProperty(CloudControllerConstants.KEY_PAIR));
+                                       
.keyPairName(iaasInfo.getProperty(CloudControllerConstants.KEY_PAIR));
                }
                
                //TODO
@@ -135,12 +142,14 @@ public class OpenstackNovaIaas extends Iaas {
 //        }
 
                // set Template
-               iaas.setTemplate(template);
+               iaasInfo.setTemplate(template);
        }
 
     @Override
-       public void setDynamicPayload(IaasProvider iaasInfo) {
+       public void setDynamicPayload() {
 
+       IaasProvider iaasInfo = getIaasProvider();
+       
                if (iaasInfo.getTemplate() != null && iaasInfo.getPayload() != 
null) {
 
                        
iaasInfo.getTemplate().getOptions().as(NovaTemplateOptions.class)
@@ -150,10 +159,11 @@ public class OpenstackNovaIaas extends Iaas {
        }
 
        @Override
-       public synchronized boolean createKeyPairFromPublicKey(
-                       IaasProvider iaasInfo, String region, String 
keyPairName,
+       public synchronized boolean createKeyPairFromPublicKey(String region, 
String keyPairName,
                        String publicKey) {
 
+               IaasProvider iaasInfo = getIaasProvider();
+               
                String openstackNovaMsg = " Openstack-nova. Region: " + region
                                + " - Name: ";
 
@@ -181,8 +191,9 @@ public class OpenstackNovaIaas extends Iaas {
        }
 
        @Override
-       public synchronized String associateAddress(IaasProvider iaasInfo,
-                       NodeMetadata node) {
+       public synchronized String associateAddress(NodeMetadata node) {
+               
+               IaasProvider iaasInfo = getIaasProvider();
 
                ComputeServiceContext context = iaasInfo.getComputeService()
                                .getContext();
@@ -252,8 +263,10 @@ public class OpenstackNovaIaas extends Iaas {
        }
 
        @Override
-       public synchronized void releaseAddress(IaasProvider iaasInfo, String 
ip) {
+       public synchronized void releaseAddress(String ip) {
 
+               IaasProvider iaasInfo = getIaasProvider();
+               
                ComputeServiceContext context = iaasInfo.getComputeService()
                                .getContext();
 
@@ -283,7 +296,9 @@ public class OpenstackNovaIaas extends Iaas {
        }
 
     @Override
-    public boolean isValidRegion(IaasProvider iaasInfo, String region) throws 
InvalidRegionException {
+    public boolean isValidRegion(String region) throws InvalidRegionException {
+       IaasProvider iaasInfo = getIaasProvider();
+       
         // jclouds' zone = region in openstack
         if (region == null || iaasInfo == null) {
             String msg =
@@ -311,7 +326,9 @@ public class OpenstackNovaIaas extends Iaas {
     }
 
     @Override
-    public boolean isValidZone(IaasProvider iaasInfo, String region, String 
zone) throws InvalidZoneException {
+    public boolean isValidZone(String region, String zone) throws 
InvalidZoneException {
+       IaasProvider iaasInfo = getIaasProvider();
+       
         // jclouds doesn't support zone in Openstack-Nova API
         String msg = "Invalid zone: " + zone +" in the region: "+region+ " and 
of the iaas: "+iaasInfo.getType();
         log.error(msg);
@@ -320,7 +337,9 @@ public class OpenstackNovaIaas extends Iaas {
     }
 
     @Override
-    public boolean isValidHost(IaasProvider iaasInfo, String zone, String 
host) throws InvalidHostException {
+    public boolean isValidHost(String zone, String host) throws 
InvalidHostException {
+       IaasProvider iaasInfo = getIaasProvider();
+       
         if (host == null || zone == null || iaasInfo == null) {
             String msg = "Host or Zone or IaaSProvider is null: host: " + host 
+ " - zone: " +
                     zone + " - IaaSProvider: " + iaasInfo;
@@ -352,11 +371,4 @@ public class OpenstackNovaIaas extends Iaas {
         return new OpenstackNovaPartitionValidator();
     }
 
-       @Override
-       public void mapPersistanceVolumes(Template template,
-                       List<PersistanceMapping> persistancemapings) {
-               // TODO Auto-generated method stub
-               
-       }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/172c86cc/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/VCloudIaas.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/VCloudIaas.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/VCloudIaas.java
index 56ea1ef..b49f2c8 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/VCloudIaas.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/iaases/VCloudIaas.java
@@ -25,7 +25,6 @@ import 
org.apache.stratos.cloud.controller.exception.CloudControllerException;
 import org.apache.stratos.cloud.controller.interfaces.Iaas;
 import org.apache.stratos.cloud.controller.jcloud.ComputeServiceBuilderUtil;
 import org.apache.stratos.cloud.controller.pojo.IaasProvider;
-import org.apache.stratos.cloud.controller.pojo.PersistanceMapping;
 import 
org.apache.stratos.cloud.controller.validate.interfaces.PartitionValidator;
 import org.jclouds.compute.domain.NodeMetadata;
 import org.jclouds.compute.domain.Template;
@@ -37,38 +36,46 @@ import 
org.jclouds.vcloud.domain.network.IpAddressAllocationMode;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.StringWriter;
-import java.util.List;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
 public class VCloudIaas extends Iaas {
 
+
        private static final Log log = LogFactory.getLog(VCloudIaas.class);
+       
+       public VCloudIaas(IaasProvider iaasProvider) {
+               super(iaasProvider);
+       }
 
        @Override
-       public void buildComputeServiceAndTemplate(IaasProvider iaasInfo) {
+       public void buildComputeServiceAndTemplate() {
 
+               IaasProvider iaasInfo = getIaasProvider();
+               
                // builds and sets Compute Service
                ComputeServiceBuilderUtil.buildDefaultComputeService(iaasInfo);
 
                // builds and sets Template
-               buildTemplate(iaasInfo);
+               buildTemplate();
 
        }
 
-       public void buildTemplate(IaasProvider iaas) {
-               if (iaas.getComputeService() == null) {
+       public void buildTemplate() {
+               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());
 
                // build the Template
                Template template = templateBuilder.build();
@@ -78,7 +85,7 @@ public class VCloudIaas extends Iaas {
                // wish to assign IPs manually, it can be non-blocking.
                // is auto-assign-ip mode or manual-assign-ip mode? - default 
mode is
                // non-blocking
-               boolean blockUntilRunning = Boolean.parseBoolean(iaas
+               boolean blockUntilRunning = Boolean.parseBoolean(iaasInfo
                                .getProperty("autoAssignIp"));
                template.getOptions().as(TemplateOptions.class)
                                .blockUntilRunning(blockUntilRunning);
@@ -92,12 +99,14 @@ public class VCloudIaas extends Iaas {
                                
.ipAddressAllocationMode(IpAddressAllocationMode.POOL);
 
                // set Template
-               iaas.setTemplate(template);
+               iaasInfo.setTemplate(template);
        }
 
        @Override
-       public void setDynamicPayload(IaasProvider iaasInfo) {
+       public void setDynamicPayload() {
 
+               IaasProvider iaasInfo = getIaasProvider();
+               
                // in VCloud case we need to run a script
                if (iaasInfo.getTemplate() != null && iaasInfo.getPayload() != 
null) {
 
@@ -159,15 +168,14 @@ public class VCloudIaas extends Iaas {
        }
 
        @Override
-       public boolean createKeyPairFromPublicKey(IaasProvider iaasInfo,
-                       String region, String keyPairName, String publicKey) {
+       public boolean createKeyPairFromPublicKey(String region, String 
keyPairName, String publicKey) {
 
                // TODO
                return false;
        }
 
        @Override
-       public String associateAddress(IaasProvider iaasInfo, NodeMetadata 
node) {
+       public String associateAddress(NodeMetadata node) {
 
                // TODO
                return "";
@@ -175,24 +183,24 @@ public class VCloudIaas extends Iaas {
        }
 
        @Override
-       public void releaseAddress(IaasProvider iaasInfo, String ip) {
+       public void releaseAddress(String ip) {
                // TODO
        }
 
     @Override
-    public boolean isValidRegion(IaasProvider iaasInfo, String region) {
+    public boolean isValidRegion(String region) {
         // TODO Auto-generated method stub
         return false;
     }
 
     @Override
-    public boolean isValidZone(IaasProvider iaasInfo, String region, String 
zone) {
+    public boolean isValidZone(String region, String zone) {
         // TODO Auto-generated method stub
         return false;
     }
 
     @Override
-    public boolean isValidHost(IaasProvider iaasInfo, String zone, String 
host) {
+    public boolean isValidHost(String zone, String host) {
         // TODO Auto-generated method stub
         return false;
     }
@@ -203,11 +211,4 @@ public class VCloudIaas extends Iaas {
         return null;
     }
 
-       @Override
-       public void mapPersistanceVolumes(Template template,
-                       List<PersistanceMapping> persistancemapings) {
-               // TODO Auto-generated method stub
-               
-       }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/172c86cc/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 ac2e1e2..10b06ae 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
@@ -41,6 +41,8 @@ import org.jclouds.compute.domain.NodeMetadata;
 import org.jclouds.compute.domain.Template;
 import org.wso2.carbon.registry.core.exceptions.RegistryException;
 
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -160,20 +162,32 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
         log.info("Successfully deployed the Cartridge definition: " + 
cartridgeType);
     }
 
-    private Iaas setIaas(IaasProvider iaasProvider) throws 
InvalidIaasProviderException {
-        try {
-            Iaas iaas = (Iaas) 
Class.forName(iaasProvider.getClassName()).newInstance();
-            iaas.buildComputeServiceAndTemplate(iaasProvider);
-            iaasProvider.setIaas(iaas);
-            return iaas;
-        } catch (Exception e) {
-            String msg =
-                         "Unable to build the jclouds object for iaas " + "of 
type: " +
-                                 iaasProvider.getType();
-            log.error(msg, e);
-            throw new InvalidIaasProviderException(msg, e);
-        }
-    }
+       private Iaas setIaas(IaasProvider iaasProvider) throws 
InvalidIaasProviderException {
+
+               Iaas iaas;
+               try {
+                       Constructor<?> c = 
Class.forName(iaasProvider.getClassName())
+                                       .getConstructor(IaasProvider.class);
+                       iaas = (Iaas) c.newInstance(iaasProvider);
+               } 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);
+               }
+
+               try {
+                       iaas.buildComputeServiceAndTemplate();
+                       iaasProvider.setIaas(iaas);
+                       return iaas;
+               } catch (Exception e) {
+                       String msg = "Unable to build the jclouds object for 
iaas "
+                                       + "of type: " + iaasProvider.getType();
+                       log.error(msg, e);
+                       throw new InvalidIaasProviderException(msg, e);
+               }
+       }
 
     public void undeployCartridgeDefinition(String cartridgeType) {
 
@@ -283,7 +297,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
                 
             }
             
-            iaas.setDynamicPayload(iaasProvider);
+            iaas.setDynamicPayload();
             // get the pre built ComputeService from provider or region or 
zone or host
             computeService = iaasProvider.getComputeService();
             template = iaasProvider.getTemplate();
@@ -299,7 +313,6 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
                 throw new CloudControllerException(msg);
             }
 
-            iaas.mapPersistanceVolumes(template, 
cartridge.getPeristanceMappings());
             // generate the group id from domain name and sub domain
             // name.
             // Should have lower-case ASCII letters, numbers, or dashes.
@@ -509,7 +522,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
 
                         Iaas iaas = iaasProvider.getIaas();
                         // allocate an IP address - manual IP assigning mode
-                        ip = iaas.associateAddress(iaasProvider, node);
+                        ip = iaas.associateAddress(node);
                         memberContext.setAllocatedIpAddress(ip);
                         log.info("Allocated an ip address: " + 
memberContext.toString());
                     }
@@ -776,8 +789,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
 
                // release allocated IP address
                if (ctxt.getAllocatedIpAddress() != null) {
-            iaas.releaseAddress(iaasProvider,
-                                       ctxt.getAllocatedIpAddress());
+            iaas.releaseAddress(ctxt.getAllocatedIpAddress());
                }
                
                // publish data to BAM
@@ -969,6 +981,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
 
     @Override
     public boolean validatePartition(Partition partition) throws 
InvalidPartitionException {
+       //FIXME add logs
         String provider = partition.getProvider();
         IaasProvider iaasProvider = dataHolder.getIaasProvider(provider);
 
@@ -984,14 +997,12 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
         
         if (iaas == null) {
             
-            try {
-                iaas = (Iaas) 
Class.forName(iaasProvider.getClassName()).newInstance();
-                
ComputeServiceBuilderUtil.buildDefaultComputeService(iaasProvider);
-                iaasProvider.setIaas(iaas);
-            } catch (Exception e) {
+               try {
+                iaas = setIaas(iaasProvider);
+            } catch (InvalidIaasProviderException e) {
                 String msg =
-                             "Unable to build the jclouds object for iaas " + 
"of type: " +
-                                     iaasProvider.getType();
+                        "Invalid Partition - " + partition.toString() +
+                        ". Cause: Unable to build Iaas of this IaasProvider 
[Provider] : " + provider;
                 log.error(msg, e);
                 throw new InvalidPartitionException(msg, e);
             }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/172c86cc/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 c6fd6ea..d6303c2 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
@@ -18,8 +18,6 @@
  */
 package org.apache.stratos.cloud.controller.interfaces;
 
-import java.util.List;
-
 import org.jclouds.compute.ComputeService;
 import org.jclouds.compute.domain.NodeMetadata;
 import org.jclouds.compute.domain.Template;
@@ -27,88 +25,96 @@ import 
org.apache.stratos.cloud.controller.exception.InvalidHostException;
 import org.apache.stratos.cloud.controller.exception.InvalidRegionException;
 import org.apache.stratos.cloud.controller.exception.InvalidZoneException;
 import org.apache.stratos.cloud.controller.pojo.IaasProvider;
-import org.apache.stratos.cloud.controller.pojo.PersistanceMapping;
 import 
org.apache.stratos.cloud.controller.validate.interfaces.PartitionValidator;
 
 /**
  * All IaaSes that are going to support by Cloud Controller, should extend 
this abstract class.
  */
 public abstract class Iaas {
-    
+       /**
+        * Reference to the corresponding {@link IaasProvider}
+        */
+       private IaasProvider iaasProvider;
+       
+       public Iaas(IaasProvider iaasProvider) {
+               this.setIaasProvider(iaasProvider);
+       }
+       
+       public IaasProvider getIaasProvider() {
+               return iaasProvider;
+       }
+
+       public void setIaasProvider(IaasProvider iaasProvider) {
+               this.iaasProvider = iaasProvider;
+       }
+       
     /**
      * This should build the {@link ComputeService} object and the {@link 
Template} object,
      * using the information from {@link IaasProvider} and should set the 
built 
      * {@link ComputeService} object in the {@link 
IaasProvider#setComputeService(ComputeService)}
      * and also should set the built {@link Template} object in the 
      * {@link IaasProvider#setTemplate(Template)}.
-     * @param iaasInfo corresponding {@link IaasProvider}
      */
-    public abstract void buildComputeServiceAndTemplate(IaasProvider iaasInfo);
+    public abstract void buildComputeServiceAndTemplate();
     
     /**
      * This method provides a way to set payload that can be obtained from 
{@link IaasProvider#getPayload()}
      * in the {@link Template} of this IaaS.
-     * @param iaasInfo corresponding {@link IaasProvider}
      */
-    public abstract void setDynamicPayload(IaasProvider iaasInfo);
+    public abstract void setDynamicPayload();
     
     /**
      * This will obtain an IP address from the allocated list and associate 
that IP with this node.
-     * @param iaasInfo corresponding {@link IaasProvider}
      * @param node Node to be associated with an IP.
      * @return associated public IP.
      */
-    public abstract String associateAddress(IaasProvider iaasInfo, 
NodeMetadata node);
+    public abstract String associateAddress(NodeMetadata node);
     
     /**
      * This will deallocate/release the given IP address back to pool.
      * @param iaasInfo corresponding {@link IaasProvider}
      * @param ip public IP address to be released.
      */
-    public abstract void releaseAddress(IaasProvider iaasInfo, String ip);
+    public abstract void releaseAddress(String ip);
     
     /**
      * This method should create a Key Pair corresponds to a given public key 
in the respective region having the name given.
      * Also should override the value of the key pair in the {@link Template} 
of this IaaS.
-     * @param iaasInfo {@link IaasProvider} 
      * @param region region that the key pair will get created.
      * @param keyPairName name of the key pair. NOTE: Jclouds adds a prefix : 
<code>jclouds#</code>
      * @param publicKey public key, from which the key pair will be created.
      * @return whether the key pair creation is successful or not.
      */
-    public abstract boolean createKeyPairFromPublicKey(IaasProvider iaasInfo, 
String region, String keyPairName, String publicKey);
+    public abstract boolean createKeyPairFromPublicKey(String region, String 
keyPairName, String publicKey);
     
     /**
      * Validate a given region name against a particular IaaS.
      * If a particular IaaS doesn't have a concept called region, it can 
simply throw {@link InvalidRegionException}.
-     * @param iaasInfo {@link IaasProvider} 
      * @param region name of the region.
      * @return whether the region is valid.
      * @throws InvalidRegionException if the region is invalid.
      */
-    public abstract boolean isValidRegion(IaasProvider iaasInfo, String 
region) throws InvalidRegionException;
+    public abstract boolean isValidRegion(String region) throws 
InvalidRegionException;
     
     /**
      * Validate a given zone name against a particular region in an IaaS.
      * If a particular IaaS doesn't have a concept called zone, it can simply 
throw {@link InvalidZoneException}.
-     * @param iaasInfo {@link IaasProvider} 
      * @param region region of the IaaS that the zone belongs to.
      * @param zone 
      * @return whether the zone is valid in the given region or not.
      * @throws InvalidZoneException if the zone is invalid in a given region.
      */
-    public abstract boolean isValidZone(IaasProvider iaasInfo, String region, 
String zone) throws InvalidZoneException;
+    public abstract boolean isValidZone(String region, String zone) throws 
InvalidZoneException;
     
     /**
      * Validate a given host id against a particular zone in an IaaS.
      * If a particular IaaS doesn't have a concept called hosts, it can simply 
throw {@link InvalidHostException}.
-     * @param iaasInfo {@link IaasProvider} 
      * @param zone zone of the IaaS that the host belongs to.
      * @param host
      * @return whether the host is valid in the given zone or not.
      * @throws InvalidHostException if the host is invalid in a given zone.
      */
-    public abstract boolean isValidHost(IaasProvider iaasInfo, String zone, 
String host) throws InvalidHostException;
+    public abstract boolean isValidHost(String zone, String host) throws 
InvalidHostException;
     
     /**
      * provides the {@link PartitionValidator} corresponds to this particular 
IaaS.
@@ -116,8 +122,9 @@ public abstract class Iaas {
      */
     public abstract PartitionValidator getPartitionValidator();
 
-    public abstract void buildTemplate(IaasProvider iaas);
-    
-    public abstract void mapPersistanceVolumes(Template template, 
List<PersistanceMapping> persistancemapings);
+    /**
+     * Builds only the jclouds {@link Template}
+     */
+    public abstract void buildTemplate();
     
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/172c86cc/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/validate/AWSEC2PartitionValidator.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/validate/AWSEC2PartitionValidator.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/validate/AWSEC2PartitionValidator.java
index 3c5814d..19c7d55 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/validate/AWSEC2PartitionValidator.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/validate/AWSEC2PartitionValidator.java
@@ -57,16 +57,17 @@ public class AWSEC2PartitionValidator implements 
PartitionValidator {
                     throw new InvalidPartitionException(msg);
                 } 
                 
-                iaas.isValidRegion(iaasProvider, region);
+                iaas.isValidRegion(region);
                 
                 IaasProvider updatedIaasProvider = new 
IaasProvider(iaasProvider);
                 Iaas updatedIaas = updatedIaasProvider.getIaas();
+                updatedIaas.setIaasProvider(updatedIaasProvider);
                 
                 if (properties.containsKey(Scope.zone.toString())) {
                     String zone = 
properties.getProperty(Scope.zone.toString());
-                    iaas.isValidZone(iaasProvider, region, zone);
+                    iaas.isValidZone(region, zone);
                     
updatedIaasProvider.setProperty(CloudControllerConstants.AVAILABILITY_ZONE, 
zone);
-                    updatedIaas.buildTemplate(updatedIaasProvider);
+                    updatedIaas.buildTemplate();
                 } 
                 
                 return updatedIaasProvider;

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/172c86cc/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 64a3567..60c3044 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
@@ -57,17 +57,18 @@ public class OpenstackNovaPartitionValidator implements 
PartitionValidator {
                     throw new InvalidPartitionException(msg);
                 } 
                 
-                iaas.isValidRegion(iaasProvider, region);
+                iaas.isValidRegion(region);
                 
                 IaasProvider updatedIaasProvider = new 
IaasProvider(iaasProvider);
                 Iaas updatedIaas = updatedIaasProvider.getIaas();
+                updatedIaas.setIaasProvider(updatedIaasProvider);
                 
                 if (properties.containsKey(Scope.host.toString())) {
                     String host = 
properties.getProperty(Scope.host.toString());
-                    iaas.isValidHost(iaasProvider, region, host);
+                    iaas.isValidHost(region, host);
                     
                     
updatedIaasProvider.setProperty(CloudControllerConstants.HOST, host);
-                    updatedIaas.buildTemplate(updatedIaasProvider);
+                    updatedIaas.buildTemplate();
                 } 
                 
                 return updatedIaasProvider;

Reply via email to