Skip to content

Commit 7e109c8

Browse files
authored
Merge pull request #9 from replicatedhq/context
Support alternate kubecontext
2 parents 40583ac + 5de9ae3 commit 7e109c8

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

cmd/outdated/cli/root.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func RootCmd() *cobra.Command {
5656
finishedCh <- true
5757
}()
5858

59-
images, err := o.ListImages(v.GetString("kubeconfig"), foundImageName, v.GetStringSlice("ignore-ns"))
59+
images, err := o.ListImages(v.GetString("kubeconfig"), v.GetString("kubecontext"), foundImageName, v.GetStringSlice("ignore-ns"))
6060
if err != nil {
6161
log.Error(err)
6262
log.Info("")
@@ -91,6 +91,7 @@ func RootCmd() *cobra.Command {
9191
cobra.OnInitialize(initConfig)
9292

9393
cmd.Flags().String("kubeconfig", path.Join(homeDir(), ".kube", "config"), "path to the kubeconfig to use")
94+
cmd.Flags().String("kubecontext", "", "kubecontext to use (defaults to the current context)")
9495
cmd.Flags().StringSlice("ignore-ns", []string{}, "optional list of namespaces to exclude from searching")
9596
viper.SetEnvKeyReplacer(strings.NewReplacer("-", "_"))
9697
return cmd

go.sum

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg=
66
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
77
cloud.google.com/go v0.36.0 h1:+aCSj7tOo2LODWVEuZDZeGCckdt6MlSF+X/rB3wUiS8=
88
cloud.google.com/go v0.36.0/go.mod h1:RUoy9p/M4ge0HzT8L+SDZ8jg+Q6fth0CiBuhFJpSV40=
9+
cloud.google.com/go v0.37.2 h1:4y4L7BdHenTfZL0HervofNTHh9Ad6mNX72cQvl+5eH0=
910
cloud.google.com/go v0.37.2/go.mod h1:H8IAquKe2L30IxoupDgqTaQvKSwF/c8prYHynGIWQbA=
1011
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
1112
cloud.google.com/go v0.41.0 h1:NFvqUTDnSNYPX5oReekmB+D+90jrJIcVImxQ3qrBVgM=

pkg/outdated/list.go

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/pkg/errors"
99
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1010
"k8s.io/client-go/kubernetes"
11+
"k8s.io/client-go/rest"
1112
"k8s.io/client-go/tools/clientcmd"
1213
)
1314

@@ -20,10 +21,26 @@ type RunningImage struct {
2021
PullableImage string
2122
}
2223

23-
func (o Outdated) ListImages(kubeconfigPath string, imageNameCh chan string, ignoreNs []string) ([]RunningImage, error) {
24-
config, err := clientcmd.BuildConfigFromFlags("", kubeconfigPath)
25-
if err != nil {
26-
return nil, errors.Wrap(err, "failed to read kubeconfig")
24+
func (o Outdated) ListImages(kubeconfigPath string, kubeContext string, imageNameCh chan string, ignoreNs []string) ([]RunningImage, error) {
25+
var config *rest.Config
26+
27+
if kubeContext == "" {
28+
defaultConfig, err := clientcmd.BuildConfigFromFlags("", kubeconfigPath)
29+
if err != nil {
30+
return nil, errors.Wrap(err, "failed to read kubeconfig")
31+
}
32+
config = defaultConfig
33+
} else {
34+
configLoader := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
35+
&clientcmd.ClientConfigLoadingRules{ExplicitPath: kubeconfigPath},
36+
&clientcmd.ConfigOverrides{
37+
CurrentContext: kubeContext,
38+
})
39+
contextConfig, err := configLoader.ClientConfig()
40+
if err != nil {
41+
return nil, errors.Wrap(err, "failed to read context kubeconfig")
42+
}
43+
config = contextConfig
2744
}
2845

2946
clientset, err := kubernetes.NewForConfig(config)

0 commit comments

Comments
 (0)