Missing Actions for Specific vRealize Automation Custom Resources

So this one was driving me a bit nuts. In short, I was provisioning resources in vRA using XaaS (Anything as a Service) via vRealize Orchestrator workflows. In some situations the action items appeared for a given item type, and in other situations it did not for that same item type. Let me explain…

The resource in question is, in this case, a FlashArray snapshot. But that being said, it doesn’t really matter. Any custom resource will behave this way.

snapshotobjectdeinition

I also have some custom actions assigned to that type of resource (a FlashArray snapshot). So once I “own” that item in vRA I can do stuff to it (restore a datastore, create a new datastore, etc.).

customactions

So i noticed that some of my snapshots didn’t have all of my custom items assigned to it. Some did. Some didn’t. I had no idea why.

menuactionsnap

menucatalogsnap

The first thing you might notice is that the icons are different. That clued me into the initial issue. The icon with the camera picture is the icon I used for my catalog item where I can create a snapshot from any given VMFS datastore.

runcatalogitem

That catalog item takes in a datastore and creates a FlashArray snapshot of whichever FlashArray volume hosts it. Then it returns that snapshot to the requester’s inventory.

returnsnapcatalog

So any snapshot provisioned from that workflow gets the icon of that workflow.

The OTHER snapshots came from a custom action. When I have a datastore I have a custom action assigned to them so I can take a snapshot of a datastore item I own.

createsnapfromitem

Since this action doesn’t have a icon or catalog item really associated with it, it just uses the icon image from the corresponding vRO object type, which is just a transparent orange volume icon.

Okay, great. So why are my actions not on those snapshots created from custom actions, while they are for ones created from the catalog? There is a page in the vRA document that seems relevant but nothing was quite on point in it:

http://pubs.vmware.com/vra-70/index.jsp#com.vmware.vrealize.automation.doc/GUID-56F82C8D-E3B6-4D7A-8287-C784C6C313C8.html

So in the end, I am not entirely sure why it doesn’t work. But I did figure out how to “fix” it. The problem extends from entitlements. Let me be clear here. I am not sure if this is a bug or a feature, I could make an argument for either and I am leaning towards the latter for a few reasons. Anyways, here is the deal.

My theory is that catalog items are associated with a service. A service is included in an entitlement. Custom actions are also added to entitlements. Custom actions will then apply to resources returned by catalog items in the service(s) in that entitlement.

entitlement

But what if a resource is provisioned by a custom action? Which some of mine do.

actionprovsnapshot

Since a custom action isn’t technically an “item” anything returned by it is only valid for inclusion in their owned item inventory, but not a candidate for custom actions. By default. You might notice this option in the entitlement “Entitled Actions” list :

actionsonly

Ah ha! If you disable this, the menu items will appear for all objects provisioned of that type that the user owns.

works

This option (I think) is new to vRA 7.x. And my guess was added for this purpose. I feel like this might be an expected behavior but ideally I would maybe like tighter control of this. Of course, it is also very possible I am missing something entirely…