32 lines · python
1# SPDX-License-Identifier: GPL-2.02 3from .utils import ip4import random5import string6 7 8class NetNS:9 def __init__(self, name=None):10 if name:11 self.name = name12 else:13 self.name = ''.join(random.choice(string.ascii_lowercase) for _ in range(8))14 ip('netns add ' + self.name)15 16 def __del__(self):17 if self.name:18 ip('netns del ' + self.name)19 self.name = None20 21 def __enter__(self):22 return self23 24 def __exit__(self, ex_type, ex_value, ex_tb):25 self.__del__()26 27 def __str__(self):28 return self.name29 30 def __repr__(self):31 return f"NetNS({self.name})"32