3.1.1.1.15.2.3 GetNextLevelLogicalGroupNodes

This procedure can be used to determine the collection of LogicalGroupNode instances that will form the next level of logical group nodes for the specified logical group node. The following are the input parameters for this procedure.

Param_logicalGroupNode: The logical group node for which the child nodes are to be enumerated.

The following is the output parameter of this procedure.

Result_logicalGroupNodes: The collection of LogicalGroupNode instances that form the child nodes of in a logical group hierarchy for the specified Param_logicalGroupNode.

The following table specifies the mapping between the LogicalGroupNode type of Param_logicalGroupNode and the LogicalGroupType and AddressFamily for the same.

LogicalGroupNode Type

AddressFamily

LogicalGroupType

IPv4RangeLogicalGroupNode

Internet

Range

IPv6RangeLogicalGroupNode

InternetV6

Range

ActiveServerV4LogicalGroupNode

Internet

ManagedServer

ActiveServerV6LogicalGroupNode

InternetV6

ManagedServer

IpamIPv4AddressLogicalGroupNode

Internet

IPAddress

IpamIPv6AddressLogicalGroupNode

InternetV6

IPAddress

The following are the processing steps involved.

  1. Call the procedure GetLogicalGroupFromTable passing the following parameters.

    • Param_logicalGroupNode.LogicalGroupRecordId as Param_Id.

    • Param_groupType is assigned the LogicalGroupType as per the mapping to the LogicalGroupNode type in the table above.

    • Param_addressFamily is assigned the AddressFamily as per the mapping to the LogicalGroupNode type in the table above.

  2. Store Result_logicalGroup in logicalGroup.

  3. Lookup the logicalGroup.Fields for the entry with LogicalGroupField.CustomFieldRecordId having the value Param_logicalGroupNode.CustomFieldRecordId. If this is the last entry in logicalGroup.Fields, there are no further levels. Set Result_logicalGroupNodes to an empty list and return it as output parameter.

  4. Let logicalGroupField be initialized with the entry in logicalGroup.Fields, which will form the next level.

  5. Enumerate the rows in ADM_CustomFieldValuesAssociationTable that meet the following criteria.

    • CustomFieldId is equal to logicalGroupField.CustomFieldRecordId.

    • ObjectType is equal to the ObjectType for the logicalGroup based on the table present in section 3.1.1.1.15.2.2.

    • AddressFamily is equal to the AddressFamily for the Param_logicalGroup based on the table present in section 3.1.1.1.15.2.2.

  6. From the set of rows above, create a unique list of CustomFieldValueId, which will form the basis for creating the LogicalGroupNode.

  7. For each unique CustomFieldValueId enumerated from the above step, perform the following steps.

    1. Create a new instance of logical group node based on the type for the logical group as specified in the table in section 3.1.1.1.15.2.2. Let this be referred to as logicalGroupNode.

    2. Set logicalGroupNode.AncestorNodes to null.

    3. Set logicalGroupNode.CustomFieldRecordId to logicalGroupField.CustomFieldRecordId.

    4. Set logicalGroupNode.NodeLevel to logicalGroupField.RecordId.

    5. Lookup the ADM_CustomFieldValuesTable with the RecordId equal to CustomFieldValueId being iterated. Assign the CustomFieldValueDetails.Value to logicalGroupNode.NodeValue.

    6. If the logicalGroupNode is either IPv4RangeLogicalGroupNode is IPv6RangeLogicalGroupNode, the logicalGroupNode.UtilizationStatistics will be set with the utilization statistics for the ranges which form the part of the logical group. Call the procedure GetUtilizationForLogicalGroupNode passing logicalGroupNode as Param_logicalGroupNode, AddressFamily as Param_addressfamily. Assign Result_utilization to logicalGroupNode.UtilizationStatistics.

    7. Add logicalGroupNode to Result_logicalGroupNodes.

  8. Return Result_logicalGroupNodes as the output parameter for this procedure.