In addition to the previously demonstrated simple duplication operation use case, IRM also supports multiple top-level object duplication. This enables the user to efficiently create a large number (i.e. hundreds) of more complex IRM objects, such as Equipment. This is useful in cases when the user, for example, wants to build a full-size data center with hundreds of fully-populated Racks, in a fairly low number of operations.
The Duplicate operation for multiple objects is based on using the Name Generator once for each of the multiple objects. To further explain, the following:
The user is trying to create N copies of M objects, which effectively means the Name Generator operation will be performed exactly N times, once for each set of M objects. The first time the Name Generator is applied on the original set of M objects, the resulting value is used for the first copies of all M objects and their children. Then, the Name Generator is applied again and the resulting value is used for the second copies of all M objects and their children, etc.
To simplify, the user can use this feature to start with a single template object, i.e. a Rack with D template parameters and create an D+1 dimensional set of objects from a D-dimensional template set in an iterative manner. Thereby, with only a few iterations the user is able to build up a very large numbers of objects.
Use Case Example
Consider a simple case of building several rows of Racks. Let's assume there are two template parameters, that is, two dimensions (d=2), so the first template Rack name (d=0) results in something as follows:
Rack Rm202-R<RowNum>-C<RackNum>,where <RowNum> and <RackNum> are the template parameters.
First, we create a template row (d=1) by running one Duplicate operation on the original Rack object, using a Name Generator to replace <RackNum>. That results in the following objects, for example:
Rack Rm202-R<RowNum>-C1
Rack Rm202-R<RowNum>-C2
Rack Rm202-R<RowNum>-C3
Next, we create multiple rows (d=2) by running another Duplicate operation on the template row and using a different Name Generator to replace <RowNum>:
Rack Rm202-R1-C1
Rack Rm202-R1-C2
Rack Rm202-R1-C3
Rack Rm202-R2-C1
Rack Rm202-R2-C2
Rack Rm202-R2-C3
This could be extended to further dimensions by creating groups of rows, templating the room (Rm) part of the name, etc.