Skip to content

Commit

Permalink
feat: support writting kubeconfig to a stream
Browse files Browse the repository at this point in the history
  • Loading branch information
LinuxSuRen committed Dec 8, 2023
1 parent f73fe36 commit d7d53f7
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 6 deletions.
11 changes: 11 additions & 0 deletions .gitpod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# This configuration file was automatically generated by Gitpod.
# Please adjust to your needs (see https://www.gitpod.io/docs/introduction/learn-gitpod/gitpod-yaml)
# and commit this file to your remote git repository to share the goodness with others.

# Learn more from ready-to-use templates: https://www.gitpod.io/docs/introduction/getting-started/quickstart

tasks:
- init: go get && go build ./... && go test ./... && make
command: go run .


22 changes: 16 additions & 6 deletions pkg/client/kubeconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -207,18 +207,28 @@ func KubeconfigWriteToPath(ctx context.Context, kubeconfig *clientcmdapi.Config,
defer output.Close()
}

err = KubeconfigWriteToStream(ctx, kubeconfig, output)
if err != nil {
return fmt.Errorf("failed to write file '%s': %w", output.Name(), err)
}

l.Log().Debugf("Wrote kubeconfig to '%s'", output.Name())

return nil
}

// KubeconfigWriteToStream takes a kubeconfig and writes it to stream
func KubeconfigWriteToStream(ctx context.Context, kubeconfig *clientcmdapi.Config, writer io.Writer) error {
kubeconfigBytes, err := clientcmd.Write(*kubeconfig)
if err != nil {
return fmt.Errorf("failed to write kubeconfig: %w", err)
}

_, err = output.Write(kubeconfigBytes)
_, err = writer.Write(kubeconfigBytes)
if err != nil {
return fmt.Errorf("failed to write file '%s': %w", output.Name(), err)
return fmt.Errorf("failed to write stream '%s'", err)
}

l.Log().Debugf("Wrote kubeconfig to '%s'", output.Name())

return nil
}

Expand All @@ -230,7 +240,7 @@ func KubeconfigMerge(ctx context.Context, newKubeConfig *clientcmdapi.Config, ex
for k, v := range newKubeConfig.Clusters {
if _, ok := existingKubeConfig.Clusters[k]; ok {
if !overwriteConflicting {
return fmt.Errorf("Cluster '%s' already exists in target KubeConfig", k)
return fmt.Errorf("cluster '%s' already exists in target KubeConfig", k)
}
}
existingKubeConfig.Clusters[k] = v
Expand All @@ -247,7 +257,7 @@ func KubeconfigMerge(ctx context.Context, newKubeConfig *clientcmdapi.Config, ex

for k, v := range newKubeConfig.Contexts {
if _, ok := existingKubeConfig.Contexts[k]; ok && !overwriteConflicting {
return fmt.Errorf("Context '%s' already exists in target KubeConfig", k)
return fmt.Errorf("context '%s' already exists in target KubeConfig", k)
}
existingKubeConfig.Contexts[k] = v
}
Expand Down

0 comments on commit d7d53f7

Please sign in to comment.