def getTrafficItemPktHeaderStackObj(self, configElementObj=None, trafficItemName=None, packetHeaderName=None): """ Description Get the Traffic Item packet header stack object based on the displayName. To get the displayName, you could call this function: self.showTrafficItemPacketStack(configElementObj) For this function, you could either pass in a configElement object or the Traffic Item name. Parameters configElementObj: : Optional: The configElement object. Example: /api/v1/sessions/1/ixnetwork/traffic/trafficItem/1/configElement/1 trafficItemName: : Optional: The Traffic Item name. packetHeaderName: : Mandatory: The packet header name. Example: ethernet II, mpls, ipv4, ... Return The stack object """ if configElementObj == None: # Expect user to pass in the Traffic Item name if user did not pass in a configElement object. queryData = {'from': '/traffic', 'nodes': [{'node': 'trafficItem', 'properties': ['name'], 'where': [{'property': 'name', 'regex': trafficItemName}]}]} queryResponse = self.ixnObj.query(data=queryData) if queryResponse.json()['result'][0]['trafficItem'] == []: raise IxNetRestApiException('\nNo such Traffic Item name found: %s' % trafficItemName) trafficItemObj = queryResponse.json()['result'][0]['trafficItem'][0]['href'] configElementObj = trafficItemObj+'/configElement/1' response = self.ixnObj.get(self.ixnObj.httpHeader+configElementObj+'/stack') for eachStack in response.json(): currentStackDisplayName = eachStack['displayName'].strip() self.ixnObj.logInfo('Packet header name: {0}'.format(currentStackDisplayName), timestamp=False) if bool(re.match('^{0}$'.format(packetHeaderName), currentStackDisplayName, re.I)): self.ixnObj.logInfo('\nstack: {0}: {1}'.format(eachStack, currentStackDisplayName), timestamp=False) stackObj = eachStack['links'][0]['href'] return stackObj raise IxNetRestApiException('\nError: No such stack name found. Verify stack name existence and spelling: %s' % packetHeaderName)