Updated Branches: refs/heads/planner_reserve [created] f7cfa8d7d
Planner choice in ServiceOffering and Planners using the ServiceOffering in canHandle() Also removed the DeployPlannerSelector.class adapter Added an upgrade mechanism for 410to420 Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/f7cfa8d7 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/f7cfa8d7 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/f7cfa8d7 Branch: refs/heads/planner_reserve Commit: f7cfa8d7d6125f96dc697f9229236b044168dfcd Parents: 202930f Author: Prachi Damle <[email protected]> Authored: Wed Apr 17 12:02:32 2013 -0700 Committer: Prachi Damle <[email protected]> Committed: Wed Apr 17 12:02:32 2013 -0700 ---------------------------------------------------------------------- api/src/com/cloud/offering/ServiceOffering.java | 2 + client/tomcatconf/applicationContext.xml.in | 16 +-- .../cloud/deploy/UserConcentratedPodPlanner.java | 12 -- .../com/cloud/deploy/UserDispersingPlanner.java | 12 -- .../manager/BaremetalPlannerSelector.java | 39 ------- .../deploy/AbstractDeployPlannerSelector.java | 84 --------------- .../com/cloud/deploy/DeployPlannerSelector.java | 24 ---- server/src/com/cloud/deploy/FirstFitPlanner.java | 7 +- .../cloud/deploy/HypervisorVmPlannerSelector.java | 54 --------- .../com/cloud/migration/ServiceOffering21VO.java | 5 + .../src/com/cloud/service/ServiceOfferingVO.java | 1 + .../src/com/cloud/upgrade/dao/Upgrade410to420.java | 67 ++++++++++-- server/src/com/cloud/vm/UserVmManagerImpl.java | 13 +-- 13 files changed, 77 insertions(+), 259 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7cfa8d7/api/src/com/cloud/offering/ServiceOffering.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/offering/ServiceOffering.java b/api/src/com/cloud/offering/ServiceOffering.java index d6c215f..1fd6214 100755 --- a/api/src/com/cloud/offering/ServiceOffering.java +++ b/api/src/com/cloud/offering/ServiceOffering.java @@ -107,4 +107,6 @@ public interface ServiceOffering extends InfrastructureEntity, InternalIdentity, boolean getDefaultUse(); String getSystemVmType(); + + String getDeploymentPlanner(); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7cfa8d7/client/tomcatconf/applicationContext.xml.in ---------------------------------------------------------------------- diff --git a/client/tomcatconf/applicationContext.xml.in b/client/tomcatconf/applicationContext.xml.in index 866e3ed..48c1ba9 100644 --- a/client/tomcatconf/applicationContext.xml.in +++ b/client/tomcatconf/applicationContext.xml.in @@ -531,11 +531,11 @@ Deployment planners --> <bean id="UserDispersingPlanner" class="com.cloud.deploy.UserDispersingPlanner"> - <property name="name" value="UserDispersing"/> + <property name="name" value="UserDispersingPlanner"/> </bean> <bean id="UserConcentratedPodPlanner" class="com.cloud.deploy.UserConcentratedPodPlanner"> - <property name="name" value="UserConcentratedPod"/> + <property name="name" value="UserConcentratedPodPlanner"/> </bean> <bean id="clusterBasedAgentLoadBalancerPlanner" class="com.cloud.cluster.agentlb.ClusterBasedAgentLoadBalancerPlanner"> @@ -592,10 +592,6 @@ <property name="name" value="OvmGuru"/> </bean> - <bean id="HypervisorPlannerSelector" class="com.cloud.deploy.HypervisorVmPlannerSelector"> - <property name="name" value="HypervisorPlannerSelector"/> - </bean> - <!-- Managers --> @@ -618,7 +614,7 @@ </bean> <bean id="FirstFitPlanner" class="com.cloud.deploy.FirstFitPlanner"> - <property name="name" value="First Fit"/> + <property name="name" value="FirstFitPlanner"/> <property name="StoragePoolAllocators" value="#{storagePoolAllocators.Adapters}" /> <property name="HostAllocators" value="#{hostAllocators.Adapters}" /> </bean> @@ -817,17 +813,13 @@ </bean> <bean id="BareMetalPlanner" class="com.cloud.baremetal.manager.BareMetalPlanner"> - <property name="name" value="BareMetal Fit"/> + <property name="name" value="BareMetalPlanner"/> </bean> <bean id="BaremetalGuru" class="com.cloud.baremetal.manager.BareMetalGuru"> <property name="name" value="BaremetalGuru"/> </bean> - <bean id="BaremetalPlannerSelector" class="com.cloud.baremetal.manager.BaremetalPlannerSelector"> - <property name="name" value="BaremetalPlannerSelector"/> - </bean> - <bean id="BaremetalManager" class="com.cloud.baremetal.manager.BaremetalManagerImpl"/> <bean id="BaremetalDhcpManager" class="com.cloud.baremetal.networkservice.BaremetalDhcpManagerImpl"/> <bean id="BaremetalKickStartPxeService" class="com.cloud.baremetal.networkservice.BaremetalKickStartServiceImpl"/> http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7cfa8d7/plugins/deployment-planners/user-concentrated-pod/src/com/cloud/deploy/UserConcentratedPodPlanner.java ---------------------------------------------------------------------- diff --git a/plugins/deployment-planners/user-concentrated-pod/src/com/cloud/deploy/UserConcentratedPodPlanner.java b/plugins/deployment-planners/user-concentrated-pod/src/com/cloud/deploy/UserConcentratedPodPlanner.java index 2ab9856..57d2bc4 100644 --- a/plugins/deployment-planners/user-concentrated-pod/src/com/cloud/deploy/UserConcentratedPodPlanner.java +++ b/plugins/deployment-planners/user-concentrated-pod/src/com/cloud/deploy/UserConcentratedPodPlanner.java @@ -24,7 +24,6 @@ import javax.ejb.Local; import org.apache.log4j.Logger; -import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.utils.Pair; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachineProfile; @@ -141,15 +140,4 @@ public class UserConcentratedPodPlanner extends FirstFitPlanner implements Deplo } - @Override - public boolean canHandle(VirtualMachineProfile<? extends VirtualMachine> vm, DeploymentPlan plan, ExcludeList avoid) { - if(vm.getHypervisorType() != HypervisorType.BareMetal){ - //check the allocation strategy - if (_allocationAlgorithm != null && (_allocationAlgorithm.equals(AllocationAlgorithm.userconcentratedpod_random.toString()) || _allocationAlgorithm.equals(AllocationAlgorithm.userconcentratedpod_firstfit.toString()))){ - return true; - } - } - return false; - } - } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7cfa8d7/plugins/deployment-planners/user-dispersing/src/com/cloud/deploy/UserDispersingPlanner.java ---------------------------------------------------------------------- diff --git a/plugins/deployment-planners/user-dispersing/src/com/cloud/deploy/UserDispersingPlanner.java b/plugins/deployment-planners/user-dispersing/src/com/cloud/deploy/UserDispersingPlanner.java index 2db2051..5bdaa71 100755 --- a/plugins/deployment-planners/user-dispersing/src/com/cloud/deploy/UserDispersingPlanner.java +++ b/plugins/deployment-planners/user-dispersing/src/com/cloud/deploy/UserDispersingPlanner.java @@ -29,7 +29,6 @@ import javax.naming.ConfigurationException; import org.apache.log4j.Logger; import com.cloud.configuration.Config; -import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; import com.cloud.vm.VirtualMachine; @@ -191,17 +190,6 @@ public class UserDispersingPlanner extends FirstFitPlanner implements Deployment } - @Override - public boolean canHandle(VirtualMachineProfile<? extends VirtualMachine> vm, DeploymentPlan plan, ExcludeList avoid) { - if(vm.getHypervisorType() != HypervisorType.BareMetal){ - //check the allocation strategy - if (_allocationAlgorithm != null && _allocationAlgorithm.equals(AllocationAlgorithm.userdispersing.toString())) { - return true; - } - } - return false; - } - float _userDispersionWeight; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7cfa8d7/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalPlannerSelector.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalPlannerSelector.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalPlannerSelector.java deleted file mode 100755 index 45fbeb7..0000000 --- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/manager/BaremetalPlannerSelector.java +++ /dev/null @@ -1,39 +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 com.cloud.baremetal.manager; - -import java.util.Map; - -import javax.ejb.Local; -import javax.naming.ConfigurationException; - -import com.cloud.deploy.AbstractDeployPlannerSelector; -import com.cloud.deploy.DeployPlannerSelector; -import com.cloud.hypervisor.Hypervisor.HypervisorType; -import com.cloud.vm.UserVmVO; -@Local(value = {DeployPlannerSelector.class}) -public class BaremetalPlannerSelector extends AbstractDeployPlannerSelector{ - - @Override - public String selectPlanner(UserVmVO vm) { - if (vm.getHypervisorType() == HypervisorType.BareMetal) { - return "BareMetalPlanner"; - } - return null; - } - -} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7cfa8d7/server/src/com/cloud/deploy/AbstractDeployPlannerSelector.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/deploy/AbstractDeployPlannerSelector.java b/server/src/com/cloud/deploy/AbstractDeployPlannerSelector.java deleted file mode 100755 index 7665687..0000000 --- a/server/src/com/cloud/deploy/AbstractDeployPlannerSelector.java +++ /dev/null @@ -1,84 +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 com.cloud.deploy; - -import java.util.Map; - -import javax.inject.Inject; -import javax.naming.ConfigurationException; - -import com.cloud.configuration.Config; -import com.cloud.configuration.dao.ConfigurationDao; -import com.cloud.utils.component.AdapterBase; -import com.cloud.vm.UserVmVO; - -public abstract class AbstractDeployPlannerSelector extends AdapterBase implements DeployPlannerSelector { - protected Map<String, Object> params; - protected String name; - protected int runLevel; - - @Inject - protected ConfigurationDao _configDao; - protected String _allocationAlgorithm = "random"; - - @Override - public String getName() { - return name; - } - - @Override - public void setName(String name) { - this.name = name; - } - - @Override - public void setConfigParams(Map<String, Object> params) { - this.params = params; - } - - @Override - public Map<String, Object> getConfigParams() { - return params; - } - - @Override - public int getRunLevel() { - return runLevel; - } - - @Override - public void setRunLevel(int level) { - this.runLevel = level; - } - - @Override - public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { - super.configure(name, params); - _allocationAlgorithm = _configDao.getValue(Config.VmAllocationAlgorithm.key()); - return true; - } - - @Override - public boolean start() { - return true; - } - - @Override - public boolean stop() { - return true; - } -} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7cfa8d7/server/src/com/cloud/deploy/DeployPlannerSelector.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/deploy/DeployPlannerSelector.java b/server/src/com/cloud/deploy/DeployPlannerSelector.java deleted file mode 100755 index 062b492..0000000 --- a/server/src/com/cloud/deploy/DeployPlannerSelector.java +++ /dev/null @@ -1,24 +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 com.cloud.deploy; - -import com.cloud.utils.component.Adapter; -import com.cloud.vm.UserVmVO; - -public interface DeployPlannerSelector extends Adapter { - String selectPlanner(UserVmVO vm); -} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7cfa8d7/server/src/com/cloud/deploy/FirstFitPlanner.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/deploy/FirstFitPlanner.java b/server/src/com/cloud/deploy/FirstFitPlanner.java index 1647cf7..ee4d47f 100755 --- a/server/src/com/cloud/deploy/FirstFitPlanner.java +++ b/server/src/com/cloud/deploy/FirstFitPlanner.java @@ -870,9 +870,10 @@ public class FirstFitPlanner extends PlannerBase implements DeploymentPlanner { @Override public boolean canHandle(VirtualMachineProfile<? extends VirtualMachine> vm, DeploymentPlan plan, ExcludeList avoid) { - if(vm.getHypervisorType() != HypervisorType.BareMetal){ - //check the allocation strategy - if (_allocationAlgorithm != null && (_allocationAlgorithm.equals(AllocationAlgorithm.random.toString()) || _allocationAlgorithm.equals(AllocationAlgorithm.firstfit.toString()))) { + // check what the ServiceOffering says + ServiceOffering offering = vm.getServiceOffering(); + if (offering != null && offering.getDeploymentPlanner() != null) { + if (offering.getDeploymentPlanner().equals(this.getName())) { return true; } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7cfa8d7/server/src/com/cloud/deploy/HypervisorVmPlannerSelector.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/deploy/HypervisorVmPlannerSelector.java b/server/src/com/cloud/deploy/HypervisorVmPlannerSelector.java deleted file mode 100755 index ce49405..0000000 --- a/server/src/com/cloud/deploy/HypervisorVmPlannerSelector.java +++ /dev/null @@ -1,54 +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 com.cloud.deploy; - -import javax.ejb.Local; - -import org.apache.log4j.Logger; - -import com.cloud.deploy.DeploymentPlanner.AllocationAlgorithm; -import com.cloud.hypervisor.Hypervisor.HypervisorType; -import com.cloud.vm.UserVmVO; - -@Local(value = {DeployPlannerSelector.class}) -public class HypervisorVmPlannerSelector extends AbstractDeployPlannerSelector { - private static final Logger s_logger = Logger.getLogger(HypervisorVmPlannerSelector.class); - - @Override - public String selectPlanner(UserVmVO vm) { - if (vm.getHypervisorType() != HypervisorType.BareMetal) { - //check the allocation strategy - if (_allocationAlgorithm != null) { - if (_allocationAlgorithm.equals(AllocationAlgorithm.random.toString()) - || _allocationAlgorithm.equals(AllocationAlgorithm.firstfit.toString())) { - return "FirstFitPlanner"; - } else if (_allocationAlgorithm.equals(AllocationAlgorithm.userdispersing.toString())) { - return "UserDispersingPlanner"; - } else if (_allocationAlgorithm.equals(AllocationAlgorithm.userconcentratedpod_random.toString()) - || _allocationAlgorithm.equals(AllocationAlgorithm.userconcentratedpod_firstfit.toString())) { - return "UserConcentratedPodPlanner"; - } - } else { - if (s_logger.isDebugEnabled()) { - s_logger.debug("The allocation algorithm is null, cannot select the planner"); - } - } - } - - return null; - } -} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7cfa8d7/server/src/com/cloud/migration/ServiceOffering21VO.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/migration/ServiceOffering21VO.java b/server/src/com/cloud/migration/ServiceOffering21VO.java index d07be64..7a49e63 100644 --- a/server/src/com/cloud/migration/ServiceOffering21VO.java +++ b/server/src/com/cloud/migration/ServiceOffering21VO.java @@ -174,5 +174,10 @@ public class ServiceOffering21VO extends DiskOffering21VO implements ServiceOffe return false; } + @Override + public String getDeploymentPlanner() { + // TODO Auto-generated method stub + return null; + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7cfa8d7/server/src/com/cloud/service/ServiceOfferingVO.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/service/ServiceOfferingVO.java b/server/src/com/cloud/service/ServiceOfferingVO.java index a3da904..32e0e32 100755 --- a/server/src/com/cloud/service/ServiceOfferingVO.java +++ b/server/src/com/cloud/service/ServiceOfferingVO.java @@ -227,6 +227,7 @@ public class ServiceOfferingVO extends DiskOfferingVO implements ServiceOffering return volatileVm; } + @Override public String getDeploymentPlanner() { return deploymentPlanner; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7cfa8d7/server/src/com/cloud/upgrade/dao/Upgrade410to420.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/upgrade/dao/Upgrade410to420.java b/server/src/com/cloud/upgrade/dao/Upgrade410to420.java index 05e2b49..2f0c2d3 100644 --- a/server/src/com/cloud/upgrade/dao/Upgrade410to420.java +++ b/server/src/com/cloud/upgrade/dao/Upgrade410to420.java @@ -17,6 +17,7 @@ package com.cloud.upgrade.dao; +import com.cloud.deploy.DeploymentPlanner; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.script.Script; import org.apache.log4j.Logger; @@ -66,9 +67,10 @@ public class Upgrade410to420 implements DbUpgrade { updatePrimaryStore(conn); addEgressFwRulesForSRXGuestNw(conn); upgradeEIPNetworkOfferings(conn); + updateServiceOfferingDeploymentPlanner(conn); } - - private void updateSystemVmTemplates(Connection conn) { + + private void updateSystemVmTemplates(Connection conn) { PreparedStatement sql = null; try { sql = conn.prepareStatement("update vm_template set image_data_store_id = 1 where type = 'SYSTEM' or type = 'BUILTIN'"); @@ -84,7 +86,7 @@ public class Upgrade410to420 implements DbUpgrade { } } } - + private void updatePrimaryStore(Connection conn) { PreparedStatement sql = null; PreparedStatement sql2 = null; @@ -93,7 +95,7 @@ public class Upgrade410to420 implements DbUpgrade { sql.setString(1, "ancient primary data store provider"); sql.setString(2, "HOST"); sql.executeUpdate(); - + sql2 = conn.prepareStatement("update storage_pool set storage_provider_name = ? , scope = ? where pool_type != 'Filesystem' and pool_type != 'LVM'"); sql2.setString(1, "ancient primary data store provider"); sql2.setString(2, "CLUSTER"); @@ -107,7 +109,7 @@ public class Upgrade410to420 implements DbUpgrade { } catch (SQLException e) { } } - + if (sql2 != null) { try { sql2.close(); @@ -235,7 +237,7 @@ public class Upgrade410to420 implements DbUpgrade { } } } - + private void createPlaceHolderNics(Connection conn) { PreparedStatement pstmt = null; ResultSet rs = null; @@ -256,7 +258,7 @@ public class Upgrade410to420 implements DbUpgrade { pstmt.setLong(4, networkId); pstmt.executeUpdate(); s_logger.debug("Created placeholder nic for the ipAddress " + ip); - + } } catch (SQLException e) { throw new CloudRuntimeException("Unable to create placeholder nics", e); @@ -272,8 +274,8 @@ public class Upgrade410to420 implements DbUpgrade { } } } - - + + private void updateRemoteAccessVpn(Connection conn) { PreparedStatement pstmt = null; ResultSet rs = null; @@ -399,4 +401,51 @@ public class Upgrade410to420 implements DbUpgrade { } } } + + private void updateServiceOfferingDeploymentPlanner(Connection conn) { + PreparedStatement pstmt = null; + ResultSet rs = null; + + try { + pstmt = conn + .prepareStatement("select value from `cloud`.`configuration` where name = 'vm.allocation.algorithm'"); + rs = pstmt.executeQuery(); + while (rs.next()) { + String globalValue = rs.getString(1); + String plannerName = "FirstFitPlanner"; + + if (globalValue != null) { + if (globalValue.equals(DeploymentPlanner.AllocationAlgorithm.random.toString())) { + plannerName = "FirstFitPlanner"; + } else if (globalValue.equals(DeploymentPlanner.AllocationAlgorithm.firstfit.toString())) { + plannerName = "FirstFitPlanner"; + } else if (globalValue.equals(DeploymentPlanner.AllocationAlgorithm.userconcentratedpod_firstfit + .toString())) { + plannerName = "UserConcentratedPodPlanner"; + } else if (globalValue.equals(DeploymentPlanner.AllocationAlgorithm.userconcentratedpod_random + .toString())) { + plannerName = "UserConcentratedPodPlanner"; + } else if (globalValue.equals(DeploymentPlanner.AllocationAlgorithm.userdispersing.toString())) { + plannerName = "UserDispersingPlanner"; + } + } + // update service offering with the planner name + pstmt = conn.prepareStatement("UPDATE `cloud`.`service_offering` set deployment_planner=?"); + pstmt.setString(1, plannerName); + pstmt.executeUpdate(); + } + } catch (SQLException e) { + throw new CloudRuntimeException("Unable to set deployment_planner for service offerings", e); + } finally { + try { + if (rs != null) { + rs.close(); + } + if (pstmt != null) { + pstmt.close(); + } + } catch (SQLException e) { + } + } + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7cfa8d7/server/src/com/cloud/vm/UserVmManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 53a57c8..75568b4 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -3030,16 +3030,9 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use VirtualMachineEntity vmEntity = _orchSrvc.getVirtualMachine(vm.getUuid()); - String plannerName = null; - for (DeployPlannerSelector dps : plannerSelectors) { - plannerName = dps.selectPlanner(vm); - if (plannerName != null) { - break; - } - } - if (plannerName == null) { - throw new CloudRuntimeException(String.format("cannot find DeployPlannerSelector for vm[uuid:%s, hypervisorType:%s]", vm.getUuid(), vm.getHypervisorType())); - } + // Get serviceOffering for Virtual Machine + ServiceOfferingVO offering = _serviceOfferingDao.findByIdIncludingRemoved(vm.getServiceOfferingId()); + String plannerName = offering.getDeploymentPlanner(); String reservationId = vmEntity.reserve(plannerName, plan, new ExcludeList(), new Long(callerUser.getId()).toString()); vmEntity.deploy(reservationId, new Long(callerUser.getId()).toString(), params);
