KubeOS/0013-KubeOS-fix-clean-space-problems.patch
Yuhang Wei 1d36b74685 KubeOS:sync code from source master branch
Signed-off-by: Yuhang Wei <weiyuhang3@huawei.com>
2024-02-26 09:54:27 +08:00

127 lines
4.0 KiB
Diff

From 1bc41e7e58e99e23cd8be522cc1c2d30090975d2 Mon Sep 17 00:00:00 2001
From: Yuhang Wei <weiyuhang3@huawei.com>
Date: Tue, 15 Aug 2023 16:33:11 +0800
Subject: [PATCH 13/17] KubeOS: fix clean space problems
add clean space function in server
change docker rm position in docker_image
Signed-off-by: Yuhang Wei <weiyuhang3@huawei.com>
---
cmd/agent/main.go | 4 +---
cmd/agent/server/docker_image.go | 6 +++---
cmd/agent/server/server.go | 9 +++++++++
cmd/agent/server/utils.go | 27 +++++++++++++--------------
4 files changed, 26 insertions(+), 20 deletions(-)
diff --git a/cmd/agent/main.go b/cmd/agent/main.go
index 67c7e2d..7b1ed3d 100644
--- a/cmd/agent/main.go
+++ b/cmd/agent/main.go
@@ -13,8 +13,6 @@
package main
import (
- "fmt"
-
"github.com/sirupsen/logrus"
"google.golang.org/grpc"
@@ -24,7 +22,7 @@ import (
)
func main() {
- fmt.Println("Version is:", version.Version)
+ logrus.Infoln("Version is:", version.Version)
l, err := server.NewListener(server.SockDir, server.SockName)
if err != nil {
logrus.Errorln("listen error" + err.Error())
diff --git a/cmd/agent/server/docker_image.go b/cmd/agent/server/docker_image.go
index 0b6ee35..16bcea5 100644
--- a/cmd/agent/server/docker_image.go
+++ b/cmd/agent/server/docker_image.go
@@ -61,13 +61,13 @@ func (d dockerImageHandler) getRootfsArchive(req *pb.UpdateRequest, neededPath p
if err != nil {
return "", err
}
- if err := runCommand("docker", "cp", containerId+":/"+neededPath.rootfsFile, neededPath.updatePath); err != nil {
- return "", err
- }
defer func() {
if err := runCommand("docker", "rm", containerId); err != nil {
logrus.Errorln("remove kubeos-temp container error", err)
}
}()
+ if err := runCommand("docker", "cp", containerId+":/"+neededPath.rootfsFile, neededPath.updatePath); err != nil {
+ return "", err
+ }
return neededPath.tarPath, nil
}
diff --git a/cmd/agent/server/server.go b/cmd/agent/server/server.go
index 8ac6ffd..f8cbb41 100644
--- a/cmd/agent/server/server.go
+++ b/cmd/agent/server/server.go
@@ -112,6 +112,15 @@ func (s *Server) update(req *pb.UpdateRequest) error {
return fmt.Errorf("image type %s cannot be recognized", action)
}
imagePath, err := handler.downloadImage(req)
+ defer func() {
+ if err != nil {
+ path := newPreparePath()
+ if err := cleanSpace(path.updatePath, path.mountPath, path.imagePath); err != nil {
+ logrus.Errorln("clean space error " + err.Error())
+ }
+ logrus.Infoln("clean space success")
+ }
+ }()
if err != nil {
return err
}
diff --git a/cmd/agent/server/utils.go b/cmd/agent/server/utils.go
index b42db18..d2d0946 100644
--- a/cmd/agent/server/utils.go
+++ b/cmd/agent/server/utils.go
@@ -190,26 +190,25 @@ func prepareEnv() (preparePath, error) {
if err := checkDiskSize(needGBSize, PersistDir); err != nil {
return preparePath{}, err
}
- rootfsFile := rootfsArchive
- updatePath := splicePath(PersistDir, updateDir)
- mountPath := splicePath(updatePath, mountDir)
- tarPath := splicePath(updatePath, rootfsFile)
- imagePath := splicePath(PersistDir, osImageName)
-
- if err := cleanSpace(updatePath, mountPath, imagePath); err != nil {
+ upgradePath := newPreparePath()
+ if err := cleanSpace(upgradePath.updatePath, upgradePath.mountPath, upgradePath.imagePath); err != nil {
return preparePath{}, err
}
- if err := os.MkdirAll(mountPath, imgPermission); err != nil {
+ if err := os.MkdirAll(upgradePath.mountPath, imgPermission); err != nil {
return preparePath{}, err
}
- upgradePath := preparePath{
+ return upgradePath, nil
+}
+
+func newPreparePath() preparePath {
+ updatePath := splicePath(PersistDir, updateDir)
+ return preparePath{
updatePath: updatePath,
- mountPath: mountPath,
- tarPath: tarPath,
- imagePath: imagePath,
- rootfsFile: rootfsFile,
+ mountPath: splicePath(updatePath, mountDir),
+ tarPath: splicePath(updatePath, rootfsArchive),
+ imagePath: splicePath(PersistDir, osImageName),
+ rootfsFile: rootfsArchive,
}
- return upgradePath, nil
}
func checkDiskSize(needGBSize int, path string) error {
--
2.39.0