From bc9852fca4b5a0178c3d2a2c83c60ebf4d082271 Mon Sep 17 00:00:00 2001 From: Irfan Ur Rehman Date: Tue, 21 Mar 2017 15:46:05 +0530 Subject: [PATCH] [Federation][Kubefed] Support documentation for kubefed and its sub commands --- build/visible_to/BUILD | 1 + federation/cmd/genfeddocs/BUILD | 3 +++ federation/cmd/genfeddocs/gen_fed_docs.go | 7 +++++++ federation/cmd/kubefed/app/kubefed.go | 9 ++++++--- federation/pkg/kubefed/init/init.go | 4 ++-- federation/pkg/kubefed/join.go | 2 +- federation/pkg/kubefed/unjoin.go | 2 +- hack/lib/util.sh | 1 + 8 files changed, 22 insertions(+), 7 deletions(-) diff --git a/build/visible_to/BUILD b/build/visible_to/BUILD index 20c9aa142e0..0ac643d871e 100644 --- a/build/visible_to/BUILD +++ b/build/visible_to/BUILD @@ -58,6 +58,7 @@ package_group( package_group( name = "FEDERATION_BAD", packages = [ + "//federation/cmd/genfeddocs", "//federation/cmd/kubefed/app", "//federation/pkg/kubefed", "//federation/pkg/kubefed/init", diff --git a/federation/cmd/genfeddocs/BUILD b/federation/cmd/genfeddocs/BUILD index 2e65ba61c2d..4d97e1359c8 100644 --- a/federation/cmd/genfeddocs/BUILD +++ b/federation/cmd/genfeddocs/BUILD @@ -22,6 +22,9 @@ go_library( "//cmd/genutils:go_default_library", "//federation/cmd/federation-apiserver/app:go_default_library", "//federation/cmd/federation-controller-manager/app:go_default_library", + "//federation/cmd/kubefed/app:go_default_library", + "//federation/pkg/kubefed:go_default_library", + "//pkg/kubectl/cmd/util:go_default_library", "//vendor/github.com/spf13/cobra/doc:go_default_library", ], ) diff --git a/federation/cmd/genfeddocs/gen_fed_docs.go b/federation/cmd/genfeddocs/gen_fed_docs.go index 8910ea01eb7..237120837c9 100644 --- a/federation/cmd/genfeddocs/gen_fed_docs.go +++ b/federation/cmd/genfeddocs/gen_fed_docs.go @@ -24,6 +24,9 @@ import ( "k8s.io/kubernetes/cmd/genutils" fedapiservapp "k8s.io/kubernetes/federation/cmd/federation-apiserver/app" fedcmapp "k8s.io/kubernetes/federation/cmd/federation-controller-manager/app" + kubefedapp "k8s.io/kubernetes/federation/cmd/kubefed/app" + "k8s.io/kubernetes/federation/pkg/kubefed" + cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" ) // Note: We have a separate binary for generating federation docs and kube docs because of the way api groups are api.Registry. @@ -57,6 +60,10 @@ func main() { // generate docs for kube-controller-manager controllermanager := fedcmapp.NewControllerManagerCommand() doc.GenMarkdownTree(controllermanager, outDir) + case "kubefed": + // generate docs for kubefed + kubefed := kubefed.NewKubeFedCommand(cmdutil.NewFactory(nil), os.Stdin, os.Stdout, os.Stderr, kubefedapp.GetDefaultServerImage(), kubefedapp.DefaultEtcdImage) + doc.GenMarkdownTree(kubefed, outDir) default: fmt.Fprintf(os.Stderr, "Module %s is not supported", module) os.Exit(1) diff --git a/federation/cmd/kubefed/app/kubefed.go b/federation/cmd/kubefed/app/kubefed.go index ee9e0ad6320..a08d363fa50 100644 --- a/federation/cmd/kubefed/app/kubefed.go +++ b/federation/cmd/kubefed/app/kubefed.go @@ -30,14 +30,17 @@ import ( const ( hyperkubeImageName = "gcr.io/google_containers/hyperkube-amd64" - defaultEtcdImage = "gcr.io/google_containers/etcd:3.0.17" + DefaultEtcdImage = "gcr.io/google_containers/etcd:3.0.17" ) +func GetDefaultServerImage() string { + return fmt.Sprintf("%s:%s", hyperkubeImageName, version.Get()) +} + func Run() error { logs.InitLogs() defer logs.FlushLogs() - defaultServerImage := fmt.Sprintf("%s:%s", hyperkubeImageName, version.Get()) - cmd := kubefed.NewKubeFedCommand(cmdutil.NewFactory(nil), os.Stdin, os.Stdout, os.Stderr, defaultServerImage, defaultEtcdImage) + cmd := kubefed.NewKubeFedCommand(cmdutil.NewFactory(nil), os.Stdin, os.Stdout, os.Stderr, GetDefaultServerImage(), DefaultEtcdImage) return cmd.Execute() } diff --git a/federation/pkg/kubefed/init/init.go b/federation/pkg/kubefed/init/init.go index 13388216ef4..ad3ec06536f 100644 --- a/federation/pkg/kubefed/init/init.go +++ b/federation/pkg/kubefed/init/init.go @@ -96,7 +96,7 @@ const ( var ( init_long = templates.LongDesc(` - Initialize a federation control plane. + Init initializes a federation control plane. Federation control plane is hosted inside a Kubernetes cluster. The host cluster must be specified using the @@ -178,7 +178,7 @@ func NewCmdInit(cmdOut io.Writer, config util.AdminConfig, defaultServerImage, d cmd := &cobra.Command{ Use: "init FEDERATION_NAME --host-cluster-context=HOST_CONTEXT", - Short: "init initializes a federation control plane", + Short: "Initialize a federation control plane", Long: init_long, Example: init_example, Run: func(cmd *cobra.Command, args []string) { diff --git a/federation/pkg/kubefed/join.go b/federation/pkg/kubefed/join.go index 4fcc5e332a3..9c271e3f9ef 100644 --- a/federation/pkg/kubefed/join.go +++ b/federation/pkg/kubefed/join.go @@ -56,7 +56,7 @@ const ( var ( join_long = templates.LongDesc(` - Join a cluster to a federation. + Join adds a cluster to a federation. Current context is assumed to be a federation API server. Please use the --context flag otherwise.`) diff --git a/federation/pkg/kubefed/unjoin.go b/federation/pkg/kubefed/unjoin.go index 963908937c8..d7c65fb7537 100644 --- a/federation/pkg/kubefed/unjoin.go +++ b/federation/pkg/kubefed/unjoin.go @@ -72,7 +72,7 @@ func NewCmdUnjoin(f cmdutil.Factory, cmdOut, cmdErr io.Writer, config util.Admin cmd := &cobra.Command{ Use: "unjoin CLUSTER_NAME --host-cluster-context=HOST_CONTEXT", - Short: "Unjoins a cluster from a federation", + Short: "Unjoin a cluster from a federation", Long: unjoin_long, Example: unjoin_example, Run: func(cmd *cobra.Command, args []string) { diff --git a/hack/lib/util.sh b/hack/lib/util.sh index 50f6b55572a..dfd79d148dd 100755 --- a/hack/lib/util.sh +++ b/hack/lib/util.sh @@ -214,6 +214,7 @@ kube::util::gen-docs() { # to generate. The actual binary for running federation is hyperkube. "${genfeddocs}" "${dest}/docs/admin/" "federation-apiserver" "${genfeddocs}" "${dest}/docs/admin/" "federation-controller-manager" + "${genfeddocs}" "${dest}/docs/admin/" "kubefed" mkdir -p "${dest}/docs/man/man1/" "${genman}" "${dest}/docs/man/man1/" "kube-apiserver"