Yeah, if your precondition fails you don't need to call super.allocateTo() at all, simply return empty list. You can refer FirstFitRoutingAllocator that does the exact same thing.
-Prachi -----Original Message----- From: Amir Nashat [mailto:amir.nas...@citrix.com] Sent: Wednesday, August 08, 2012 3:07 PM To: 'cloudstack-users@incubator.apache.org' Subject: RE: CloudStack Allocator Pre-Condition Check Ok, I'll use your suggestion of returning an empty list which is what my intention was with setting the returnUpTo value to 0. I won't modify the returnUpTo value but rather return an empty ArrayList if my pre-condition fails. It seems my approach was wrong so it's no longer important but to answer your question of how I was planning on setting returnUpT=0, I was going to extend the FirstFitAllocator class, override the allocateTo() method and if my pre-condition failed I would set a value of returnUpTo = 0 and call the super.allocateTo() passing in the modified returnUpTo. Thanks again for your help! Amir -----Original Message----- From: Prachi Damle [mailto:prachi.da...@citrix.com] Sent: Wednesday, August 08, 2012 2:36 PM To: cloudstack-users@incubator.apache.org Subject: RE: CloudStack Allocator Pre-Condition Check Yes you can use vmProfile.getHostName(). About the returnUpTo Value, I don't see why you should set it 0. returnUpTo = 1 means you allocator should atmost 1 suitable host - it could still return empty result. returnUpTo = -1 would mean lalloctaor should return as many matching hosts as it finds. If your pre-condition is not satisfied by the VM profile, you can just return an empty list irrespective of the returnUpto value. Also where do you plan to set the returnUpto value ? The existing FirstFitPlanner sets the returnUpTo = -1 and calls the allocators. Are you planning on implementing custom planner and set a different returnUpto value? -Prachi -----Original Message----- From: Amir Nashat [mailto:amir.nas...@citrix.com] Sent: Wednesday, August 08, 2012 2:16 PM To: 'cloudstack-users@incubator.apache.org' Subject: RE: CloudStack Allocator Pre-Condition Check Hi Prachi, So are you suggesting to set the returnUpTo value to 0? To confirm, I can get the hostname of the guest VM from vmProfile.getHostName() ...this is correct? Thanks for your feedback! Amir -----Original Message----- From: Prachi Damle [mailto:prachi.da...@citrix.com] Sent: Wednesday, August 08, 2012 2:12 PM To: cloudstack-users@incubator.apache.org Subject: RE: CloudStack Allocator Pre-Condition Check Amir, Yes to add any custom checks on top of the existing host allocation you will need to write your HostAllocator extending the default FirstFitAllocator. Also replace the FirstFitAllocator in componets.xml by your custom allocator. If your condition verification fails, your allocator should return an empty list of hosts and not an error. The deployment planner will handle the empty result returned by the host allocator. Thanks, Prachi -----Original Message----- From: Amir Nashat [mailto:amir.nas...@citrix.com] Sent: Wednesday, August 08, 2012 1:58 PM To: cloudstack-users@incubator.apache.org Subject: CloudStack Allocator Pre-Condition Check Hello, I would like to get feedback as to the best approach for performing a pre-condition check before allocating a guest vm to a physical host. For my example, a pre-condition check is to verify the guest vm does not use an existing DNS entry. If the pre-condition fails we do not want to allocate the guest vm to the physical host and we want to record this as an error condition. As far as I can tell the only option I have is to extend the default FirstFitAllocator class and override the allocateTo methods to first perform my pre-condition verification and if it passes then to call the the overridden allocateTo() method. If it fails then I would throw a RuntimeException of some sort or possibly set the returnUpTo value equal to 0. Can you please advise as what would be the best approach? If anyone else is performing pre-conditions checks in their allocation logic before provisioning a guest VM please let me know of your approach. Thank you, Amir