From 6270885405de8ba491df8a8b40f1009af18bac24 Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Wed, 27 Nov 2024 19:28:29 +0200 Subject: [PATCH] Add config sanity checks for elasticsearch ee --- config/configsanity.go | 22 ++++++++++++++++++++++ data/conf/samples/ees_elastic/cgrates.json | 2 +- ees/elastic.go | 2 -- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/config/configsanity.go b/config/configsanity.go index 547e58f07..fbdc66e08 100644 --- a/config/configsanity.go +++ b/config/configsanity.go @@ -927,6 +927,28 @@ func (cfg *CGRConfig) checkConfigSanity() error { if len(exp.ContentFields()) == 0 { return fmt.Errorf("<%s> empty content fields for exporter with ID: %s", utils.EEs, exp.ID) } + case utils.MetaElastic: + elsOpts := exp.Opts.Els + if elsOpts.Logger != nil { + if !slices.Contains([]string{utils.ElsJson, utils.ElsText, utils.ElsColor}, *elsOpts.Logger) { + return fmt.Errorf("<%s> invalid elsLogger value for exporter with ID: %s", utils.EEs, exp.ID) + } + } + if elsOpts.Refresh != nil { + if !slices.Contains([]string{"true", "false", "wait_for"}, *elsOpts.Refresh) { + return fmt.Errorf("<%s> invalid elsRefresh value for exporter with ID: %s", utils.EEs, exp.ID) + } + } + if elsOpts.OpType != nil { + if !slices.Contains([]string{"index", "create"}, *elsOpts.OpType) { + return fmt.Errorf("<%s> invalid elsOpType value for exporter with ID: %s", utils.EEs, exp.ID) + } + } + if elsOpts.CAPath != nil { + if _, err := os.Stat(*elsOpts.CAPath); os.IsNotExist(err) { + return fmt.Errorf("<%s> CA certificate file not found at path: %s for exporter with ID: %s", utils.EEs, *elsOpts.CAPath, exp.ID) + } + } } for _, field := range exp.Fields { if field.Type != utils.MetaNone && field.Path == utils.EmptyString { diff --git a/data/conf/samples/ees_elastic/cgrates.json b/data/conf/samples/ees_elastic/cgrates.json index 85922e844..87070db1c 100644 --- a/data/conf/samples/ees_elastic/cgrates.json +++ b/data/conf/samples/ees_elastic/cgrates.json @@ -67,10 +67,10 @@ "export_path": "https://192.168.56.29:9200", "synchronous": true, "opts": { + // "elsCAPath": "/path/to/http_ca.crt" "elsIndex": "cdrs", "elsUsername": "elastic", // "elsPassword":"", - "elsCAPath": "/path/to/http_ca.crt" // "elsCloud":true, // "elsApiKey": "", // "elsServiceToken": "", diff --git a/ees/elastic.go b/ees/elastic.go index 042d7546d..000c95427 100644 --- a/ees/elastic.go +++ b/ees/elastic.go @@ -117,8 +117,6 @@ func (e *ElasticEE) parseClientOpts() error { EnableRequestBody: true, EnableResponseBody: true, } - default: - return fmt.Errorf("invalid logger type: %q", *loggerType) } e.clientCfg.Logger = logger }