-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/10797/#review19811
-----------------------------------------------------------


Hi Deepti,

Thanks much for the details in the review request. Some comments:

ExplicitDedicationProcessor:
- ExplicitDedicationProcessor should process only if the VM is associated to an 
affinity group of the type returned by getType(). Otherwise it will process a 
VM having host-anti-affinity specified, but no explicit dedication group is 
specified
- The processor should look at the 'plan' provided to it as the input and 
process in the specifed scope. It is possible that the plan already has hostId 
specified and even then the processor will end up scanning the entire resource 
tree. So something like this should optimize:
 - if the plan has Host specified, only check needed is to see it is dedicated
 - if plan has cluster/pod specified, scan under the cluster/pod only
 -  If plan has the zone only, do entire scanning as you currently do.

DPM:
Some minor optimizations
- It would be good to have a separate method to remove dedicated resources and 
call it from planDeployment(), for readability. 
- Can Use DAO methods to load group of type 'explicit dedication' for the VM 
id, instead of loading all groups and iterating.



- Prachi Damle


On April 26, 2013, 12:48 p.m., deepti dohare wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/10797/
> -----------------------------------------------------------
> 
> (Updated April 26, 2013, 12:48 p.m.)
> 
> 
> Review request for cloudstack, Devdeep Singh, Prachi Damle, and Nitin Mehta.
> 
> 
> Description
> -------
> 
> Review Request for "Dedicated Resources: Explicit Dedication"
> =============================================================
> 
> Functional Spec for the above Private zone, pod, cluster or host, can be 
> found here: 
> https://cwiki.apache.org/confluence/display/CLOUDSTACK/Dedicated+Resources+-+Private+zone%2C+pod%2C+cluster%2C+host+Functional+Spec
> This patch request is a part of this feature.
> 
> This feature allows a user to deploy VMs only in the resources dedicated to 
> his account or domain.
> 
> 1. Resources(Zones, Pods, Clusters or hosts) can be dedicated to an account 
> or domain.
>    Implemented 12 new APIs to dedicate/list/release resources:
>    - dedicateZone, listDedicatedZones, releaseDedicatedZone for a Zone.
>    - dedicatePod, listDedicatedPods, releaseDedicatedPod for a Pod.
>    - dedicateCluster, listDedicatedClusters, releaseDedicatedCluster for a 
> Cluster
>    - dedicateHost, listDedicatedHosts, releaseDedicatedHost for a Host.
> 2. Once a resource(eg. pod) is dedicated to an account, other resources(eg. 
> clusters/hosts) inside that cannot be further dedicated.
> 3. Once a resource is dedicated to a domain, other resources inside that can 
> be further dedicated to its sub-domain or account.
> 4. If any resource (eg.cluster) is dedicated to a account/domain, then 
> resources(eg. Pod) above that cannot be dedicated to different 
> accounts/domain (not belonging to the same domain) 
> 5. To use Explicit dedication, user needs to create an Affinity Group of type 
> 'ExplicitDedication'
> 6. A VM can be deployed with the above affinity group parameter as an input.
> 7. A new ExplicitDedicationProcessor has been added which will process the 
> affinity group of type 'Explicit Dedication' for a deployment of a VM that 
> demands dedicated resources.
>    This processor implements the AffinityGroupProcessor adapter. This 
> processor will update the avoid list.
> 8. A VM requesting dedication will be deployed on dedicatd resources if 
> available with the user account.
> 9. A VM requesting dedication can also be deployed on the dedicated resources 
> available with the parent domains iff no dedicated resources are available 
> with the current user's account or 
>    domain. 
> 10. A VM (without dedication) can be deployed on shared host but not on 
> dedicated hosts.
> 11. To modify the dedication, the resource has to be release first.
> 12. Existing Private zone functionality has been redirected to Explicit 
> dedication of zones.
> 13. Updated the db upgrade schema script. A new table "dedicated_resources" 
> has been added.
> 14. Added the right permissions in commands.properties
> 15. Unit tests:  For the new APIs and Service, added unit tests under : 
> plugins/dedicated-resources/test/org/apache/cloudstack/dedicated/DedicatedApiUnitTest.java
> 
> 
> This addresses bug CLOUDSTACK-681.
> 
> 
> Diffs
> -----
> 
>   api/src/com/cloud/dc/DedicatedResources.java PRE-CREATION 
>   api/src/com/cloud/event/EventTypes.java 0ee7f40 
>   client/pom.xml 743cd36 
>   client/tomcatconf/applicationContext.xml.in d2ea380 
>   client/tomcatconf/commands.properties.in b49e1fb 
>   client/tomcatconf/componentContext.xml.in 7a46981 
>   
> engine/orchestration/src/org/apache/cloudstack/platform/orchestration/CloudOrchestrator.java
>  963e4d7 
>   plugins/affinity-group-processors/explicit-dedication/pom.xml PRE-CREATION 
>   
> plugins/affinity-group-processors/explicit-dedication/src/org/apache/cloudstack/affinity/ExplicitDedicationProcessor.java
>  PRE-CREATION 
>   plugins/dedicated-resources/pom.xml PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/commands/DedicateClusterCmd.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/commands/DedicateHostCmd.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/commands/DedicatePodCmd.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/commands/DedicateZoneCmd.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/commands/ListDedicatedClustersCmd.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/commands/ListDedicatedHostsCmd.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/commands/ListDedicatedPodsCmd.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/commands/ListDedicatedZonesCmd.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/commands/ReleaseDedicatedClusterCmd.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/commands/ReleaseDedicatedHostCmd.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/commands/ReleaseDedicatedPodCmd.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/commands/ReleaseDedicatedZoneCmd.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/response/DedicateClusterResponse.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/response/DedicateHostResponse.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/response/DedicatePodResponse.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/api/response/DedicateZoneResponse.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/manager/DedicatedResourceManagerImpl.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/src/org/apache/cloudstack/dedicated/services/DedicatedService.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/test/org/apache/cloudstack/dedicated/DedicatedApiTestConfiguration.java
>  PRE-CREATION 
>   
> plugins/dedicated-resources/test/org/apache/cloudstack/dedicated/DedicatedApiUnitTest.java
>  PRE-CREATION 
>   plugins/dedicated-resources/test/resource/dedicatedContext.xml PRE-CREATION 
>   plugins/pom.xml 471253f 
>   server/src/com/cloud/api/query/QueryManagerImpl.java 2298252 
>   server/src/com/cloud/configuration/ConfigurationManagerImpl.java d5e405d 
>   server/src/com/cloud/dc/DedicatedResourceVO.java PRE-CREATION 
>   server/src/com/cloud/dc/dao/ClusterDao.java 3ce0798 
>   server/src/com/cloud/dc/dao/ClusterDaoImpl.java 86dc65e 
>   server/src/com/cloud/dc/dao/DedicatedResourceDao.java PRE-CREATION 
>   server/src/com/cloud/dc/dao/DedicatedResourceDaoImpl.java PRE-CREATION 
>   server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java c7162a2 
>   server/src/com/cloud/domain/dao/DomainDaoImpl.java c30ca5e 
>   server/src/com/cloud/host/dao/HostDao.java 98bdcb4 
>   server/src/com/cloud/host/dao/HostDaoImpl.java 07a4232 
>   server/src/com/cloud/resource/ResourceManagerImpl.java c9c3f9c 
>   server/src/com/cloud/user/AccountManagerImpl.java 8de73fb 
>   server/src/com/cloud/user/DomainManagerImpl.java dbcbe4e 
>   server/src/com/cloud/vm/UserVmManagerImpl.java 45b313f 
>   
> server/test/org/apache/cloudstack/affinity/AffinityApiTestConfiguration.java 
> fb29469 
>   
> server/test/org/apache/cloudstack/networkoffering/ChildTestConfiguration.java 
> f1163ef 
>   server/test/resources/affinityContext.xml 15476c1 
>   setup/db/create-schema.sql b1feb02 
>   setup/db/db/schema-410to420.sql 78444fd 
> 
> Diff: https://reviews.apache.org/r/10797/diff/
> 
> 
> Testing
> -------
> 
> Unit tests:  
> For the new APIs and Service, added unit tests under: 
> plugins/dedicated-resources/test/org/apache/cloudstack/dedicated/DedicatedApiUnitTest.java
> The tests validates the APIs: dedication of zone, pod, cluster and hosts. 
> Also added negative tests for the scenarios.
> 
> Manual Testing Done
> 
> Tests for DeployVirtualMachine
> ==============================
> Setup : 2 zones Z1 and Z2 , infrastructure:
>         Z1->(P1,P2), P1->(C1,C2), C1->(H1,H2), C2->H3, P2->C3, C3->H4  
>         Z2-> P3, P3->C4, C4->H5
>       
>           domain(account) -> sub-domain(account)
>         D1(A1,U1)->SD1(SA1), D2(A2,U2)->SD2(SA2)
>               
>               Dedication: C1 dedicated to A1, P2 dedicated to D2
>               Affinity group of type 'ExplicitDedication' for each account is 
> created.
> 
> Tested the following scenarios:               
> 1. A1 deploys a VM with AG of type 'ExplicitDedication' on Z1, VM deployed on 
> H1/H2 
> 2. SA1 deploys a VM with AG of type 'ExplicitDedication' on Z1. VM Deployment 
> failed. H1/H2 cannot be picked, since C1 is dedicated to account A1, not 
> domain.
> 3. SA1 deploys a VM with NO Dedication required. VM deployed on H3. 
> 4. A1/U1/SA1/A2/U2/SA2 deploys a VM with NO Dedication required on Z1, VM 
> deployed on H3.
> 5. U1 deploys a VM with AG of type 'ExplicitDedication' on Z1, VM deployment 
> failed.
> 6. A2 deploys a VM with AG of type 'ExplicitDedication' on Z1, VM deployed on 
> H4.
> 7. SA2 deploys a VM with AG of type 'ExplicitDedication' on Z1, VM deployed 
> on H4. SA2 belongs to SD2 which is a sub-domain of D2.
> 8. Deployment of VM with AG of type 'ExplicitDedication' on zone Z2 will get 
> failed. since nothing is dedicated in Zone Z2
> 
> Tests for Migration of dedicated VMs
> ====================================
> 1. Migrate a non-dedicated VM on dedicated Host:
>      - Alert is Raised
> 2. Migrate a dedicated VM on non-dedicated host : 
>      - Alert is Raised
> 
> 
> Test for HostTags and Explicit Dedication
> =========================================
> 1. Host Tag and AG of type 'ExplicitDedication': both provided
>      - if Host or its cluster/pod/zone is dedicated (to the caller's 
> account/domain) and Host is tagged, then deployment is successful else fail 
> the request.
> 2. Host tag is provided and No dedication is required
>      - Host should be tagged but not dedicated.
> 
> Test for Deletion of domains and accounts
> =========================================
> 1. If an account or a domain has dedicated resources and admin deletes that 
> account/domain, dedication is automatically removed.
>   
> 
> 
> Thanks,
> 
> deepti dohare
> 
>

Reply via email to