kata-containers/runtime/patches/0013-kata-runtime-get-container-info-by-containerID-prefi.patch
holyfei c709612f2a kata-containers: modify kata-containers version
Fix #I4KI81
reason: modify kata-containers version and update
it to 1.11.1

Signed-off-by: holyfei <yangfeiyu20092010@163.com>
2021-11-30 20:08:25 +08:00

99 lines
2.7 KiB
Diff

From fd63d26a5b0542f35d61b0c19c80795f052b4518 Mon Sep 17 00:00:00 2001
From: jiangpengfei <jiangpengfei9@huawei.com>
Date: Tue, 28 Jul 2020 22:05:44 +0800
Subject: [PATCH 13/50] kata-runtime: get container info by containerID prefix
reason: get container info by containerID prefix, so we just
need to input the prefix containerID when call kata-runtime
subcommand
Signed-off-by: jiangpengfei <jiangpengfei9@huawei.com>
---
cli/oci.go | 35 +++++++++++++++++++++++++++++++++++
pkg/katautils/oci.go | 5 +++++
2 files changed, 40 insertions(+)
diff --git a/cli/oci.go b/cli/oci.go
index 8ffac2df..bf962d03 100644
--- a/cli/oci.go
+++ b/cli/oci.go
@@ -9,6 +9,7 @@ import (
"bufio"
"context"
"fmt"
+ "io/ioutil"
"net"
"os"
"path/filepath"
@@ -25,6 +26,8 @@ const (
// Filesystem type corresponding to CGROUP_SUPER_MAGIC as listed
// here: http://man7.org/linux/man-pages/man2/statfs.2.html
cgroupFsType = 0x27e0eb
+
+ maxIDLength = 64
)
var cgroupsDirPath string
@@ -38,6 +41,14 @@ func getContainerInfo(ctx context.Context, containerID string) (vc.ContainerStat
return vc.ContainerStatus{}, "", fmt.Errorf("Missing container ID")
}
+ if len(containerID) < maxIDLength {
+ fullContainerID, err := getContainerIDbyPrefix(containerID)
+ if err != nil {
+ return vc.ContainerStatus{}, "", err
+ }
+ containerID = fullContainerID
+ }
+
sandboxID, err := katautils.FetchContainerIDMapping(containerID)
if err != nil {
return vc.ContainerStatus{}, "", err
@@ -211,3 +222,27 @@ func getCgroupsDirPath(mountInfoFile string) (string, error) {
return cgroupRootPath, nil
}
+
+func getContainerIDbyPrefix(prefix string) (string, error) {
+ files, err := ioutil.ReadDir(katautils.GetCtrsMapTreePath())
+ if err != nil {
+ return "", err
+ }
+
+ containers := []string{}
+ for _, file := range files {
+ if file.IsDir() && strings.HasPrefix(file.Name(), prefix) {
+ containers = append(containers, file.Name())
+ }
+ }
+
+ if len(containers) == 0 {
+ return "", fmt.Errorf("no such container ID (%v)", prefix)
+ }
+
+ if len(containers) > 1 {
+ return "", fmt.Errorf("multiple containers found (%v)", prefix)
+ }
+
+ return containers[0], nil
+}
diff --git a/pkg/katautils/oci.go b/pkg/katautils/oci.go
index 6de8101e..1334af35 100644
--- a/pkg/katautils/oci.go
+++ b/pkg/katautils/oci.go
@@ -25,6 +25,11 @@ func SetCtrsMapTreePath(path string) {
ctrsMapTreePath = path
}
+// GetCtrsMapTreePath return the containerID to SandboxID mapping dir
+func GetCtrsMapTreePath() string {
+ return ctrsMapTreePath
+}
+
// doUpdatePath returns whether a ctrsMapTreePath needs to be updated with a rootless prefix
func doUpdatePath() bool {
return rootless.IsRootless() && !strings.HasPrefix(ctrsMapTreePath, rootless.GetRootlessDir())
--
2.14.3 (Apple Git-98)