from pprint import pformat
from socket import AF_INET, inet_pton
-
from enum import IntEnum
from robot.api import logger
from resources.libraries.python.InterfaceUtil import InterfaceUtil
-from resources.libraries.python.PapiExecutor import PapiExecutor
+from resources.libraries.python.PapiExecutor import PapiSocketExecutor
class NATConfigFlags(IntEnum):
NAT_IS_EXT_HOST_VALID = 0x80
-class NATUtil(object):
+class NATUtil:
"""This class defines the methods to set NAT."""
def __init__(self):
:type int_in: str
:type int_out: str
"""
-
- cmd = 'nat44_interface_add_del_feature'
+ cmd = u"nat44_interface_add_del_feature"
int_in_idx = InterfaceUtil.get_sw_if_index(node, int_in)
- err_msg = 'Failed to set inside interface {int} for NAT44 on host ' \
- '{host}'.format(int=int_in, host=node['host'])
+ err_msg = f"Failed to set inside interface {int_in} for NAT44 " \
+ f"on host {node[u'host']}"
args_in = dict(
sw_if_index=int_in_idx,
is_add=1,
- flags=getattr(NATConfigFlags, "NAT_IS_INSIDE").value
+ flags=getattr(NATConfigFlags, u"NAT_IS_INSIDE").value
)
- with PapiExecutor(node) as papi_exec:
+
+ with PapiSocketExecutor(node) as papi_exec:
papi_exec.add(cmd, **args_in).get_reply(err_msg)
int_out_idx = InterfaceUtil.get_sw_if_index(node, int_out)
- err_msg = 'Failed to set outside interface {int} for NAT44 on host ' \
- '{host}'.format(int=int_out, host=node['host'])
+ err_msg = f"Failed to set outside interface {int_out} for NAT44 " \
+ f"on host {node[u'host']}"
args_in = dict(
sw_if_index=int_out_idx,
is_add=1,
- flags=getattr(NATConfigFlags, "NAT_IS_OUTSIDE").value
+ flags=getattr(NATConfigFlags, u"NAT_IS_OUTSIDE").value
)
- with PapiExecutor(node) as papi_exec:
+
+ with PapiSocketExecutor(node) as papi_exec:
papi_exec.add(cmd, **args_in).get_reply(err_msg)
@staticmethod
:type ip_out: str
:type subnet_out: str or int
"""
-
- cmd = 'nat_det_add_del_map'
- err_msg = 'Failed to set deterministic behaviour of NAT on host ' \
- '{host}'.format(host=node['host'])
+ cmd = u"nat_det_add_del_map"
+ err_msg = f"Failed to set deterministic behaviour of NAT " \
+ f"on host {node[u'host']}"
args_in = dict(
is_add=True,
in_addr=inet_pton(AF_INET, str(ip_in)),
out_addr=inet_pton(AF_INET, str(ip_out)),
out_plen=int(subnet_out)
)
- with PapiExecutor(node) as papi_exec:
+
+ with PapiSocketExecutor(node) as papi_exec:
papi_exec.add(cmd, **args_in).get_reply(err_msg)
@staticmethod
:param node: DUT node.
:type node: dict
"""
+ cmd = u"nat_show_config"
+ err_msg = f"Failed to get NAT configuration on host {node[u'host']}"
- cmd = 'nat_show_config'
- err_msg = 'Failed to get NAT configuration on host {host}'.\
- format(host=node['host'])
- with PapiExecutor(node) as papi_exec:
+ with PapiSocketExecutor(node) as papi_exec:
reply = papi_exec.add(cmd).get_reply(err_msg)
- logger.debug("NAT Configuration:\n{reply}".format(reply=pformat(reply)))
+
+ logger.debug(f"NAT Configuration:\n{pformat(reply)}")
cmds = [
- "nat_worker_dump",
- "nat44_interface_addr_dump",
- "nat44_address_dump",
- "nat44_static_mapping_dump",
- "nat44_user_dump",
- "nat44_interface_dump",
- "nat44_user_session_dump",
- "nat_det_map_dump"
+ u"nat_worker_dump",
+ u"nat44_interface_addr_dump",
+ u"nat44_address_dump",
+ u"nat44_static_mapping_dump",
+ u"nat44_user_dump",
+ u"nat44_interface_dump",
+ u"nat44_user_session_dump",
+ u"nat_det_map_dump"
]
- PapiExecutor.dump_and_log(node, cmds)
+ PapiSocketExecutor.dump_and_log(node, cmds)