From 64b2dab795e171e2ea0345732e96048cfb605466 Mon Sep 17 00:00:00 2001 From: Helmut Grohne Date: Sat, 26 Oct 2024 20:22:36 +0200 Subject: add a method IDMapping.identity for convenience --- examples/cgroup.py | 4 ++-- examples/withallsubuids.py | 4 ++-- linuxnamespaces/__init__.py | 5 +++++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/examples/cgroup.py b/examples/cgroup.py index 219dc62..34bf01b 100755 --- a/examples/cgroup.py +++ b/examples/cgroup.py @@ -56,8 +56,8 @@ def main() -> None: | linuxnamespaces.CloneFlags.NEWCGROUP ) linuxnamespaces.unshare_user_idmap( - [linuxnamespaces.IDMapping(os.getuid(), os.getuid(), 1)], - [linuxnamespaces.IDMapping(os.getgid(), os.getgid(), 1)], + [linuxnamespaces.IDMapping.identity(os.getuid())], + [linuxnamespaces.IDMapping.identity(os.getgid())], namespaces, ) linuxnamespaces.populate_sys("/", "/", namespaces, mycgroup) diff --git a/examples/withallsubuids.py b/examples/withallsubuids.py index 3bed3bc..2a0c9d5 100755 --- a/examples/withallsubuids.py +++ b/examples/withallsubuids.py @@ -19,7 +19,7 @@ import linuxnamespaces def main() -> None: # Construct an identity mapping of all available user/group ids uidmap = [ - linuxnamespaces.IDMapping(os.getuid(), os.getuid(), 1), + linuxnamespaces.IDMapping.identity(os.getuid()), *( linuxnamespaces.IDMapping(start, start, count) for start, count @@ -27,7 +27,7 @@ def main() -> None: ), ] gidmap = [ - linuxnamespaces.IDMapping(os.getgid(), os.getgid(), 1), + linuxnamespaces.IDMapping.identity(os.getgid()), *( linuxnamespaces.IDMapping(start, start, count) for start, count diff --git a/linuxnamespaces/__init__.py b/linuxnamespaces/__init__.py index 8c1def3..a2c7985 100644 --- a/linuxnamespaces/__init__.py +++ b/linuxnamespaces/__init__.py @@ -59,6 +59,11 @@ class IDMapping: if self.innerstart + self.count >= 1 << 64: raise ValueError("innerstart + count exceed 64bits") + @classmethod + def identity(cls, idn: int, count: int = 1) -> typing.Self: + """Construct an identity mapping for the given identifier.""" + return cls(idn, idn, count) + class IDAllocation: """This represents a subset of IDs (user or group). It can be used to -- cgit v1.2.3