Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion commands/cloud_deploy_exec.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,9 @@ func (e *KoolDeployExec) Execute(args []string) (err error) {
return
}

if cloudService, err = e.cloud.Authenticate(domain, service); err != nil {
cluster := e.env.Get("KOOL_CLOUD_CLUSTER")

if cloudService, err = e.cloud.Authenticate(domain, service, cluster); err != nil {
return
}

Expand Down
4 changes: 3 additions & 1 deletion commands/cloud_deploy_logs.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,9 @@ func (e *KoolDeployLogs) Execute(args []string) (err error) {
return
}

if cloudService, err = e.cloud.Authenticate(domain, service); err != nil {
cluster := e.env.Get("KOOL_CLOUD_CLUSTER")

if cloudService, err = e.cloud.Authenticate(domain, service, cluster); err != nil {
Comment on lines +76 to +78
Copy link

Copilot AI May 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The cluster fetch and authenticate call are duplicated in both logs and exec commands; consider extracting this logic into a shared helper method to reduce duplication.

Suggested change
cluster := e.env.Get("KOOL_CLOUD_CLUSTER")
if cloudService, err = e.cloud.Authenticate(domain, service, cluster); err != nil {
if cloudService, err = e.fetchAndAuthenticateCluster(domain, service); err != nil {

Copilot uses AI. Check for mistakes.
return
}

Expand Down
4 changes: 3 additions & 1 deletion commands/cloud_deploy_logs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ type fakeK8S struct {
CalledAuthenticate bool
CalledAuthenticateParamDomain string
CalledAuthenticateParamService string
CalledAuthenticateParamCluster string
MockAuthenticateCloudService string
MockAuthenticateErr error

Expand All @@ -29,10 +30,11 @@ type fakeK8S struct {
CalledCleanupParamOut shell.OutputWritter
}

func (f *fakeK8S) Authenticate(domain, service string) (cloudService string, err error) {
func (f *fakeK8S) Authenticate(domain, service, cluster string) (cloudService string, err error) {
f.CalledAuthenticate = true
f.CalledAuthenticateParamDomain = domain
f.CalledAuthenticateParamService = service
f.CalledAuthenticateParamCluster = cluster

cloudService = f.MockAuthenticateCloudService
err = f.MockAuthenticateErr
Expand Down
5 changes: 3 additions & 2 deletions services/cloud/k8s/kubectl.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
)

type K8S interface {
Authenticate(string, string) (string, error)
Authenticate(string, string, string) (string, error)
Kubectl(shell.PathChecker) (builder.Command, error)
Cleanup(shell.OutputWritter)
}
Expand All @@ -30,9 +30,10 @@ func NewDefaultK8S() *DefaultK8S {
}
}

func (k *DefaultK8S) Authenticate(domain, service string) (cloudService string, err error) {
func (k *DefaultK8S) Authenticate(domain, service, cluster string) (cloudService string, err error) {
k.deployExec.Body().Set("domain", domain)
k.deployExec.Body().Set("service", service)
k.deployExec.Body().Set("cluster", cluster)

if k.resp, err = k.deployExec.Call(); err != nil {
return
Expand Down
8 changes: 4 additions & 4 deletions services/cloud/k8s/kubectl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ func TestAuthenticate(t *testing.T) {
expectedErr := errors.New("call error")
k.deployExec.Endpoint.(*api.DefaultEndpoint).MockErr(expectedErr)

if _, err := k.Authenticate("foo", "bar"); !errors.Is(err, expectedErr) {
if _, err := k.Authenticate("foo", "bar", ""); !errors.Is(err, expectedErr) {
t.Error("unexpected error return from Authenticate")
}

Expand All @@ -29,7 +29,7 @@ func TestAuthenticate(t *testing.T) {
CA: "ca",
})

if _, err := k.Authenticate("foo", "bar"); !strings.Contains(err.Error(), "failed to generate access credentials") {
if _, err := k.Authenticate("foo", "bar", ""); !strings.Contains(err.Error(), "failed to generate access credentials") {
t.Errorf("unexpected error from DeployExec call: %v", err)
}

Expand All @@ -43,7 +43,7 @@ func TestAuthenticate(t *testing.T) {

authTempPath = t.TempDir()

if cloudService, err := k.Authenticate("foo", "bar"); err != nil {
if cloudService, err := k.Authenticate("foo", "bar", ""); err != nil {
t.Errorf("unexpected error from Authenticate call: %v", err)
} else if cloudService != "path" {
t.Errorf("unexpected cloudService return: %s", cloudService)
Expand Down Expand Up @@ -104,7 +104,7 @@ func TestKubectl(t *testing.T) {
t.Error("should get error before authenticating")
}

_, _ = k.Authenticate("foo", "bar")
_, _ = k.Authenticate("foo", "bar", "")

if cmd, _ := k.Kubectl(fakeShell); cmd.Cmd() != "kubectl" {
t.Error("should use kubectl")
Expand Down
Loading