From dc5457b0844951049cf5ee9e448e2759d2802298 Mon Sep 17 00:00:00 2001 From: zhangxiaoyu Date: Tue, 7 Sep 2021 10:10:07 +0800 Subject: [PATCH] sync from openeuler Signed-off-by: zhangxiaoyu --- 0001-remove-residual-objects.patch | 214 ++++++++++++++++++++++ 0002-remove-residual-in-infrastruce.patch | 115 ++++++++++++ eggo.spec | 11 +- 3 files changed, 339 insertions(+), 1 deletion(-) create mode 100644 0001-remove-residual-objects.patch create mode 100644 0002-remove-residual-in-infrastruce.patch diff --git a/0001-remove-residual-objects.patch b/0001-remove-residual-objects.patch new file mode 100644 index 0000000..24cf73a --- /dev/null +++ b/0001-remove-residual-objects.patch @@ -0,0 +1,214 @@ +From 989d35593ad625cafa6ce60a1dc57c8bd2a917c8 Mon Sep 17 00:00:00 2001 +From: haozi007 +Date: Thu, 2 Sep 2021 03:02:35 +0100 +Subject: [PATCH 1/2] remove residual objects + +Signed-off-by: haozi007 +--- + pkg/clusterdeployment/binary/binary.go | 30 +++++++++++++++++++ + .../binary/controlplane/controlplane.go | 2 +- + .../binary/infrastructure/infrastructure.go | 11 ++++++- + pkg/clusterdeployment/clusterdeploy.go | 1 + + pkg/clusterdeployment/runtime/runtime.go | 4 +-- + pkg/constants/constants.go | 5 ++-- + pkg/utils/runner/runner.go | 15 +++++++--- + 7 files changed, 58 insertions(+), 10 deletions(-) + +diff --git a/pkg/clusterdeployment/binary/binary.go b/pkg/clusterdeployment/binary/binary.go +index 246f547..4596047 100644 +--- a/pkg/clusterdeployment/binary/binary.go ++++ b/pkg/clusterdeployment/binary/binary.go +@@ -444,11 +444,37 @@ func (bcp *BinaryClusterDeployment) PreDeleteClusterHooks() { + } + } + ++func clearResiduals(nodes []*api.HostConfig, confDir string) error { ++ if len(nodes) == 0 { ++ return nil ++ } ++ ++ var strNodes []string ++ for _, n := range nodes { ++ strNodes = append(strNodes, n.Address) ++ } ++ ++ shell := fmt.Sprintf("#!/bin/bash\nrm -rf %s\nexit 0", confDir) ++ ++ checker := task.NewTaskIgnoreErrInstance( ++ &commontools.RunShellTask{ ++ ShellName: "checkMaster", ++ Shell: shell, ++ }, ++ ) ++ ++ return nodemanager.RunTaskOnNodes(checker, strNodes) ++} ++ + func (bcp *BinaryClusterDeployment) PostDeleteClusterHooks() { + role := []uint16{api.Worker, api.Master, api.ETCD, api.LoadBalance} + if err := dependency.HookSchedule(bcp.config, bcp.config.Nodes, role, api.SchedulePostCleanup); err != nil { + logrus.Warnf("Ignore: Delete cluster PostHook failed: %v", err) + } ++ // clear all residual objects ++ if err := clearResiduals(bcp.config.Nodes, bcp.config.GetConfigDir()); err != nil { ++ logrus.Warnf("Ignore: Delete cluster PostHook failed: %v", err) ++ } + } + + func (bcp *BinaryClusterDeployment) PreNodeJoinHooks(node *api.HostConfig) error { +@@ -562,4 +588,8 @@ func (bcp *BinaryClusterDeployment) PostNodeCleanupHooks(node *api.HostConfig) { + if err := dependency.HookSchedule(bcp.config, []*api.HostConfig{node}, role, api.SchedulePostCleanup); err != nil { + logrus.Warnf("Ignore: Delete Node PostHook failed: %v", err) + } ++ ++ if err := clearResiduals([]*api.HostConfig{node}, bcp.config.GetConfigDir()); err != nil { ++ logrus.Warnf("Ignore: Delete cluster PostHook failed: %v", err) ++ } + } +diff --git a/pkg/clusterdeployment/binary/controlplane/controlplane.go b/pkg/clusterdeployment/binary/controlplane/controlplane.go +index 38e138f..5e6a8a0 100644 +--- a/pkg/clusterdeployment/binary/controlplane/controlplane.go ++++ b/pkg/clusterdeployment/binary/controlplane/controlplane.go +@@ -636,7 +636,7 @@ func (ct *PostControlPlaneTask) bootstrapClusterRoleBinding(r runner.Runner) err + } + + func (ct *PostControlPlaneTask) kubeletServerCRB(r runner.Runner) error { +- if !ct.cluster.WorkerConfig.KubeletConf.EnableServer { ++ if ct.cluster.WorkerConfig.KubeletConf == nil || !ct.cluster.WorkerConfig.KubeletConf.EnableServer { + return nil + } + +diff --git a/pkg/clusterdeployment/binary/infrastructure/infrastructure.go b/pkg/clusterdeployment/binary/infrastructure/infrastructure.go +index 5a489dc..71ad610 100644 +--- a/pkg/clusterdeployment/binary/infrastructure/infrastructure.go ++++ b/pkg/clusterdeployment/binary/infrastructure/infrastructure.go +@@ -27,6 +27,7 @@ import ( + + "isula.org/eggo/pkg/api" + "isula.org/eggo/pkg/clusterdeployment/binary/cleanupcluster" ++ "isula.org/eggo/pkg/constants" + "isula.org/eggo/pkg/utils" + "isula.org/eggo/pkg/utils/dependency" + "isula.org/eggo/pkg/utils/nodemanager" +@@ -319,6 +320,13 @@ func (it *DestroyInfraTask) Name() string { + return "DestroyInfraTask" + } + ++func getCopyDefaultDir(user string) string { ++ if user == "root" { ++ return constants.DefaultRootCopyTempDirHome ++ } ++ return fmt.Sprintf(constants.DefaultUserCopyTempHomeFormat, user) ++} ++ + func (it *DestroyInfraTask) Run(r runner.Runner, hcg *api.HostConfig) error { + if hcg == nil { + return fmt.Errorf("empty host config") +@@ -339,7 +347,8 @@ func (it *DestroyInfraTask) Run(r runner.Runner, hcg *api.HostConfig) error { + logrus.Errorf("path %s not in White List and cannot remove", dstDir) + return nil + } +- if _, err := r.RunCommand(fmt.Sprintf("sudo -E /bin/sh -c \"rm -rf %s\"", dstDir)); err != nil { ++ copyTempDir := getCopyDefaultDir(hcg.UserName) ++ if _, err := r.RunCommand(fmt.Sprintf("sudo -E /bin/sh -c \"rm -rf %s %s\"", dstDir, copyTempDir)); err != nil { + return fmt.Errorf("rm dependency failed: %v", err) + } + +diff --git a/pkg/clusterdeployment/clusterdeploy.go b/pkg/clusterdeployment/clusterdeploy.go +index ee57ec3..f31ac42 100644 +--- a/pkg/clusterdeployment/clusterdeploy.go ++++ b/pkg/clusterdeployment/clusterdeploy.go +@@ -216,6 +216,7 @@ func rollbackFailedNoeds(handler api.ClusterDeploymentAPI, nodes []*api.HostConf + for _, n := range nodes { + // do best to cleanup, if error, just ignore + handler.ClusterNodeCleanup(n, n.Type) ++ handler.PostNodeCleanupHooks(n) + handler.MachineInfraDestroy(n) + rollIDs = append(rollIDs, n.Address) + } +diff --git a/pkg/clusterdeployment/runtime/runtime.go b/pkg/clusterdeployment/runtime/runtime.go +index 29fab7d..2e352b6 100644 +--- a/pkg/clusterdeployment/runtime/runtime.go ++++ b/pkg/clusterdeployment/runtime/runtime.go +@@ -199,9 +199,9 @@ func (ct *DeployRuntimeTask) Run(r runner.Runner, hcg *api.HostConfig) error { + } + + // start service +- if _, err := r.RunCommand(fmt.Sprintf("sudo -E /bin/sh -c \"systemctl daemon-reload && systemctl restart %s\"", ++ if output, err := r.RunCommand(fmt.Sprintf("sudo -E /bin/sh -c \"systemctl daemon-reload && systemctl restart %s\"", + ct.runtime.GetRuntimeService())); err != nil { +- logrus.Errorf("start %s failed: %v", ct.runtime.GetRuntimeService(), err) ++ logrus.Errorf("start %s failed: %v\nout: %s", ct.runtime.GetRuntimeService(), err, output) + return err + } + +diff --git a/pkg/constants/constants.go b/pkg/constants/constants.go +index 0935c36..ee02e24 100644 +--- a/pkg/constants/constants.go ++++ b/pkg/constants/constants.go +@@ -21,8 +21,9 @@ const ( + DefaultImagePath = "/image" + + // user home dir formats +- UserHomeFormat = "/home/%s" +- DefaultUserCopyTempDirFormat = "/home/%s/.eggo/temp" ++ UserHomeFormat = "/home/%s" ++ DefaultUserCopyTempHomeFormat = "/home/%s/.eggo" ++ DefaultRootCopyTempDirHome = "/root/.eggo" + + // network plugin arguments key + NetworkPluginArgKeyYamlPath = "NetworkYamlPath" +diff --git a/pkg/utils/runner/runner.go b/pkg/utils/runner/runner.go +index 7436f63..3b15a08 100644 +--- a/pkg/utils/runner/runner.go ++++ b/pkg/utils/runner/runner.go +@@ -164,7 +164,7 @@ func (ssh *SSHRunner) Reconnect() error { + func clearUserTempDir(conn ssh.Connection, host *kkv1alpha1.HostCfg) { + tmpShell := "/tmp/" + RunnerShellPrefix + "*" + // scp to tmp file +- dir := fmt.Sprintf(constants.DefaultUserCopyTempDirFormat, host.User) ++ dir := getCopyDefaultDir(host.User) + _, err := conn.Exec(fmt.Sprintf("sudo -E /bin/sh -c \"rm -rf %s; rm -rf %s\"", dir, tmpShell), host) + if err != nil { + logrus.Warnf("[%s] remove temp dir: %s failed: %v", host.Name, dir, err) +@@ -175,7 +175,7 @@ func clearUserTempDir(conn ssh.Connection, host *kkv1alpha1.HostCfg) { + + func prepareUserTempDir(conn ssh.Connection, host *kkv1alpha1.HostCfg) error { + // scp to tmp file +- dir := fmt.Sprintf(constants.DefaultUserCopyTempDirFormat, host.User) ++ dir := getCopyDefaultDir(host.User) + var sb strings.Builder + sb.WriteString("sudo -E /bin/sh -c \"") + sb.WriteString(fmt.Sprintf("mkdir -p %s", dir)) +@@ -190,11 +190,18 @@ func prepareUserTempDir(conn ssh.Connection, host *kkv1alpha1.HostCfg) error { + return nil + } + ++func getCopyDefaultDir(user string) string { ++ if user == "root" { ++ return constants.DefaultRootCopyTempDirHome + "/temp" ++ } ++ return fmt.Sprintf(constants.DefaultUserCopyTempHomeFormat, user) + "/temp" ++} ++ + func (ssh *SSHRunner) copyFile(src, dst string) error { + if ssh.Conn == nil { + return fmt.Errorf("[%s] SSH runner is not connected", ssh.Host.Name) + } +- tempDir := fmt.Sprintf(constants.DefaultUserCopyTempDirFormat, ssh.Host.User) ++ tempDir := getCopyDefaultDir(ssh.Host.User) + // scp to tmp file + tempCpyFile := filepath.Join(tempDir, filepath.Base(src)) + err := ssh.Conn.Scp(src, tempCpyFile) +@@ -240,7 +247,7 @@ func (ssh *SSHRunner) copyDir(srcDir, dstDir string) error { + logrus.Errorf("[%s] create cert tmp tar failed: %v", ssh.Host.Name, err) + return err + } +- tmpCpyDir := fmt.Sprintf(constants.DefaultUserCopyTempDirFormat, ssh.Host.User) ++ tmpCpyDir := getCopyDefaultDir(ssh.Host.User) + tmpPkiFile := filepath.Join(tmpCpyDir, "pkg.tar") + // scp to user home directory + err = ssh.Copy(tmpPkgFile, tmpPkiFile) +-- +2.25.1 + diff --git a/0002-remove-residual-in-infrastruce.patch b/0002-remove-residual-in-infrastruce.patch new file mode 100644 index 0000000..2279b6a --- /dev/null +++ b/0002-remove-residual-in-infrastruce.patch @@ -0,0 +1,115 @@ +From 782855308cd9f817c6525617a2a45e9aea4859f5 Mon Sep 17 00:00:00 2001 +From: haozi007 +Date: Sat, 4 Sep 2021 09:54:50 +0100 +Subject: [PATCH 2/2] remove residual in infrastruce + +Signed-off-by: haozi007 +--- + pkg/clusterdeployment/binary/binary.go | 30 ------------------- + .../binary/infrastructure/infrastructure.go | 12 ++++---- + pkg/clusterdeployment/clusterdeploy.go | 1 - + 3 files changed, 7 insertions(+), 36 deletions(-) + +diff --git a/pkg/clusterdeployment/binary/binary.go b/pkg/clusterdeployment/binary/binary.go +index 4596047..246f547 100644 +--- a/pkg/clusterdeployment/binary/binary.go ++++ b/pkg/clusterdeployment/binary/binary.go +@@ -444,37 +444,11 @@ func (bcp *BinaryClusterDeployment) PreDeleteClusterHooks() { + } + } + +-func clearResiduals(nodes []*api.HostConfig, confDir string) error { +- if len(nodes) == 0 { +- return nil +- } +- +- var strNodes []string +- for _, n := range nodes { +- strNodes = append(strNodes, n.Address) +- } +- +- shell := fmt.Sprintf("#!/bin/bash\nrm -rf %s\nexit 0", confDir) +- +- checker := task.NewTaskIgnoreErrInstance( +- &commontools.RunShellTask{ +- ShellName: "checkMaster", +- Shell: shell, +- }, +- ) +- +- return nodemanager.RunTaskOnNodes(checker, strNodes) +-} +- + func (bcp *BinaryClusterDeployment) PostDeleteClusterHooks() { + role := []uint16{api.Worker, api.Master, api.ETCD, api.LoadBalance} + if err := dependency.HookSchedule(bcp.config, bcp.config.Nodes, role, api.SchedulePostCleanup); err != nil { + logrus.Warnf("Ignore: Delete cluster PostHook failed: %v", err) + } +- // clear all residual objects +- if err := clearResiduals(bcp.config.Nodes, bcp.config.GetConfigDir()); err != nil { +- logrus.Warnf("Ignore: Delete cluster PostHook failed: %v", err) +- } + } + + func (bcp *BinaryClusterDeployment) PreNodeJoinHooks(node *api.HostConfig) error { +@@ -588,8 +562,4 @@ func (bcp *BinaryClusterDeployment) PostNodeCleanupHooks(node *api.HostConfig) { + if err := dependency.HookSchedule(bcp.config, []*api.HostConfig{node}, role, api.SchedulePostCleanup); err != nil { + logrus.Warnf("Ignore: Delete Node PostHook failed: %v", err) + } +- +- if err := clearResiduals([]*api.HostConfig{node}, bcp.config.GetConfigDir()); err != nil { +- logrus.Warnf("Ignore: Delete cluster PostHook failed: %v", err) +- } + } +diff --git a/pkg/clusterdeployment/binary/infrastructure/infrastructure.go b/pkg/clusterdeployment/binary/infrastructure/infrastructure.go +index 71ad610..634e338 100644 +--- a/pkg/clusterdeployment/binary/infrastructure/infrastructure.go ++++ b/pkg/clusterdeployment/binary/infrastructure/infrastructure.go +@@ -312,8 +312,9 @@ func NodeInfrastructureSetup(config *api.ClusterConfig, nodeID string, role uint + } + + type DestroyInfraTask struct { +- packageSrc *api.PackageSrcConfig +- roleInfra *api.RoleInfra ++ packageSrc *api.PackageSrcConfig ++ roleInfra *api.RoleInfra ++ k8sConfigDir string + } + + func (it *DestroyInfraTask) Name() string { +@@ -348,7 +349,7 @@ func (it *DestroyInfraTask) Run(r runner.Runner, hcg *api.HostConfig) error { + return nil + } + copyTempDir := getCopyDefaultDir(hcg.UserName) +- if _, err := r.RunCommand(fmt.Sprintf("sudo -E /bin/sh -c \"rm -rf %s %s\"", dstDir, copyTempDir)); err != nil { ++ if _, err := r.RunCommand(fmt.Sprintf("sudo -E /bin/sh -c \"rm -rf %s %s %s\"", dstDir, copyTempDir, it.k8sConfigDir)); err != nil { + return fmt.Errorf("rm dependency failed: %v", err) + } + +@@ -429,8 +430,9 @@ func NodeInfrastructureDestroy(config *api.ClusterConfig, hostconfig *api.HostCo + + itask := task.NewTaskIgnoreErrInstance( + &DestroyInfraTask{ +- packageSrc: &config.PackageSrc, +- roleInfra: roleInfra, ++ packageSrc: &config.PackageSrc, ++ roleInfra: roleInfra, ++ k8sConfigDir: config.GetConfigDir(), + }) + + if err := nodemanager.RunTaskOnNodes(itask, []string{hostconfig.Address}); err != nil { +diff --git a/pkg/clusterdeployment/clusterdeploy.go b/pkg/clusterdeployment/clusterdeploy.go +index f31ac42..ee57ec3 100644 +--- a/pkg/clusterdeployment/clusterdeploy.go ++++ b/pkg/clusterdeployment/clusterdeploy.go +@@ -216,7 +216,6 @@ func rollbackFailedNoeds(handler api.ClusterDeploymentAPI, nodes []*api.HostConf + for _, n := range nodes { + // do best to cleanup, if error, just ignore + handler.ClusterNodeCleanup(n, n.Type) +- handler.PostNodeCleanupHooks(n) + handler.MachineInfraDestroy(n) + rollIDs = append(rollIDs, n.Address) + } +-- +2.25.1 + diff --git a/eggo.spec b/eggo.spec index 3326595..15fcaf1 100644 --- a/eggo.spec +++ b/eggo.spec @@ -1,11 +1,14 @@ Name: eggo Version: 0.9.3 -Release: 1 +Release: 2 Summary: Eggo is a tool built to provide standard multi-ways for creating Kubernetes clusters. License: Mulan PSL V2 URL: https://gitee.com/openeuler/eggo Source0: https://gitee.com/openeuler/eggo/repository/archive/v%{version}.tar.gz +Patch0001: 0001-remove-residual-objects.patch +Patch0002: 0002-remove-residual-in-infrastruce.patch + BuildRequires: make BuildRequires: git BuildRequires: golang >= 1.13 @@ -45,6 +48,12 @@ rm -rf src %attr(551,root,root) %{_bindir}/eggo %changelog +* Tue Sep 07 2021 zhangxiaoyu - 0.9.3-2 +- Type:upgrade +- CVE:NA +- SUG:NA +- DESC:sync from openeuler + * Wed Sep 01 2021 zhangxiaoyu - 0.9.3-1 - Type:upgrade - CVE:NA