VMware Cloud Community
Czernobog
Expert
Expert

vRA 7.6 - Extensibility Properties are not passed to vRO when assigned to blueprint as Property Group and not single Custom Props

I think I first experienced this issue in 7.0 and wanted to ask, if something in the matter has changed.

I pass VM Properties to vRO when a EBS Event is triggered.

When I assign single properties to a blueprint, for example Extensibility.Lifecycle.Properties.VMPSMasterWorklow32.BuildingMachine with * wildcard, all props are passed to vRO during the event.

However since I use multiple properties in different workflows, I want to reduce the clutter and the need to assign every property to every worklfow in that I group the properties in a Property Group. When this property group is assigned to a blueprint, no extensibility properties are passed to vRO.

Is there any way to fix this?

Tags (3)
8 Replies
xian_
Expert
Expert

You still need Extensibility.Lifecycle.Properties... to pass properties regardless of how you assigned them (individually or by group).

Check out Configuring vRealize Orchestrator Workflows for Provisioning and Life Cycle Workflows section Working with Extensibility Custom Properties.

I'd set up some sort of naming convention of the properties, and include them with a prefix + wildcard at a certain workflow and state as described in the link above. You can still assign the properties to the blueprint by grouping them (to make assignment easier) but that'll not impact how they're included in the payload. That is decided based on the Extensibility.Lifecycle.Properties... property.

Czernobog
Expert
Expert

Well the documentation states, that it has to be a custom property and does not mention a property group anywhere: "The virtual machine custom properties are not included in the event payload unless they are specified as an extensibility custom property for the life cycle state." So there's that.

What the documentation fails to mention is, that the properties can be assigned to the machine blueprint or alternatively to the composite blueprint as well. This is pretty important, since there is no way (that I know of...) to programatically assign a property to a machine blueprint; the machine blueprint object is nowhere exposed in the vRA plugin.

I went ahead and just assigned the extensibility properties on every composite blueprint.

Reply
0 Kudos
daphnissov
Immortal
Immortal

since there is no way (that I know of...) to programatically assign a property to a machine blueprint; the machine blueprint object is nowhere exposed in the vRA plugin.

That's one of the reasons the Property Toolkit is amazing...they have figured this out. Properties can be batch assigned to every object within vRA including the machine objects themselves.

pastedImage_1.png

"CentOS 7" is the blueprint name, and the tilde (~) separates the blueprint object from the machine object, in this case only a single machine object called "CentOS".

pastedImage_2.png

Reply
0 Kudos
xian_
Expert
Expert

You can assign a property to the blueprint with an approval policy, it appears this is what the property toolkit does anyway.

Reply
0 Kudos
daphnissov
Immortal
Immortal

It is not leveraging approval policies to do any custom property assignment.

xian_
Expert
Expert

OK I try to explain with an example.

I have created a Property Group:

prodproperties.png

Assigned it to the blueprint:

bp_prodproperties.png

And set the extensibility filter:

bp_prodpropertiesextensibility.png

Now the payload looks like this:

[2019-09-04 11:50:21.250] [D] payload = {

  "lifecycleState": {

    "phase": "PRE",

    "state": "VMPSMasterWorkflow32.Requested"

  },

  "componentId": "vSphere__vCenter__Machine_1",

  "blueprintName": "Linux Properties",

  "componentTypeId": "Infrastructure.CatalogItem.Machine.Virtual.vSphere",

  "IaaSTimeoutId": 5390,

  "endpointId": "9cf12e2c-c492-4a88-808b-c178cf55cf15",

  "machine": {

    "owner": "user@demo.local",

    "name": "demo7vm69",

    "id": "d410a56b-e63d-49b5-a702-4cbf80e87686",

    "type": 0,

    "properties": {

      "prod.name": "N1",

      "prod.id": "10"

    }

  },

  "requestId": "531ed6d8-3b78-4bb4-8131-ad4659af7a2a"

}

So only the prod.* properties are passed to the payload. The properties are assigned by attaching the Property Group and passed/filtered by the extensibility property. So you need to do 2 things: attach the group and set the filtering. You can create one group with different prefixes or multiple groups, whichever suits more your usecase.

This worked for me regardless I set these values at blueprint or VM component level.

Reply
0 Kudos
Czernobog
Expert
Expert

So it is only possible when using the sovlabs plugin?

Reply
0 Kudos
daphnissov
Immortal
Immortal

I suspect it's possible outside their plug-in, but since they've already solved it I'm not spending my time on figuring out how to recreate their wheel.

Reply
0 Kudos