Mercurial > gemma
diff pkg/imports/scheduled.go @ 1705:dcbe2a7dc532
Scheduled imports: Take extra configuration parameters from attributes table.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 07 Jan 2019 16:11:07 +0100 |
parents | 8fdb57173e3f |
children | 49e047c2106e |
line wrap: on
line diff
--- a/pkg/imports/scheduled.go Mon Jan 07 15:34:34 2019 +0100 +++ b/pkg/imports/scheduled.go Mon Jan 07 16:11:07 2019 +0100 @@ -14,6 +14,7 @@ package imports import ( + "errors" "log" "gemma.intevation.de/gemma/pkg/common" @@ -21,43 +22,50 @@ ) func init() { - registerAction(GMJobKind, func(cfg *IDConfig) interface{} { + registerAction(GMJobKind, func(cfg *IDConfig) (interface{}, error) { log.Println("info: schedule 'gm' import") + insecure := cfg.Attributes.Bool("insecure") return &GaugeMeasurement{ URL: *cfg.URL, - Insecure: false, - } + Insecure: insecure, + }, nil }) - registerAction(FAJobKind, func(cfg *IDConfig) interface{} { + registerAction(FAJobKind, func(cfg *IDConfig) (interface{}, error) { log.Println("info: schedule 'fa' import") + insecure := cfg.Attributes.Bool("insecure") return &FairwayAvailability{ URL: *cfg.URL, - Insecure: false, - } + Insecure: insecure, + }, nil }) - registerAction(BNJobKind, func(cfg *IDConfig) interface{} { + registerAction(BNJobKind, func(cfg *IDConfig) (interface{}, error) { log.Println("info: schedule 'bn' import") + insecure := cfg.Attributes.Bool("insecure") return &Bottleneck{ URL: *cfg.URL, - Insecure: false, - } + Insecure: insecure, + }, nil }) - registerAction(WXJobKind, func(cfg *IDConfig) interface{} { + registerAction(WXJobKind, func(cfg *IDConfig) (interface{}, error) { log.Println("info: schedule 'wx' import") - // TODO: Take this from configuration. - var ( - featureType = "ws-wamos:ienc_wtwaxs" - sortBy = "hydro_scamin" - ) + + ft, found := cfg.Attributes.Get("feature-type") + if !found { + return nil, errors.New("cannot find 'feature-type' attribute") + } + sb, found := cfg.Attributes.Get("sort-by") + if !found { + return nil, errors.New("cannot find 'sort-by' attribute") + } return &WaterwayAxis{ URL: *cfg.URL, - FeatureType: featureType, - SortBy: sortBy, - } + FeatureType: ft, + SortBy: sb, + }, nil }) } -func registerAction(kind JobKind, setup func(cfg *IDConfig) interface{}) { +func registerAction(kind JobKind, setup func(cfg *IDConfig) (interface{}, error)) { action := func(id int64) { cfg, err := loadIDConfig(id) @@ -74,7 +82,11 @@ return } - what := setup(cfg) + what, err := setup(cfg) + if err != nil { + log.Printf("error: setup failed %v.\n", err) + return + } var serialized string if serialized, err = common.ToJSONString(what); err != nil {