vRealize Orchestrator 8 User Guide: Workflows
Workflow Inventory
The Pure Storage Plugin for vRealize Orchestrator offers a significant number of default workflows to provide simple orchestration of VMware and Pure Storage operations.
In the vRO HTML-5 interface, there are a variety of ways to navigate to a workflow, all of which can be accessed via the Workflows page found on the left hand side of the interface.
On the upper right hand corner you can switch through the tile, list, and folder view. This document will primarily use the folder view, but any option is valid and will result in the same workflow behavior.
All of the Pure Storage workflows are under Library > Pure Storage
Pure Storage Workflow Folder | Description |
FlashArray Connection Management | Workflows for authenticating FlashArray or Cloud Block Store targets |
FlashArray Host Management | Workflows for creating or managing FlashArray or Cloud Block Store hosts and host groups |
FlashArray Management |
Workflows for FlashArray or Cloud Block Store array-level administrative tasks. |
FlashArray Protection Group Management | Workflows for FlashArray or Cloud Block Store protection group creation, modification, or destruction. |
FlashArray Pod Management | Workflows for FlashArray or Cloud Block Store protection group creation, modification, or destruction. |
FlashArray Protocol Endpoint Management | Workflows for FlashArray or Cloud Block Store pod creation, modification, or destruction. |
FlashArray REST APIs | Workflows to run custom REST API operations against a FlashArray or Cloud Block Store platform. For features that are not yet integrated (or pulling specific metrics) these workflows can be used. |
FlashArray Snapshot Management | Workflows for FlashArray or Cloud Block Store snapshot creation, modification, or destruction. |
FlashArray Virtual Volumes | Workflows focused on FlashArray Virtual Volumes. Configuration, management, replication failover, storage policies, and more. |
FlashArray Volume Group Management | Workflows for FlashArray or Cloud Block Store volume group creation, modification, or destruction. |
FlashArray Volume Management | Workflows for FlashArray or Cloud Block Store volume creation, modification, or destruction. |
FlashBlade Connection Management | Workflows for authenticating FlashBlade targets |
FlashBlade REST APIs | Workflows to run custom REST API operations against a FlashBlade platform. For features that are not yet integrated (or pulling specific metrics) these workflows can be used. |
Pure1 Meta | Workflows for authenticated Pure1 Organizations. Tagging, intelligent provisioning, array registration and more. |
VMware ESXi and FlashArray | Workflows that include workflows from other sections integrated with relevant VMware operations for end-to-end orchestration of a VMware and Pure Storage environment. |
Running Workflows
One of the most common tasks in vRealize Orchestrator is running a workflow. Whether creating, configuring, modifying, or deleting a resource the workflow is where it starts. Workflows are combinations of scripts, built-in functions calls "actions", logic, and more. The Pure Storage workflows are entirely listed under the Pure Storage folder in the workflow panel. Which is the default tab shown when logging into vRealize Orchestrator.
To run a workflow, identify a workflow in the hierarchy, select it, and click Run:
Workflows most commonly require a selection of inputs, which vary from workflow to workflow. Certain workflows require some or all of their inputs to be filled out before you can complete the wizard. An important benefit of the workflows provided by the Pure Storage Plugin for vRealize Orchestrator is that inputs are actively checked as you enter them to ensure that they are valid choices.
Most Pure Storage workflows that create a resource will require a FlashArray connection--this choice tells vRO what FlashArray they should create the resource on. If you are modifying an existing resource, this input is usually not needed--as the FlashArray can be inferred by the original resource selection.
1) Click to choose a FlashArray | 2) Find your desired FlashArray connection | 3) Submit it to the workflow |
![]() |
![]() |
![]() |
Entries can also be radio button, drop-downs, or string boxes (or many more). String boxes are generally checked to make sure the string follows the required parameters (like FlashArray volume naming conventions).
Valid | Not valid |
![]() |
![]() |
When you have completed the wizard, click Submit. If the submit button is not active, you have missed or mis-entered an input.
When you have run a workflow, it will spawn a workflow run underneath the All Runs tab for that workflow. If it is running it will have a blue "Running" label next to it. If it is complete, it will have a green "Completed" label. If it failed, it will have a red "Failed" label. If it needs additional input it will have a person icon next to it.
You can click on the workflow run to see details about the instance.
The Variables tab has information about any entered, calculated, or generated variables (inputs, outputs, or attributes).
The Logs tab will show time-stamped information about the run--all logs levels are stored, to see the different levels use the drop down.
When opening support tickets, please ensure to copy the Debug level logs.
Editing Workflows
The workflows that come with the Pure Storage Plugin for vRealize Orchestrator are not editable by end users--this is done to make the workflows easier to support. If you would like to make a change, you have two options:
- Submit an enhancement request. This can be done here: https://github.com/PureStorage-Connect/vRO-Plugin/issues directly or via your Pure Storage account team.
- Copy the workflow and edit it yourself.
As an example of the second option, lets look at the workflow to create a volume. I may want to enforce a naming convention on new volume names. To do so, first copy the workflow:
Create a new folder if you have not yet for customer workflows first:
1) Create new folder | 2) Give it a name | 3) Verify location |
![]() |
![]() |
![]() |
Then rename (if desired) the workflow and choose a location.
1) Move duplicated workflow to new folder, by editing the workflow | 2) Choose folder | 3) Save the move |
![]() |
![]() |
![]() |
The workflow will be copied to your folder with the new name.
You may now right-click and edit the workflow.
On the
1) Click on Input Form and choose the variable | 2) Click on Constraints and change the regex check | 3) Save. |
![]() |
![]() |
![]() |
Click Save and Close. The next time it is run, it will require (in this case) that the volume name starts with "Volume-".
Valid | Invalid |
![]() |
![]() |
If you create customized workflows it is important to back them up by either backing up the vRO appliance itself or exporting the workflows and storing them in a protected place. Note that vRO 8 does not allow for exporting a single workflow, only content packages. Create a new content package and put your custom workflows in it and export to protect.
Detailed information on creating implementing validation and specifics checks is beyond the scope of this document. For details, please refer to VMware vRO documentation: https://docs.vmware.com/en/vRealize-Orchestrator/index.html
Creating New Workflows
Full instructions on creating custom workflows within vRealize Orchestrator are beyond the scope of this document. But at least we can make a few recommendations to make this process easier.
High level advice: use the plugin! There are a lot of built-in features, beyond just workflows, that can save you a lot of time. Take advantage of that.
To create a new workflow, click the desired folder and choose New Workflow
Give it a name:
Advice #1: Re-use default workflows
The first suggestion is to review the existing workflows--can they do all of what you need. If they do, just use them directly. If they are close, clone them and make edits (as described above). If they achieve a part entirely, but you want to link them to something else, you can add workflows to a workflow:
Find a workflow under All Workflows and drag it to the correct spot:
1) Click on Schema and Drag Workflow Element to canvas | 2) Select the element and choose the workflow in the Workflow entry box | 3) Map the input and outputs into existing or new variables |
![]() |
![]() |
![]() |
For each input and output decide if some other variable can be used for it or a new one needs to be created:
Variable means it will be passed in (or calculated) by another element or hardcoded. An input means that a user passes it in.
Configure the inputs, outputs, and variables as needed.
It should be noted that when you import a workflow the input validation is not imported with it. You will need to re-create it (if desired) or copy it from the original and paste the inputs into the new workflow.
Advice #2: Re-use Actions
If no workflow achieves what you need (or commonly does too much), before writing your own code--use the built-in actions in the plugin. The plugin re-uses a lot of default functions, referred to as actions in vRO, for many plugins. These actions are available for you as well.
In the workflow editor, you can go to Schema and then drag Action Element to the canvas.
Choose the action to use in the Action search bar on the right.
Then map the input(s) and output as needed:
Choose an input or variable for inputs and output or variable for the action output.
Actions can be selected and dragged into the workflow just like workflows. Generally actions do one thing: create something, retrieve something, convert something etc. Combining actions together can often achieve most desired workflows with minimal customization. To learn more about actions, choose the Actions panel and click on an action. The General tab will show high level information, and the Script tab will show the details (what it takes in, what it returns, and the code it uses).
Action generics | Action details |
![]() |
![]() |
Drag and drop actions as needed.
Advice #3: Use the object inventory!
Whenever possible do not ask for volume names, or use strings (unless you need to name something)--ask for the input to be a Pure Storage object type. When you specify an input has to be a PS:Volume--this will automatically provide the user a menu to choose a PS:Volume. Therefore they can be guided to choose the right thing--and you don't need to write more code to make sure it is valid.
1) Input is PS:Volume | 2) User is forced to choose a valid volume | 3) User is guided to make a valid choice |
![]() |
![]() |
![]() |
Advice #4: Only use the REST API workflows if you have no other choice.
The Pure Storage Plugin for vRealize Orchestrator offers a few workflows to run custom REST operations against a FlashArray, Cloud Block Store, or a FlashBlade:
This should only be used if the feature you want to use (or metrics you need) does not have a workflow, action, or Javascript library. The plugin, in addition to workflows and actions, comes with customized Javascript libraries. Each object has methods that can be run from that object once input:
And each object type also has a manager that can be used to do additional tasks for that object:
Many of the manager operations require a REST session which can be pulled from the FlashArray connection object or the object itself with the GetSession() method:
For examples of using these, refer to the code within related Actions.