Skip to content

Commit

Permalink
Implement renaming context
Browse files Browse the repository at this point in the history
  • Loading branch information
arunvelsriram committed Nov 18, 2018
1 parent 1b62775 commit a43c12e
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 12 deletions.
41 changes: 29 additions & 12 deletions pkg/kubeconfig/kubeconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,6 @@ func (k KubeConfig) Delete(context string) error {
// regional Kubernetes cluster
func (k KubeConfig) AddRegionalCluster(project string, cluster string, region string, context string) error {
kubeconfig := path.Join(k.dir, context)
envs := []string{
"CLOUDSDK_CONTAINER_USE_V1_API_CLIENT=false",
"CLOUDSDK_CONTAINER_USE_V1_API=false",
fmt.Sprintf("KUBECONFIG=%s", kubeconfig),
}
args := []string{
"beta",
"container",
Expand All @@ -45,8 +40,12 @@ func (k KubeConfig) AddRegionalCluster(project string, cluster string, region st
fmt.Sprintf("--region=%s", region),
fmt.Sprintf("--project=%s", project),
}
_, err := k.commander.Execute("gcloud", args, envs)
if err != nil {
envs := []string{
"CLOUDSDK_CONTAINER_USE_V1_API_CLIENT=false",
"CLOUDSDK_CONTAINER_USE_V1_API=false",
fmt.Sprintf("KUBECONFIG=%s", kubeconfig),
}
if _, err := k.commander.Execute("gcloud", args, envs); err != nil {
return err
}

Expand All @@ -57,9 +56,6 @@ func (k KubeConfig) AddRegionalCluster(project string, cluster string, region st
// zonal Kubernetes cluster
func (k KubeConfig) AddZonalCluster(project string, cluster string, zone string, context string) error {
kubeconfig := path.Join(k.dir, context)
envs := []string{
fmt.Sprintf("KUBECONFIG=%s", kubeconfig),
}
args := []string{
"container",
"clusters",
Expand All @@ -68,8 +64,29 @@ func (k KubeConfig) AddZonalCluster(project string, cluster string, zone string,
fmt.Sprintf("--zone=%s", zone),
fmt.Sprintf("--project=%s", project),
}
_, err := k.commander.Execute("gcloud", args, envs)
if err != nil {
envs := []string{
fmt.Sprintf("KUBECONFIG=%s", kubeconfig),
}
if _, err := k.commander.Execute("gcloud", args, envs); err != nil {
return err
}

return nil
}

// RenameContext renames a Kubernetes context
func (k KubeConfig) RenameContext(oldCtx string, newCtx string) error {
kubeconfig := path.Join(k.dir, newCtx)
args := []string{
"config",
"rename-context",
oldCtx,
newCtx,
}
envs := []string{
fmt.Sprintf("KUBECONFIG=%s", kubeconfig),
}
if _, err := k.commander.Execute("kubectl", args, envs); err != nil {
return err
}

Expand Down
52 changes: 52 additions & 0 deletions pkg/kubeconfig/kubeconfig_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -203,3 +203,55 @@ func TestAddZonalCluster(t *testing.T) {
assert.EqualError(t, err, "some error")
})
}

func TestRenameContext(t *testing.T) {
t.Run("should rename a context", func(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()

mockFS := mock.NewFileSystem(ctrl)
mockFS.EXPECT().HomeDir().Return("/Users/test", nil)

mockCmdr := mock.NewCommander(ctrl)
args := []string{
"config",
"rename-context",
"old-context-name",
"new-context-name",
}
envs := []string{
"KUBECONFIG=/Users/test/.kube/configs/new-context-name",
}
mockCmdr.EXPECT().Execute("kubectl", args, envs).Return("Context renamed", nil)

kubeCfg, _ := kubeconfig.New(mockFS, mockCmdr)
err := kubeCfg.RenameContext("old-context-name", "new-context-name")

assert.Nil(t, err)
})

t.Run("should return error if renaming context fails", func(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()

mockFS := mock.NewFileSystem(ctrl)
mockFS.EXPECT().HomeDir().Return("/Users/test", nil)

mockCmdr := mock.NewCommander(ctrl)
args := []string{
"config",
"rename-context",
"old-context-name",
"new-context-name",
}
envs := []string{
"KUBECONFIG=/Users/test/.kube/configs/new-context-name",
}
mockCmdr.EXPECT().Execute("kubectl", args, envs).Return("", fmt.Errorf("some error"))

kubeCfg, _ := kubeconfig.New(mockFS, mockCmdr)
err := kubeCfg.RenameContext("old-context-name", "new-context-name")

assert.EqualError(t, err, "some error")
})
}

0 comments on commit a43c12e

Please sign in to comment.