Skip to content

Commit 4b815d0

Browse files
Taking kubeconfig flag into account (#328)
* Taking kubeconfig flag into account * remove todo
1 parent 032183d commit 4b815d0

File tree

7 files changed

+42
-33
lines changed

7 files changed

+42
-33
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
VERSION=v0.0.293
1+
VERSION=v0.0.294
22

33
OUT_DIR=dist
44
YEAR?=$(shell date +"%Y")

cmd/commands/cluster.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ type (
3737
ClusterAddOptions struct {
3838
runtimeName string
3939
kubeContext string
40+
kubeconfig string
4041
dryRun bool
4142
kubeFactory kube.Factory
4243
}
@@ -84,7 +85,7 @@ func NewClusterAddCommand() *cobra.Command {
8485
return err
8586
}
8687

87-
opts.kubeContext, err = ensureKubeContextName(cmd.Flag("context"))
88+
opts.kubeContext, err = ensureKubeContextName(cmd.Flag("context"), cmd.Flag("kubeconfig"))
8889
return err
8990
},
9091
RunE: func(cmd *cobra.Command, args []string) error {
@@ -119,7 +120,7 @@ func runClusterAdd(ctx context.Context, opts *ClusterAddOptions) error {
119120
}
120121

121122
ingressUrl := *runtime.IngressHost
122-
server, err := util.KubeServerByContextName(opts.kubeContext)
123+
server, err := util.KubeServerByContextName(opts.kubeContext, opts.kubeconfig)
123124
if err != nil {
124125
return fmt.Errorf("failed getting server for context \"%s\": %w", opts.kubeContext, err)
125126
}
@@ -201,20 +202,21 @@ func NewClusterListCommand() *cobra.Command {
201202
return err
202203
},
203204
RunE: func(cmd *cobra.Command, _ []string) error {
204-
return runClusterList(cmd.Context(), runtimeName)
205+
kubeconfig := cmd.Flag("kubeconfig").Value.String()
206+
return runClusterList(cmd.Context(), runtimeName, kubeconfig)
205207
},
206208
}
207209

208210
return cmd
209211
}
210212

211-
func runClusterList(ctx context.Context, runtimeName string) error {
213+
func runClusterList(ctx context.Context, runtimeName, kubeconfig string) error {
212214
runtime, err := cfConfig.NewClient().V2().Runtime().Get(ctx, runtimeName)
213215
if err != nil {
214216
return err
215217
}
216218

217-
kubeContext, err := util.KubeContextNameByServer(*runtime.Cluster)
219+
kubeContext, err := util.KubeContextNameByServer(*runtime.Cluster, kubeconfig)
218220
if err != nil {
219221
return fmt.Errorf("failed getting context for \"%s\": %w", *runtime.Cluster, err)
220222
}

cmd/commands/common.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -362,23 +362,25 @@ func promptSummaryToUser(ctx context.Context, finalParameters map[string]string,
362362
return false, nil
363363
}
364364

365-
func ensureKubeContextName(flag *pflag.Flag) (string, error) {
366-
contextName, err := getKubeContextName(flag)
365+
func ensureKubeContextName(context, kubeconfig *pflag.Flag) (string, error) {
366+
contextName, err := getKubeContextName(context, kubeconfig)
367367
if err != nil {
368368
return "", err
369369
}
370370

371371
if contextName == "" {
372-
return "", fmt.Errorf("must supply value for \"%s\"", flag.Name)
372+
return "", fmt.Errorf("must supply value for \"%s\"", context.Name)
373373
}
374374

375375
return contextName, nil
376376
}
377377

378-
func getKubeContextName(flag *pflag.Flag) (string, error) {
379-
contextName := flag.Value.String()
378+
func getKubeContextName(context, kubeconfig *pflag.Flag) (string, error) {
379+
kubeconfigPath := kubeconfig.Value.String()
380+
381+
contextName := context.Value.String()
380382
if contextName != "" {
381-
if !util.CheckExistingContext(contextName) {
383+
if !util.CheckExistingContext(contextName, kubeconfigPath) {
382384
return "", fmt.Errorf("kubeconfig file missing context \"%s\"", contextName)
383385
}
384386

@@ -387,22 +389,22 @@ func getKubeContextName(flag *pflag.Flag) (string, error) {
387389

388390
if !store.Get().Silent {
389391
var err error
390-
contextName, err = getKubeContextNameFromUserSelect()
392+
contextName, err = getKubeContextNameFromUserSelect(kubeconfigPath)
391393
if err != nil {
392394
return "", err
393395
}
394396
}
395397

396-
return contextName, flag.Value.Set(contextName)
398+
return contextName, context.Value.Set(contextName)
397399
}
398400

399401
type SelectItem struct {
400402
Value string
401403
Label string
402404
}
403405

404-
func getKubeContextNameFromUserSelect() (string, error) {
405-
contexts := util.KubeContexts()
406+
func getKubeContextNameFromUserSelect(kubeconfig string) (string, error) {
407+
contexts := util.KubeContexts(kubeconfig)
406408
templates := &promptui.SelectTemplates{
407409
Active: "▸ {{ .Name }} {{if .Current }}(current){{end}}",
408410
Inactive: " {{ .Name }} {{if .Current }}(current){{end}}",

cmd/commands/runtime.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ type (
9898
CommonConfig *runtime.CommonConfig
9999
versionStr string
100100
kubeContext string
101+
kubeconfig string
101102
}
102103

103104
RuntimeUninstallOptions struct {
@@ -276,6 +277,7 @@ func NewRuntimeInstallCommand() *cobra.Command {
276277
}
277278

278279
installationOpts.KubeFactory = kube.AddFlags(cmd.Flags())
280+
installationOpts.kubeconfig = cmd.Flag("kubeconfig").Value.String()
279281

280282
util.Die(cmd.Flags().MarkHidden("bypass-ingress-class-check"))
281283

@@ -310,7 +312,7 @@ func runtimeInstallCommandPreRunHandler(cmd *cobra.Command, opts *RuntimeInstall
310312
return err
311313
}
312314

313-
opts.kubeContext, err = getKubeContextName(cmd.Flag("context"))
315+
opts.kubeContext, err = getKubeContextName(cmd.Flag("context"), cmd.Flag("kubeconfig"))
314316
handleCliStep(reporter.InstallStepPreCheckGetKubeContext, "Getting kube context name", err, true, false)
315317
if err != nil {
316318
return err
@@ -373,7 +375,7 @@ func runtimeUninstallCommandPreRunHandler(cmd *cobra.Command, args []string, opt
373375
var err error
374376
handleCliStep(reporter.UninstallPhasePreCheckStart, "Starting pre checks", nil, true, false)
375377

376-
opts.kubeContext, err = getKubeContextName(cmd.Flag("context"))
378+
opts.kubeContext, err = getKubeContextName(cmd.Flag("context"), cmd.Flag("kubeconfig"))
377379
handleCliStep(reporter.UninstallStepPreCheckGetKubeContext, "Getting kube context name", err, true, false)
378380
if err != nil {
379381
return err
@@ -738,7 +740,7 @@ func runtimeInstallPreparations(opts *RuntimeInstallOptions) (*runtime.Runtime,
738740
return nil, "", fmt.Errorf("failed to download runtime definition: %w", err)
739741
}
740742

741-
server, err := util.KubeCurrentServer()
743+
server, err := util.KubeCurrentServer(opts.kubeconfig)
742744
handleCliStep(reporter.InstallStepGetServerAddress, "Getting current server address", err, false, true)
743745
if err != nil {
744746
return nil, "", fmt.Errorf("failed to get current server address: %w", err)

docs/releases/release_notes.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ cf version
2323

2424
```bash
2525
# download and extract the binary
26-
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.293/cf-linux-amd64.tar.gz | tar zx
26+
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.294/cf-linux-amd64.tar.gz | tar zx
2727

2828
# move the binary to your $PATH
2929
mv ./cf-linux-amd64 /usr/local/bin/cf
@@ -36,7 +36,7 @@ cf version
3636

3737
```bash
3838
# download and extract the binary
39-
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.293/cf-darwin-amd64.tar.gz | tar zx
39+
curl -L --output - https://github.com/codefresh-io/cli-v2/releases/download/v0.0.294/cf-darwin-amd64.tar.gz | tar zx
4040

4141
# move the binary to your $PATH
4242
mv ./cf-darwin-amd64 /usr/local/bin/cf

manifests/runtime.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ metadata:
55
namespace: "{{ namespace }}"
66
spec:
77
defVersion: 1.0.1
8-
version: 0.0.293
8+
version: 0.0.294
99
bootstrapSpecifier: github.com/codefresh-io/cli-v2/manifests/argo-cd
1010
components:
1111
- name: events

pkg/util/util.go

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,11 @@ func EscapeAppsetFieldName(field string) string {
167167
return appsetFieldRegexp.ReplaceAllString(field, "_")
168168
}
169169

170-
func kubeConfig() *clientcmdapi.Config {
170+
func kubeConfig(kubeconfig string) *clientcmdapi.Config {
171171
configAccess := clientcmd.NewDefaultPathOptions()
172+
if kubeconfig != "" {
173+
configAccess.GlobalFile = kubeconfig
174+
}
172175
conf, err := configAccess.GetStartingConfig()
173176
Die(err, "failed reading kubeconfig file")
174177
return conf
@@ -179,8 +182,8 @@ type kubeContext struct {
179182
Current bool
180183
}
181184

182-
func KubeContexts() []kubeContext {
183-
conf := kubeConfig()
185+
func KubeContexts(kubeconfig string) []kubeContext {
186+
conf := kubeConfig(kubeconfig)
184187
contexts := make([]kubeContext, len(conf.Contexts))
185188
i := 0
186189
for key := range conf.Contexts {
@@ -208,8 +211,8 @@ func KubeContexts() []kubeContext {
208211
return contexts
209212
}
210213

211-
func CheckExistingContext(contextName string) bool {
212-
for _, context := range KubeContexts() {
214+
func CheckExistingContext(contextName, kubeconfig string) bool {
215+
for _, context := range KubeContexts(kubeconfig) {
213216
if context.Name == contextName {
214217
return true
215218
}
@@ -218,8 +221,8 @@ func CheckExistingContext(contextName string) bool {
218221
return false
219222
}
220223

221-
func KubeCurrentServer() (string, error) {
222-
return KubeServerByContextName("")
224+
func KubeCurrentServer(kubeconfig string) (string, error) {
225+
return KubeServerByContextName("", kubeconfig)
223226
}
224227

225228
func CurrentAccount(user *codefresh.User) (string, error) {
@@ -255,8 +258,8 @@ func OpenBrowserForGitLogin(ingressHost string, user string, account string) err
255258
return nil
256259
}
257260

258-
func KubeContextNameByServer(server string) (string, error) {
259-
conf := kubeConfig()
261+
func KubeContextNameByServer(server, kubeconfig string) (string, error) {
262+
conf := kubeConfig(kubeconfig)
260263
for contextName, context := range conf.Contexts {
261264
if cluster, ok := conf.Clusters[context.Cluster]; ok {
262265
if cluster.Server == server {
@@ -268,8 +271,8 @@ func KubeContextNameByServer(server string) (string, error) {
268271
return "", fmt.Errorf("Context not found for server \"%s\"", server)
269272
}
270273

271-
func KubeServerByContextName(contextName string) (string, error) {
272-
conf := kubeConfig()
274+
func KubeServerByContextName(contextName, kubeconfig string) (string, error) {
275+
conf := kubeConfig(kubeconfig)
273276
if contextName == "" {
274277
contextName = conf.CurrentContext
275278
}

0 commit comments

Comments
 (0)