diff options
author | Oleksandr Naumets <oleksandrx.naumets@intel.com> | 2018-10-24 12:33:25 +0100 |
---|---|---|
committer | Oleksandr Naumets <oleksandrx.naumets@intel.com> | 2018-10-29 16:48:10 +0000 |
commit | 9a183e6c950358c08835fd956265ad93cbb8038d (patch) | |
tree | f5d11e7779d1bc2316907d1bf9bfd1b56ca29c03 /yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py | |
parent | fdd8206d8f3d456fa3e3b56630e7449d55a71258 (diff) |
Add IxNextgen API for settings IP priority
Add IxNextgen API for setting IP priority which includes:
- Raw priority;
- ToS;
- Diff-Serv.
JIRA: YARDSTICK-1488
Change-Id: I83d85db113a5374fdafc3d50130e5e3584edfc4a
Signed-off-by: Oleksandr Naumets <oleksandrx.naumets@intel.com>
Diffstat (limited to 'yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py')
-rw-r--r-- | yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py b/yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py index 87e9dbf85..eb958abef 100644 --- a/yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py +++ b/yardstick/network_services/libs/ixia_libs/ixnet/ixnet_api.py @@ -526,6 +526,8 @@ class IxNextgen(object): # pragma: no cover or ipaddress.IPV4LENGTH dstmask = traffic_param['outer_l3']['dstmask'] \ or ipaddress.IPV4LENGTH + priority = traffic_param['outer_l3']['priority'] + if srcip: self._update_ipv4_address( self._get_stack_item(fg_id, PROTO_IPV4)[0], @@ -534,6 +536,56 @@ class IxNextgen(object): # pragma: no cover self._update_ipv4_address( self._get_stack_item(fg_id, PROTO_IPV4)[0], 'dstIp', str(dstip), dstseed, dstmask, count) + if priority: + self._update_ipv4_priority( + self._get_stack_item(fg_id, PROTO_IPV4)[0], priority) + + def _update_ipv4_priority(self, ip_descriptor, priority): + """Set the IPv4 priority in a config element stack IP field + + :param ip_descriptor: (str) IP descriptor, e.g.: + /traffic/trafficItem:1/configElement:1/stack:"ipv4-2" + :param priority: (dict) priority configuration from traffic profile, e.g.: + {'tos': + 'precedence': [1, 4, 7] + } + """ + if 'raw' in priority: + priority_field = self._get_field_in_stack_item(ip_descriptor, + 'priority.raw') + self._set_priority_field(priority_field, priority['raw']) + + elif 'dscp' in priority: + for field, value in priority['dscp'].items(): + priority_field = self._get_field_in_stack_item( + ip_descriptor, + 'priority.ds.phb.{field}.{field}'.format(field=field)) + self._set_priority_field(priority_field, value) + + elif 'tos' in priority: + for field, value in priority['tos'].items(): + priority_field = self._get_field_in_stack_item( + ip_descriptor, 'priority.tos.' + field) + self._set_priority_field(priority_field, value) + + def _set_priority_field(self, field_descriptor, value): + """Set the priority field described by field_descriptor + + :param field_descriptor: (str) field descriptor, e.g.: + /traffic/trafficItem:1/configElement:1/stack:"ipv4-2"/ \ + field:"ipv4.header.priority.raw-3 + :param value: (list, int) list of integers or single integer value + """ + if isinstance(value, list): + self.ixnet.setMultiAttribute(field_descriptor, + '-valueList', value, + '-activeFieldChoice', 'true', + '-valueType', 'valueList') + else: + self.ixnet.setMultiAttribute(field_descriptor, + '-activeFieldChoice', 'true', + '-singleValue', str(value)) + self.ixnet.commit() def update_l4(self, traffic): """Update the L4 headers |