From 27177bbc38f77464a6aa587d9d84de1f96b7c573 Mon Sep 17 00:00:00 2001 From: Basuotian <93654253+basuotian@users.noreply.github.com> Date: Tue, 31 Jan 2023 20:02:05 +0800 Subject: [PATCH] =?UTF-8?q?Fix:=20use=20the=20namespace=20specified=20in?= =?UTF-8?q?=20the=20resource=20if=20-n=20is=20not=20s=E2=80=A6=20(#5379)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix #5368, use the namespace specified in the resource if -n is not specified Signed-off-by: Basuotian * add default namespace for the case missing namespace in resourceRef Signed-off-by: Basuotian * add test case Signed-off-by: Basuotian --------- Signed-off-by: Basuotian --- references/cli/adopt.go | 7 +++++ references/cli/adopt_test.go | 58 ++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 references/cli/adopt_test.go diff --git a/references/cli/adopt.go b/references/cli/adopt.go index a54ca22fa..72688044f 100644 --- a/references/cli/adopt.go +++ b/references/cli/adopt.go @@ -52,6 +52,7 @@ import ( velacmd "github.com/oam-dev/kubevela/pkg/cmd" cmdutil "github.com/oam-dev/kubevela/pkg/cmd/util" "github.com/oam-dev/kubevela/pkg/utils/apply" + "github.com/oam-dev/kubevela/pkg/utils/env" "github.com/oam-dev/kubevela/pkg/utils/util" ) @@ -133,6 +134,9 @@ func (opt *AdoptOptions) parseResourceRef(f velacmd.Factory, cmd *cobra.Command, or.Name = parts[1] if mapping.Scope.Name() == meta.RESTScopeNameNamespace { or.Namespace = velacmd.GetNamespace(f, cmd) + if or.Namespace == "" { + or.Namespace = env.DefaultEnvNamespace + } } case 3: or.Namespace = parts[1] @@ -160,6 +164,9 @@ func (opt *AdoptOptions) Complete(f velacmd.Factory, cmd *cobra.Command, args [] }) { opt.AppName = opt.NativeResourceRefs[0].Name } + if opt.AppNamespace == "" { + opt.AppNamespace = opt.NativeResourceRefs[0].Namespace + } case adoptTypeHelm: if len(args) > 0 { opt.HelmReleaseName = args[0] diff --git a/references/cli/adopt_test.go b/references/cli/adopt_test.go new file mode 100644 index 000000000..d9e8e89f2 --- /dev/null +++ b/references/cli/adopt_test.go @@ -0,0 +1,58 @@ +/* +Copyright 2021 The KubeVela Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cli + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "sigs.k8s.io/controller-runtime/pkg/client/config" + + velacmd "github.com/oam-dev/kubevela/pkg/cmd" + "github.com/oam-dev/kubevela/pkg/utils/util" +) + +func TestDefaultNamespace(t *testing.T) { + testcase := []struct { + namespace string + args []string + }{ + { + namespace: "kube-system", + args: []string{"deployment/kube-system/metrics-server"}, + }, + { + namespace: "default", + args: []string{"deployment/metrics-server"}, + }, + } + + for _, c := range testcase { + opt := &AdoptOptions{ + Type: adoptTypeNative, + Mode: adoptModeReadOnly, + } + f := velacmd.NewDeferredFactory(config.GetConfig) + ioStream := util.IOStreams{} + cmd := NewAdoptCommand(f, ioStream) + err := opt.Complete(f, cmd, c.args) + if err != nil { + t.Fatalf("failed to parse resourceRef: %v", err) + } + assert.Equal(t, opt.AppNamespace, c.namespace) + } +}