1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-08-04 21:35:23 +02:00

fix(kubectl): rollout restart [r8s-322] (#729)

This commit is contained in:
Steven Kang 2025-05-13 11:35:44 +12:00 committed by GitHub
parent 1abdf42f99
commit 3b313b9308
8 changed files with 85 additions and 68 deletions

View file

@ -12,7 +12,7 @@ func (c *Client) Apply(ctx context.Context, manifests []string) (string, error)
buf := new(bytes.Buffer)
cmd := apply.NewCmdApply("kubectl", c.factory, c.streams)
cmd.SetArgs(manifestFilesToArgs(manifests))
cmd.SetArgs(resourcesToArgs(manifests))
cmd.SetOut(buf)
if err := cmd.ExecuteContext(ctx); err != nil {

View file

@ -12,7 +12,7 @@ func (c *Client) Delete(ctx context.Context, manifests []string) (string, error)
buf := new(bytes.Buffer)
cmd := delete.NewCmdDelete(c.factory, c.streams)
cmd.SetArgs(manifestFilesToArgs(manifests))
cmd.SetArgs(resourcesToArgs(manifests))
cmd.Flags().Set("ignore-not-found", "true")
cmd.SetOut(buf)

View file

@ -1,11 +0,0 @@
package libkubectl
import "strings"
func manifestFilesToArgs(manifestFiles []string) []string {
args := []string{}
for _, path := range manifestFiles {
args = append(args, "-f", strings.TrimSpace(path))
}
return args
}

View file

@ -1,48 +0,0 @@
package libkubectl
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestManifestFilesToArgsHelper(t *testing.T) {
tests := []struct {
name string
manifestFiles []string
expectedArgs []string
}{
{
name: "empty list",
manifestFiles: []string{},
expectedArgs: []string{},
},
{
name: "single manifest",
manifestFiles: []string{"manifest.yaml"},
expectedArgs: []string{"-f", "manifest.yaml"},
},
{
name: "multiple manifests",
manifestFiles: []string{"manifest1.yaml", "manifest2.yaml"},
expectedArgs: []string{"-f", "manifest1.yaml", "-f", "manifest2.yaml"},
},
{
name: "manifests with whitespace",
manifestFiles: []string{" manifest1.yaml ", " manifest2.yaml"},
expectedArgs: []string{"-f", "manifest1.yaml", "-f", "manifest2.yaml"},
},
{
name: "kubernetes resource definitions",
manifestFiles: []string{"deployment/nginx", "service/web"},
expectedArgs: []string{"-f", "deployment/nginx", "-f", "service/web"},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
args := manifestFilesToArgs(tt.manifestFiles)
assert.Equal(t, tt.expectedArgs, args)
})
}
}

View file

@ -0,0 +1,20 @@
package libkubectl
import "strings"
func isManifestFile(resource string) bool {
trimmedResource := strings.TrimSpace(resource)
return strings.HasSuffix(trimmedResource, ".yaml") || strings.HasSuffix(trimmedResource, ".yml")
}
func resourcesToArgs(resources []string) []string {
args := []string{}
for _, resource := range resources {
if isManifestFile(resource) {
args = append(args, "-f", strings.TrimSpace(resource))
} else {
args = append(args, resource)
}
}
return args
}

View file

@ -0,0 +1,53 @@
package libkubectl
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestResourcesToArgsHelper(t *testing.T) {
tests := []struct {
name string
resources []string
expectedArgs []string
}{
{
name: "empty list",
resources: []string{},
expectedArgs: []string{},
},
{
name: "single manifest file",
resources: []string{"manifest.yaml"},
expectedArgs: []string{"-f", "manifest.yaml"},
},
{
name: "multiple manifest files",
resources: []string{"manifest1.yaml", "manifest2.yaml"},
expectedArgs: []string{"-f", "manifest1.yaml", "-f", "manifest2.yaml"},
},
{
name: "manifests with whitespace",
resources: []string{" manifest1.yaml ", " manifest2.yaml"},
expectedArgs: []string{"-f", "manifest1.yaml", "-f", "manifest2.yaml"},
},
{
name: "kubernetes resource definitions",
resources: []string{"deployment/nginx", "service/web"},
expectedArgs: []string{"deployment/nginx", "service/web"},
},
{
name: "rollout restart",
resources: []string{"deployment/nginx", "service/web"},
expectedArgs: []string{"deployment/nginx", "service/web"},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
args := resourcesToArgs(tt.resources)
assert.Equal(t, tt.expectedArgs, args)
})
}
}

View file

@ -12,7 +12,10 @@ func (c *Client) RolloutRestart(ctx context.Context, manifests []string) (string
buf := new(bytes.Buffer)
cmd := rollout.NewCmdRollout(c.factory, c.streams)
cmd.SetArgs(manifestFilesToArgs(manifests))
args := []string{"restart"}
args = append(args, resourcesToArgs(manifests)...)
cmd.SetArgs(args)
cmd.SetOut(buf)
if err := cmd.ExecuteContext(ctx); err != nil {