From e072c1d98616d58c3b1dac26a78251ba96d6d0d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20=C5=BBy=C5=82owski?= Date: Tue, 17 Jan 2017 16:22:19 +0100 Subject: [PATCH] Fix daemonset dependency panic when POD_NAME is unset Simple refactor --- dependencies/daemonset/daemonset.go | 3 ++- entrypoint/entrypoint.go | 28 ++++++++++++++-------------- logger/logger.go | 2 +- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/dependencies/daemonset/daemonset.go b/dependencies/daemonset/daemonset.go index dbc42bc..f6064be 100644 --- a/dependencies/daemonset/daemonset.go +++ b/dependencies/daemonset/daemonset.go @@ -23,6 +23,7 @@ func init() { daemonset, err := NewDaemonset(dep) if err != nil { logger.Error.Printf("Cannot initialize daemonset: %v", err) + continue } entry.Register(daemonset) } @@ -31,7 +32,7 @@ func init() { func NewDaemonset(name string) (*Daemonset, error) { if os.Getenv("POD_NAME") == "" { - return nil, fmt.Errorf("Env POD_NAME not set") + return nil, fmt.Errorf("Env POD_NAME not set. Daemonset dependency %s will be ignored!", name) } return &Daemonset{ name: name, diff --git a/entrypoint/entrypoint.go b/entrypoint/entrypoint.go index 0027888..5bacbdb 100644 --- a/entrypoint/entrypoint.go +++ b/entrypoint/entrypoint.go @@ -16,6 +16,12 @@ const ( interval = 2 ) +//Resolver is an interface which all dependencies should implement +type Resolver interface { + IsResolved(entrypoint EntrypointInterface) (bool, error) + GetName() string +} + type EntrypointInterface interface { Resolve() Client() cli.ClientInterface @@ -28,6 +34,14 @@ type Entrypoint struct { namespace string } +//Register is a function which registers new dependencies +func Register(res Resolver) { + if res == nil { + panic("Entrypoint: could not register nil Resolver") + } + dependencies = append(dependencies, res) +} + //New is a constructor for entrypoint func New(config *rest.Config) (entry *Entrypoint, err error) { entry = new(Entrypoint) @@ -74,17 +88,3 @@ func (e Entrypoint) Resolve() { wg.Wait() } - -//Resolver is an interface which all dependencies should implement -type Resolver interface { - IsResolved(entrypoint EntrypointInterface) (bool, error) - GetName() string -} - -//Register is a function which registers new dependencies -func Register(res Resolver) { - if res == nil { - panic("Entrypoint: could not register nil Resolver") - } - dependencies = append(dependencies, res) -} diff --git a/logger/logger.go b/logger/logger.go index 9d7e073..9746da3 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -17,5 +17,5 @@ var ( func init() { Info = log.New(os.Stdout, "Entrypoint INFO: ", log.Ldate|log.Ltime|log.Lshortfile) Warning = log.New(os.Stdout, "Entrypoint WARNING: ", log.Ldate|log.Ltime|log.Lshortfile) - Error = log.New(os.Stderr, "Entrypoint Error: ", log.Ldate|log.Ltime|log.Lshortfile) + Error = log.New(os.Stderr, "Entrypoint ERROR: ", log.Ldate|log.Ltime|log.Lshortfile) }