core/runtime: Check shim PluginInfo to enforce idmap support
This commit gets rid of the TODO by moving the check to use the pluginInfo() infrastructure. The check is only enforced for shims that return info that can be read as type runtime.Features. For shims that don't provide that, we just ignore it, as those shims might not be affected by this. Signed-off-by: Rodrigo Campos <rodrigoca@microsoft.com>
This commit is contained in:
@@ -21,7 +21,6 @@ package process
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
@@ -32,7 +31,6 @@ import (
|
||||
|
||||
"github.com/containerd/errdefs"
|
||||
runc "github.com/containerd/go-runc"
|
||||
specs "github.com/opencontainers/runtime-spec/specs-go"
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
@@ -41,8 +39,6 @@ const (
|
||||
RuncRoot = "/run/containerd/runc"
|
||||
// InitPidFile name of the file that contains the init pid
|
||||
InitPidFile = "init.pid"
|
||||
// configFile is the name of the runc config file
|
||||
configFile = "config.json"
|
||||
)
|
||||
|
||||
// safePid is a thread safe wrapper for pid.
|
||||
@@ -188,23 +184,3 @@ func stateName(v interface{}) string {
|
||||
}
|
||||
panic(fmt.Errorf("invalid state %v", v))
|
||||
}
|
||||
|
||||
func readConfig(path string) (spec *specs.Spec, err error) {
|
||||
cfg := filepath.Join(path, configFile)
|
||||
f, err := os.Open(cfg)
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
return nil, fmt.Errorf("JSON specification file %s not found", cfg)
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
if err = json.NewDecoder(f).Decode(&spec); err != nil {
|
||||
return nil, fmt.Errorf("failed to parse config: %w", err)
|
||||
}
|
||||
if spec == nil {
|
||||
return nil, errors.New("config cannot be null")
|
||||
}
|
||||
return spec, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user