summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xexamples/cgroup.py4
-rwxr-xr-xexamples/withallsubuids.py4
-rw-r--r--linuxnamespaces/__init__.py5
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