From 29bb2a8b9c2765547ac4d535f2ce00ffb91cb6f3 Mon Sep 17 00:00:00 2001 From: Etienne Champetier Date: Wed, 22 Jan 2025 21:22:00 -0500 Subject: [PATCH] runtime-tools/generate: adjust LinuxNamespaces Signed-off-by: Etienne Champetier --- pkg/runtime-tools/generate/generate.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/pkg/runtime-tools/generate/generate.go b/pkg/runtime-tools/generate/generate.go index cd2bc287..dc7a41e8 100644 --- a/pkg/runtime-tools/generate/generate.go +++ b/pkg/runtime-tools/generate/generate.go @@ -117,6 +117,9 @@ func (g *Generator) Adjust(adjust *nri.ContainerAdjustment) error { g.AdjustDevices(adjust.GetLinux().GetDevices()) g.AdjustCgroupsPath(adjust.GetLinux().GetCgroupsPath()) g.AdjustOomScoreAdj(adjust.GetLinux().GetOomScoreAdj()) + if err := g.AdjustNamespaces(adjust.GetLinux().GetNamespaces()); err != nil { + return err + } resources := adjust.GetLinux().GetResources() if err := g.AdjustResources(resources); err != nil { @@ -332,6 +335,25 @@ func (g *Generator) AdjustOomScoreAdj(score *nri.OptionalInt) { } } +// AdjustNamespaces adds or replaces namespaces in the OCI Spec. +func (g *Generator) AdjustNamespaces(namespaces []*nri.LinuxNamespace) error { + for _, n := range namespaces { + if n == nil { + continue + } + if key, marked := n.IsMarkedForRemoval(); marked { + if err := g.RemoveLinuxNamespace(key); err != nil { + return err + } + } else { + if err := g.AddOrReplaceLinuxNamespace(n.Type, n.Path); err != nil { + return err + } + } + } + return nil +} + // AdjustDevices adjusts the (Linux) devices in the OCI Spec. func (g *Generator) AdjustDevices(devices []*nri.LinuxDevice) { for _, d := range devices {