From f255e46ee47202593a2e06ef2aa2ae26376b5060 Mon Sep 17 00:00:00 2001 From: deads2k Date: Fri, 2 Dec 2016 10:50:45 -0500 Subject: [PATCH] refactor kubernetes-discovery to use cobra and prep for genericapiserver --- cmd/kubernetes-discovery/BUILD | 4 +- cmd/kubernetes-discovery/main.go | 24 +++--- cmd/kubernetes-discovery/pkg/cmd/server/BUILD | 22 ++++++ .../pkg/cmd/server/start.go | 79 +++++++++++++++++++ .../{discoverysummarizer => pkg/legacy}/BUILD | 2 +- .../legacy}/apis/config/v1alpha1/BUILD | 0 .../legacy}/apis/config/v1alpha1/types.go | 0 .../legacy}/discoverysummarizer.go | 4 +- .../legacy}/doc.go | 2 +- .../discoverysummarizer_test.go | 4 +- 10 files changed, 122 insertions(+), 19 deletions(-) create mode 100644 cmd/kubernetes-discovery/pkg/cmd/server/BUILD create mode 100644 cmd/kubernetes-discovery/pkg/cmd/server/start.go rename cmd/kubernetes-discovery/{discoverysummarizer => pkg/legacy}/BUILD (80%) rename cmd/kubernetes-discovery/{discoverysummarizer => pkg/legacy}/apis/config/v1alpha1/BUILD (100%) rename cmd/kubernetes-discovery/{discoverysummarizer => pkg/legacy}/apis/config/v1alpha1/types.go (100%) rename cmd/kubernetes-discovery/{discoverysummarizer => pkg/legacy}/discoverysummarizer.go (98%) rename cmd/kubernetes-discovery/{discoverysummarizer => pkg/legacy}/doc.go (88%) diff --git a/cmd/kubernetes-discovery/BUILD b/cmd/kubernetes-discovery/BUILD index 7fe3d422530..815d3ca3741 100644 --- a/cmd/kubernetes-discovery/BUILD +++ b/cmd/kubernetes-discovery/BUILD @@ -15,7 +15,7 @@ go_binary( srcs = ["main.go"], tags = ["automanaged"], deps = [ - "//cmd/kubernetes-discovery/discoverysummarizer:go_default_library", - "//vendor:github.com/golang/glog", + "//cmd/kubernetes-discovery/pkg/cmd/server:go_default_library", + "//pkg/util/logs:go_default_library", ], ) diff --git a/cmd/kubernetes-discovery/main.go b/cmd/kubernetes-discovery/main.go index ea11d094d23..bbea56672d8 100644 --- a/cmd/kubernetes-discovery/main.go +++ b/cmd/kubernetes-discovery/main.go @@ -17,21 +17,23 @@ limitations under the License. package main import ( - "k8s.io/kubernetes/cmd/kubernetes-discovery/discoverysummarizer" + "os" + "runtime" - "github.com/golang/glog" + "k8s.io/kubernetes/cmd/kubernetes-discovery/pkg/cmd/server" + "k8s.io/kubernetes/pkg/util/logs" ) func main() { - // TODO: move them to flags. - configFilePath := "config.json" - port := "9090" - s, err := discoverysummarizer.NewDiscoverySummarizer(configFilePath) - if err != nil { - glog.Fatalf("%v\n", err) + logs.InitLogs() + defer logs.FlushLogs() + + if len(os.Getenv("GOMAXPROCS")) == 0 { + runtime.GOMAXPROCS(runtime.NumCPU()) } - err = s.Run(port) - if err != nil { - glog.Fatalf("%v\n", err) + + cmd := server.NewCommandStartDiscoveryServer(os.Stdout, os.Stderr) + if err := cmd.Execute(); err != nil { + os.Exit(1) } } diff --git a/cmd/kubernetes-discovery/pkg/cmd/server/BUILD b/cmd/kubernetes-discovery/pkg/cmd/server/BUILD new file mode 100644 index 00000000000..9da48f077f4 --- /dev/null +++ b/cmd/kubernetes-discovery/pkg/cmd/server/BUILD @@ -0,0 +1,22 @@ +package(default_visibility = ["//visibility:public"]) + +licenses(["notice"]) + +load( + "@io_bazel_rules_go//go:def.bzl", + "go_binary", + "go_library", + "go_test", + "cgo_library", +) + +go_library( + name = "go_default_library", + srcs = ["start.go"], + tags = ["automanaged"], + deps = [ + "//cmd/kubernetes-discovery/pkg/legacy:go_default_library", + "//pkg/kubectl/cmd/util:go_default_library", + "//vendor:github.com/spf13/cobra", + ], +) diff --git a/cmd/kubernetes-discovery/pkg/cmd/server/start.go b/cmd/kubernetes-discovery/pkg/cmd/server/start.go new file mode 100644 index 00000000000..9bc2d6bf033 --- /dev/null +++ b/cmd/kubernetes-discovery/pkg/cmd/server/start.go @@ -0,0 +1,79 @@ +/* +Copyright 2016 The Kubernetes 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 server + +import ( + "io" + + "github.com/spf13/cobra" + + "k8s.io/kubernetes/cmd/kubernetes-discovery/pkg/legacy" + kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" +) + +type DiscoveryServerOptions struct { + StdOut io.Writer + StdErr io.Writer +} + +// NewCommandStartMaster provides a CLI handler for 'start master' command +func NewCommandStartDiscoveryServer(out, err io.Writer) *cobra.Command { + o := &DiscoveryServerOptions{ + StdOut: out, + StdErr: err, + } + + cmd := &cobra.Command{ + Short: "Launch a discovery summarizer and proxy server", + Long: "Launch a discovery summarizer and proxy server", + Run: func(c *cobra.Command, args []string) { + kcmdutil.CheckErr(o.Complete()) + kcmdutil.CheckErr(o.Validate(args)) + kcmdutil.CheckErr(o.RunDiscoveryServer()) + }, + } + + return cmd +} + +func (o DiscoveryServerOptions) Validate(args []string) error { + return nil +} + +func (o *DiscoveryServerOptions) Complete() error { + return nil +} + +func (o DiscoveryServerOptions) RunDiscoveryServer() error { + if true { + // for now this is the only option. later, only use this if no etcd is configured + return o.RunLegacyDiscoveryServer() + } + + return nil +} + +// RunLegacyDiscoveryServer runs the legacy mode of discovery +func (o DiscoveryServerOptions) RunLegacyDiscoveryServer() error { + configFilePath := "config.json" + port := "9090" + s, err := legacy.NewDiscoverySummarizer(configFilePath) + if err != nil { + return err + } + return s.Run(port) +} diff --git a/cmd/kubernetes-discovery/discoverysummarizer/BUILD b/cmd/kubernetes-discovery/pkg/legacy/BUILD similarity index 80% rename from cmd/kubernetes-discovery/discoverysummarizer/BUILD rename to cmd/kubernetes-discovery/pkg/legacy/BUILD index 26855b0f28d..14e43b92b70 100644 --- a/cmd/kubernetes-discovery/discoverysummarizer/BUILD +++ b/cmd/kubernetes-discovery/pkg/legacy/BUILD @@ -18,7 +18,7 @@ go_library( ], tags = ["automanaged"], deps = [ - "//cmd/kubernetes-discovery/discoverysummarizer/apis/config/v1alpha1:go_default_library", + "//cmd/kubernetes-discovery/pkg/legacy/apis/config/v1alpha1:go_default_library", "//pkg/apis/meta/v1:go_default_library", ], ) diff --git a/cmd/kubernetes-discovery/discoverysummarizer/apis/config/v1alpha1/BUILD b/cmd/kubernetes-discovery/pkg/legacy/apis/config/v1alpha1/BUILD similarity index 100% rename from cmd/kubernetes-discovery/discoverysummarizer/apis/config/v1alpha1/BUILD rename to cmd/kubernetes-discovery/pkg/legacy/apis/config/v1alpha1/BUILD diff --git a/cmd/kubernetes-discovery/discoverysummarizer/apis/config/v1alpha1/types.go b/cmd/kubernetes-discovery/pkg/legacy/apis/config/v1alpha1/types.go similarity index 100% rename from cmd/kubernetes-discovery/discoverysummarizer/apis/config/v1alpha1/types.go rename to cmd/kubernetes-discovery/pkg/legacy/apis/config/v1alpha1/types.go diff --git a/cmd/kubernetes-discovery/discoverysummarizer/discoverysummarizer.go b/cmd/kubernetes-discovery/pkg/legacy/discoverysummarizer.go similarity index 98% rename from cmd/kubernetes-discovery/discoverysummarizer/discoverysummarizer.go rename to cmd/kubernetes-discovery/pkg/legacy/discoverysummarizer.go index a6fe19eadd1..632e98a87d4 100644 --- a/cmd/kubernetes-discovery/discoverysummarizer/discoverysummarizer.go +++ b/cmd/kubernetes-discovery/pkg/legacy/discoverysummarizer.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package discoverysummarizer +package legacy import ( "encoding/json" @@ -22,7 +22,7 @@ import ( "io/ioutil" "net/http" - config "k8s.io/kubernetes/cmd/kubernetes-discovery/discoverysummarizer/apis/config/v1alpha1" + config "k8s.io/kubernetes/cmd/kubernetes-discovery/pkg/legacy/apis/config/v1alpha1" metav1 "k8s.io/kubernetes/pkg/apis/meta/v1" ) diff --git a/cmd/kubernetes-discovery/discoverysummarizer/doc.go b/cmd/kubernetes-discovery/pkg/legacy/doc.go similarity index 88% rename from cmd/kubernetes-discovery/discoverysummarizer/doc.go rename to cmd/kubernetes-discovery/pkg/legacy/doc.go index 87e47d4c40e..3cf7af401f0 100644 --- a/cmd/kubernetes-discovery/discoverysummarizer/doc.go +++ b/cmd/kubernetes-discovery/pkg/legacy/doc.go @@ -17,4 +17,4 @@ limitations under the License. // Package discoverysummarizer contains code for the discovery summarizer // (program to summarize discovery information from all federated api servers) // as per https://github.com/kubernetes/kubernetes/blob/master/docs/proposals/federated-api-servers.md -package discoverysummarizer // import "k8s.io/kubernetes/cmd/kubernetes-discovery/discoverysummarizer" +package legacy // import "k8s.io/kubernetes/cmd/kubernetes-discovery/pkg/legacy" diff --git a/test/integration/discoverysummarizer/discoverysummarizer_test.go b/test/integration/discoverysummarizer/discoverysummarizer_test.go index a392f8033d5..93c450fafbb 100644 --- a/test/integration/discoverysummarizer/discoverysummarizer_test.go +++ b/test/integration/discoverysummarizer/discoverysummarizer_test.go @@ -22,7 +22,7 @@ import ( "testing" "time" - "k8s.io/kubernetes/cmd/kubernetes-discovery/discoverysummarizer" + "k8s.io/kubernetes/cmd/kubernetes-discovery/pkg/legacy" "k8s.io/kubernetes/examples/apiserver" ) @@ -50,7 +50,7 @@ func runDiscoverySummarizer(t *testing.T) string { configFilePath := "../../../cmd/kubernetes-discovery/config.json" port := "9090" serverURL := "http://localhost:" + port - s, err := discoverysummarizer.NewDiscoverySummarizer(configFilePath) + s, err := legacy.NewDiscoverySummarizer(configFilePath) if err != nil { t.Errorf("unexpected error: %v\n", err) }