def getNgpfObjectHandleByName(self, ngpfEndpointObject=None, ngpfEndpointName=None): """ Description Get the NGPF object handle filtering by the NGPF component name. The NGPF object name is something that you could configure for each NGPF stack. Stack meaning: topology, deviceGroup, ethernet, ipv44, bgpIpv4Peer, etc Parameters ngpfEndpointObject: See below ngpfL2ObjectList and ngpfL3ObjectList. ngpfEndpointName: The name of the NGPF component object. Examples: protocolObj.getNgpfObjectHandleByName(ngpfEndpointObject='topology', ngpfEndpointName='Topo2') return objectHandle: /api/v1/sessions/1/ixnetwork/topology/2 protocolObj.getNgpfObjectHandleByName(ngpfEndpointObject='ipv4', ngpfEndpointName='IPv4 1') return objectHandle: /api/v1/sessions/1/ixnetwork/topology/1/deviceGroup/1/ethernet/1/ipv4/1 protocolObj.getNgpfObjectHandleByName(ngpfEndpointObject='bgpIpv4Peer', ngpfEndpointName='bgp_2') return objectHandle: /api/v1/sessions/1/ixnetwork/topology/1/deviceGroup/1/ethernet/1/ipv4/1/bgpIpv4Peer/2 protocolObj.getNgpfObjectHandleByName(ngpfEndpointObject='networkGroup', ngpfEndpointName='networkGroup1') return objectHandle: /api/v1/sessions/1/ixnetwork/topology/1/deviceGroup/1/networkGroup/1 protocolObj.getNgpfObjectHandleByName(ngpfEndpointObject='ipv4PrefixPools', ngpfEndpointName='Basic IPv4 Addresses 1') return objectHandle: /api/v1/sessions/1/ixnetwork/topology/1/deviceGroup/1/networkGroup1/ipv4PrefixPools/1 """ ngpfMainObjectList = ['topology', 'deviceGroup', 'ethernet', 'ipv4', 'ipv6', 'networkGroup', 'ipv4PrefixPools', 'ipv6PrefixPools'] ngpfL2ObjectList = ['isisL3', 'lacp', 'mpls'] ngpfL3ObjectList = ['ancp', 'bfdv4Interface', 'bgpIpv4Peer', 'bgpIpv6Peer', 'dhcpv4relayAgent', 'dhcpv6relayAgent', 'geneve', 'greoipv4', 'greoipv6', 'igmpHost', 'igmpQuerier', 'lac', 'ldpBasicRouter', 'ldpBasicRouterV6', 'ldpConnectedInterface', 'ldpv6ConnectedInterface', 'ldpTargetedRouter', 'ldpTargetedRouterV6', 'lns', 'mldHost', 'mldQuerier', 'ptp', 'ipv6sr', 'openFlowController', 'openFlowSwitch', 'ospfv2', 'ospfv3', 'ovsdbcontroller', 'ovsdbserver', 'pcc', 'pce', 'pcepBackupPCEs', 'pimV4Interface', 'pimV6Interface', 'ptp', 'rsvpteIf', 'rsvpteLsps', 'tag', 'vxlan' ] if ngpfEndpointObject not in ngpfL2ObjectList+ngpfL3ObjectList+ngpfMainObjectList: raise IxNetRestApiException('\nError: No such ngpfEndpointObject: %s' % ngpfEndpointObject) if ngpfEndpointObject in ngpfL2ObjectList + ngpfL3ObjectList: if ngpfEndpointObject in ngpfL2ObjectList: nodesList = [{'node': 'topology', 'properties': [], 'where': []}, {'node': 'deviceGroup', 'properties': [], 'where': []}, {'node': 'ethernet', 'properties': [], 'where': []} ] if ngpfEndpointObject in ngpfL3ObjectList: nodesList = [{'node': 'topology', 'properties': [], 'where': []}, {'node': 'deviceGroup', 'properties': [], 'where': []}, {'node': 'ethernet', 'properties': [], 'where': []}, {'node': 'ipv4', 'properties': [], 'where': []}, {'node': 'ipv6', 'properties': [], 'where': []} ] nodesList.insert(len(nodesList), {'node': ngpfEndpointObject, 'properties': ['name'], 'where': [{'property': 'name', 'regex': ngpfEndpointName}]}) # Get the NGPF top level objects that are not a protocol: # topology, deviceGroup, ethernet, ipv4, ipv6, networkGroup ... if ngpfEndpointObject not in ngpfL2ObjectList + ngpfL3ObjectList: nodesList = [] # Get the index position of the ngptEndpointObject in the ngpfMainObjectList ngpfEndpointIndex = ngpfMainObjectList.index(ngpfEndpointObject) # Example: # If ngpfEndpointObject is 'ethernet', # then do a for loop from the topology level to the ethernet level. for eachNgpfEndpoint in ngpfMainObjectList[:ngpfEndpointIndex+1]: # topology, deviceGroup, ethernet, ipv4, ipv6, networkGroup ... if eachNgpfEndpoint == ngpfEndpointObject: nodesList.append({'node': eachNgpfEndpoint, 'properties': ['name'], 'where': [{'property': 'name', 'regex': ngpfEndpointName}]}) else: nodesList.append({'node': eachNgpfEndpoint, 'properties': [], 'where': []}) queryData = {'from': '/', 'nodes': nodesList} queryResponse = self.ixnObj.query(data=queryData) # Get a list of all the nested keys objectHandle = self.getObject(keys=queryResponse.json()['result'][0], ngpfEndpointName=ngpfEndpointName) self.ixnObj.logInfo('getNgpfObjectHandleByName: %s' % objectHandle) return objectHandle