fix shell issue + bugz
parent
a85a1eced1
commit
9f4ff32699
2
go.mod
2
go.mod
|
|
@ -5,7 +5,7 @@ go 1.16
|
|||
replace (
|
||||
github.com/docker/distribution => github.com/docker/distribution v0.0.0-20191216044856-a8371794149d
|
||||
github.com/docker/docker => github.com/moby/moby v17.12.0-ce-rc1.0.20200618181300-9dc6525e6118+incompatible
|
||||
github.com/gdamore/tcell/v2 => github.com/derailed/tcell/v2 v2.2.1-rc.1
|
||||
github.com/gdamore/tcell/v2 => github.com/derailed/tcell/v2 v2.2.1-rc.6
|
||||
)
|
||||
|
||||
require (
|
||||
|
|
|
|||
4
go.sum
4
go.sum
|
|
@ -191,8 +191,8 @@ github.com/denisenkom/go-mssqldb v0.0.0-20191001013358-cfbb681360f0/go.mod h1:xb
|
|||
github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0=
|
||||
github.com/derailed/popeye v0.9.0 h1:0zP4BAzo94RUjrUkzgF962v0zL9B3xyopd7kU7tMxuc=
|
||||
github.com/derailed/popeye v0.9.0/go.mod h1:g3hudQlbEEChCA7U44fA+utTM9xQpD4pINUMQaiq5Gs=
|
||||
github.com/derailed/tcell/v2 v2.2.1-rc.1 h1:7VaxT1ydvWq5Ys/YASbPRO/02kzwdBOdzMLe2H1/Gds=
|
||||
github.com/derailed/tcell/v2 v2.2.1-rc.1/go.mod h1:0qLNzFYW8f0XhbEkwYtmnT8HYs3o4kuMsdkLEUKfAX0=
|
||||
github.com/derailed/tcell/v2 v2.2.1-rc.6 h1:4OYLuVMZKuw6j/1dTao2dPhoMAZVsb9uKG65yW749pM=
|
||||
github.com/derailed/tcell/v2 v2.2.1-rc.6/go.mod h1:0qLNzFYW8f0XhbEkwYtmnT8HYs3o4kuMsdkLEUKfAX0=
|
||||
github.com/derailed/tview v0.6.1 h1:dB+9bO7r6a1Yg1HE+XNJj61hioauJnGBFq2biC5bjAk=
|
||||
github.com/derailed/tview v0.6.1/go.mod h1:5Wjopun0Jw3zxOFtafwc/GlrkFJix1hZz1oQetWpnwE=
|
||||
github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
|
||||
|
|
|
|||
|
|
@ -76,7 +76,6 @@ func (c *Config) Refine(flags *genericclioptions.ConfigFlags, k9sFlags *Flags) e
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if isSet(flags.Context) {
|
||||
c.K9s.CurrentContext = *flags.Context
|
||||
} else {
|
||||
|
|
@ -91,10 +90,11 @@ func (c *Config) Refine(flags *genericclioptions.ConfigFlags, k9sFlags *Flags) e
|
|||
return fmt.Errorf("The specified context %q does not exists in kubeconfig", c.K9s.CurrentContext)
|
||||
}
|
||||
c.K9s.CurrentCluster = context.Cluster
|
||||
c.K9s.ActivateCluster()
|
||||
|
||||
var ns string
|
||||
var override bool
|
||||
if IsBoolSet(k9sFlags.AllNamespaces) {
|
||||
if k9sFlags != nil && IsBoolSet(k9sFlags.AllNamespaces) {
|
||||
ns, override = client.NamespaceAll, true
|
||||
} else if isSet(flags.Namespace) {
|
||||
ns, override = *flags.Namespace, true
|
||||
|
|
@ -129,11 +129,19 @@ func (c *Config) CurrentCluster() *Cluster {
|
|||
|
||||
// ActiveNamespace returns the active namespace in the current cluster.
|
||||
func (c *Config) ActiveNamespace() string {
|
||||
if cl := c.CurrentCluster(); cl != nil {
|
||||
if cl.Namespace != nil {
|
||||
return cl.Namespace.Active
|
||||
}
|
||||
if c.K9s.Clusters == nil {
|
||||
log.Warn().Msgf("No context detected returning default namespace")
|
||||
return "default"
|
||||
}
|
||||
cl := c.CurrentCluster()
|
||||
if cl == nil {
|
||||
cl = NewCluster()
|
||||
c.K9s.Clusters[c.K9s.CurrentCluster] = cl
|
||||
}
|
||||
if cl.Namespace != nil {
|
||||
return cl.Namespace.Active
|
||||
}
|
||||
|
||||
return "default"
|
||||
}
|
||||
|
||||
|
|
@ -197,7 +205,9 @@ func (c *Config) GetConnection() client.Connection {
|
|||
// SetConnection set an api server connection.
|
||||
func (c *Config) SetConnection(conn client.Connection) {
|
||||
c.client = conn
|
||||
c.client.Config().OverrideNS = c.overrideNS
|
||||
if c.client != nil && c.client.Config() != nil {
|
||||
c.client.Config().OverrideNS = c.overrideNS
|
||||
}
|
||||
}
|
||||
|
||||
// Load K9s configuration from file
|
||||
|
|
|
|||
|
|
@ -18,20 +18,20 @@ func init() {
|
|||
}
|
||||
|
||||
func TestConfigRefine(t *testing.T) {
|
||||
cfgFile, ctx, cluster, ns := "testdata/kubeconfig-test.yml", "test", "c1", "ns1"
|
||||
cfgFile, ctx, cluster, ns := "testdata/kubeconfig-test.yml", "test2", "cluster2", "ns2"
|
||||
uu := map[string]struct {
|
||||
flags *genericclioptions.ConfigFlags
|
||||
issue bool
|
||||
context, cluster, namespace string
|
||||
}{
|
||||
"kubeconfig": {
|
||||
"plain": {
|
||||
flags: &genericclioptions.ConfigFlags{KubeConfig: &cfgFile},
|
||||
issue: false,
|
||||
context: "test",
|
||||
cluster: "testCluster",
|
||||
namespace: "testNS",
|
||||
context: "test1",
|
||||
cluster: "cluster1",
|
||||
namespace: "ns1",
|
||||
},
|
||||
"override": {
|
||||
"overrideNS": {
|
||||
flags: &genericclioptions.ConfigFlags{
|
||||
KubeConfig: &cfgFile,
|
||||
Context: &ctx,
|
||||
|
|
@ -62,8 +62,8 @@ func TestConfigRefine(t *testing.T) {
|
|||
mk := NewMockKubeSettings()
|
||||
m.When(mk.NamespaceNames(namespaces())).ThenReturn([]string{"default"})
|
||||
cfg := config.NewConfig(mk)
|
||||
err := cfg.Refine(u.flags)
|
||||
|
||||
err := cfg.Refine(u.flags, nil)
|
||||
if u.issue {
|
||||
assert.NotNil(t, err)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -43,6 +43,13 @@ func NewK9s() *K9s {
|
|||
}
|
||||
}
|
||||
|
||||
func (k *K9s) ActivateCluster() {
|
||||
if _, ok := k.Clusters[k.CurrentCluster]; ok {
|
||||
return
|
||||
}
|
||||
k.Clusters[k.CurrentCluster] = NewCluster()
|
||||
}
|
||||
|
||||
// OverrideRefreshRate set the refresh rate manually.
|
||||
func (k *K9s) OverrideRefreshRate(r int) {
|
||||
k.manualRefreshRate = r
|
||||
|
|
|
|||
|
|
@ -1,20 +1,29 @@
|
|||
apiVersion: v1
|
||||
kind: Config
|
||||
clusters:
|
||||
- cluster:
|
||||
certificate-authority: /Users/test/ca.crt
|
||||
server: https://1.2.3.4:8443
|
||||
name: testCluster
|
||||
- cluster:
|
||||
certificate-authority: /Users/test/ca.crt
|
||||
server: https://1.2.3.4:8443
|
||||
name: testCluster
|
||||
contexts:
|
||||
- context:
|
||||
cluster: testCluster
|
||||
user: testUser
|
||||
namespace: testNS
|
||||
name: test
|
||||
current-context: test
|
||||
- context:
|
||||
cluster: cluster1
|
||||
user: user1
|
||||
namespace: ns1
|
||||
name: test1
|
||||
- context:
|
||||
cluster: cluster2
|
||||
user: user2
|
||||
namespace: ns2
|
||||
name: test2
|
||||
current-context: test1
|
||||
preferences: {}
|
||||
users:
|
||||
- name: testUser
|
||||
user:
|
||||
client-certificate: /Users/test/client.crt
|
||||
client-key: /Users/test/client.key
|
||||
- name: user1
|
||||
user:
|
||||
client-certificate: /Users/test/client.crt
|
||||
client-key: /Users/test/client.key
|
||||
- name: user2
|
||||
user:
|
||||
client-certificate: /Users/test/client.crt
|
||||
client-key: /Users/test/client.key
|
||||
|
|
|
|||
Loading…
Reference in New Issue