Skip to content

Commit

Permalink
feat: support writing kubeconfig to a stream (#1381)
Browse files Browse the repository at this point in the history
  • Loading branch information
LinuxSuRen authored Feb 15, 2024
1 parent ced74cf commit fcb3b06
Showing 1 changed file with 16 additions and 6 deletions.
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 fcb3b06

Please sign in to comment.