From f353f12b68181cded26dc1435bc25effd0ee643a Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 1 Oct 2020 17:25:36 +0300 Subject: [PATCH] Updated rpcclient library --- dispatchers/caches_it_test.go | 6 +++--- engine/action_plan.go | 36 +++++++++++++---------------------- engine/datamanager.go | 30 +++++++++++++++++++++++++++++ go.mod | 2 +- go.sum | 6 ++---- sessions/sessions.go | 2 -- 6 files changed, 49 insertions(+), 33 deletions(-) diff --git a/dispatchers/caches_it_test.go b/dispatchers/caches_it_test.go index a284583df..558d1acbb 100644 --- a/dispatchers/caches_it_test.go +++ b/dispatchers/caches_it_test.go @@ -128,11 +128,11 @@ func testDspChcLoadAfterFolder(t *testing.T) { t.Error(reply) } expStats[utils.CacheActions].Items = 2 - expStats[utils.CacheAttributeProfiles].Items = 10 + expStats[utils.CacheAttributeProfiles].Items = 11 expStats[utils.CacheChargerProfiles].Items = 2 expStats[utils.CacheFilters].Items = 7 expStats[utils.CacheRatingPlans].Items = 6 - expStats[utils.CacheRatingProfiles].Items = 5 + expStats[utils.CacheRatingProfiles].Items = 7 expStats[utils.CacheResourceProfiles].Items = 1 expStats[utils.CacheResources].Items = 1 expStats[utils.CacheReverseDestinations].Items = 4 @@ -153,7 +153,7 @@ func testDspChcLoadAfterFolder(t *testing.T) { expStats[utils.CacheResourceFilterIndexes].Groups = 1 expStats[utils.CacheChargerFilterIndexes].Items = 1 expStats[utils.CacheChargerFilterIndexes].Groups = 1 - expStats[utils.CacheAttributeFilterIndexes].Items = 10 + expStats[utils.CacheAttributeFilterIndexes].Items = 11 expStats[utils.CacheAttributeFilterIndexes].Groups = 4 expStats[utils.CacheReverseFilterIndexes].Items = 8 expStats[utils.CacheReverseFilterIndexes].Groups = 6 diff --git a/engine/action_plan.go b/engine/action_plan.go index a82cbecb4..022a1d3f9 100644 --- a/engine/action_plan.go +++ b/engine/action_plan.go @@ -109,6 +109,14 @@ func (at *ActionTiming) Clone() (cln *ActionTiming) { return } +// getDayOrEndOfMonth returns the day if is a valid date relative to t1 month +func getDayOrEndOfMonth(day int, t1 time.Time) int { + if lastDay := utils.GetEndOfMonth(t1).Day(); lastDay <= day { // clamp the day to last day of month in order to corectly compare the time + day = lastDay + } + return day +} + func (at *ActionTiming) GetNextStartTime(t1 time.Time) (t time.Time) { if !at.stCache.IsZero() { return at.stCache @@ -129,35 +137,17 @@ func (at *ActionTiming) GetNextStartTime(t1 time.Time) (t time.Time) { } at.stCache = cronexpr.MustParse(i.Timing.CronString()).Next(t1) if i.Timing.ID == utils.MetaMonthlyEstimated { - day := at.Timing.Timing.MonthDays[0] - if lastDay := utils.GetEndOfMonth(t1).Day(); lastDay <= day { // clamp the day to last day of month in order to corectly compare the time - day = lastDay - } + // substract a month from at.stCache only if we skip 2 months + // or we skip a month because mentioned MonthDay is after the last day of the current month if at.stCache.Month() == t1.Month()+2 || (utils.GetEndOfMonth(t1).Day() < at.Timing.Timing.MonthDays[0] && at.stCache.Month() == t1.Month()+1) { lastDay := utils.GetEndOfMonth(at.stCache).Day() - at.stCache = at.stCache.AddDate(0, 0, -lastDay) - } - /*clnRITiming := at.Timing.Timing.Clone() - mnt := t1.Month() - day := clnRITiming.MonthDays[0] - if lastDay := utils.GetEndOfMonth(t1).Day(); lastDay <= day { // clamp the day to last day of month in order to corectly compare the time - day = lastDay - } - if t1.Day() > day || // in case we missed the day - (t1.Day() == day && // did not miss the day but need to check if we missed the start time - t1.Sub(t1.Truncate(24*time.Hour)) >= - at.stCache.Sub(at.stCache.Truncate(24*time.Hour))) { - // the StartTime is before t1 so try nextMonth - if mnt++; mnt == 13 { // special case in case of december next month is January - mnt = 1 + // only change the time if the new one is after t1 + if tmp := at.stCache.AddDate(0, 0, -lastDay); tmp.After(t1) { + at.stCache = tmp } } - for at.stCache.Month() > mnt { - clnRITiming.MonthDays[0]-- - at.stCache = cronexpr.MustParse(clnRITiming.CronString()).Next(t1) - }*/ } return at.stCache } diff --git a/engine/datamanager.go b/engine/datamanager.go index dbe35564a..a6b46a84d 100644 --- a/engine/datamanager.go +++ b/engine/datamanager.go @@ -3430,3 +3430,33 @@ func (dm *DataManager) GetAPIBan(ip string, apiKeys []string, single, cacheRead, } return } + +// CheckFilters returns the filters IDs are valid +func (dm *DataManager) CheckFilters(tenant string, ids []string) (ok bool) { + for _, id := range ids { + if strings.HasPrefix(id, utils.Meta) { + if _, err := NewFilterFromInline(tenant, id); err != nil { + return + } + } else if dm == nil { + return + } else if x, has := Cache.Get(utils.CacheFilters, utils.ConcatenatedKey(tenant, id)); has && x == nil { + return + } else if has, err := dm.DataDB().HasDataDrv(utils.FilterPrefix, id, tenant); err != nil || !has { + if itm := config.CgrConfig().DataDbCfg().Items[utils.MetaFilters]; err == utils.ErrNotFound && itm.Remote { + var fltr *Filter + err = dm.connMgr.Call(config.CgrConfig().DataDbCfg().RmtConns, nil, utils.ReplicatorSv1GetFilter, + &utils.TenantIDWithOpts{ + TenantID: &utils.TenantID{Tenant: tenant, ID: id}, + Opts: map[string]interface{}{ + utils.OptsAPIKey: itm.APIKey, + utils.OptsRouteID: itm.RouteID, + }}, &fltr) + } + if err != nil { + return + } + } + } + return true +} diff --git a/go.mod b/go.mod index 606511887..3fe458cf1 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/cgrates/kamevapi v0.0.0-20191001125829-7dbc3ad58817 github.com/cgrates/ltcache v0.0.0-20181016092649-92fb7fa77cca github.com/cgrates/radigo v0.0.0-20200324152710-35e651804ad1 - github.com/cgrates/rpcclient v0.0.0-20200528120144-984f478f0a69 + github.com/cgrates/rpcclient v0.0.0-20201001135303-bd71813702b8 github.com/cgrates/sipingo v1.0.1-0.20200514112313-699ebc1cdb8e github.com/creack/pty v1.1.11 github.com/dgrijalva/jwt-go v3.2.0+incompatible diff --git a/go.sum b/go.sum index f2253684d..c61883234 100644 --- a/go.sum +++ b/go.sum @@ -64,8 +64,6 @@ github.com/cenkalti/rpc2 v0.0.0-20200203073230-5ce2854ce0fd/go.mod h1:v2npkhrXyk github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cgrates/aringo v0.0.0-20191121125609-d85002bd1667 h1:eNku7bwLtSTpn6FQUUTnqohuGWC8jij1KNqDZ2QkGRE= github.com/cgrates/aringo v0.0.0-20191121125609-d85002bd1667/go.mod h1:l0xi5JUVqxL4P7RZ9YitbSCiOtjMY2j7JBOCJIysRWk= -github.com/cgrates/baningo v0.0.0-20200925101338-ccea0136bbb1 h1:MM3w9bIb8DpJ+px6BQ0CkEmn0CLneAS4VHmmdZnje14= -github.com/cgrates/baningo v0.0.0-20200925101338-ccea0136bbb1/go.mod h1:3SwVROaS1Iml5lqEhj0gRhDRtmbBgypZpKcEkVTSleU= github.com/cgrates/baningo v0.0.0-20200925111414-e65b237006c9 h1:WwluddhgQoHkB72AzbC781qtB2xJLt+B9Rc2+NYy0Ts= github.com/cgrates/baningo v0.0.0-20200925111414-e65b237006c9/go.mod h1:3SwVROaS1Iml5lqEhj0gRhDRtmbBgypZpKcEkVTSleU= github.com/cgrates/cron v0.0.0-20200906113840-dd008627fdca h1:neuTTEjWsM+WXRyJ+MF1OzsNc+e7DGjrNZKIEIr8x4A= @@ -78,8 +76,8 @@ github.com/cgrates/ltcache v0.0.0-20181016092649-92fb7fa77cca h1:Ejj4m0Ccl8dMMVn github.com/cgrates/ltcache v0.0.0-20181016092649-92fb7fa77cca/go.mod h1:q7c996DUu8OrJRnewVSQzM+y/bRcxZAHoo+zCD8bFBo= github.com/cgrates/radigo v0.0.0-20200324152710-35e651804ad1 h1:QvA6Nbwq9kTd7hsvu1xo5kwia68cLwnp0sYCq1u40TU= github.com/cgrates/radigo v0.0.0-20200324152710-35e651804ad1/go.mod h1:HZbsg3Y+xw4lsfCqX9rzj429wrg0XOug6pFT3B6VHZY= -github.com/cgrates/rpcclient v0.0.0-20200528120144-984f478f0a69 h1:4vKQbGGdle7SyHMXm9obE2DgSDnsf5ayFSS0cqO16vI= -github.com/cgrates/rpcclient v0.0.0-20200528120144-984f478f0a69/go.mod h1:xXLqAKVvcdWeDYwHJYwDgAI3ZOg5LZYxzb72kLjsLZU= +github.com/cgrates/rpcclient v0.0.0-20201001135303-bd71813702b8 h1:g/jQWGMnriTP+HOggROpkcLyEIPsiAp/BdQq8fd0y/E= +github.com/cgrates/rpcclient v0.0.0-20201001135303-bd71813702b8/go.mod h1:xXLqAKVvcdWeDYwHJYwDgAI3ZOg5LZYxzb72kLjsLZU= github.com/cgrates/sipingo v1.0.1-0.20200514112313-699ebc1cdb8e h1:izFjZB83/XRXInc+gMIssUxdbleGsGIuGCPj2u7RQo0= github.com/cgrates/sipingo v1.0.1-0.20200514112313-699ebc1cdb8e/go.mod h1:0f2+3dq5Iiv3VlcuY83VPJ0QzqRlzDG1Cr8okogQE3g= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= diff --git a/sessions/sessions.go b/sessions/sessions.go index f88c4eae4..0143a57b1 100644 --- a/sessions/sessions.go +++ b/sessions/sessions.go @@ -3759,7 +3759,6 @@ func (sS *SessionS) processThreshold(cgrEv *utils.CGREvent, thIDs []string, opts thEv.ThresholdIDs = thIDs } //initialize the returned variable - tIDs = make([]string, 0) err = sS.connMgr.Call(sS.cgrCfg.SessionSCfg().ThreshSConns, nil, utils.ThresholdSv1ProcessEvent, thEv, &tIDs) return } @@ -3781,7 +3780,6 @@ func (sS *SessionS) processStats(cgrEv *utils.CGREvent, stsIDs []string, opts ma statArgs.StatIDs = stsIDs } //initialize the returned variable - sIDs = make([]string, 0) err = sS.connMgr.Call(sS.cgrCfg.SessionSCfg().StatSConns, nil, utils.StatSv1ProcessEvent, statArgs, &sIDs) return }