diff --git a/pkg/kubectl/cmd/resize.go b/pkg/kubectl/cmd/resize.go index b68fb5fd7d7..ec1cbdced31 100644 --- a/pkg/kubectl/cmd/resize.go +++ b/pkg/kubectl/cmd/resize.go @@ -21,11 +21,13 @@ import ( "io" "time" + "github.com/spf13/cobra" + "github.com/GoogleCloudPlatform/kubernetes/pkg/controller" "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl" cmdutil "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd/util" + "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/resource" "github.com/GoogleCloudPlatform/kubernetes/pkg/util/wait" - "github.com/spf13/cobra" ) const ( @@ -73,12 +75,27 @@ func RunResize(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []str return err } - mapper, _ := f.Object() - // TODO: use resource.Builder instead - mapping, namespace, name, err := cmdutil.ResourceFromArgs(cmd, args, mapper, cmdNamespace) + mapper, typer := f.Object() + r := resource.NewBuilder(mapper, typer, f.ClientMapperForCommand()). + ContinueOnError(). + NamespaceParam(cmdNamespace).DefaultNamespace(). + ResourceTypeOrNameArgs(false, args...). + Flatten(). + Do() + err = r.Err() if err != nil { return err } + mapping, err := r.ResourceMapping() + if err != nil { + return err + } + + infos, err := r.Infos() + if err != nil { + return err + } + info := infos[0] resizer, err := f.Resizer(mapping) if err != nil { @@ -88,7 +105,7 @@ func RunResize(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []str resourceVersion := cmdutil.GetFlagString(cmd, "resource-version") currentSize := cmdutil.GetFlagInt(cmd, "current-replicas") precondition := &kubectl.ResizePrecondition{currentSize, resourceVersion} - cond := kubectl.ResizeCondition(resizer, precondition, namespace, name, uint(count)) + cond := kubectl.ResizeCondition(resizer, precondition, info.Namespace, info.Name, uint(count)) msg := "resized" if err = wait.Poll(retryFrequency, retryTimeout, cond); err != nil { diff --git a/pkg/kubectl/cmd/update.go b/pkg/kubectl/cmd/update.go index cbca1e6f3c0..ae597dffb22 100644 --- a/pkg/kubectl/cmd/update.go +++ b/pkg/kubectl/cmd/update.go @@ -20,10 +20,11 @@ import ( "fmt" "io" + "github.com/spf13/cobra" + cmdutil "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd/util" "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/resource" "github.com/GoogleCloudPlatform/kubernetes/pkg/util" - "github.com/spf13/cobra" ) const ( @@ -123,9 +124,18 @@ func updateWithPatch(cmd *cobra.Command, args []string, f *cmdutil.Factory, patc return "", err } - mapper, _ := f.Object() - // TODO: use resource.Builder instead - mapping, namespace, name, err := cmdutil.ResourceFromArgs(cmd, args, mapper, cmdNamespace) + mapper, typer := f.Object() + r := resource.NewBuilder(mapper, typer, f.ClientMapperForCommand()). + ContinueOnError(). + NamespaceParam(cmdNamespace).DefaultNamespace(). + ResourceTypeOrNameArgs(false, args...). + Flatten(). + Do() + err = r.Err() + if err != nil { + return "", err + } + mapping, err := r.ResourceMapping() if err != nil { return "", err } @@ -134,6 +144,12 @@ func updateWithPatch(cmd *cobra.Command, args []string, f *cmdutil.Factory, patc return "", err } + infos, err := r.Infos() + if err != nil { + return "", err + } + name, namespace := infos[0].Name, infos[0].Namespace + helper := resource.NewHelper(client, mapping) obj, err := helper.Get(namespace, name) if err != nil { diff --git a/pkg/kubectl/cmd/util/resource.go b/pkg/kubectl/cmd/util/resource.go deleted file mode 100644 index 1ceca6279d0..00000000000 --- a/pkg/kubectl/cmd/util/resource.go +++ /dev/null @@ -1,50 +0,0 @@ -/* -Copyright 2014 Google Inc. All rights reserved. - -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 util - -import ( - "github.com/spf13/cobra" - - "github.com/GoogleCloudPlatform/kubernetes/pkg/api/meta" -) - -// ResourceFromArgs expects two arguments with a given type, and extracts the fields necessary -// to uniquely locate a resource. Displays a UsageError if that contract is not satisfied, or -// a generic error if any other problems occur. -// DEPRECATED: Use resource.Builder -func ResourceFromArgs(cmd *cobra.Command, args []string, mapper meta.RESTMapper, cmdNamespace string) (mapping *meta.RESTMapping, namespace, name string, err error) { - if len(args) != 2 { - err = UsageError(cmd, "Must provide resource and name command line params") - return - } - - resource := args[0] - namespace = cmdNamespace - name = args[1] - if len(name) == 0 || len(resource) == 0 { - err = UsageError(cmd, "Must provide resource and name command line params") - return - } - - version, kind, err := mapper.VersionAndKindForResource(resource) - if err != nil { - return - } - - mapping, err = mapper.RESTMapping(kind, version) - return -}