Separate files needing GPL license
[csit.git] / resources / libraries / python / GBP.py
index 3625640..9d56d44 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 Cisco and/or its affiliates.
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at:
 """GBP utilities library."""
 
 from enum import IntEnum
+
 from ipaddress import ip_address
 
-from resources.libraries.python.IPUtil import IPUtil
+from resources.libraries.python.IPAddress import IPAddress
 from resources.libraries.python.L2Util import L2Util
 from resources.libraries.python.PapiExecutor import PapiSocketExecutor
 
@@ -42,8 +43,9 @@ class GBPBridgeDomainFlags(IntEnum):
 class GBPSubnetType(IntEnum):
     """GBP Subnet Type."""
     GBP_API_SUBNET_TRANSPORT = 1
-    GBP_API_SUBNET_STITCHED_INTERNAL = 2  # pylint: disable=invalid-name
-    GBP_API_SUBNET_STITCHED_EXTERNAL = 3  # pylint: disable=invalid-name
+    # TODO: Names too long for pylint, fix in VPP.
+    GBP_API_SUBNET_STITCHED_INTERNAL = 2
+    GBP_API_SUBNET_STITCHED_EXTERNAL = 3
     GBP_API_SUBNET_L3_OUT = 4
     GBP_API_SUBNET_ANON_L3_OUT = 5
 
@@ -68,7 +70,7 @@ class GBPHashMode(IntEnum):
     GBP_API_HASH_MODE_SYMETRIC = 3
 
 
-class GBP(object):
+class GBP:
     """GBP utilities."""
 
     @staticmethod
@@ -90,9 +92,8 @@ class GBP(object):
         :type ip4_uu_sw_if_index: int
         :type ip6_uu_sw_if_index: int
         """
-        cmd = 'gbp_route_domain_add'
-        err_msg = 'Failed to add GBP route domain on {node}!'\
-                  .format(node=node['host'])
+        cmd = u"gbp_route_domain_add"
+        err_msg = f"Failed to add GBP route domain on {node[u'host']}!"
 
         args_in = dict(
             rd=dict(
@@ -126,14 +127,14 @@ class GBP(object):
         :type uu_fwd_sw_if_index: int
         :type bm_flood_sw_if_index: int
         """
-        cmd = 'gbp_bridge_domain_add'
-        err_msg = 'Failed to add GBP bridge domain on {node}!'\
-                  .format(node=node['host'])
+        cmd = u"gbp_bridge_domain_add"
+        err_msg = f"Failed to add GBP bridge domain on {node[u'host']}!"
 
         args_in = dict(
             bd=dict(
                 flags=getattr(
-                    GBPBridgeDomainFlags, 'GBP_BD_API_FLAG_NONE').value,
+                    GBPBridgeDomainFlags, u"GBP_BD_API_FLAG_NONE"
+                ).value,
                 bvi_sw_if_index=bvi_sw_if_index,
                 uu_fwd_sw_if_index=uu_fwd_sw_if_index,
                 bm_flood_sw_if_index=bm_flood_sw_if_index,
@@ -166,9 +167,8 @@ class GBP(object):
         :type uplink_sw_if_index: int
         :type remote_ep_timeout: int
         """
-        cmd = 'gbp_endpoint_group_add'
-        err_msg = 'Failed to add GBP endpoint group on {node}!'\
-                  .format(node=node['host'])
+        cmd = u"gbp_endpoint_group_add"
+        err_msg = f"Failed to add GBP endpoint group on {node[u'host']}!"
 
         args_in = dict(
             epg=dict(
@@ -201,17 +201,13 @@ class GBP(object):
         :type mac_addr: str
         :type sclass: int
         """
-        cmd = 'gbp_endpoint_add'
-        err_msg = 'Failed to add GBP endpoint on {node}!'\
-                  .format(node=node['host'])
+        cmd = u"gbp_endpoint_add"
+        err_msg = f"Failed to add GBP endpoint on {node[u'host']}!"
 
         ips = list()
-        ips.append(IPUtil.create_ip_address_object(
-            ip_address(unicode(ip_addr))))
-        tun_src = IPUtil.create_ip_address_object(
-            ip_address(unicode('0.0.0.0')))
-        tun_dst = IPUtil.create_ip_address_object(
-            ip_address(unicode('0.0.0.0')))
+        ips.append(IPAddress.create_ip_address_object(ip_address(ip_addr)))
+        tun_src = IPAddress.create_ip_address_object(ip_address(u"0.0.0.0"))
+        tun_dst = IPAddress.create_ip_address_object(ip_address(u"0.0.0.0"))
 
         args_in = dict(
             endpoint=dict(
@@ -221,7 +217,8 @@ class GBP(object):
                 mac=L2Util.mac_to_bin(mac_addr),
                 sclass=sclass,
                 flags=getattr(
-                    GBPEndpointFlags, 'GBP_API_ENDPOINT_FLAG_EXTERNAL').value,
+                    GBPEndpointFlags, u"GBP_API_ENDPOINT_FLAG_EXTERNAL"
+                ).value,
                 tun=dict(
                     src=tun_src,
                     dst=tun_dst
@@ -245,17 +242,16 @@ class GBP(object):
         :type bd_id: int
         :type rd_id: int
         """
-        cmd = 'gbp_ext_itf_add_del'
-        err_msg = 'Failed to add external GBP interface on {node}!'\
-                  .format(node=node['host'])
+        cmd = u"gbp_ext_itf_add_del"
+        err_msg = u"Failed to add external GBP interface on {node[u'host']}!"
 
         args_in = dict(
-            is_add=1,
+            is_add=True,
             ext_itf=dict(
                 sw_if_index=sw_if_index,
                 bd_id=bd_id,
                 rd_id=rd_id,
-                flags=getattr(GBPExtItfFlags, 'GBP_API_EXT_ITF_F_NONE').value
+                flags=getattr(GBPExtItfFlags, u"GBP_API_EXT_ITF_F_NONE").value
             )
         )
 
@@ -281,19 +277,19 @@ class GBP(object):
         :type rd_id: int
         :type sw_if_index: int
         """
-        cmd = 'gbp_subnet_add_del'
-        err_msg = 'Failed to add GBP subnet on {node}!'\
-                  .format(node=node['host'])
+        cmd = u"gbp_subnet_add_del"
+        err_msg = f"Failed to add GBP subnet on {node[u'host']}!"
 
         args_in = dict(
-            is_add=1,
+            is_add=True,
             subnet=dict(
-                type=getattr(GBPSubnetType, 'GBP_API_SUBNET_L3_OUT').value,
+                type=getattr(GBPSubnetType, u"GBP_API_SUBNET_L3_OUT").value,
                 sw_if_index=sw_if_index,
                 sclass=sclass,
                 prefix=dict(
-                    address=IPUtil.create_ip_address_object(
-                        ip_address(unicode(address))),
+                    address=IPAddress.create_ip_address_object(
+                        ip_address(address)
+                    ),
                     len=int(subnet_length)
                 ),
                 rd_id=rd_id
@@ -318,14 +314,13 @@ class GBP(object):
         :type acl_index: int
         :type hash_mode: str
         """
-        cmd = 'gbp_contract_add_del'
-        err_msg = 'Failed to add GBP contract on {node}!'\
-                  .format(node=node['host'])
+        cmd = u"gbp_contract_add_del"
+        err_msg = f"Failed to add GBP contract on {node[u'host']}!"
 
-        hash_mode = 'GBP_API_HASH_MODE_SRC_IP' if hash_mode is None \
+        hash_mode = u"GBP_API_HASH_MODE_SRC_IP" if hash_mode is None \
             else hash_mode
         rule_permit = dict(
-            action=getattr(GBPRuleAction, 'GBP_API_RULE_PERMIT').value,
+            action=getattr(GBPRuleAction, u"GBP_API_RULE_PERMIT").value,
             nh_set=dict(
                 hash_mode=getattr(GBPHashMode, hash_mode).value,
                 n_nhs=8,
@@ -335,7 +330,7 @@ class GBP(object):
         rules = [rule_permit, rule_permit]
 
         args_in = dict(
-            is_add=1,
+            is_add=True,
             contract=dict(
                 acl_index=acl_index,
                 sclass=sclass,