|
|
|
@ -567,11 +567,19 @@ def create_netns(name, **kwargs):
|
|
|
|
|
|
|
|
|
|
:param name: The name of the namespace to create |
|
|
|
|
""" |
|
|
|
|
try: |
|
|
|
|
netns.create(name, libc=_get_cdll()) |
|
|
|
|
except OSError as e: |
|
|
|
|
if e.errno != errno.EEXIST: |
|
|
|
|
raise |
|
|
|
|
pid = os.fork() |
|
|
|
|
if pid == 0: |
|
|
|
|
try: |
|
|
|
|
netns.create(name, libc=_get_cdll()) |
|
|
|
|
except OSError as e: |
|
|
|
|
if e.errno != errno.EEXIST: |
|
|
|
|
os._exit(1) |
|
|
|
|
except Exception: |
|
|
|
|
os._exit(1) |
|
|
|
|
os._exit(0) |
|
|
|
|
else: |
|
|
|
|
if os.waitpid(pid, 0)[1]: |
|
|
|
|
raise RuntimeError(_('Error creating namespace %s') % name) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@privileged.default.entrypoint |
|
|
|
|