diff --git a/pkg/kubectl/cmd/expose.go b/pkg/kubectl/cmd/expose.go index cae2a6e2082..daecc86ca09 100644 --- a/pkg/kubectl/cmd/expose.go +++ b/pkg/kubectl/cmd/expose.go @@ -96,7 +96,6 @@ type ExposeServiceOptions struct { MapBasedSelectorForObject func(runtime.Object) (string, error) PortsForObject func(runtime.Object) ([]string, error) ProtocolsForObject func(runtime.Object) (map[string]string, error) - LabelsForObject func(runtime.Object) (map[string]string, error) Namespace string Mapper meta.RESTMapper @@ -200,7 +199,6 @@ func (o *ExposeServiceOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) e if err != nil { return err } - o.LabelsForObject = f.LabelsForObject o.Namespace, o.EnforceNamespace, err = f.DefaultNamespace() if err != nil { @@ -294,7 +292,7 @@ func (o *ExposeServiceOptions) RunExpose(cmd *cobra.Command, args []string) erro } if kubectl.IsZero(params["labels"]) { - labels, err := o.LabelsForObject(info.Object) + labels, err := meta.NewAccessor().Labels(info.Object) if err != nil { return err } diff --git a/pkg/kubectl/cmd/set/set_image.go b/pkg/kubectl/cmd/set/set_image.go index cdb1ad613f2..540e40bebc9 100644 --- a/pkg/kubectl/cmd/set/set_image.go +++ b/pkg/kubectl/cmd/set/set_image.go @@ -50,7 +50,7 @@ type SetImageOptions struct { All bool Output string Local bool - ResolveImage func(in string) (string, error) + ResolveImage ImageResolver PrintObj printers.ResourcePrinterFunc Recorder genericclioptions.Recorder @@ -138,7 +138,7 @@ func (o *SetImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [ o.UpdatePodSpecForObject = polymorphichelpers.UpdatePodSpecForObjectFn o.DryRun = cmdutil.GetDryRunFlag(cmd) o.Output = cmdutil.GetFlagString(cmd, "output") - o.ResolveImage = f.ResolveImage + o.ResolveImage = resolveImageFunc if o.DryRun { o.PrintFlags.Complete("%s (dry run)") @@ -310,3 +310,13 @@ func hasWildcardKey(containerImages map[string]string) bool { _, ok := containerImages["*"] return ok } + +// ImageResolver is a func that receives an image name, and +// resolves it to an appropriate / compatible image name. +// Adds flexibility for future image resolving methods. +type ImageResolver func(in string) (string, error) + +// implements ImageResolver +func resolveImageFunc(in string) (string, error) { + return in, nil +} diff --git a/pkg/kubectl/cmd/util/factory.go b/pkg/kubectl/cmd/util/factory.go index f42f80560e8..9af233887c1 100644 --- a/pkg/kubectl/cmd/util/factory.go +++ b/pkg/kubectl/cmd/util/factory.go @@ -86,8 +86,6 @@ type ClientAccessFactory interface { PortsForObject(object runtime.Object) ([]string, error) // ProtocolsForObject returns the mapping associated with the provided object ProtocolsForObject(object runtime.Object) (map[string]string, error) - // LabelsForObject returns the labels associated with the provided object - LabelsForObject(object runtime.Object) (map[string]string, error) // Command will stringify and return all environment arguments ie. a command run by a client // using the factory. @@ -105,11 +103,6 @@ type ClientAccessFactory interface { // in case the object is already resumed. Resumer(info *resource.Info) ([]byte, error) - // ResolveImage resolves the image names. For kubernetes this function is just - // passthrough but it allows to perform more sophisticated image name resolving for - // third-party vendors. - ResolveImage(imageName string) (string, error) - // Returns the default namespace to use in cases where no // other namespace is specified and whether the namespace was // overridden. diff --git a/pkg/kubectl/cmd/util/factory_client_access.go b/pkg/kubectl/cmd/util/factory_client_access.go index 519021d919b..9fb932d262c 100644 --- a/pkg/kubectl/cmd/util/factory_client_access.go +++ b/pkg/kubectl/cmd/util/factory_client_access.go @@ -196,10 +196,6 @@ func (f *ring0Factory) ProtocolsForObject(object runtime.Object) (map[string]str } } -func (f *ring0Factory) LabelsForObject(object runtime.Object) (map[string]string, error) { - return meta.NewAccessor().Labels(object) -} - // Set showSecrets false to filter out stuff like secrets. func (f *ring0Factory) Command(cmd *cobra.Command, showSecrets bool) string { if len(os.Args) == 0 { @@ -254,10 +250,6 @@ func (f *ring0Factory) Pauser(info *resource.Info) ([]byte, error) { } } -func (f *ring0Factory) ResolveImage(name string) (string, error) { - return name, nil -} - func (f *ring0Factory) Resumer(info *resource.Info) ([]byte, error) { switch obj := info.Object.(type) { case *extensions.Deployment: diff --git a/pkg/kubectl/cmd/util/factory_test.go b/pkg/kubectl/cmd/util/factory_test.go index ba43f58a37e..8f9b120dde4 100644 --- a/pkg/kubectl/cmd/util/factory_test.go +++ b/pkg/kubectl/cmd/util/factory_test.go @@ -21,7 +21,6 @@ import ( "testing" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/util/sets" api "k8s.io/kubernetes/pkg/apis/core" @@ -98,57 +97,6 @@ func TestProtocolsForObject(t *testing.T) { } } -func TestLabelsForObject(t *testing.T) { - f := NewFactory(genericclioptions.NewTestConfigFlags()) - - tests := []struct { - name string - object runtime.Object - expected string - err error - }{ - { - name: "successful re-use of labels", - object: &api.Service{ - ObjectMeta: metav1.ObjectMeta{Name: "baz", Namespace: "test", Labels: map[string]string{"svc": "test"}}, - TypeMeta: metav1.TypeMeta{Kind: "Service", APIVersion: "v1"}, - }, - expected: "svc=test", - err: nil, - }, - { - name: "empty labels", - object: &api.Service{ - ObjectMeta: metav1.ObjectMeta{Name: "foo", Namespace: "test", Labels: map[string]string{}}, - TypeMeta: metav1.TypeMeta{Kind: "Service", APIVersion: "v1"}, - }, - expected: "", - err: nil, - }, - { - name: "nil labels", - object: &api.Service{ - ObjectMeta: metav1.ObjectMeta{Name: "zen", Namespace: "test", Labels: nil}, - TypeMeta: metav1.TypeMeta{Kind: "Service", APIVersion: "v1"}, - }, - expected: "", - err: nil, - }, - } - - for _, test := range tests { - gotLabels, err := f.LabelsForObject(test.object) - if err != test.err { - t.Fatalf("%s: Error mismatch: Expected %v, got %v", test.name, test.err, err) - } - got := kubectl.MakeLabels(gotLabels) - if test.expected != got { - t.Fatalf("%s: Labels mismatch! Expected %s, got %s", test.name, test.expected, got) - } - - } -} - func TestCanBeExposed(t *testing.T) { factory := NewFactory(genericclioptions.NewTestConfigFlags()) tests := []struct {