How you map command parameters
The parameters in Workflow Automation (WFA) commands are mapped to specific attributes and dictionary entry references based on certain rules. You must be aware of the rules to map command parameters when you create or edit a WFA command.
Command parameter mapping defines how command details are defined in the workflows. Mapped command parameters of a command are displayed in tabs when you are specifying the command details for commands in workflows. The tabs are named based on the group name specified in the Object Name column of the Parameters Mapping tab. The parameters that are not mapped are displayed in the Other Parameters tab when you are specifying the command details in workflows.
The rules for command parameter mapping are applicable based on the command category and how the commands are represented in the workflow editor.
The following are the command categories:
-
Commands that create objects
-
Commands that update objects
-
Commands that remove objects
-
Commands that deal with optional parent and child objects
-
Commands that update associations between objects
The rules are listed below for each category:
All command categories
When mapping a command parameter, you should use the natural path based on how the command is used in workflows.
The following examples show how you can define a natural path:
-
For the
ArrayIP
parameter, depending on the command, you should use theaggregate.array.ip
attribute of theVolume
dictionary entry and not thearray.ip
attribute.This is important when a workflow creates a volume and then performs an additional step with the created volume by referring to it. The following are similar examples:
-
volume.aggregate.array.ip
of theQtree
dictionary entry -
volume.aggregate.array.ip
of theLUN
dictionary entry
-
-
For
Cluster
used in commands, you should use one of the following:-
vserver.cluster.primary_address
of theVolume
dictionary entry -
volume.vserver.cluster.primary_address
of theQtree
dictionary entry
-
Commands that create objects
This category of commands is used for one of the following:
-
Finding a parent object and defining new objects
-
Searching for an object and creating the object if the object does not exist
You should use the following parameter mapping rules for this category of commands:
-
Map the relevant parameters of the object that is created to the object's dictionary entry.
-
Map the parent object through the references of the dictionary entry that is created.
-
Ensure that the relevant attribute is present in the dictionary entry when adding a new parameter.
The following are the exception scenarios for this rule:
-
Some objects that are created do not have a corresponding dictionary entry and only the parent object is mapped to the relevant parent dictionary entry—for example, the Create VIF command—in which only an array can be mapped to array dictionary entry.
-
Parameter mapping is not required
For example, the
ExecutionTimeout
parameter in the Create or resize aggregate command is an unmapped parameter.
-
The following certified commands are examples for this category:
-
Create Volume
-
Create LUN
Commands that update objects
This category of commands is used to find an object and update the attributes.
You should use the following parameter mapping rules for this category of commands:
-
Map the objects that are updated to the dictionary entry.
-
Do not map the parameters that are updated for the object.
For example, in the Set Volume State command, the Volume parameter is mapped but the new
State
is unmapped.
Commands that remove objects
This category of commands is used to find an object and delete it.
You should map the object that is deleted by the command to its dictionary entry. For example, in the Remove Volume command, the Volume to be deleted is mapped to the relevant attributes and references of the Volume dictionary entry.
Commands that deal with optional parent and child objects
You should use the following parameter mapping rules for this category of commands:
-
Do not map any mandatory parameter of a command as a reference from an optional parameter of the command.
This rule is more relevant when a command deals with optional child objects of a specific parent object. In this case, the child and parent object should be mapped explicitly. For example, in the Stop Deduplication Jobs command, the command stops a running deduplication job on a specific volume when specified along with
Array
or on all volumes of the givenArray
. In this case, the array parameter should be mapped directly to thearray
dictionary entry and not toVolume.Array
becauseVolume
is an optional parameter in this command. -
If a parent and child relationship exists between dictionary entries at the logical level but not between the actual instances in a specific command, then those objects should be mapped separately.
For example, in the Move Volume command,
Volume
is moved from its current parent aggregate to a new destination aggregate. Therefore,Volume
parameters are mapped to aVolume
dictionary entry and the destination aggregate parameters are mapped separately to theAggregate
dictionary entry but not asvolume.aggregate.name
.
Commands that update associations between objects
For this category of commands, you should map both the association and the objects to relevant dictionary entries. For example, in the Add Volume to vFiler
command, the Volume
and vFiler
parameters are mapped to the relevant attributes of the Volume
and vFiler
dictionary entries.