| # SPDX-License-Identifier: GPL-2.0 |
| |
| from .utils import ip |
| import random |
| import string |
| |
| |
| class NetNS: |
| def __init__(self, name=None): |
| if name: |
| self.name = name |
| else: |
| self.name = ''.join(random.choice(string.ascii_lowercase) for _ in range(8)) |
| ip('netns add ' + self.name) |
| |
| def __del__(self): |
| if self.name: |
| ip('netns del ' + self.name) |
| self.name = None |
| |
| def __enter__(self): |
| return self |
| |
| def __exit__(self, ex_type, ex_value, ex_tb): |
| self.__del__() |
| |
| def __str__(self): |
| return self.name |
| |
| def __repr__(self): |
| return f"NetNS({self.name})" |