From b4381d0c4473c8c8266950d8c0ed60b334361de3 Mon Sep 17 00:00:00 2001 From: Maru Newby Date: Thu, 18 May 2017 00:51:39 -0700 Subject: [PATCH] fed: Move kubefed server image definition to cmd This enables consumers like openshift to provide a different default without editing the kubefed init logic. --- federation/cmd/kubefed/app/BUILD | 1 + federation/cmd/kubefed/app/kubefed.go | 7 ++++++- federation/pkg/kubefed/init/BUILD | 1 - federation/pkg/kubefed/init/init.go | 11 +++-------- federation/pkg/kubefed/init/init_test.go | 2 +- federation/pkg/kubefed/kubefed.go | 4 ++-- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/federation/cmd/kubefed/app/BUILD b/federation/cmd/kubefed/app/BUILD index 96149b17b2c..75ae5bb2c6d 100644 --- a/federation/cmd/kubefed/app/BUILD +++ b/federation/cmd/kubefed/app/BUILD @@ -16,6 +16,7 @@ go_library( "//pkg/client/metrics/prometheus:go_default_library", "//pkg/kubectl/cmd/util:go_default_library", "//pkg/util/logs:go_default_library", + "//pkg/version:go_default_library", "//pkg/version/prometheus:go_default_library", ], ) diff --git a/federation/cmd/kubefed/app/kubefed.go b/federation/cmd/kubefed/app/kubefed.go index 7feb5059d3f..1ccfa261e60 100644 --- a/federation/cmd/kubefed/app/kubefed.go +++ b/federation/cmd/kubefed/app/kubefed.go @@ -17,19 +17,24 @@ limitations under the License. package app import ( + "fmt" "os" "k8s.io/kubernetes/federation/pkg/kubefed" _ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/util/logs" + "k8s.io/kubernetes/pkg/version" _ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration ) +const hyperkubeImageName = "gcr.io/google_containers/hyperkube-amd64" + func Run() error { logs.InitLogs() defer logs.FlushLogs() - cmd := kubefed.NewKubeFedCommand(cmdutil.NewFactory(nil), os.Stdin, os.Stdout, os.Stderr) + defaultImage := fmt.Sprintf("%s:%s", hyperkubeImageName, version.Get()) + cmd := kubefed.NewKubeFedCommand(cmdutil.NewFactory(nil), os.Stdin, os.Stdout, os.Stderr, defaultImage) return cmd.Execute() } diff --git a/federation/pkg/kubefed/init/BUILD b/federation/pkg/kubefed/init/BUILD index 267f14ce439..8725054aa52 100644 --- a/federation/pkg/kubefed/init/BUILD +++ b/federation/pkg/kubefed/init/BUILD @@ -24,7 +24,6 @@ go_library( "//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/kubectl/cmd/templates:go_default_library", "//pkg/kubectl/cmd/util:go_default_library", - "//pkg/version:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", diff --git a/federation/pkg/kubefed/init/init.go b/federation/pkg/kubefed/init/init.go index ba730d5130c..826ef8f66df 100644 --- a/federation/pkg/kubefed/init/init.go +++ b/federation/pkg/kubefed/init/init.go @@ -51,7 +51,6 @@ import ( client "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" "k8s.io/kubernetes/pkg/kubectl/cmd/templates" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" - "k8s.io/kubernetes/pkg/version" "github.com/golang/glog" "github.com/spf13/cobra" @@ -126,8 +125,6 @@ var ( "app": "federated-cluster", "module": "federation-controller-manager", } - - hyperkubeImageName = "gcr.io/google_containers/hyperkube-amd64" ) type initFederation struct { @@ -154,9 +151,7 @@ type initFederationOptions struct { apiServerEnableTokenAuth bool } -func (o *initFederationOptions) Bind(flags *pflag.FlagSet) { - defaultImage := fmt.Sprintf("%s:%s", hyperkubeImageName, version.Get()) - +func (o *initFederationOptions) Bind(flags *pflag.FlagSet, defaultImage string) { flags.StringVar(&o.dnsZoneName, "dns-zone-name", "", "DNS suffix for this federation. Federated Service DNS names are published with this suffix.") flags.StringVar(&o.image, "image", defaultImage, "Image to use for federation API server and controller manager binaries.") flags.StringVar(&o.dnsProvider, "dns-provider", "", "Dns provider to be used for this deployment.") @@ -174,7 +169,7 @@ func (o *initFederationOptions) Bind(flags *pflag.FlagSet) { // NewCmdInit defines the `init` command that bootstraps a federation // control plane inside a set of host clusters. -func NewCmdInit(cmdOut io.Writer, config util.AdminConfig) *cobra.Command { +func NewCmdInit(cmdOut io.Writer, config util.AdminConfig, defaultImage string) *cobra.Command { opts := &initFederation{} cmd := &cobra.Command{ @@ -190,7 +185,7 @@ func NewCmdInit(cmdOut io.Writer, config util.AdminConfig) *cobra.Command { flags := cmd.Flags() opts.commonOptions.Bind(flags) - opts.options.Bind(flags) + opts.options.Bind(flags, defaultImage) return cmd } diff --git a/federation/pkg/kubefed/init/init_test.go b/federation/pkg/kubefed/init/init_test.go index 1477f76cbf8..9cfb909163b 100644 --- a/federation/pkg/kubefed/init/init_test.go +++ b/federation/pkg/kubefed/init/init_test.go @@ -244,7 +244,7 @@ func TestInitFederation(t *testing.T) { t.Fatalf("[%d] unexpected error: %v", i, err) } - cmd := NewCmdInit(buf, adminConfig) + cmd := NewCmdInit(buf, adminConfig, "image") cmd.Flags().Set("kubeconfig", tc.kubeconfigExplicit) cmd.Flags().Set("host-cluster-context", "substrate") diff --git a/federation/pkg/kubefed/kubefed.go b/federation/pkg/kubefed/kubefed.go index ee5c72196e0..8cc1836c40b 100644 --- a/federation/pkg/kubefed/kubefed.go +++ b/federation/pkg/kubefed/kubefed.go @@ -31,7 +31,7 @@ import ( ) // NewKubeFedCommand creates the `kubefed` command and its nested children. -func NewKubeFedCommand(f cmdutil.Factory, in io.Reader, out, err io.Writer) *cobra.Command { +func NewKubeFedCommand(f cmdutil.Factory, in io.Reader, out, err io.Writer, defaultImage string) *cobra.Command { // Parent command to which all subcommands are added. cmds := &cobra.Command{ Use: "kubefed", @@ -53,7 +53,7 @@ func NewKubeFedCommand(f cmdutil.Factory, in io.Reader, out, err io.Writer) *cob { Message: "Basic Commands:", Commands: []*cobra.Command{ - kubefedinit.NewCmdInit(out, util.NewAdminConfig(clientcmd.NewDefaultPathOptions())), + kubefedinit.NewCmdInit(out, util.NewAdminConfig(clientcmd.NewDefaultPathOptions()), defaultImage), NewCmdJoin(f, out, util.NewAdminConfig(clientcmd.NewDefaultPathOptions())), NewCmdUnjoin(f, out, err, util.NewAdminConfig(clientcmd.NewDefaultPathOptions())), },