CSIT-1597 API cleanup: tap 11/23911/7
authorJan Gelety <jgelety@cisco.com>
Sat, 30 Nov 2019 16:18:01 +0000 (17:18 +0100)
committerJan Gelety <jgelety@cisco.com>
Wed, 11 Dec 2019 11:27:29 +0000 (11:27 +0000)
- cover API changes in VPP: https://gerrit.fd.io/r/c/vpp/+/21706
- cover API cahnges in VPP: https://gerrit.fd.io/r/c/vpp/+/23887
- update vpp stable to version 20.01-rc0~828

Change-Id: I70d88741a02729421d4b31010910138838811518
Signed-off-by: Jan Gelety <jgelety@cisco.com>
VPP_STABLE_VER_CENTOS
VPP_STABLE_VER_UBUNTU_BIONIC
resources/api/vpp/supported_crcs.yaml
resources/libraries/python/IPUtil.py
resources/libraries/python/Tap.py

index 295a128..88108d6 100644 (file)
@@ -1 +1 @@
-20.01-rc0~821_g39d6911~b8483
+20.01-rc0~828_g5de4fb7~b8491
index 98a8c89..7545e0f 100644 (file)
@@ -1 +1 @@
-20.01-rc0~821-g39d69112f
+20.01-rc0~828-g5de4fb707
index f2f0765..9006cfc 100644 (file)
 # Use bash command "env LC_COLLATE=C sort -u" if not clear.
 
 # https://logs.fd.io/production/vex-yul-rot-jenkins-1
-# /vpp-merge-master-ubuntu1804/244/
-20.01-rc0~821:
-    acl_add_replace: '0x13bc8539'  # dev
-    acl_add_replace_reply: '0xac407b0c'  # dev
-    acl_details: '0xf89d7a88'  # perf teardown
-    acl_dump: '0xef34fea4'  # perf teardown
-    acl_interface_list_details: '0xd5e80809'  # perf teardown
-    acl_interface_list_dump: '0x529cb13f'  # perf teardown
-    acl_interface_set_acl_list: '0x8baece38'  # perf
-    acl_interface_set_acl_list_reply: '0xe8d4e804'  # perf
-    # 6x^ tc01-64B-1c-ethip4udp-ip4base-iacl1sf-10kflows-mrr
-    #     tc01-64B-1c-ethip4udp-ip4base-iacl1sl-10kflows-mrr
-    # ^^ ip4fwdANDiaclANDacl10AND100_flows
-    avf_create: '0xdaab8ae2'  # dev
-    avf_create_reply: '0xfda5941f'  # dev
-    bond_create: '0x48883c7e'  # perf
-    bond_create_reply: '0x5383d31f'  # perf
-    bond_enslave: '0x076ecfa7'  # perf
-    bond_enslave_reply: '0xe8d4e804'  # perf
-    # 4x^ tc01-64B-1c-1lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr
-    # ^ l2xcfwdANDlbond_1lANDnf_testpmd
-    bridge_domain_add_del: '0xc6360720'  # dev
-    bridge_domain_add_del_reply: '0xe8d4e804'  # dev
-    # bridge_domain_dump / details # honeycomb
-    classify_add_del_session: '0xf20879f0'  # dev
-    classify_add_del_session_reply: '0xe8d4e804'  # dev
-    classify_add_del_table: '0x6849e39e'  # dev
-    classify_add_del_table_reply: '0x05486349'  # dev
-    # classify_session_dump / details # honeycomb
-    # classify_table_by_interface / reply # honeycomb
-    # classify_table_info / reply # honeycomb
-    cli_inband: '0xf8377302'  # dev setup
-    cli_inband_reply: '0x05879051'  # dev setup
-    cop_interface_enable_disable: '0x5501adee'  # dev
-    cop_interface_enable_disable_reply: '0xe8d4e804'  # dev
-    cop_whitelist_enable_disable: '0xdebe13ea'  # dev
-    cop_whitelist_enable_disable_reply: '0xe8d4e804'  # dev
-    create_loopback: '0x42bb5d22'  # dev
-    create_loopback_reply: '0x5383d31f'  # dev
-    create_subif: '0xcb371063'  # perf
-    create_subif_reply: '0x5383d31f'  # perf
-    # ^^ tc01-64B-1c-dot1ad-l2xcbase-mrr
-    # ^ 3n: dot1adANDl2xcfwd
-    create_vhost_user_if: '0xa3438cd4'  # dev
-    create_vhost_user_if_reply: '0xfda5941f'  # dev
-    create_vlan_subif: '0xaf34ac8b'  # dev
-    create_vlan_subif_reply: '0x5383d31f'  # dev
-    # dhcp_proxy_dump / details # honeycomb
-    gbp_bridge_domain_add: '0x70f1069c'  # dev
-    gbp_bridge_domain_add_reply: '0xe8d4e804'  # dev
-    gbp_contract_add_del: '0x5b63d90a'  # dev
-    gbp_contract_add_del_reply: '0x1992deab'  # dev
-    gbp_endpoint_add: '0xf0efa120'  # dev
-    gbp_endpoint_add_reply: '0x1dd3ff3e'  # dev
-    gbp_endpoint_group_add: '0x1031b376'  # dev
-    gbp_endpoint_group_add_reply: '0xe8d4e804'  # dev
-    gbp_ext_itf_add_del: '0x6995e85f'  # dev
-    gbp_ext_itf_add_del_reply: '0xe8d4e804'  # dev
-    gbp_route_domain_add: '0x1560adc7'  # dev
-    gbp_route_domain_add_reply: '0xe8d4e804'  # dev
-    gbp_subnet_add_del: '0xf42b9430'  # dev
-    gbp_subnet_add_del_reply: '0xe8d4e804'  # dev
-    gpe_enable_disable: '0xeb0e943b'  # dev
-    gpe_enable_disable_reply: '0xe8d4e804'  # dev
-    # gre_tunnel_add_del / reply # unused L1 keyword: create_gre_tunnel_interface
-    hw_interface_set_mtu: '0xe6746899'  # dev
-    hw_interface_set_mtu_reply: '0xe8d4e804'  # dev
-    input_acl_set_interface: '0xde7ad708'  # dev
-    input_acl_set_interface_reply: '0xe8d4e804'  # dev
-    ip_address_details: '0x7002eee7'  # dev
-    ip_address_dump: '0x6b7bcd0a'  # dev
-    ip_neighbor_add_del: '0x029dad44'  # dev
-    ip_neighbor_add_del_reply: '0x1992deab'  # dev
-    # ip_probe_neighbor / reply # unused L1 keyword vpp_ip_probe
-    ip_route_add_del: '0x5ceee41c'  # dev
-    ip_route_add_del_reply: '0x1992deab'  # dev
-    # ip_source_check_interface_add_del / reply # unused L1 keyword vpp_ip_source_check_setup
-    ip_table_add_del: '0xe5d378f2'  # dev
-    ip_table_add_del_reply: '0xe8d4e804'  # dev
-    ipsec_interface_add_del_spd: '0x1e3b8286'  # dev
-    ipsec_interface_add_del_spd_reply: '0xe8d4e804'  # dev
-    ipsec_sad_entry_add_del: '0xa25ab61e'  # dev
-    ipsec_sad_entry_add_del_reply: '0x9ffac24b'  # dev
-    ipsec_select_backend: '0x4fd24836'  # perf
-    ipsec_select_backend_reply: '0xe8d4e804'  # perf
-    # ^^ tc01-64B-1c-ethip4ipsec1tnlhw-ip4base-int-aes256gcm-mrr
-    # ^ nic_intel-xl710ANDipsechwANDipsecintANDtnl_1ANDaes_256_gcm
-    ipsec_spd_add_del: '0x9ffdf5da'  # dev
-    ipsec_spd_add_del_reply: '0xe8d4e804'  # dev
-    ipsec_spd_entry_add_del: '0xdb217840'  # dev
-    ipsec_spd_entry_add_del_reply: '0x9ffac24b'  # dev
-    ipsec_tunnel_if_add_del: '0xd5a98274'  # perf
-    ipsec_tunnel_if_add_del_reply: '0xfda5941f'  # perf
-    # ^^ tc01-64B-1c-ethip4ipsec1tnlhw-ip4base-int-aes256gcm-mrr
-    # ^ See select_backend.
-    # l2_fib_table_dump / details # honeycomb
-    l2_interface_vlan_tag_rewrite: '0xb90be6b4'  # dev
-    l2_interface_vlan_tag_rewrite_reply: '0xe8d4e804'  # dev
-    l2_patch_add_del: '0x62506e63'  # perf
-    l2_patch_add_del_reply: '0xe8d4e804'  # perf
-    # ^^ tc01-64B-1c-avf-eth-l2patch-mrr # currently failing after calls
-    # ^ l2patchANDdrv_avf
-    # l2fib_add_del / reply # unused L1 keyword: vpp_add_l2fib_entry
-    lb_conf: '0x22ddb739'  # perf
-    lb_conf_reply: '0xe8d4e804'  # perf
-    lb_add_del_vip: '0xd15b7ddc'  # perf
-    lb_add_del_vip_reply: '0xe8d4e804'  # perf
-    lb_add_del_as: '0x78628987'  # perf
-    lb_add_del_as_reply: '0xe8d4e804'  # perf
-    lb_add_del_intf_nat4: '0x47d6e753'  # perf
-    lb_add_del_intf_nat4_reply: '0xe8d4e804'  # perf
-    # 8x^ tc01-64B-1c-ethip4-loadbalancer-nat4
-    # ^ 2n: loadbalancer_nat4
-    lisp_add_del_adjacency: '0xf047390d'  # dev
-    lisp_add_del_adjacency_reply: '0xe8d4e804'  # dev
-    lisp_add_del_local_eid: '0xe6d00717'  # dev
-    lisp_add_del_local_eid_reply: '0xe8d4e804'  # dev
-    lisp_add_del_locator: '0x006a4240'  # dev
-    lisp_add_del_locator_reply: '0xe8d4e804'  # dev
-    lisp_add_del_locator_set: '0x06968e38'  # dev
-    lisp_add_del_locator_set_reply: '0xb6666db4'  # dev
-    # lisp_add_del_map_resolver / reply # unused L2 keyword: Configure LISP map resolver address
-    lisp_add_del_remote_mapping: '0xb879c3a9'  # dev
-    lisp_add_del_remote_mapping_reply: '0xe8d4e804'  # dev
-    lisp_eid_table_add_del_map: '0x59e9975e'  # perf
-    lisp_eid_table_add_del_map_reply: '0xe8d4e804'  # perf
-    # ^^ tc01-64B-1c-ethip4ipsectptlispgpe-ip4base-aes128cbc-hmac256sha-ndrpdr # currently failing before calls
-    # ^ ipsecANDlispgpe
-    # lisp_eid_table_dump / details # unused L2 keyword: LISP eid address should be set correctly to eid table
-    lisp_enable_disable: '0xeb0e943b'  # dev
-    lisp_enable_disable_reply: '0xe8d4e804'  # dev
-    # lisp_locator_set_dump / details # unused L2 keyword: LISP locator_set shpuld be configured correctly
-    # lisp_map_server_dump / details # honeycomb
-    # lisp_map_resolver_dump / details # unused L2 keyword: LISP map resolver address should be configured correctly
-    macip_acl_add: '0x0c680ca5'  # perf
-    macip_acl_add_reply: '0xac407b0c'  # perf
-    macip_acl_details: '0xe164e69a'  # perf teardown
-    macip_acl_dump: '0xef34fea4'  # perf teardown
-    macip_acl_interface_add_del: '0x6a6be97c'  # perf
-    macip_acl_interface_add_del_reply: '0xe8d4e804'  # perf
-    macip_acl_interface_get: '0x51077d14'  # perf teardown
-    macip_acl_interface_get_reply: '0xaccf9b05'  # perf teardown
-    # 8x^ tc01-64B-1c-eth-l2bdbasemaclrn-macip-iacl1sl-100flows-mrr
-    # ^ macipANDacl1AND100_flows
-    memif_create: '0xb1b25061'  # dev
-    memif_create_reply: '0x5383d31f'  # dev
-    memif_details: '0xd0382c4c'  # dev
-    memif_dump: '0x51077d14'  # dev
-    memif_socket_filename_add_del: '0xa2ce1a10'  # dev
-    memif_socket_filename_add_del_reply: '0xe8d4e804'  # dev
-    nat44_interface_add_del_feature: '0xf3699b83'  # perf
-    nat44_interface_add_del_feature_reply: '0xe8d4e804'  # perf
-    nat_det_add_del_map: '0x112fde05'  # perf
-    nat_det_add_del_map_reply: '0xe8d4e804'  # perf
-    nat_show_config: '0x51077d14'  # perf teardown
-    nat_show_config_reply: '0x006a0786'  # perf teardown
-    # 6x^ tc01-64B-1c-ethip4udp-ip4base-nat44-mrr
-    # ^ nat44NOTscaleNOTsrc_user_1
-    policer_add_del: '0xdfea2be8'  # dev
-    policer_add_del_reply: '0xa177cef2'  # dev
-    policer_classify_set_interface: '0xde7ad708'  # dev
-    policer_classify_set_interface_reply: '0xe8d4e804'  # dev
-    # 4x^ tc01-64B-ethip4-ip4base-ipolicemarkbase-dev
-    rdma_create: '0x541ffa8e'  # perf
-    rdma_create_reply: '0xfda5941f'  # perf
-    # show_lisp_map_register_state / reply # honeycomb
-    # show_lisp_map_request_mode / reply # honeycomb
-    # show_lisp_pitr / reply # honeycomb
-    # show_lisp_rloc_probe_state / reply # honeycomb
-    # show_lisp_status / reply # unused L2 keywords: LISP should be enabled / disabled
-    # show_lisp_use_petr / reply # honeycomb
-    show_threads: '0x51077d14'  # dev
-    show_threads_reply: '0xf5e0b66f'  # dev
-    show_version: '0x51077d14'  # dev setup
-    show_version_reply: '0xc919bde1'  # dev setup
-    sr_localsid_add_del: '0xb30489eb'  # perf
-    sr_localsid_add_del_reply: '0xe8d4e804'  # perf
-    sr_localsids_details: '0x0791babc'  # perf teardown
-    sr_localsids_dump: '0x51077d14'  # perf teardown
-    sr_policies_details: '0x5087f460'  # perf teardown
-    sr_policies_dump: '0x51077d14'  # perf teardown
-    sr_policy_add: '0x4b6e2484'  # perf
-    sr_policy_add_reply: '0xe8d4e804'  # perf
-    sr_set_encap_source: '0xd05bb4de'  # perf
-    sr_set_encap_source_reply: '0xe8d4e804'  # perf
-    sr_steering_add_del: '0x28b5dcab'  # perf
-    sr_steering_add_del_reply: '0xe8d4e804'  # perf
-    sr_steering_pol_details: '0x5627d483'  # perf teardown
-    sr_steering_pol_dump: '0x51077d14'  # perf teardown
-    # 14x^ tc01-78B-1c-ethip6ip6-ip6base-srv6enc1sid-mrr
-    # ^ srv6_1sid
-    sw_interface_add_del_address: '0x5803d5c4'  # dev
-    sw_interface_add_del_address_reply: '0xe8d4e804'  # dev
-    sw_interface_bond_details: '0xf5ef2106'  # perf
-    sw_interface_bond_dump: '0x51077d14'  # perf
-    # ^^ see bond_*
-    sw_interface_details: '0x17b69fa2'  # dev setup
-    sw_interface_dump: '0xaa610c27'  # dev setup
-    # sw_interface_get_table / reply # honeycomb
-    sw_interface_ip6nd_ra_config: '0xc3f02daa'  # dev
-    sw_interface_ip6nd_ra_config_reply: '0xe8d4e804'  # dev
-    sw_interface_rx_placement_details: '0xf6d7d024'  # perf
-    sw_interface_rx_placement_dump: '0xf9e6675e'  # perf
-    # ^^ tc01-64B-1c-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-mrr
-    # ^ dot1qANDl2bdmaclrnANDbaseANDmemif
-    sw_interface_set_flags: '0x6a2b491a'  # dev
-    sw_interface_set_flags_reply: '0xe8d4e804'  # dev
-    sw_interface_set_l2_bridge: '0x5579f809'  # dev
-    sw_interface_set_l2_bridge_reply: '0xe8d4e804'  # dev
-    sw_interface_set_l2_xconnect: '0x95de3988'  # dev
-    sw_interface_set_l2_xconnect_reply: '0xe8d4e804'  # dev
-    sw_interface_set_rx_placement: '0xdb65f3c9'  # perf
-    sw_interface_set_rx_placement_reply: '0xe8d4e804'  # perf
-    # ^^ see tc01-64B-1c-dot1q-l2bdbasemaclrn-eth-2memif-1dcr-mrr above
-    sw_interface_set_table: '0xdf42a577'  # dev
-    sw_interface_set_table_reply: '0xe8d4e804'  # dev
-    sw_interface_set_unnumbered: '0x938ef33b'  # perf
-    sw_interface_set_unnumbered_reply: '0xe8d4e804'  # perf
-    # ^^ see ipsec_tunnel_if_add_del
-    sw_interface_set_vxlan_bypass: '0xe74ca095'  # dev
-    sw_interface_set_vxlan_bypass_reply: '0xe8d4e804'  # dev
-    sw_interface_slave_details: '0x3c4a0e23'  # perf
-    sw_interface_slave_dump: '0xf9e6675e'  # perf
-    # ^^ see bond_*
-    # sw_interface_span_dump / details # honeycomb
-    sw_interface_tap_v2_dump: '0x51077d14'  # dev
-    sw_interface_tap_v2_details: '0x5ee87a5f'  # dev
-    sw_interface_vhost_user_details: '0x91ff3307'  # dev
-    sw_interface_vhost_user_dump: '0x51077d14'  # dev
-    tap_create_v2: '0x8fa99320'  # dev
-    tap_create_v2_reply: '0xfda5941f'  # dev
-    vxlan_add_del_tunnel: '0x00f4bdd0'  # dev
-    vxlan_add_del_tunnel_reply: '0xfda5941f'  # dev
-    # vxlan_gpe_tunnel_dump / details # honeycomb
-    # vxlan_tunnel_dump /details # unused L2 keyword: Get VXLAN dump
-# Please keep alphabetic order.
-# Use bash command "env LC_COLLATE=C sort -u" if not clear.
-
-
-# https://gerrit.fd.io/r/c/vpp/+/21706
-21706/17:
+# /vpp-merge-master-ubuntu1804/251/
+20.01-rc0~828:
     acl_add_replace: '0x13bc8539'  # dev
     acl_add_replace_reply: '0xac407b0c'  # dev
     acl_details: '0xf89d7a88'  # perf teardown
     vxlan_add_del_tunnel_reply: '0xfda5941f'  # dev
     # vxlan_gpe_tunnel_dump / details # honeycomb
     # vxlan_tunnel_dump /details # unused L2 keyword: Get VXLAN dump
+# Please keep alphabetic order.
+# Use bash command "env LC_COLLATE=C sort -u" if not clear.
 
 
 # Hint to see the currently used command messages:
index 04961fa..c3df1fe 100644 (file)
@@ -117,12 +117,10 @@ class IPUtil:
         if not sw_if_index:
             return list()
 
-        is_ipv6 = 1 if ip_version == u"ipv6" else 0
-
         cmd = u"ip_address_dump"
         args = dict(
             sw_if_index=sw_if_index,
-            is_ipv6=is_ipv6
+            is_ipv6=bool(ip_version == u"ipv6")
         )
         err_msg = f"Failed to get L2FIB dump on host {node[u'host']}"
 
@@ -430,7 +428,7 @@ class IPUtil:
         )
         cmd = u"ip_neighbor_add_del"
         args = dict(
-            is_add=1,
+            is_add=True,
             neighbor=neighbor
         )
         err_msg = f"Failed to add IP neighbor on interface {iface_key}"
@@ -607,8 +605,8 @@ class IPUtil:
         net_addr = ip_address(network)
         cmd = u"ip_route_add_del"
         args = dict(
-            is_add=1,
-            is_multipath=int(kwargs.get(u"multipath", False)),
+            is_add=True,
+            is_multipath=kwargs.get(u"multipath", False),
             route=None
         )
         err_msg = f"Failed to add route(s) on host {node[u'host']}"
@@ -656,11 +654,11 @@ class IPUtil:
         cmd = u"ip_table_add_del"
         table = dict(
             table_id=int(table_id),
-            is_ip6=int(ipv6)
+            is_ip6=ipv6
         )
         args = dict(
             table=table,
-            is_add=1
+            is_add=True
         )
         err_msg = f"Failed to add FIB table on host {node[u'host']}"
 
index 19f6024..041a774 100644 (file)
@@ -13,7 +13,6 @@
 
 """Tap utilities library."""
 
-from ipaddress import ip_address
 from robot.api import logger
 
 from resources.libraries.python.Constants import Constants
@@ -27,33 +26,36 @@ class Tap:
     """Tap utilities."""
 
     @staticmethod
-    def add_tap_interface(node, tap_name, mac=None):
+    def add_tap_interface(node, tap_name, mac=None, num_rx_queues=1):
         """Add tap interface with name and optionally with MAC.
 
         :param node: Node to add tap on.
         :param tap_name: Tap interface name for linux tap.
         :param mac: Optional MAC address for VPP tap.
+        :param num_rx_queues: Number of RX queues.
         :type node: dict
         :type tap_name: str
         :type mac: str
+        :type num_rx_queues: int
         :returns: Returns a interface index.
         :rtype: int
         """
         cmd = u"tap_create_v2"
         args = dict(
             id=Constants.BITWISE_NON_ZERO,
-            use_random_mac=0 if mac else 1,
-            mac_address=L2Util.mac_to_bin(mac) if mac else 6 * b"\0",
-            host_namespace=64 * b"\0",
-            host_mac_addr=6 * b"\0",
-            host_if_name_set=1,
-            host_if_name=tap_name.encode(encoding=u"utf-8") +
-            (64 - len(tap_name)) * b"\0",
-            host_bridge=64 * b"\0",
-            host_ip4_addr=4 * b"\0",
-            host_ip6_addr=16 * b"\0",
-            host_ip4_gw=4 * b"\0",
-            host_ip6_gw=16 * b"\0"
+            use_random_mac=bool(mac is None),
+            mac_address=L2Util.mac_to_bin(mac) if mac else None,
+            num_rx_queues=int(num_rx_queues),
+            host_mtu_set=False,
+            host_mac_addr_set=False,
+            host_ip4_prefix_set=False,
+            host_ip6_prefix_set=False,
+            host_ip4_gw_set=False,
+            host_ip6_gw_set=False,
+            host_namespace_set=False,
+            host_if_name_set=True,
+            host_if_name=tap_name,
+            host_bridge_set=False
         )
         err_msg = f"Failed to create tap interface {tap_name} " \
             f"on host {node[u'host']}"
@@ -119,11 +121,18 @@ class Tap:
             :returns: Processed tap interface dump.
             :rtype: dict
             """
-            tap_dump[u"host_mac_addr"] = L2Util.bin_to_mac(
-                tap_dump[u"host_mac_addr"]
-            )
-            tap_dump[u"host_ip4_addr"] = ip_address(tap_dump[u"host_ip4_addr"])
-            tap_dump[u"host_ip6_addr"] = ip_address(tap_dump[u"host_ip6_addr"])
+            tap_dump[u"host_mac_addr"] = str(tap_dump[u"host_mac_addr"])
+            tap_dump[u"host_ip4_prefix"] = str(tap_dump[u"host_ip4_prefix"])
+            tap_dump[u"host_ip6_prefix"] = str(tap_dump[u"host_ip6_prefix"])
+            tap_dump[u"tap_flags"] = tap_dump[u"tap_flags"].value \
+                if hasattr(tap_dump[u"tap_flags"], u"value") \
+                else int(tap_dump[u"tap_flags"])
+            tap_dump[u"host_namespace"] = None \
+                if tap_dump[u"host_namespace"] == u"(nil)" \
+                else tap_dump[u"host_namespace"]
+            tap_dump[u"host_bridge"] = None \
+                if tap_dump[u"host_bridge"] == u"(nil)" \
+                else tap_dump[u"host_bridge"]
 
             return tap_dump