VMware Cloud Community
ShibbyB
Enthusiast
Enthusiast

Selecting a reservation policy at machine request time

Is there a custom property that we can utilize to select a reservation policy at the machine request page so that we don't have to have a separate blueprint for each reservation policy? An example would be a cluster devoted to Dev one to Prod, etc, and based on something the requestor selects would dictate which resource it would be provisioned too?

20 Replies
admin
Immortal
Immortal

The custom property is unfortunately a guid __reservationPolicyID and there's not a terribly great method for exposing this in the UI.  There's been lots of requests for this and in most cases it's been some a custom web control.  Not sure if we can vote for this somehow to get it on the roadmap but it doesn't seem very complicated and a common use case.

0 Kudos
beefy147
Enthusiast
Enthusiast

sorry to bump a really old thread but is using __reservationPolicyID still the best way to select a cluster? by linking it like this

Tiering vCAC Blueprints with Policies, On Demand - Elastic Skies

Or be somehow using the datacenter location XML (Will that work if used as clusters rather than datacenters)

there are a lot of threads on this for sure but all I am trying to achieve is a single blueprint and the ability to select a cluster, datastore and network

kind of like this but for cluster rather than for virtual datacenter

[virtualjad.com]: vCAC Property Dictionary: Customize Service Requests with Dynamic Menus

otherwise I need to create many seperate blue prints for the clusters which is frankly a pain and confusing for people

any ideas?

0 Kudos
sbeaver
Leadership
Leadership

__reservationPolicyID still the best way to select a cluster?  This is what I am doing and in my form it is a hidden input that is defined from an action.  This action will take the value of the "network environment" and the datacenter location and will return the __reservationPolicyID

Steve Beaver
VMware Communities User Moderator
VMware vExpert 2009 - 2020
VMware NSX vExpert - 2019 - 2020
====
Co-Author of "VMware ESX Essentials in the Virtual Data Center"
(ISBN:1420070274) from Auerbach
Come check out my blog: [www.virtualizationpractice.com/blog|http://www.virtualizationpractice.com/blog/]
Come follow me on twitter http://www.twitter.com/sbeaver

**The Cloud is a journey, not a project.**
0 Kudos
beefy147
Enthusiast
Enthusiast

Thanks for the reply

How do you make the value hidden?

I actually want the cluster selection to be the main driver for other items. I can do this with relationships and XML which has been discussed a lot on the forums

In the examples in the links is there a way to hide the GUID which is presented as it is quite unclean or is that just a case of accepting it will be there (Tier ID in the example)

0 Kudos
sbeaver
Leadership
Leadership

I am using the ASD for the form front-end and from the way of doing things I have able to do alot of things in the presentation tab in vRO as well as the ASD form designer.  i am using a custom vRO action to make the calculations and select the proper reservation but I have also done this using the native XML relationships also.

To hide it from the user, add the property to a build profile and do not select prompt user

Steve Beaver
VMware Communities User Moderator
VMware vExpert 2009 - 2020
VMware NSX vExpert - 2019 - 2020
====
Co-Author of "VMware ESX Essentials in the Virtual Data Center"
(ISBN:1420070274) from Auerbach
Come check out my blog: [www.virtualizationpractice.com/blog|http://www.virtualizationpractice.com/blog/]
Come follow me on twitter http://www.twitter.com/sbeaver

**The Cloud is a journey, not a project.**
beefy147
Enthusiast
Enthusiast

thanks

I found using VirtualMachine.Admin.Hostname

and creating a property dictionary entry with each cluster name worked to force the build onto a cluster

I could now link that with the DataCenterLocations.xml and a relationship to provide a virtual datacenter and the list only the clusters in that datacenter

I think that just leaves me working out how to hide the "reason for request" field as its not needed right now. hardly a show stopper mind

Smiley Happy

0 Kudos
sbeaver
Leadership
Leadership

I think that just leaves me working out how to hide the "reason for request"  Are you talking about the ASD request where the "reason for request" windows wants input before you get the rest of the form?  Bear with me as I dont have it in front of me but check either the first page of the form designer or the catalog item.  What you are looking for is a check box to hide something.  I can not remember how they worded it but it is a check box that will not present that question and will bring you straight to the form.  When I get to work this morning I will get the exact location if you have not updated this thread saying you found it.


Cheers

Steve Beaver
VMware Communities User Moderator
VMware vExpert 2009 - 2020
VMware NSX vExpert - 2019 - 2020
====
Co-Author of "VMware ESX Essentials in the Virtual Data Center"
(ISBN:1420070274) from Auerbach
Come check out my blog: [www.virtualizationpractice.com/blog|http://www.virtualizationpractice.com/blog/]
Come follow me on twitter http://www.twitter.com/sbeaver

**The Cloud is a journey, not a project.**
0 Kudos
beefy147
Enthusiast
Enthusiast

not using the ASD

just using out of the box at this stage

do you agree with my thought process of using VirtualMachine.Admin.Hostname

I am just curious if its possible to hide standard fields in the request e.g. "reason for request" can some XML be edited or is the only way custom?

I like have the description as optional but have no reason at this stage for the reason for request so wondering if / how it could be hidden

Will

request.PNG

0 Kudos
sbeaver
Leadership
Leadership

I never did find a way to hide that using the OOB capabilities.  You can populate that value with the __Notes property name

Steve Beaver
VMware Communities User Moderator
VMware vExpert 2009 - 2020
VMware NSX vExpert - 2019 - 2020
====
Co-Author of "VMware ESX Essentials in the Virtual Data Center"
(ISBN:1420070274) from Auerbach
Come check out my blog: [www.virtualizationpractice.com/blog|http://www.virtualizationpractice.com/blog/]
Come follow me on twitter http://www.twitter.com/sbeaver

**The Cloud is a journey, not a project.**
0 Kudos
zebduin
Enthusiast
Enthusiast

I have successfully been able to select a reservation policy at provisioning time, I've even used it as a parent drop-drown field for network and storage

the custom property is VRM.Datacenter.Policy


more on VRM.Datacenter.Policy

vRealize Automation 6.2 Documentation Center


Note: I've had better results when I set the VRM.Datacenter.Policy as the parent value in the property dictionary, with storage policy and/or network profile as children - as this really solidifies the target (as usually storage and network options are different on another target)

0 Kudos
beefy147
Enthusiast
Enthusiast

I am not getting much luck

I am actually using DataCenterLocations.xml and a property dictionary entry for vrm.DataCenter.Location

This is the parent

I then make another entry in the propery dictionary for vrm.DataCenter.Policy

These match my reservations policies which are assigned 1 to 1 to each reservation

I then do a relationship and valuExpresssion (XML) between the location and reservation policy to show only clusters in each location in the drop down menus

However when I select the build the machine it puts it anywhere is likes and ignores ll logic Smiley Sad

Any ideas?

vcac1.PNG

I don't really want storage and network to be selectable options as we are happy with round robin and hiding this from the user

0 Kudos
zebduin
Enthusiast
Enthusiast

Just rebuilt my lab - I'll set things up with just VRM.DataCenter.Policy w/o any child locations.

Also to note the VRM is all caps in VRM.DataCenter.Policy, a bit confusing since vrm is lowercase in vrm.DataCenter.Location

0 Kudos
beefy147
Enthusiast
Enthusiast

Also in the documentation datacenter has a lower case 'c'

i assume it's entirely case sensitive

i I was also wondering if I could just use VirtualMachine.Admin.Hostname to force the cluster instead of a reservation policy. Will be interested to here your findings on the rebuilt lab

0 Kudos
beefy147
Enthusiast
Enthusiast

an update following more testing:

If i just use VirtualMachine.Admin.Hostname

on its own with a ValueList of all clusters it selects the cluster perfectly. this doesnt use anything fancy and makes no use of reservation policies

as soon as I start adding logic in to select the datacenter with vrm.DataCenter.Location and creating a relationship and ValueExpression using XML all that disappears and the machine places itself whereever it likes

such a shame but if I need to have a long list of clusters (around 40) with no logic or human readable labels then at least its a solution. I need something OOB which forces the machine to a compute resource (in this case cluster)

anyone else found a better way?

Smiley Happy

0 Kudos
beefy147
Enthusiast
Enthusiast

more testing as this appeared to be working but actually isn't Smiley Sad

I also tried using VirtualMachine.Admin.ClusterName

still no good. will continue testing. not sure why its so hard!

0 Kudos
beefy147
Enthusiast
Enthusiast

looks like the only way it "will" work is to repurpose the datacetnerlocations.xml

not ideal but i know that will work

Smiley Sad

0 Kudos
croeleveld
Contributor
Contributor

You can use the property __reservationPolicyID

Yes, starts with 2 underscores, is undocumented and you need the ID of the reservationpolicy Object in the vCAC database. Which can be retrieved from the API.

Setting this only works at request time as far as I know. So buildingmachine stage is too late.

But it works fine for me. If you combine it with VRM.DataCenter.Location and the datacenterlocations.xml file you are very flexible in the way you choose your cluster.

0 Kudos
charan25
Contributor
Contributor

It looks like using the hidden custom property __reservationPolicyID is not officially supported by VMware. The below process should work as far as the cluster placement is concerned:

1. Make VRM.Datacenter.Policy to Exact

2. Update the locations.xml files with all vSphere cluster names

3. Tag each compute resource with appropriate location (Cluster) name.

4. When requesting a catalog item, select appropriate location name (In this case, you'll be shown all the vSphere clusters).

Your machine should now be provisioned on the selected cluster. If there are no reservations available for that compute resource (Cluster) satisfying the request, the request is failed.

0 Kudos
thawkbravo
Enthusiast
Enthusiast

vDuBB - Could you explain more how are you using VRM.DataCenter.Policy to select different reservation during provisioning. I am trying to implement a solution that you are suggesting but I kept running into issue. Do you have this explained in a blog post or something ?

0 Kudos