cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From prachida...@apache.org
Subject [1/3] git commit: updated refs/heads/planner_reserve to 2d509af
Date Fri, 03 May 2013 22:30:10 GMT
Updated Branches:
  refs/heads/planner_reserve e0ad98047 -> 2d509af32


Changes to create ServiceOffering with deployment_planner


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/73562853
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/73562853
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/73562853

Branch: refs/heads/planner_reserve
Commit: 73562853892494f8044d7bde57ad8444827d2712
Parents: e0ad980
Author: Prachi Damle <prachi@cloud.com>
Authored: Thu May 2 14:06:14 2013 -0700
Committer: Prachi Damle <prachi@cloud.com>
Committed: Thu May 2 14:06:14 2013 -0700

----------------------------------------------------------------------
 .../api/response/ServiceOfferingResponse.java      |   12 +
 client/tomcatconf/commands.properties.in           |    1 +
 .../api/query/dao/ServiceOfferingJoinDaoImpl.java  |    1 +
 .../cloud/api/query/vo/ServiceOfferingJoinVO.java  |   11 +
 .../configuration/ConfigurationManagerImpl.java    |  176 ++++++++-------
 .../deploy/DeploymentPlanningManagerImpl.java      |    4 +
 .../src/com/cloud/server/ManagementServerImpl.java |   26 ++-
 setup/db/db/schema-410to420.sql                    |   39 +++-
 8 files changed, 176 insertions(+), 94 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/73562853/api/src/org/apache/cloudstack/api/response/ServiceOfferingResponse.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/response/ServiceOfferingResponse.java b/api/src/org/apache/cloudstack/api/response/ServiceOfferingResponse.java
index f35e87e..08ebbb0 100644
--- a/api/src/org/apache/cloudstack/api/response/ServiceOfferingResponse.java
+++ b/api/src/org/apache/cloudstack/api/response/ServiceOfferingResponse.java
@@ -18,6 +18,8 @@ package org.apache.cloudstack.api.response;
 
 import java.util.Date;
 
+import javax.persistence.Column;
+
 import org.apache.cloudstack.api.ApiConstants;
 import org.apache.cloudstack.api.BaseResponse;
 import org.apache.cloudstack.api.EntityReference;
@@ -82,6 +84,8 @@ public class ServiceOfferingResponse extends BaseResponse {
     @SerializedName(ApiConstants.NETWORKRATE) @Param(description="data transfer rate in megabits
per second allowed.")
     private Integer networkRate;
 
+    @SerializedName(ApiConstants.DEPLOYMENT_PLANNER) @Param(description="deployment strategy
used to deploy VM.")
+    private String deploymentPlanner;
 
     public String getId() {
         return id;
@@ -225,4 +229,12 @@ public class ServiceOfferingResponse extends BaseResponse {
     public void setNetworkRate(Integer networkRate) {
         this.networkRate = networkRate;
     }
+
+    public String getDeploymentPlanner() {
+        return deploymentPlanner;
+    }
+
+    public void setDeploymentPlanner(String deploymentPlanner) {
+        this.deploymentPlanner = deploymentPlanner;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/73562853/client/tomcatconf/commands.properties.in
----------------------------------------------------------------------
diff --git a/client/tomcatconf/commands.properties.in b/client/tomcatconf/commands.properties.in
index 10fcfe3..f381d2f 100644
--- a/client/tomcatconf/commands.properties.in
+++ b/client/tomcatconf/commands.properties.in
@@ -208,6 +208,7 @@ listConfigurations=1
 ldapConfig=1
 ldapRemove=1
 listCapabilities=15
+listDeploymentPlanners=1
 
 #### pod commands
 createPod=1

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/73562853/server/src/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java
index 9795fef..ce20562 100644
--- a/server/src/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java
+++ b/server/src/com/cloud/api/query/dao/ServiceOfferingJoinDaoImpl.java
@@ -73,6 +73,7 @@ public class ServiceOfferingJoinDaoImpl extends GenericDaoBase<ServiceOfferingJo
         offeringResponse.setDomainId(offering.getDomainUuid());
         offeringResponse.setNetworkRate(offering.getRateMbps());
         offeringResponse.setHostTag(offering.getHostTag());
+        offeringResponse.setDeploymentPlanner(offering.getDeploymentPlanner());
         offeringResponse.setObjectName("serviceoffering");
 
         return offeringResponse;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/73562853/server/src/com/cloud/api/query/vo/ServiceOfferingJoinVO.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/vo/ServiceOfferingJoinVO.java b/server/src/com/cloud/api/query/vo/ServiceOfferingJoinVO.java
index fe4a165..598e1d1 100644
--- a/server/src/com/cloud/api/query/vo/ServiceOfferingJoinVO.java
+++ b/server/src/com/cloud/api/query/vo/ServiceOfferingJoinVO.java
@@ -106,6 +106,9 @@ public class ServiceOfferingJoinVO extends BaseViewVO implements InternalIdentit
     @Column(name="domain_path")
     private String domainPath = null;
 
+    @Column(name = "deployment_planner")
+    private String deploymentPlanner;
+
 
     public ServiceOfferingJoinVO() {
     }
@@ -307,5 +310,13 @@ public class ServiceOfferingJoinVO extends BaseViewVO implements InternalIdentit
         this.vm_type = vm_type;
     }
 
+    public String getDeploymentPlanner() {
+        return deploymentPlanner;
+    }
+
+    public void setDeploymentPlanner(String deploymentPlanner) {
+        this.deploymentPlanner = deploymentPlanner;
+    }
+
 
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/73562853/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index c9ae854..dadea3d 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -5,7 +5,7 @@
 // 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,
@@ -139,6 +139,7 @@ import com.cloud.org.Grouping;
 import com.cloud.org.Grouping.AllocationState;
 import com.cloud.projects.Project;
 import com.cloud.projects.ProjectManager;
+import com.cloud.server.ManagementService;
 import com.cloud.service.ServiceOfferingVO;
 import com.cloud.service.dao.ServiceOfferingDao;
 import com.cloud.storage.DiskOfferingVO;
@@ -222,7 +223,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
     @Inject
     AlertManager _alertMgr;
     // @com.cloud.utils.component.Inject(adapter = SecurityChecker.class)
-    @Inject 
+    @Inject
     List<SecurityChecker> _secChecker;
 
     @Inject
@@ -250,6 +251,9 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
     @Inject
     VpcManager _vpcMgr;
 
+    @Inject
+    public ManagementService _mgr;
+
     // FIXME - why don't we have interface for DataCenterLinkLocalIpAddressDao?
     @Inject protected DataCenterLinkLocalIpAddressDao _LinkLocalIpAllocDao;
 
@@ -260,11 +264,11 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
     @Override
     public boolean configure(final String name, final Map<String, Object> params) throws
ConfigurationException {
         String maxVolumeSizeInGbString = _configDao.getValue(Config.MaxVolumeSize.key());
-        _maxVolumeSizeInGb = NumbersUtil.parseInt(maxVolumeSizeInGbString, 
+        _maxVolumeSizeInGb = NumbersUtil.parseInt(maxVolumeSizeInGbString,
         	Integer.parseInt(Config.MaxVolumeSize.getDefaultValue()));
 
         String defaultPageSizeString = _configDao.getValue(Config.DefaultPageSize.key());
-        _defaultPageSize = NumbersUtil.parseLong(defaultPageSizeString, 
+        _defaultPageSize = NumbersUtil.parseLong(defaultPageSizeString,
         	Long.parseLong(Config.DefaultPageSize.getDefaultValue()));
 
         populateConfigValuesForValidationSet();
@@ -710,7 +714,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements Configurati
             checkPodCidrSubnets(zoneId, podId, cidr);
             /*
              * Commenting out due to Bug 11593 - CIDR conflicts with zone when extending
pod but not when creating it
-             * 
+             *
              * checkCidrVlanOverlap(zoneId, cidr);
              */
         }
@@ -1503,7 +1507,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         if (internalDns2 == null) {
         	internalDns2 = zone.getInternalDns2();
         }
-        
+
         if (guestCidr == null) {
             guestCidr = zone.getGuestNetworkCidr();
         }
@@ -1688,7 +1692,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
 
                 userNetwork.setBroadcastDomainType(broadcastDomainType);
                 userNetwork.setNetworkDomain(networkDomain);
-                _networkMgr.setupNetwork(systemAccount, offering, userNetwork, plan, null,
null, false, 
+                _networkMgr.setupNetwork(systemAccount, offering, userNetwork, plan, null,
null, false,
                         Domain.ROOT_DOMAIN, null, null, null);
             }
         }
@@ -1822,6 +1826,18 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
             throw new InvalidParameterValueException("Network rate can be specified only
for non-System offering and system offerings having \"domainrouter\" systemvmtype");
         }
 
+        if (cmd.getDeploymentPlanner() != null) {
+            List<String> planners = _mgr.listDeploymentPlanners();
+            if (planners != null && !planners.isEmpty()) {
+                if (!planners.contains(cmd.getDeploymentPlanner())) {
+                    throw new InvalidParameterValueException(
+                            "Invalid name for Deployment Planner specified, please use listDeploymentPlanners
to get the valid set");
+                }
+            } else {
+                throw new InvalidParameterValueException("No deployment planners found");
+            }
+        }
+
         return createServiceOffering(userId, cmd.getIsSystem(), vmType, cmd.getServiceOfferingName(),
cpuNumber.intValue(), memory.intValue(), cpuSpeed.intValue(), cmd.getDisplayText(),
                 localStorageRequired, offerHA, limitCpuUse, volatileVm, cmd.getTags(), cmd.getDomainId(),
cmd.getHostTag(), cmd.getNetworkRate(), cmd.getDeploymentPlanner());
     }
@@ -2114,9 +2130,9 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         String endIPv6 = cmd.getEndIpv6();
         String ip6Gateway = cmd.getIp6Gateway();
         String ip6Cidr = cmd.getIp6Cidr();
-        
+
         Account vlanOwner = null;
-        
+
         boolean ipv4 = (startIP != null);
         boolean ipv6 = (startIPv6 != null);
 
@@ -2170,7 +2186,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         } else if (ipv6) {
         	throw new InvalidParameterValueException("Only support IPv6 on extending existed
network");
         }
-        
+
         // Verify that zone exists
         DataCenterVO zone = _zoneDao.findById(zoneId);
         if (zone == null) {
@@ -2217,18 +2233,18 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
                 }
             }
         }
-        
-        
+
+
         // Check if zone is enabled
         Account caller = UserContext.current().getCaller();
         if (Grouping.AllocationState.Disabled == zone.getAllocationState() && !_accountMgr.isRootAdmin(caller.getType()))
{
             throw new PermissionDeniedException("Cannot perform this operation, Zone is currently
disabled: " + zoneId);
-        } 
+        }
 
         if (zone.isSecurityGroupEnabled() && zone.getNetworkType() != DataCenter.NetworkType.Basic
&& forVirtualNetwork) {
             throw new InvalidParameterValueException("Can't add virtual ip range into a zone
with security group enabled");
         }
-        
+
         // If networkId is not specified, and vlan is Virtual or Direct Untagged, try to
locate default networks
         if (forVirtualNetwork) {
             if (network == null) {
@@ -2325,7 +2341,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         Transaction txn = Transaction.currentTxn();
         txn.start();
 
-        Vlan vlan = createVlanAndPublicIpRange(zoneId, networkId, physicalNetworkId, forVirtualNetwork,
podId, startIP, 
+        Vlan vlan = createVlanAndPublicIpRange(zoneId, networkId, physicalNetworkId, forVirtualNetwork,
podId, startIP,
                 endIP, vlanGateway, vlanNetmask, vlanId, vlanOwner, startIPv6, endIPv6, ip6Gateway,
ip6Cidr);
 
         txn.commit();
@@ -2335,39 +2351,39 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
 
     @Override
     @DB
-    public Vlan createVlanAndPublicIpRange(long zoneId, long networkId, long physicalNetworkId,
boolean forVirtualNetwork, Long podId, 
+    public Vlan createVlanAndPublicIpRange(long zoneId, long networkId, long physicalNetworkId,
boolean forVirtualNetwork, Long podId,
             String startIP, String endIP, String vlanGateway, String vlanNetmask,
             String vlanId, Account vlanOwner, String startIPv6, String endIPv6, String vlanIp6Gateway,
String vlanIp6Cidr) {
         Network network = _networkModel.getNetwork(networkId);
-        
+
         boolean ipv4 = false, ipv6 = false;
-        
+
         if (startIP != null) {
         	ipv4 = true;
         }
-        
+
         if (startIPv6 != null) {
         	ipv6 = true;
         }
-        
+
         if (!ipv4 && !ipv6) {
             throw new InvalidParameterValueException("Please specify IPv4 or IPv6 address.");
         }
-        
+
         //Validate the zone
         DataCenterVO zone = _zoneDao.findById(zoneId);
         if (zone == null) {
             throw new InvalidParameterValueException("Please specify a valid zone.");
         }
-        
+
         // ACL check
         checkZoneAccess(UserContext.current().getCaller(), zone);
-        
+
         //Validate the physical network
         if (_physicalNetworkDao.findById(physicalNetworkId) == null) {
             throw new InvalidParameterValueException("Please specify a valid physical network
id");
         }
-        
+
         //Validate the pod
         if (podId != null) {
             Pod pod = _podDao.findById(podId);
@@ -2379,11 +2395,11 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
             }
             //pod vlans can be created in basic zone only
             if (zone.getNetworkType() != NetworkType.Basic || network.getTrafficType() !=
TrafficType.Guest) {
-                throw new InvalidParameterValueException("Pod id can be specified only for
the networks of type " 
-                                                        + TrafficType.Guest + " in zone of
type " + NetworkType.Basic);                  
+                throw new InvalidParameterValueException("Pod id can be specified only for
the networks of type "
+                                                        + TrafficType.Guest + " in zone of
type " + NetworkType.Basic);
             }
         }
-        
+
         //1) if vlan is specified for the guest network range, it should be the same as network's
vlan
         //2) if vlan is missing, default it to the guest network's vlan
         if (network.getTrafficType() == TrafficType.Guest) {
@@ -2393,7 +2409,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
                 String[] vlan = uri.toString().split("vlan:\\/\\/");
                 networkVlanId = vlan[1];
             }
-            
+
             if (vlanId != null) {
                 // if vlan is specified, throw an error if it's not equal to network's vlanId
                 if (networkVlanId != null && !networkVlanId.equalsIgnoreCase(vlanId))
{
@@ -2406,14 +2422,14 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
             //vlan id is required for public network
             throw new InvalidParameterValueException("Vlan id is required when add ip range
to the public network");
         }
-        
+
         if (vlanId == null) {
             vlanId = Vlan.UNTAGGED;
         }
 
         VlanType vlanType = forVirtualNetwork ? VlanType.VirtualNetwork : VlanType.DirectAttached;
-        
-        
+
+
         if (vlanOwner != null && zone.getNetworkType() != NetworkType.Advanced) {
             throw new InvalidParameterValueException("Vlan owner can be defined only in the
zone of type " + NetworkType.Advanced);
         }
@@ -2429,7 +2445,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         		throw new InvalidParameterValueException("Please specify a valid netmask");
         	}
         }
-        
+
         if (ipv6) {
         	if (!NetUtils.isValidIpv6(vlanIp6Gateway)) {
         		throw new InvalidParameterValueException("Please specify a valid IPv6 gateway");
@@ -2484,7 +2500,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         	List<VlanVO> vlans = _vlanDao.listByZone(zone.getId());
         	for (VlanVO vlan : vlans) {
         		String otherVlanGateway = vlan.getVlanGateway();
-        		// Continue if it's not IPv4 
+        		// Continue if it's not IPv4
         		if (otherVlanGateway == null) {
         			continue;
         		}
@@ -2520,14 +2536,14 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         		}
         	}
         }
-        
+
         String ipv6Range = null;
         if (ipv6) {
         	ipv6Range = startIPv6;
         	if (endIPv6 != null) {
         		ipv6Range += "-" + endIPv6;
         	}
-        	
+
         	List<VlanVO> vlans = _vlanDao.listByZone(zone.getId());
         	for (VlanVO vlan : vlans) {
         		if (vlan.getIp6Gateway() == null) {
@@ -2567,14 +2583,14 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         }
 
         String ipRange = null;
-        
+
         if (ipv4) {
         	ipRange = startIP;
         	if (endIP != null) {
         		ipRange += "-" + endIP;
         	}
         }
-        
+
         // Everything was fine, so persist the VLAN
         Transaction txn = Transaction.currentTxn();
         txn.start();
@@ -2586,7 +2602,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         // IPv6 use a used ip map, is different from ipv4, no need to save public ip range
         if (ipv4) {
         	if (!savePublicIPRange(startIP, endIP, zoneId, vlan.getId(), networkId, physicalNetworkId))
{
-        		throw new CloudRuntimeException("Failed to save IPv4 range. Please contact Cloud
Support."); 
+        		throw new CloudRuntimeException("Failed to save IPv4 range. Please contact Cloud
Support.");
         	}
         }
 
@@ -2612,7 +2628,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         if (vlan == null) {
             throw new InvalidParameterValueException("Please specify a valid IP range id.");
         }
-        
+
         boolean isAccountSpecific = false;
         List<AccountVlanMapVO> acctVln = _accountVlanMapDao.listAccountVlanMapsByVlan(vlan.getId());
         // Check for account wide pool. It will have an entry for account_vlan_map.
@@ -2624,33 +2640,33 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         long allocIpCount = _publicIpAddressDao.countIPs(vlan.getDataCenterId(), vlanDbId,
true);
         boolean success = true;
         if (allocIpCount > 0) {
-            if (isAccountSpecific) { 
+            if (isAccountSpecific) {
                 try {
                     vlan = _vlanDao.acquireInLockTable(vlanDbId, 30);
                     if (vlan == null) {
                         throw new CloudRuntimeException("Unable to acquire vlan configuration:
" + vlanDbId);
                     }
-                    
+
                     if (s_logger.isDebugEnabled()) {
                         s_logger.debug("lock vlan " + vlanDbId + " is acquired");
                     }
-                    
+
                     List<IPAddressVO> ips = _publicIpAddressDao.listByVlanId(vlanDbId);
-                    
+
                     for (IPAddressVO ip : ips) {
                         if (ip.isOneToOneNat()) {
-                            throw new InvalidParameterValueException("Can't delete account
specific vlan " + vlanDbId + 
+                            throw new InvalidParameterValueException("Can't delete account
specific vlan " + vlanDbId +
                                     " as ip " + ip + " belonging to the range is used for
static nat purposes. Cleanup the rules first");
                         }
-                        
+
                         if (ip.isSourceNat() && _networkModel.getNetwork(ip.getAssociatedWithNetworkId())
!= null) {
-                            throw new InvalidParameterValueException("Can't delete account
specific vlan " + vlanDbId + 
-                                    " as ip " + ip + " belonging to the range is a source
nat ip for the network id=" + ip.getSourceNetworkId() + 
+                            throw new InvalidParameterValueException("Can't delete account
specific vlan " + vlanDbId +
+                                    " as ip " + ip + " belonging to the range is a source
nat ip for the network id=" + ip.getSourceNetworkId() +
                                     ". IP range with the source nat ip address can be removed
either as a part of Network, or account removal");
                         }
-                        
+
                         if (_firewallDao.countRulesByIpId(ip.getId()) > 0) {
-                            throw new InvalidParameterValueException("Can't delete account
specific vlan " + vlanDbId + 
+                            throw new InvalidParameterValueException("Can't delete account
specific vlan " + vlanDbId +
                                     " as ip " + ip + " belonging to the range has firewall
rules applied. Cleanup the rules first");
                         }
                         //release public ip address here
@@ -2661,7 +2677,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
                     }
                 } finally {
                     _vlanDao.releaseFromLockTable(vlanDbId);
-                } 
+                }
             } else {
                 throw new InvalidParameterValueException("The IP range can't be deleted because
it has allocated public IP addresses.");
             }
@@ -2884,7 +2900,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
 
         return true;
     }
-    
+
 
     @DB
     protected boolean savePublicIPRange(String startIP, String endIP, long zoneId, long vlanDbId,
long sourceNetworkid, long physicalNetworkId) {
@@ -3087,7 +3103,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         }
 
     }
-    
+
     private boolean validPod(long podId) {
         return (_podDao.findById(podId) != null);
     }
@@ -3305,7 +3321,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
                         if (provider == Provider.JuniperSRX || provider == Provider.CiscoVnmc)
{
                             firewallProvider = provider;
                         }
-                        
+
                         if ((service == Service.PortForwarding || service == Service.StaticNat)
&& provider == Provider.VirtualRouter){
                             firewallProvider = Provider.VirtualRouter;
                         }
@@ -3480,7 +3496,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         if (!specifyVlan && type == GuestType.Shared) {
             throw new InvalidParameterValueException("SpecifyVlan should be true if network
offering's type is " + type);
         }
-        
+
         //specifyIpRanges should always be true for Shared networks
         //specifyIpRanges can only be true for Isolated networks with no Source Nat service
         if (specifyIpRanges) {
@@ -3504,7 +3520,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         if (availability == NetworkOffering.Availability.Required) {
             boolean canOffBeRequired = (type == GuestType.Isolated && serviceProviderMap.containsKey(Service.SourceNat));
             if (!canOffBeRequired) {
-                throw new InvalidParameterValueException("Availability can be " + NetworkOffering.Availability.Required

+                throw new InvalidParameterValueException("Availability can be " + NetworkOffering.Availability.Required
                         + " only for networkOfferings of type " + GuestType.Isolated + "
and with "
                         + Service.SourceNat.getName() + " enabled");
             }
@@ -3512,11 +3528,11 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
             // only one network offering in the system can be Required
             List<NetworkOfferingVO> offerings = _networkOfferingDao.listByAvailability(Availability.Required,
false);
             if (!offerings.isEmpty()) {
-                throw new InvalidParameterValueException("System already has network offering
id=" + offerings.get(0).getId() 
+                throw new InvalidParameterValueException("System already has network offering
id=" + offerings.get(0).getId()
                         + " with availability " + Availability.Required);
             }
         }
-        
+
         boolean dedicatedLb = false;
         boolean elasticLb = false;
         boolean sharedSourceNat = false;
@@ -3526,7 +3542,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         boolean inline = false;
         if (serviceCapabilityMap != null && !serviceCapabilityMap.isEmpty()) {
             Map<Capability, String> lbServiceCapabilityMap = serviceCapabilityMap.get(Service.Lb);
-            
+
             if ((lbServiceCapabilityMap != null) && (!lbServiceCapabilityMap.isEmpty()))
{
                 String isolationCapability = lbServiceCapabilityMap.get(Capability.SupportedLBIsolation);
                 if (isolationCapability != null) {
@@ -3540,7 +3556,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
                 if (param != null) {
                     elasticLb = param.contains("true");
                 }
-                
+
                 String inlineMode = lbServiceCapabilityMap.get(Capability.InlineMode);
                 if (inlineMode != null) {
                     _networkModel.checkCapabilityForProvider(serviceProviderMap.get(Service.Lb),
Service.Lb, Capability.InlineMode, inlineMode);
@@ -3554,14 +3570,14 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
             if ((sourceNatServiceCapabilityMap != null) && (!sourceNatServiceCapabilityMap.isEmpty()))
{
                 String sourceNatType = sourceNatServiceCapabilityMap.get(Capability.SupportedSourceNatTypes);
                 if (sourceNatType != null) {
-                    _networkModel.checkCapabilityForProvider(serviceProviderMap.get(Service.SourceNat),
Service.SourceNat, 
+                    _networkModel.checkCapabilityForProvider(serviceProviderMap.get(Service.SourceNat),
Service.SourceNat,
                             Capability.SupportedSourceNatTypes, sourceNatType);
                     sharedSourceNat = sourceNatType.contains("perzone");
                 }
 
                 String param = sourceNatServiceCapabilityMap.get(Capability.RedundantRouter);
                 if (param != null) {
-                    _networkModel.checkCapabilityForProvider(serviceProviderMap.get(Service.SourceNat),
Service.SourceNat, 
+                    _networkModel.checkCapabilityForProvider(serviceProviderMap.get(Service.SourceNat),
Service.SourceNat,
                             Capability.RedundantRouter, param);
                     redundantRouter = param.contains("true");
                 }
@@ -3580,7 +3596,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
             }
         }
 
-        NetworkOfferingVO offering = new NetworkOfferingVO(name, displayText, trafficType,
systemOnly, specifyVlan, 
+        NetworkOfferingVO offering = new NetworkOfferingVO(name, displayText, trafficType,
systemOnly, specifyVlan,
                 networkRate, multicastRate, isDefault, availability, tags, type, conserveMode,
dedicatedLb,
                 sharedSourceNat, redundantRouter, elasticIp, elasticLb, specifyIpRanges,
inline, isPersistent, associatePublicIp);
 
@@ -3607,7 +3623,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
                         _ntwkOffServiceMapDao.persist(offService);
                         s_logger.trace("Added service for the network offering: " + offService
+ " with provider " + provider.getName());
                     }
-                    
+
                     if (vpcOff) {
                         List<Service> supportedSvcs = new ArrayList<Service>();
                         supportedSvcs.addAll(serviceProviderMap.keySet());
@@ -3781,7 +3797,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
         // filter by supported services
         boolean listBySupportedServices = (supportedServicesStr != null && !supportedServicesStr.isEmpty()
&& !offerings.isEmpty());
         boolean checkIfProvidersAreEnabled = (zoneId != null);
-        boolean parseOfferings = (listBySupportedServices || sourceNatSupported != null ||
checkIfProvidersAreEnabled 
+        boolean parseOfferings = (listBySupportedServices || sourceNatSupported != null ||
checkIfProvidersAreEnabled
                 || forVpc != null || network != null);
 
         if (parseOfferings) {
@@ -3829,7 +3845,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
                 if (sourceNatSupported != null) {
                     addOffering = addOffering && (_networkModel.areServicesSupportedByNetworkOffering(offering.getId(),
Network.Service.SourceNat) == sourceNatSupported);
                 }
-                
+
                 if (forVpc != null) {
                     addOffering = addOffering && (isOfferingForVpc(offering) == forVpc.booleanValue());
                 } else if (network != null){
@@ -3947,14 +3963,14 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
                 }
             }
             if (availability == null) {
-                throw new InvalidParameterValueException("Invalid value for Availability.
Supported types: " 
+                throw new InvalidParameterValueException("Invalid value for Availability.
Supported types: "
             + Availability.Required + ", " + Availability.Optional);
             } else {
                 if (availability == NetworkOffering.Availability.Required) {
-                    boolean canOffBeRequired = (offeringToUpdate.getGuestType() == GuestType.Isolated

+                    boolean canOffBeRequired = (offeringToUpdate.getGuestType() == GuestType.Isolated
                             && _networkModel.areServicesSupportedByNetworkOffering(offeringToUpdate.getId(),
Service.SourceNat));
                     if (!canOffBeRequired) {
-                        throw new InvalidParameterValueException("Availability can be " +

+                        throw new InvalidParameterValueException("Availability can be " +
                     NetworkOffering.Availability.Required + " only for networkOfferings of
type " + GuestType.Isolated + " and with "
                                 + Service.SourceNat.getName() + " enabled");
                     }
@@ -3962,7 +3978,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
                     // only one network offering in the system can be Required
                     List<NetworkOfferingVO> offerings = _networkOfferingDao.listByAvailability(Availability.Required,
false);
                     if (!offerings.isEmpty() && offerings.get(0).getId() != offeringToUpdate.getId())
{
-                        throw new InvalidParameterValueException("System already has network
offering id=" + 
+                        throw new InvalidParameterValueException("System already has network
offering id=" +
                     offerings.get(0).getId() + " with availability " + Availability.Required);
                     }
                 }
@@ -3981,7 +3997,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
     @ActionEvent(eventType = EventTypes.EVENT_ACCOUNT_MARK_DEFAULT_ZONE, eventDescription
= "Marking account with the " +
     		"default zone", async=true)
     public AccountVO markDefaultZone(String accountName, long domainId, long defaultZoneId)
{
-    	
+
     	// Check if the account exists
     	Account account = _accountDao.findEnabledAccount(accountName, domainId);
     	if (account == null) {
@@ -3995,9 +4011,9 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
     	}
 
     	AccountVO acctForUpdate = _accountDao.findById(account.getId());
-    	
+
     	acctForUpdate.setDefaultZoneId(defaultZoneId);
-    	
+
     	if (_accountDao.update(account.getId(), acctForUpdate)) {
     		UserContext.current().setEventDetails("Default zone id= " + defaultZoneId);
     		return _accountDao.findById(account.getId());
@@ -4005,7 +4021,7 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
     		return null;
     	}
     }
-    
+
     // Note: This method will be used for entity name validations in the coming
     // releases (place holder for now)
     private void validateEntityName(String str) {
@@ -4133,10 +4149,10 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
     public ClusterVO getCluster(long id) {
         return _clusterDao.findById(id);
     }
-    
+
     @Override
     public AllocationState findClusterAllocationState(ClusterVO cluster){
-    	
+
     	if(cluster.getAllocationState() == AllocationState.Disabled){
     		return AllocationState.Disabled;
     	}else if(ApiDBUtils.findPodById(cluster.getPodId()).getAllocationState() == AllocationState.Disabled){
@@ -4144,20 +4160,20 @@ public class ConfigurationManagerImpl extends ManagerBase implements
Configurati
     	}else {
     		DataCenterVO zone = ApiDBUtils.findZoneById(cluster.getDataCenterId());
     		return zone.getAllocationState();
-    	}    	
-    }   
+    	}
+    }
 
     @Override
     public AllocationState findPodAllocationState(HostPodVO pod){
-    	
+
     	if(pod.getAllocationState() == AllocationState.Disabled){
     		return AllocationState.Disabled;
     	}else {
     		DataCenterVO zone = ApiDBUtils.findZoneById(pod.getDataCenterId());
     		return zone.getAllocationState();
-    	}    	
+    	}
     }
-    
+
     private boolean allowIpRangeOverlap(VlanVO vlan, boolean forVirtualNetwork, long networkId)
{
         // FIXME - delete restriction for virtual network in the future
         if (vlan.getVlanType() == VlanType.DirectAttached && !forVirtualNetwork)
{

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/73562853/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java b/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java
index 4a78783..c096bfd 100644
--- a/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java
+++ b/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java
@@ -444,6 +444,8 @@ public class DeploymentPlanningManagerImpl extends ManagerBase implements
Deploy
                 if (hostResourceType == resourceUsageRequired) {
                     return true;
                 } else {
+                    s_logger.debug("Cannot use this host for usage: " + resourceUsageRequired
+                            + ", since this host has been reserved for planner usage : "
+ hostResourceType);
                     return false;
                 }
             } else {
@@ -469,6 +471,8 @@ public class DeploymentPlanningManagerImpl extends ManagerBase implements
Deploy
                         if (lockedEntry.getResourceUsage() == resourceUsageRequired) {
                             return true;
                         } else {
+                            s_logger.debug("Cannot use this host for usage: " + resourceUsageRequired
+                                    + ", since this host has been reserved for planner usage
: " + hostResourceType);
                             return false;
                         }
                     }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/73562853/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java
index 5ed0c92..7b68183 100755
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@ -197,6 +197,7 @@ import org.apache.cloudstack.api.command.admin.cluster.DeleteClusterCmd;
 import org.apache.cloudstack.api.command.admin.cluster.ListClustersCmd;
 import org.apache.cloudstack.api.command.admin.cluster.UpdateClusterCmd;
 import org.apache.cloudstack.api.command.admin.config.ListCfgsByCmd;
+import org.apache.cloudstack.api.command.admin.config.ListDeploymentPlannersCmd;
 import org.apache.cloudstack.api.command.admin.config.ListHypervisorCapabilitiesCmd;
 import org.apache.cloudstack.api.command.admin.config.UpdateCfgCmd;
 import org.apache.cloudstack.api.command.admin.config.UpdateHypervisorCapabilitiesCmd;
@@ -404,7 +405,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
     private String _hashKey = null;
     private String _encryptionKey = null;
     private String _encryptionIV = null;
-    
+
     @Inject
     protected AffinityGroupVMMapDao _affinityGroupVMMapDao;
 
@@ -2270,6 +2271,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
         cmdList.add(ListAffinityGroupsCmd.class);
         cmdList.add(UpdateVMAffinityGroupCmd.class);
         cmdList.add(ListAffinityGroupTypesCmd.class);
+        cmdList.add(ListDeploymentPlannersCmd.class);
 
         return cmdList;
     }
@@ -3007,7 +3009,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
         // although we may have race conditioning here, database transaction serialization
should
         // give us the same key
         if (_hashKey == null) {
-            _hashKey = _configDao.getValueAndInitIfNotExist(Config.HashKey.key(), Config.HashKey.getCategory(),

+            _hashKey = _configDao.getValueAndInitIfNotExist(Config.HashKey.key(), Config.HashKey.getCategory(),
             	getBase64EncodedRandomKey(128));
         }
         return _hashKey;
@@ -3016,41 +3018,41 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
     @Override
     public String getEncryptionKey() {
         if (_encryptionKey == null) {
-            _encryptionKey = _configDao.getValueAndInitIfNotExist(Config.EncryptionKey.key(),

-            	Config.EncryptionKey.getCategory(), 
+            _encryptionKey = _configDao.getValueAndInitIfNotExist(Config.EncryptionKey.key(),
+            	Config.EncryptionKey.getCategory(),
             	getBase64EncodedRandomKey(128));
         }
         return _encryptionKey;
     }
-    
+
     @Override
     public String getEncryptionIV() {
         if (_encryptionIV == null) {
-            _encryptionIV = _configDao.getValueAndInitIfNotExist(Config.EncryptionIV.key(),

-            	Config.EncryptionIV.getCategory(), 
+            _encryptionIV = _configDao.getValueAndInitIfNotExist(Config.EncryptionIV.key(),
+            	Config.EncryptionIV.getCategory(),
             	getBase64EncodedRandomKey(128));
         }
         return _encryptionIV;
     }
-    
+
     @Override
     @DB
     public void resetEncryptionKeyIV() {
-    	
+
     	SearchBuilder<ConfigurationVO> sb = _configDao.createSearchBuilder();
     	sb.and("name1", sb.entity().getName(), SearchCriteria.Op.EQ);
     	sb.or("name2", sb.entity().getName(), SearchCriteria.Op.EQ);
     	sb.done();
-    	
+
     	SearchCriteria<ConfigurationVO> sc = sb.create();
     	sc.setParameters("name1", Config.EncryptionKey.key());
     	sc.setParameters("name2", Config.EncryptionIV.key());
-    	
+
     	_configDao.expunge(sc);
     	_encryptionKey = null;
     	_encryptionIV = null;
     }
-    
+
     private static String getBase64EncodedRandomKey(int nBits) {
 		SecureRandom random;
 		try {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/73562853/setup/db/db/schema-410to420.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-410to420.sql b/setup/db/db/schema-410to420.sql
index 4350b65..438d805 100644
--- a/setup/db/db/schema-410to420.sql
+++ b/setup/db/db/schema-410to420.sql
@@ -167,8 +167,6 @@ CREATE TABLE `cloud`.`affinity_group_vm_map` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
-ALTER TABLE `cloud`.`service_offering` ADD COLUMN `deployment_planner` varchar(255) NOT NULL
DEFAULT 'FirstFitPlanner'  COMMENT 'Planner heuristics used to deploy a VM of this offering';
-
 CREATE TABLE nic_secondary_ips (
   `id` bigint unsigned NOT NULL UNIQUE AUTO_INCREMENT,
   `uuid` varchar(40),
@@ -734,6 +732,43 @@ CREATE TABLE `cloud`.`op_host_planner_reservation` (
   CONSTRAINT `fk_planner_reservation__cluster_id` FOREIGN KEY (`cluster_id`) REFERENCES `cloud`.`cluster`(`id`)
ON DELETE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
+ALTER TABLE `cloud`.`service_offering` ADD COLUMN `deployment_planner` varchar(255) NOT NULL
DEFAULT 'FirstFitPlanner'  COMMENT 'Planner heuristics used to deploy a VM of this offering';
+
+DROP VIEW IF EXISTS `cloud`.`service_offering_view`;
+CREATE VIEW `cloud`.`service_offering_view` AS
+    select 
+        service_offering.id,
+        disk_offering.uuid,
+        disk_offering.name,
+        disk_offering.display_text,
+        disk_offering.created,
+        disk_offering.tags,
+        disk_offering.removed,
+        disk_offering.use_local_storage,
+        disk_offering.system_use,
+        service_offering.cpu,
+        service_offering.speed,
+        service_offering.ram_size,
+        service_offering.nw_rate,
+        service_offering.mc_rate,
+        service_offering.ha_enabled,
+        service_offering.limit_cpu_use,
+        service_offering.host_tag,
+        service_offering.default_use,
+        service_offering.vm_type,
+        service_offering.sort_key,
+        service_offering.deployment_planner,
+        domain.id domain_id,
+        domain.uuid domain_uuid,
+        domain.name domain_name,
+        domain.path domain_path
+    from
+        `cloud`.`service_offering`
+            inner join
+        `cloud`.`disk_offering` ON service_offering.id = disk_offering.id
+            left join
+        `cloud`.`domain` ON disk_offering.domain_id = domain.id;
+
 
 -- Re-enable foreign key checking, at the end of the upgrade path
 SET foreign_key_checks = 1;			


Mime
View raw message