From 7d90e0b1f48d5b6ea60a3592dfc20ae0bcf81423 Mon Sep 17 00:00:00 2001 From: Pengfei Ni Date: Fri, 30 Jun 2017 14:07:26 +0800 Subject: [PATCH] Optimize flags and logs. Usage of ./stackube-controller: --alsologtostderr log to standard error as well as files --cloudconfig string path to stackube config file (default "/etc/stackube.conf") --kubeconfig string path to kubernetes admin config file (default "/etc/kubernetes/admin.conf") --log-backtrace-at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log-dir string If non-empty, write log files in this directory --log-flush-frequency duration Maximum number of seconds between log flushes (default 5s) --logtostderr log to standard error instead of files (default true) --stderrthreshold severity logs at or above this threshold go to stderr (default 2) -v, --v Level log level for V logs --vmodule moduleSpec comma-separated list of pattern=N settings for file-filtered logging Change-Id: I2dfa762c3e076c7e41b49b4f27c3868bed03eba8 Signed-off-by: Pengfei Ni --- .../stackube-controller.go | 63 +++++++++++-------- doc/source/developer.rst | 11 +++- pkg/openstack/client.go | 7 +++ pkg/util/flags.go | 42 +++++++++++++ pkg/util/logs.go | 44 +++++++++++++ 5 files changed, 139 insertions(+), 28 deletions(-) create mode 100644 pkg/util/flags.go create mode 100644 pkg/util/logs.go diff --git a/cmd/stackube-controller/stackube-controller.go b/cmd/stackube-controller/stackube-controller.go index e545490..e539ea7 100644 --- a/cmd/stackube-controller/stackube-controller.go +++ b/cmd/stackube-controller/stackube-controller.go @@ -2,7 +2,6 @@ package main import ( "context" - "flag" "fmt" "os" "os/signal" @@ -15,38 +14,29 @@ import ( "git.openstack.org/openstack/stackube/pkg/util" "github.com/golang/glog" + "github.com/spf13/pflag" "golang.org/x/sync/errgroup" "k8s.io/client-go/kubernetes" ) var ( - cfg tenant.Config + kubeconfig = pflag.String("kubeconfig", "/etc/kubernetes/admin.conf", + "path to kubernetes admin config file") + cloudconfig = pflag.String("cloudconfig", "/etc/stackube.conf", + "path to stackube config file") ) -func init() { - flag.StringVar(&cfg.KubeConfig, "kubeconfig", "/etc/kubernetes/admin.conf", "- path to kubeconfig") - flag.StringVar(&cfg.CloudConfig, "cloudconfig", "/etc/kubestack.conf", "- path to cloudconfig") - flag.Parse() -} - -func startControllers() int { - // Verify client setting at the beginning and fail early if there are errors. - err := verifyClientSetting() - if err != nil { - glog.Error(err) - return 1 - } +func startControllers(cfg tenant.Config) error { // Creates a new tenant controller tc, err := tenant.New(cfg) if err != nil { - glog.Error(err) - return 1 + return err } + // Creates a new RBAC controller rm, err := rbacmanager.New(cfg) if err != nil { - glog.Error(err) - return 1 + return err } ctx, cancel := context.WithCancel(context.Background()) @@ -61,8 +51,7 @@ func startControllers() int { cfg.CloudConfig, ) if err != nil { - glog.Error(err) - return 1 + return err } // start network controller @@ -80,28 +69,48 @@ func startControllers() int { cancel() if err := wg.Wait(); err != nil { glog.Errorf("Unhandled error received: %v", err) - return 1 + return err } - return 0 + return nil } func verifyClientSetting() error { - config, err := util.NewClusterConfig(cfg.KubeConfig) + config, err := util.NewClusterConfig(*kubeconfig) if err != nil { - return fmt.Errorf("Init cluster config failed: %v", err) + return fmt.Errorf("Init kubernetes cluster failed: %v", err) } + _, err = kubernetes.NewForConfig(config) if err != nil { return fmt.Errorf("Init kubernetes clientset failed: %v", err) } - _, err = openstack.NewClient(cfg.CloudConfig) + + _, err = openstack.NewClient(*cloudconfig) if err != nil { return fmt.Errorf("Init openstack client failed: %v", err) } + return nil } func main() { - os.Exit(startControllers()) + util.InitFlags() + util.InitLogs() + defer util.FlushLogs() + + // Verify client setting at the beginning and fail early if there are errors. + err := verifyClientSetting() + if err != nil { + glog.Fatal(err) + } + + // Start stackube controllers. + cfg := tenant.Config{ + KubeConfig: *kubeconfig, + CloudConfig: *cloudconfig, + } + if err := startControllers(cfg); err != nil { + glog.Fatal(err) + } } diff --git a/doc/source/developer.rst b/doc/source/developer.rst index 297f4d3..22eab43 100644 --- a/doc/source/developer.rst +++ b/doc/source/developer.rst @@ -27,7 +27,16 @@ Start :: - ./_output/stackube-controller -v=5 -alsologtostderr=true -logtostderr=true + cat >/etc/stackube.conf <