Highlighted
Enthusiast
Enthusiast

[vRA 7.4] - XaaS Performance with external value

Hi team Smiley Happy

We have a lot of XaaS blueprint with a lot of call of external value (vRO action).

When we launch a XaaS blueprint we would like to parallelize the loading of externals values (asynchronous method).

Currently when we launch the XaaS blueprint the call of the externals values is done one after the other :

Capture-9.jpg

Do you think is possible to LOAD all Externals Values in a same time ?

We have tried putting our basic elements on one page and all other elements which rely on these values on another page on the XaaS form, but the actions on the second page still run in the background when changing elements on page 1.

What we really need is one or more of the following...

  • A way to run actions in parallel rather than serially (time savings would be huge here)
  • A way to control the order in which the external actions are being run
  • A way to minimize the delay between actions being run

Thx for your feedback.

14 Replies
Highlighted
Enthusiast
Enthusiast

Support case open :smileysilly:

0 Kudos
Highlighted
VMware Employee
VMware Employee

How are you configuring external values in the xaas form? Via the form editor in vRA or usong ognl in vRO within the presentation tab in the workflow?

OGNL within vRO is where it should be done if your not already, the performance is night and day difference. Every cudtomer i have converted has seen 100x or more improvement on form load times etc

________________________________________ Blog: http://virtualiseme.net.au VCDX #201 Author of Mastering vRealize Operations Manager
0 Kudos
Highlighted
Enthusiast
Enthusiast

THx NuggetGTR​ for your feedBack.

All External values are in a XaaS form.

We' will try to push it in the OGNL within vRO.

0 Kudos
Highlighted
Enthusiast
Enthusiast

If we use the OGNL in vRO, after it's not possible to set the presentation in vRA, correct ?

All the presentation is retrieve from vRO. In this case the presentation is clearly not friendly for the End-User.

0 Kudos
Highlighted
VMware Employee
VMware Employee

@ yes it is possible to set the presentation in vRA after the fact. OGNL is a way of calling action and hiding fields based on conditions etc. but its far more efficient than setting all of it in XaaS form editor. A big bonus is if you refresh the form you dont have to go back through and set all the values again, The starting framework is pulled in from vRO you can then modify this if you wish. see vRealize Automation - XaaS Forms - YouTube  all the forms are pure vRO presentation and OGNL, looks just as good as any XaaS form.

________________________________________ Blog: http://virtualiseme.net.au VCDX #201 Author of Mastering vRealize Operations Manager
Highlighted
Enthusiast
Enthusiast

Thx for your comment & your help NuggetGTR​...

We have try to used OGNL but it's the same for us....

All actions (for external values) execute one after the other, which impacts the loading of the form.

pastedImage_0.png

We will see what the vMware support tells us.

0 Kudos
Highlighted
Enthusiast
Enthusiast

Hello,

I'm interested too, if you find a way to load faster XaaS forms ;-).

I have many fields and my forms took more than 30sec to compute, so it was always "failed".

I use some "optimizations" to keep XaaS form working :

- For instance, to avoid running an action, if a mandatory field was not yet set, I added this in the OGNL field : #myMandatoryField && GetAction().call(#myMandatoryField).

It will run and return the result from GetAction only if myMandatoryField is not empty, and not run GetAction if nothing

- To avoid loading heavy page, before it's really needed, I add a checkbox field : eg: "Do you want to see the heavy page ?", and use the parameter "Show paramater input" on the Step directly with this boolean as OGNL expression. In this case, if the step is hidden, no compute at all!

- But it's not enough, so I use cache for all non-dynamic value. I run action, and put the result in cache, the second run, just read the cache. Result is really amazing...If you're interested, I put my code in a sample : Easy Cache Manager for any actions results - Samples - VMware {code}

But all these "optimizations" are not very satisfying...But I couldn't do anything without !

Emmanuel.

If my answer resolved or helped you, please mark it as Correct or Helpful to award points. Thank you! Emmanuel.
Highlighted
Enthusiast
Enthusiast

Yep thx eservent​ for your feedback....

For us the cache is not a solution because when a User launch the XaaS all datas are differents for each of them.

The only solution is to execute the action asynchronously but the answer of vMware support is :

Unfortunately, that is not possible. The load is done in order from the first one to the last one.

I have even asked our development team and they said that this is not possible.

However, I have find a few blogs that have some guides to optimize workflows:


https://bluemedora.com/optimize-workflows-vra-vro/
http://federicocinalli.com/blog/item/218-starting-with-vmware-vrealize-orchestrator
https://blog.purestorage.com/documentation-update-best-practices-and-vrealize/

0 Kudos
Highlighted
Enthusiast
Enthusiast

Thank you for the VMware answer.

I have also some dynamic data to load and I couldn't use cache for it of course, but I find a way to manage it (also not realy the best).

I use the same way as VRA do to collect vCenter information.

I scheduled a data collection for these dynamic data and store it into a property inside the VRA VirtualMachine Entity.

Of course, the data are not "real time" data, but in my use case, it was enough...

With VRO, it's really easy to schedule a Workflow and save a property in VRA VirtualMachine Entity, that's why I use this.

Emmanuel.

If my answer resolved or helped you, please mark it as Correct or Helpful to award points. Thank you! Emmanuel.
0 Kudos
Highlighted
Enthusiast
Enthusiast

We have the same approach.

Our Workflow allows the Business Group Manager to modify the amount of MEMORY, Disk size, etc .... In fact, he can update all the properties of its Business Group.

The idea is to retrieve all data once a day for all business groups with vRO and then rely on this data when a user launches the XaaS.

For the moment we don't have an other solution Smiley Sad

0 Kudos
Highlighted
Enthusiast
Enthusiast

0 Kudos
Highlighted
Enthusiast
Enthusiast

Hi eservent ​& NuggetGTR

Do you have an idea about this :

we have hidded some tabs in a presentation but when a launch the XaaS some values are retrieve while the tab where these values are present is hidded when we launch the XaaS.

Do you know why some values are required when loading XaaS ?

No tab available :

256617_256617.pngpastedImage_5.png

but when we look the event logs we see this :

256618_256618.pngpastedImage_10.png

Why ? These values are not present in the default tab. All of theses values are present in a hidded tab.

0 Kudos
Highlighted
Enthusiast
Enthusiast

Hello,

Hidden tabs are loaded as normal one. There is no difference. So, values inside are loaded too.

What I did to optimize, it's not only hiding the tab but use the same hiding parameter value to hide every fields inside. And compute mandatory needs, also with the same hiding parameter value.

It's my understanding...

Emmanuel.

If my answer resolved or helped you, please mark it as Correct or Helpful to award points. Thank you! Emmanuel.
Highlighted
Enthusiast
Enthusiast

Thanks for your feedback (YET)  @ eservent

Yesterday we put in place the same rules (for all INPUTS in a form) as the display of the tabs for :

- Constraints> Required> Conditional

- Constraints> Value> Conditional

and we added an INPUT in all our actions. This input is blank/null when the user launches the XaaS:

External value:

INPUT: operatingSystemSelector

Block script in vRO Action:

// quick path in case the arg in null

if (operatingSystemSelector == "" || operatingSystemSelector == null) {

return ["Please select an operating system in a first page."];

}

We went from 28 seconds of loading to 11 seconds.

0 Kudos