From a36c914aa7066dba5cd8ab2e9f3fa7a4ec7caa22 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 10 Jul 2019 14:45:30 +0300 Subject: [PATCH] Updated check for poster configuration --- cmd/cgr-engine/cgr-engine.go | 2 ++ config/config.go | 31 +++++++++++++++++------------- engine/action.go | 1 + engine/poster.go | 9 ++++----- engine/pstr_s3.go | 6 +++--- engine/pstr_sqs.go | 6 +++--- general_tests/rpcclient_it_test.go | 2 +- utils/consts.go | 9 +++++++++ 8 files changed, 41 insertions(+), 25 deletions(-) diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go index 181b66bb6..2af5c8be7 100644 --- a/cmd/cgr-engine/cgr-engine.go +++ b/cmd/cgr-engine/cgr-engine.go @@ -1593,6 +1593,8 @@ func main() { } utils.Logger.SetLogLevel(lgLevel) + cfg.LazzySanityCheck() + var loadDb engine.LoadStorage var cdrDb engine.CdrStorage var dm *engine.DataManager diff --git a/config/config.go b/config/config.go index e24e5999c..6755de64d 100755 --- a/config/config.go +++ b/config/config.go @@ -395,20 +395,8 @@ func (self *CGRConfig) checkConfigSanity() error { } } for _, cdrePrfl := range self.cdrsCfg.CDRSOnlineCDRExports { - if cdreProfile, hasIt := self.CdreProfiles[cdrePrfl]; !hasIt { + if _, hasIt := self.CdreProfiles[cdrePrfl]; !hasIt { return fmt.Errorf(" Cannot find CDR export template with ID: <%s>", cdrePrfl) - } else if cdreProfile.ExportFormat == utils.MetaS3jsonMap || cdreProfile.ExportFormat == utils.MetaSQSjsonMap { - poster := "SQSPoster" - if cdreProfile.ExportFormat == utils.MetaS3jsonMap { - poster = "S3Poster" - } - neededArgs := []string{"aws_region", "aws_key", "aws_secret"} - args := utils.GetUrlRawArguments(cdreProfile.ExportPath) - for _, arg := range neededArgs { - if _, has := args[arg]; !has { - utils.Logger.Err(fmt.Sprintf("<%s> No %s present for AWS for cdre: <%s>.", poster, arg, cdrePrfl)) - } - } } } if !self.thresholdSCfg.Enabled { @@ -721,6 +709,23 @@ func (self *CGRConfig) checkConfigSanity() error { return nil } +func (self *CGRConfig) LazzySanityCheck() { + for _, cdrePrfl := range self.cdrsCfg.CDRSOnlineCDRExports { + if cdreProfile, hasIt := self.CdreProfiles[cdrePrfl]; hasIt && (cdreProfile.ExportFormat == utils.MetaS3jsonMap || cdreProfile.ExportFormat == utils.MetaSQSjsonMap) { + poster := utils.SQSPoster + if cdreProfile.ExportFormat == utils.MetaS3jsonMap { + poster = utils.S3Poster + } + argsMap := utils.GetUrlRawArguments(cdreProfile.ExportPath) + for _, arg := range []string{utils.AWSRegion, utils.AWSKey, utils.AWSSecret} { + if _, has := argsMap[arg]; !has { + utils.Logger.Warning(fmt.Sprintf("<%s> No %s present for AWS for cdre: <%s>.", poster, arg, cdrePrfl)) + } + } + } + } +} + // Loads from json configuration object, will be used for defaults, config from file and reload, might need lock func (self *CGRConfig) loadFromJsonCfg(jsnCfg *CgrJsonCfg) (err error) { // Load sections out of JSON config, stop on error diff --git a/engine/action.go b/engine/action.go index 8585ae5a4..cf1e8d56e 100644 --- a/engine/action.go +++ b/engine/action.go @@ -1096,6 +1096,7 @@ func resetAccount(ub *Account, action *Action, acts Actions, _ interface{}) erro filter := &utils.CDRsFilter{ NotRunIDs: []string{utils.MetaRaw}, Accounts: []string{account}, + NotCosts: []float64{-1}, OrderBy: fmt.Sprintf("%s%sdesc", utils.OrderID, utils.INFIELD_SEP), Paginator: utils.Paginator{Limit: utils.IntPointer(1)}, } diff --git a/engine/poster.go b/engine/poster.go index 3c8ce03a6..4928b70b5 100644 --- a/engine/poster.go +++ b/engine/poster.go @@ -39,11 +39,10 @@ const ( exchangeType = "exchange_type" routingKey = "routing_key" - awsRegion = "aws_region" - awsID = "aws_key" - awsSecret = "aws_secret" - awsToken = "aws_token" - // awsAccountID = "aws_account_id" + //awsRegion = "aws_region" + //awsID = "aws_key" + //awsSecret = "aws_secret" + awsToken = "aws_token" folderPath = "folder_path" ) diff --git a/engine/pstr_s3.go b/engine/pstr_s3.go index d2fc2a835..8f7558da7 100644 --- a/engine/pstr_s3.go +++ b/engine/pstr_s3.go @@ -69,13 +69,13 @@ func (pstr *S3Poster) parseURL(dialURL string) { if val, has := qry[folderPath]; has { pstr.folderPath = val } - if val, has := qry[awsRegion]; has { + if val, has := qry[utils.AWSRegion]; has { pstr.awsRegion = val } - if val, has := qry[awsID]; has { + if val, has := qry[utils.AWSKey]; has { pstr.awsID = val } - if val, has := qry[awsSecret]; has { + if val, has := qry[utils.AWSSecret]; has { pstr.awsKey = val } if val, has := qry[awsToken]; has { diff --git a/engine/pstr_sqs.go b/engine/pstr_sqs.go index 6e7a13c74..41f3015c5 100644 --- a/engine/pstr_sqs.go +++ b/engine/pstr_sqs.go @@ -67,13 +67,13 @@ func (pstr *SQSPoster) parseURL(dialURL string) { if val, has := qry[queueID]; has { pstr.queueID = val } - if val, has := qry[awsRegion]; has { + if val, has := qry[utils.AWSRegion]; has { pstr.awsRegion = val } - if val, has := qry[awsID]; has { + if val, has := qry[utils.AWSKey]; has { pstr.awsID = val } - if val, has := qry[awsSecret]; has { + if val, has := qry[utils.AWSSecret]; has { pstr.awsKey = val } if val, has := qry[awsToken]; has { diff --git a/general_tests/rpcclient_it_test.go b/general_tests/rpcclient_it_test.go index be669304b..0bf148fd3 100644 --- a/general_tests/rpcclient_it_test.go +++ b/general_tests/rpcclient_it_test.go @@ -172,7 +172,7 @@ func TestRPCITLclStatusFirstFailback(t *testing.T) { // Make sure it executes on the first node supporting the command func TestRPCITLclTDirectedRPC(t *testing.T) { var sessions []*sessions.ExternalSession - if err := rpcPoolFirst.Call(utils.SessionSv1GetActiveSessions, nil, &sessions); err == nil || err.Error() != utils.ErrNotFound.Error() { + if err := rpcPoolFirst.Call(utils.SessionSv1GetActiveSessions, utils.SessionFilter{}, &sessions); err == nil || err.Error() != utils.ErrNotFound.Error() { t.Error(err) } } diff --git a/utils/consts.go b/utils/consts.go index 147f000c8..913190834 100755 --- a/utils/consts.go +++ b/utils/consts.go @@ -1118,6 +1118,15 @@ const ( HTTPAgent = "HTTPAgent" ) +// Poster +const ( + SQSPoster = "SQSPoster" + S3Poster = "S3Poster" + AWSRegion = "aws_region" + AWSKey = "aws_key" + AWSSecret = "aws_secret" +) + func buildCacheInstRevPrefixes() { CachePrefixToInstance = make(map[string]string) for k, v := range CacheInstanceToPrefix {