Subscribe
Accepted Solution

Displaying additional information on User Input form.

Greetings,

 

My colleagues and I are discussing how to best display additional information to the WFA operator as they execute a workflow. 

 

Our use case is around resizing a volume. We want to show the WFA operator how much aggregate capacity is available and/or how much the aggregate is overcommitted as they execute a Volume Resize workflow. We currently have a User Input of Type query and "Lock Values" to show the data we want. 

 

Some parameters of our discussion:

  1. You can still attempt to modify a query field that has "Lock Values" selected. 
  2. We can validate overcommit/available capacity during execution but would like to warn the WFA operator at input time.
  3. Are there better ways to show non-input values during user input?

Looking forward to hearing ideas. Smiley Happy

 

Test_Vol_Resize.dar from WFA 4.0 attached for fun.

 

-Lawrence

Re: Displaying additional information on User Input form.

Lawrence,

 

   You could use the No-Op command to define aggregate as a "User Input".  Then define the aggregate as a user input, you can then show the amount of space used, available or calculate the used percentage with the query.  Unfortunately the commited capacity is not in the wfa dictionary for aggregate, so that can not be displayed.  Something like the SQL query below (untested).

 

 

Mike

 

 

 

SELECT
    aggregate.name as 'Aggregate Name',

    aggregate.available_size_mb as 'Available Size (MB)'
FROM
    cm_storage.aggregate,
    cm_storage.volume
WHERE
    volume.aggregate = aggregate.id
    AND volume.name = '${VolumeName}'
   

Re: Displaying additional information on User Input form.

You can use "user input" dependency section and make it read only by providing some value which will never satisfy the condition. This will make user input, non-input. Hope this helps.

Re: Displaying additional information on User Input form.

Mike,

 

I think your idea of a non-operational command with an input variable for the aggregate will work. Adding what Karale suggested will produce the behavior we are looking for.

 

As for available capactiy, I came up with something similar.

 

SELECT
   round(aggregate.available_size_mb/1000) AS 'Available (GB)',
   aggregate.name AS 'Name'
FROM
   cm_storage.aggregate AS aggregate
JOIN
   cm_storage.volume AS volume
   ON volume.aggregate_id = aggregate.id
WHERE
   volume.name = '${volume}'

 

I played with committed capacity a little with a subquery. The concept is there but some tweaking will be needed to get something meaningful like overcomitted capacity in percentage.

 

SELECT
   round(sum(volume.size_mb/1000)) AS 'Committed (GB)'
FROM
   cm_storage.volume AS volume
WHERE
   volume.aggregate_id IN (SELECT
                                               volume.aggregate_id AS 'Aggregate ID'
                                            FROM
                                               cm_storage.volume AS volume
                                            WHERE
                                               volume.name ='${volume}')

 

Thank you,

Lawrence

Re: Displaying additional information on User Input form.

Karale,

 

Creating a Dependency that is never satisfied creates the behavior we are looking for. I tested by making the aggregate input variable dependent on "Volume" with the value of "no_volume". It works unless we create a volume on one of the clusters named "no_volume" and someone wants to resize it. At that point, if we use Mike's suggestion of a No-op command in the workflow, even if the user modify the field we intend only as a display field, it will not have an affect on the execution.

 

Problem solved. Smiley Happy

 

Kind regards,

Lawrence