From a36587a53e84c040dbde13e321f2b518f8007c22 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 20 Dec 2021 16:28:11 +0200 Subject: [PATCH] Added back most of the dispatchers APIs --- apis/attributes.go | 4 +- apis/cache.go | 28 +- apis/dispatchers.go | 31 +- apis/sessions.go | 7 +- build.sh | 3 - .../scripts/generate_dispatchers/generator.go | 481 +++++ .../generate_dispatchers/generator_test.go | 29 + dispatchers/accounts.go | 165 +- dispatchers/accounts_test.go | 35 +- dispatchers/actions.go | 76 +- dispatchers/actions_test.go | 19 +- dispatchers/admins.go | 1374 +++++++++++++++ dispatchers/analyzers.go | 58 + dispatchers/attributes.go | 67 +- dispatchers/attributes_test.go | 6 +- dispatchers/caches.go | 323 ++-- dispatchers/caches_test.go | 67 +- dispatchers/cdrs.go | 66 +- dispatchers/cdrs_test.go | 20 +- dispatchers/chargers.go | 59 +- dispatchers/chargers_test.go | 15 +- dispatchers/config.go | 127 +- dispatchers/config_test.go | 21 +- dispatchers/cores.go | 168 ++ dispatchers/dispatchers.go | 32 +- dispatchers/dispatchers_test.go | 20 +- dispatchers/ees.go | 84 + dispatchers/guardian.go | 6 +- dispatchers/loaders.go | 61 + dispatchers/rates.go | 44 +- dispatchers/rates_test.go | 13 +- dispatchers/replicator.go | 1550 ++++++++--------- dispatchers/replicator_test.go | 281 +-- dispatchers/resources.go | 164 +- dispatchers/resources_test.go | 31 +- dispatchers/routes.go | 89 +- dispatchers/routes_test.go | 19 +- dispatchers/servicemanager.go | 2 +- dispatchers/sessions.go | 572 +++--- dispatchers/sessions_test.go | 81 +- dispatchers/stats.go | 255 +-- dispatchers/stats_test.go | 27 +- dispatchers/thresholds.go | 154 +- dispatchers/thresholds_test.go | 23 +- dispatchers/utils.go | 7 - engine/attributes.go | 18 +- engine/caches.go | 14 +- engine/libengine_test.go | 3 +- engine/z_attributes_test.go | 8 +- generate.sh | 4 + services/attributes.go | 2 +- services/attributes_test.go | 2 +- services/sessions.go | 4 +- sessions/libsessions.go | 2 + utils/consts.go | 34 +- 55 files changed, 4733 insertions(+), 2122 deletions(-) create mode 100644 data/scripts/generate_dispatchers/generator.go create mode 100644 data/scripts/generate_dispatchers/generator_test.go create mode 100644 dispatchers/admins.go create mode 100644 dispatchers/analyzers.go create mode 100644 dispatchers/cores.go create mode 100644 dispatchers/ees.go create mode 100644 dispatchers/loaders.go create mode 100755 generate.sh diff --git a/apis/attributes.go b/apis/attributes.go index a2afedbb5..a75fa1ea1 100644 --- a/apis/attributes.go +++ b/apis/attributes.go @@ -142,14 +142,14 @@ func (admS *AdminSv1) RemoveAttributeProfile(ctx *context.Context, arg *utils.Te } // NewAttributeSv1 returns the RPC Object for AttributeS -func NewAttributeSv1(attrS *engine.AttributeService) *AttributeSv1 { +func NewAttributeSv1(attrS *engine.AttributeS) *AttributeSv1 { return &AttributeSv1{attrS: attrS} } // AttributeSv1 exports RPC from Attributes service type AttributeSv1 struct { ping - attrS *engine.AttributeService + attrS *engine.AttributeS } // GetAttributeForEvent returns matching AttributeProfile for Event diff --git a/apis/cache.go b/apis/cache.go index 82ea2a0c8..4adae679c 100644 --- a/apis/cache.go +++ b/apis/cache.go @@ -50,9 +50,9 @@ func (chSv1 *CacheSv1) HasItem(ctx *context.Context, args *utils.ArgsGetCacheIte } // GetItemExpiryTime returns the expiryTime for an item -func (chSv1 *CacheSv1) GetItemExpiryTime(args *utils.ArgsGetCacheItemWithAPIOpts, // +func (chSv1 *CacheSv1) GetItemExpiryTime(ctx *context.Context, args *utils.ArgsGetCacheItemWithAPIOpts, // reply *time.Time) error { - return chSv1.cacheS.V1GetItemExpiryTime(args, reply) + return chSv1.cacheS.V1GetItemExpiryTime(ctx, args, reply) } // RemoveItem removes the Item with ID from cache @@ -80,26 +80,26 @@ func (chSv1 *CacheSv1) GetCacheStats(ctx *context.Context, args *utils.AttrCache } // PrecacheStatus checks status of active precache processes -func (chSv1 *CacheSv1) PrecacheStatus(args *utils.AttrCacheIDsWithAPIOpts, rply *map[string]string) error { // - return chSv1.cacheS.V1PrecacheStatus(args, rply) +func (chSv1 *CacheSv1) PrecacheStatus(ctx *context.Context, args *utils.AttrCacheIDsWithAPIOpts, rply *map[string]string) error { // + return chSv1.cacheS.V1PrecacheStatus(ctx, args, rply) } // HasGroup checks existence of a group in cache -func (chSv1 *CacheSv1) HasGroup(args *utils.ArgsGetGroupWithAPIOpts, // +func (chSv1 *CacheSv1) HasGroup(ctx *context.Context, args *utils.ArgsGetGroupWithAPIOpts, // rply *bool) (err error) { - return chSv1.cacheS.V1HasGroup(args, rply) + return chSv1.cacheS.V1HasGroup(ctx, args, rply) } // GetGroupItemIDs returns a list of itemIDs in a cache group -func (chSv1 *CacheSv1) GetGroupItemIDs(args *utils.ArgsGetGroupWithAPIOpts, // +func (chSv1 *CacheSv1) GetGroupItemIDs(ctx *context.Context, args *utils.ArgsGetGroupWithAPIOpts, // rply *[]string) (err error) { - return chSv1.cacheS.V1GetGroupItemIDs(args, rply) + return chSv1.cacheS.V1GetGroupItemIDs(ctx, args, rply) } // RemoveGroup will remove a group and all items belonging to it from cache -func (chSv1 *CacheSv1) RemoveGroup(args *utils.ArgsGetGroupWithAPIOpts, // +func (chSv1 *CacheSv1) RemoveGroup(ctx *context.Context, args *utils.ArgsGetGroupWithAPIOpts, // rply *string) (err error) { - return chSv1.cacheS.V1RemoveGroup(args, rply) + return chSv1.cacheS.V1RemoveGroup(ctx, args, rply) } // ReloadCache reloads cache from DB for a prefix or completely @@ -113,11 +113,11 @@ func (chSv1 *CacheSv1) LoadCache(ctx *context.Context, args *utils.AttrReloadCac } // ReplicateSet replicate an item -func (chSv1 *CacheSv1) ReplicateSet(args *utils.ArgCacheReplicateSet, reply *string) (err error) { // - return chSv1.cacheS.V1ReplicateSet(args, reply) +func (chSv1 *CacheSv1) ReplicateSet(ctx *context.Context, args *utils.ArgCacheReplicateSet, reply *string) (err error) { // + return chSv1.cacheS.V1ReplicateSet(ctx, args, reply) } // ReplicateRemove remove an item -func (chSv1 *CacheSv1) ReplicateRemove(args *utils.ArgCacheReplicateRemove, reply *string) (err error) { // - return chSv1.cacheS.V1ReplicateRemove(args, reply) +func (chSv1 *CacheSv1) ReplicateRemove(ctx *context.Context, args *utils.ArgCacheReplicateRemove, reply *string) (err error) { // + return chSv1.cacheS.V1ReplicateRemove(ctx, args, reply) } diff --git a/apis/dispatchers.go b/apis/dispatchers.go index 55939fb58..b39f90af7 100644 --- a/apis/dispatchers.go +++ b/apis/dispatchers.go @@ -22,7 +22,6 @@ import ( "time" "github.com/cgrates/birpc/context" - "github.com/cgrates/cgrates/dispatchers" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" ) @@ -247,6 +246,7 @@ func (admS *AdminSv1) RemoveDispatcherHost(ctx *context.Context, arg *utils.Tena return nil } +/* func NewDispatcherSv1(dS *dispatchers.DispatcherService) *DispatcherSv1 { return &DispatcherSv1{dS: dS} } @@ -256,20 +256,21 @@ type DispatcherSv1 struct { ping } -// GetProfileForEvent returns the matching dispatcher profile for the provided event -func (dSv1 DispatcherSv1) GetProfilesForEvent(ctx *context.Context, ev *utils.CGREvent, - dPrfl *engine.DispatcherProfiles) error { - return dSv1.dS.V1GetProfilesForEvent(ctx, ev, dPrfl) -} +// // GetProfileForEvent returns the matching dispatcher profile for the provided event +// func (dSv1 DispatcherSv1) GetProfilesForEvent(ctx *context.Context, ev *utils.CGREvent, +// dPrfl *engine.DispatcherProfiles) error { +// return dSv1.dS.V1GetProfilesForEvent(ctx, ev, dPrfl) +// } -func (dS *DispatcherSv1) RemoteStatus(args *utils.TenantWithAPIOpts, reply *map[string]interface{}) (err error) { - return dS.dS.DispatcherSv1RemoteStatus(args, reply) -} +// func (dS *DispatcherSv1) RemoteStatus(args *utils.TenantWithAPIOpts, reply *map[string]interface{}) (err error) { +// return dS.dS.DispatcherSv1RemoteStatus(args, reply) +// } -func (dS *DispatcherSv1) RemotePing(args *utils.CGREvent, reply *string) (err error) { - return dS.dS.DispatcherSv1RemotePing(args, reply) -} +// func (dS *DispatcherSv1) RemotePing(args *utils.CGREvent, reply *string) (err error) { +// return dS.dS.DispatcherSv1RemotePing(args, reply) +// } -func (dS *DispatcherSv1) RemoteSleep(args *utils.DurationArgs, reply *string) (err error) { - return dS.dS.DispatcherSv1RemoteSleep(args, reply) -} +// func (dS *DispatcherSv1) RemoteSleep(args *utils.DurationArgs, reply *string) (err error) { +// return dS.dS.DispatcherSv1RemoteSleep(args, reply) +// } +*/ diff --git a/apis/sessions.go b/apis/sessions.go index b15a72ccc..227539bcd 100644 --- a/apis/sessions.go +++ b/apis/sessions.go @@ -20,7 +20,6 @@ package apis import ( "github.com/cgrates/birpc/context" - "github.com/cgrates/cgrates/dispatchers" "github.com/cgrates/cgrates/sessions" "github.com/cgrates/cgrates/utils" ) @@ -111,9 +110,9 @@ func (ssv1 *SessionSv1) GetPassiveSessionsCount(ctx *context.Context, args *util return ssv1.sS.BiRPCv1GetPassiveSessionsCount(ctx, args, rply) } -func (ssv1 *SessionSv1) ReplicateSessions(ctx *context.Context, args *dispatchers.ArgsReplicateSessionsWithAPIOpts, rply *string) error { - return ssv1.sS.BiRPCv1ReplicateSessions(ctx, args.ArgsReplicateSessions, rply) -} +// func (ssv1 *SessionSv1) ReplicateSessions(ctx *context.Context, args *dispatchers.ArgsReplicateSessionsWithAPIOpts, rply *string) error { +// return ssv1.sS.BiRPCv1ReplicateSessions(ctx, args.ArgsReplicateSessions, rply) +// } func (ssv1 *SessionSv1) SetPassiveSession(ctx *context.Context, args *sessions.Session, reply *string) error { diff --git a/build.sh b/build.sh index 00e42d8cf..5ec824b60 100755 --- a/build.sh +++ b/build.sh @@ -10,9 +10,6 @@ then GIT_LAST_LOG="" fi -go generate ./... -go fmt ./... - go install -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-engine cr=$? go install -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-loader diff --git a/data/scripts/generate_dispatchers/generator.go b/data/scripts/generate_dispatchers/generator.go new file mode 100644 index 000000000..1b8ccceb7 --- /dev/null +++ b/data/scripts/generate_dispatchers/generator.go @@ -0,0 +1,481 @@ +//go: build ignore + +/* +Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments +Copyright (C) ITsysCOM GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ +package main + +import ( + "fmt" + "go/ast" + "go/printer" + "go/token" + "io" + "log" + "os" + "path" + "reflect" + "strconv" + "unicode" + + "github.com/cgrates/cgrates/accounts" + "github.com/cgrates/cgrates/actions" + "github.com/cgrates/cgrates/analyzers" + "github.com/cgrates/cgrates/apis" + "github.com/cgrates/cgrates/config" + "github.com/cgrates/cgrates/cores" + "github.com/cgrates/cgrates/ees" + "github.com/cgrates/cgrates/engine" + "github.com/cgrates/cgrates/loaders" + "github.com/cgrates/cgrates/rates" + "github.com/cgrates/cgrates/sessions" + "github.com/cgrates/cgrates/utils" +) + +func main() { + type genFile struct { + path string + subsystem string // the name of the constant + obj interface{} + customName string + } + fmt.Println("Generating dispatcher files ...") + for _, file := range []genFile{ + {"accounts.go", "MetaAccounts", new(accounts.AccountS), utils.EmptyString}, + {"actions.go", "MetaActions", new(actions.ActionS), utils.EmptyString}, + {"attributes.go", "MetaAttributes", new(engine.AttributeS), utils.EmptyString}, + {"caches.go", "MetaCaches", engine.Cache, utils.EmptyString}, + {"cdrs.go", "MetaCDRs", new(engine.CDRServer), utils.CDRs}, + {"chargers.go", "MetaChargers", new(engine.ChargerS), utils.EmptyString}, + {"config.go", "MetaConfig", new(config.CGRConfig), utils.ConfigS}, + {"rates.go", "RateS", new(rates.RateS), utils.EmptyString}, + {"replicator.go", "MetaReplicator", new(apis.ReplicatorSv1), utils.EmptyString}, + {"resources.go", "MetaResources", new(engine.ResourceS), utils.EmptyString}, + {"routes.go", "MetaRoutes", new(engine.RouteS), utils.EmptyString}, + {"sessions.go", "MetaSessionS", new(sessions.SessionS), utils.SessionS}, + {"stats.go", "MetaStats", new(engine.StatS), utils.EmptyString}, + {"thresholds.go", "MetaThresholds", new(engine.ThresholdS), utils.EmptyString}, + {"loaders.go", "MetaLoaders", new(loaders.LoaderS), utils.EmptyString}, + {"ees.go", "MetaEEs", new(ees.EeS), utils.EmptyString}, + {"analyzers.go", "MetaAnalyzer", new(analyzers.AnalyzerS), utils.EmptyString}, + {"admins.go", "MetaAdminS", new(apis.AdminSv1), utils.EmptyString}, + {"cores.go", "MetaCore", new(cores.CoreS), utils.EmptyString}, + } { + if err := createFile(file.path, file.subsystem, file.customName, file.obj); err != nil { + log.Fatal(err) + } + } + +} + +func createFile(filePath, subsystem, customName string, obj interface{}) (err error) { + var f io.WriteCloser + if f, err = os.Create(filePath); err != nil { + return + } + defer f.Close() + return writeFile(f, subsystem, customName, obj) +} + +func writeFile(w io.Writer, subsystem, customName string, obj interface{}) (err error) { + if _, err = w.Write([]byte(`/* +Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments +Copyright (C) ITsysCOM GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ + +// do not modify this code because it's generated +`)); err != nil { + return + } + srv, _ := engine.NewServiceWithName(obj, customName, len(customName) != 0) + fs := token.NewFileSet() + f := generateService(subsystem, srv) + ast.SortImports(fs, f) + return printer.Fprint(w, fs, f) +} + +func generateService(subsystem string, srvs engine.IntService) *ast.File { + imports := utils.NewStringSet([]string{ + "github.com/cgrates/cgrates/utils", + "github.com/cgrates/birpc/context", + }) + decl := make([]ast.Decl, 0) + for k, srv := range srvs { + if unicode.IsLetter(rune(k[len(k)-1])) { + continue + } + for n, m := range srv.Methods { + decl = append(decl, generateFunc(srv.Name+n, subsystem, m.ArgType, m.ReplyType)) + imports.AddSlice(getImports(m.ArgType)) + imports.AddSlice(getImports(m.ReplyType)) + } + } + imports.Remove("") + imps := make([]ast.Spec, imports.Size()) + for i, k := range imports.AsOrderedSlice() { + imps[i] = &ast.ImportSpec{Path: &ast.BasicLit{ + // Kind: token.STRING, + Value: strconv.Quote(k), + }} + } + decl = append([]ast.Decl{&ast.GenDecl{ + Tok: token.IMPORT, + Specs: imps, + }}, decl...) + return &ast.File{ + Name: ast.NewIdent("dispatchers"), + Decls: decl, + } +} + +func generateFunc(service, subsystem string, arg, reply reflect.Type) *ast.FuncDecl { + defer func() { + val := recover() + if val != nil { + log.Println(service) + panic(val) + } + }() + return &ast.FuncDecl{ + Recv: &ast.FieldList{ + List: []*ast.Field{{ + Names: []*ast.Ident{ast.NewIdent("dS")}, + Type: &ast.StarExpr{X: ast.NewIdent("DispatcherService")}, + }}, + }, + Name: ast.NewIdent(service), + Type: &ast.FuncType{ + Params: &ast.FieldList{List: []*ast.Field{ + { + Names: []*ast.Ident{ast.NewIdent("ctx")}, + Type: &ast.StarExpr{X: &ast.SelectorExpr{ + X: ast.NewIdent("context"), + Sel: ast.NewIdent("Context"), + }}, + }, + { + Names: []*ast.Ident{ast.NewIdent("args")}, + Type: getArgType(arg), + }, + { + Names: []*ast.Ident{ast.NewIdent("reply")}, + Type: getArgType(reply), + }, + }}, + Results: &ast.FieldList{List: []*ast.Field{{ + Names: []*ast.Ident{ast.NewIdent("err")}, + Type: ast.NewIdent("error"), + }}}, + }, + Body: &ast.BlockStmt{List: generateFuncBody(arg, service, subsystem)}, + } +} + +type fldPath struct { + Name string + IsPointer bool +} + +func generatePath(arg reflect.Type, field string, kind reflect.Kind) (p []fldPath) { + if arg.Kind() == reflect.Ptr { + arg = arg.Elem() + } + if arg.Kind() != reflect.Struct { + return + } + fld, has := arg.FieldByName(field) + if !has { + nf := arg.NumField() + for i := 0; i < nf; i++ { + fld := arg.Field(i) + if fld.Type.Kind() != reflect.Struct || + fld.Type.Kind() != reflect.Ptr { + continue + } + if p = generatePath(fld.Type, field, kind); p != nil { + return append([]fldPath{{fld.Name, fld.Type.Kind() == reflect.Ptr}}, p...) + } + } + return + } + p = make([]fldPath, len(fld.Index)) + cur := arg + for i, idx := range fld.Index { + f := cur.Field(idx) + p[i] = fldPath{f.Name, f.Type.Kind() == reflect.Ptr} + cur = f.Type + if cur.Kind() == reflect.Ptr { + cur = cur.Elem() + } + } + if cur.Kind() != kind { + return nil + } + return +} + +func newCond(conds []*ast.BinaryExpr) *ast.BinaryExpr { + if len(conds) == 1 { + return conds[0] + } + return &ast.BinaryExpr{ + X: conds[0], + Op: token.LAND, + Y: newCond(conds[1:]), + } +} +func generateCond(arg reflect.Type, obj, dftVal ast.Expr, field string, kind reflect.Kind) (p []ast.Stmt) { + p = make([]ast.Stmt, 0, 2) + p = append(p, &ast.AssignStmt{ + Lhs: []ast.Expr{obj}, + Tok: token.DEFINE, + Rhs: []ast.Expr{dftVal}, + }) + paths := generatePath(arg, field, kind) + if len(paths) == 0 { + return + } + paths = append([]fldPath{{"args", arg.Kind() == reflect.Ptr}}, paths...) + conds := make([]*ast.BinaryExpr, 0, len(paths)+1) + curPath := "" + nilI := ast.NewIdent("nil") + for i, p := range paths { + if i != 0 { + curPath += "." + } + curPath += p.Name + if !p.IsPointer { + continue + } + conds = append(conds, &ast.BinaryExpr{ + X: ast.NewIdent(curPath), + Op: token.NEQ, + Y: nilI, + }) + } + if kind == reflect.String { + conds = append(conds, &ast.BinaryExpr{ + X: ast.NewIdent("len(" + curPath + ")"), + Op: token.NEQ, + Y: ast.NewIdent("0"), + }) + } + if len(conds) == 0 { + return []ast.Stmt{ + &ast.AssignStmt{ + Lhs: []ast.Expr{obj}, + Tok: token.DEFINE, + Rhs: []ast.Expr{ast.NewIdent(curPath)}, + }, + } + } + p = append(p, &ast.IfStmt{ + Cond: newCond(conds), + Body: &ast.BlockStmt{List: []ast.Stmt{ + &ast.AssignStmt{ + Lhs: []ast.Expr{obj}, + Tok: token.ASSIGN, + Rhs: []ast.Expr{ast.NewIdent(curPath)}, + }, + }}, + }) + return +} + +func generateFuncBody(arg reflect.Type, funcName, subsystem string) (p []ast.Stmt) { + tnt := ast.NewIdent("tnt") + p = append(p, generateCond(arg, tnt, ast.NewIdent("dS.cfg.GeneralCfg().DefaultTenant"), utils.Tenant, reflect.String)...) + ev := ast.NewIdent("ev") + p = append(p, generateCond(arg, ev, ast.NewIdent("make(map[string]interface{})"), utils.Event, reflect.Map)...) + opts := ast.NewIdent("opts") + p = append(p, generateCond(arg, opts, ast.NewIdent("make(map[string]interface{})"), "APIOpts", reflect.Map)...) + + p = append(p, &ast.IfStmt{ + Cond: &ast.BinaryExpr{ + X: ast.NewIdent("len(dS.cfg.DispatcherSCfg().AttributeSConns)"), + Op: token.NEQ, + Y: ast.NewIdent("0"), + }, + Body: &ast.BlockStmt{List: []ast.Stmt{ + &ast.IfStmt{ + Init: &ast.AssignStmt{ + Lhs: []ast.Expr{ast.NewIdent("err")}, + Tok: token.ASSIGN, + Rhs: []ast.Expr{&ast.CallExpr{ + Fun: &ast.SelectorExpr{ + X: ast.NewIdent("dS"), + Sel: ast.NewIdent("authorize"), + }, + Args: []ast.Expr{ + ast.NewIdent("ctx"), + &ast.SelectorExpr{ + X: ast.NewIdent("utils"), + Sel: ast.NewIdent(funcName), + }, + tnt, + &ast.CallExpr{ + Fun: &ast.SelectorExpr{ + X: ast.NewIdent("utils"), + Sel: ast.NewIdent("IfaceAsString"), + }, + Args: []ast.Expr{&ast.IndexExpr{ + X: opts, + Index: &ast.SelectorExpr{ + X: ast.NewIdent("utils"), + Sel: ast.NewIdent("OptsAPIKey"), + }, + }}, + }, + }, + }}, + }, + Cond: &ast.BinaryExpr{ + X: ast.NewIdent("err"), + Op: token.NEQ, + Y: ast.NewIdent("nil"), + }, + Body: &ast.BlockStmt{List: []ast.Stmt{&ast.ReturnStmt{}}}, + }, + }, + }, + }) + p = append(p, &ast.ReturnStmt{Results: []ast.Expr{&ast.CallExpr{ + Fun: &ast.SelectorExpr{ + X: ast.NewIdent("dS"), + Sel: ast.NewIdent("Dispatch"), + }, + Args: []ast.Expr{ + ast.NewIdent("ctx"), + &ast.UnaryExpr{ + Op: token.AND, + X: &ast.CompositeLit{ + Type: ast.NewIdent("utils.CGREvent"), + Elts: []ast.Expr{ + &ast.KeyValueExpr{ + Key: ast.NewIdent(utils.Tenant), + Value: tnt, + }, + &ast.KeyValueExpr{ + Key: ast.NewIdent(utils.Event), + Value: ev, + }, + &ast.KeyValueExpr{ + Key: ast.NewIdent("APIOpts"), + Value: opts, + }, + }, + }, + }, + &ast.SelectorExpr{ + X: ast.NewIdent("utils"), + Sel: ast.NewIdent(subsystem), + }, + &ast.SelectorExpr{ + X: ast.NewIdent("utils"), + Sel: ast.NewIdent(funcName), + }, + ast.NewIdent("args"), + ast.NewIdent("reply"), + }, + }}, + }) + return + +} + +func getArgType(args reflect.Type) ast.Expr { + if name := args.Name(); len(name) != 0 { + pkgpath := args.PkgPath() + if len(pkgpath) == 0 { + return ast.NewIdent(name) + } + return &ast.SelectorExpr{ + X: ast.NewIdent(path.Base(pkgpath)), + Sel: ast.NewIdent(name), + } + } + switch args.Kind() { + default: + panic("unsuported argument") + case reflect.Bool, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, + reflect.Uintptr, reflect.Float32, reflect.Float64, reflect.Complex64, + reflect.Complex128, reflect.String: + return ast.NewIdent(args.Name()) + case reflect.Interface: + name := args.Name() + if len(name) == 0 { + name = "interface{}" + } + return ast.NewIdent(name) + case reflect.Ptr: + return &ast.StarExpr{ + X: getArgType(args.Elem()), + } + case reflect.Struct: + pkgpath := args.PkgPath() + if len(pkgpath) == 0 { + return ast.NewIdent(args.Name()) + } + return &ast.SelectorExpr{ + X: ast.NewIdent(path.Base(pkgpath)), + Sel: ast.NewIdent(args.Name()), + } + case reflect.Array, reflect.Slice: + return &ast.ArrayType{ + Elt: getArgType(args.Elem()), + } + case reflect.Map: + return &ast.MapType{ + Key: getArgType(args.Key()), + Value: getArgType(args.Elem()), + } + } +} + +func getImports(args reflect.Type) []string { + switch args.Kind() { + default: + panic("unsuported argument") + case reflect.Bool, reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, + reflect.Uintptr, reflect.Float32, reflect.Float64, reflect.Complex64, + reflect.Complex128, reflect.String, reflect.Interface: + return nil + case reflect.Ptr, reflect.Array, reflect.Slice: + return append(getImports(args.Elem()), args.PkgPath()) + case reflect.Struct: + return []string{args.PkgPath()} + case reflect.Map: + args.PkgPath() + key := append(getImports(args.Key()), args.PkgPath()) + return append(key, getImports(args.Elem())...) + } +} diff --git a/data/scripts/generate_dispatchers/generator_test.go b/data/scripts/generate_dispatchers/generator_test.go new file mode 100644 index 000000000..ab370d03f --- /dev/null +++ b/data/scripts/generate_dispatchers/generator_test.go @@ -0,0 +1,29 @@ +/* +Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments +Copyright (C) ITsysCOM GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ + +package main + +/* +func TestGenerate(t *testing.T) { + t.Errorf("%#v", writeFile(os.Stdout, "MetaAttributes", utils.EmptyString, new(engine.AttributeS))) +} +func TestGeneratePath(t *testing.T) { + path := generatePath(reflect.TypeOf(new(utils.TenantIDWithAPIOpts)), "Tenant", reflect.String) + t.Error(path) +} +*/ diff --git a/dispatchers/accounts.go b/dispatchers/accounts.go index d69f04281..25d02282d 100644 --- a/dispatchers/accounts.go +++ b/dispatchers/accounts.go @@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ +// do not modify this code because it's generated package dispatchers import ( @@ -23,120 +24,174 @@ import ( "github.com/cgrates/cgrates/utils" ) -func (dS *DispatcherService) AccountSv1Ping(args *utils.CGREvent, rpl *string) (err error) { - if args == nil { - args = new(utils.CGREvent) +func (dS *DispatcherService) AccountSv1GetAccount(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *utils.Account) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.AccountSv1Ping, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.AccountSv1GetAccount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaAccounts, utils.AccountSv1Ping, args, rpl) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAccounts, utils.AccountSv1GetAccount, args, reply) } - -func (dS *DispatcherService) AccountSv1AccountsForEvent(args *utils.CGREvent, reply *[]*utils.Account) (err error) { +func (dS *DispatcherService) AccountSv1MaxAbstracts(ctx *context.Context, args *utils.CGREvent, reply *utils.EventCharges) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.AccountSv1AccountsForEvent, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.AccountSv1MaxAbstracts, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaAccounts, utils.AccountSv1AccountsForEvent, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAccounts, utils.AccountSv1MaxAbstracts, args, reply) } - -func (dS *DispatcherService) AccountSv1MaxAbstracts(args *utils.CGREvent, reply *utils.EventCharges) (err error) { +func (dS *DispatcherService) AccountSv1ActionRemoveBalance(ctx *context.Context, args *utils.ArgsActRemoveBalances, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.AccountSv1MaxAbstracts, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.AccountSv1ActionRemoveBalance, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaAccounts, utils.AccountSv1MaxAbstracts, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAccounts, utils.AccountSv1ActionRemoveBalance, args, reply) } - -func (dS *DispatcherService) AccountSv1DebitAbstracts(args *utils.CGREvent, reply *utils.EventCharges) (err error) { +func (dS *DispatcherService) AccountSv1DebitAbstracts(ctx *context.Context, args *utils.CGREvent, reply *utils.EventCharges) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.AccountSv1DebitAbstracts, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.AccountSv1DebitAbstracts, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaAccounts, utils.AccountSv1DebitAbstracts, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAccounts, utils.AccountSv1DebitAbstracts, args, reply) } - -func (dS *DispatcherService) AccountSv1MaxConcretes(args *utils.CGREvent, reply *utils.EventCharges) (err error) { +func (dS *DispatcherService) AccountSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.AccountSv1MaxConcretes, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.AccountSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaAccounts, utils.AccountSv1MaxConcretes, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAccounts, utils.AccountSv1Ping, args, reply) } - -func (dS *DispatcherService) AccountSv1DebitConcretes(args *utils.CGREvent, reply *utils.EventCharges) (err error) { +func (dS *DispatcherService) AccountSv1MaxConcretes(ctx *context.Context, args *utils.CGREvent, reply *utils.EventCharges) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.AccountSv1DebitConcretes, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.AccountSv1MaxConcretes, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaAccounts, utils.AccountSv1DebitConcretes, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAccounts, utils.AccountSv1MaxConcretes, args, reply) } - -func (dS *DispatcherService) AccountSv1ActionSetBalance(args *utils.ArgsActSetBalance, reply *string) (err error) { +func (dS *DispatcherService) AccountSv1AccountsForEvent(ctx *context.Context, args *utils.CGREvent, reply *[]*utils.Account) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.AccountSv1ActionSetBalance, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.AccountSv1AccountsForEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaAccounts, utils.AccountSv1ActionSetBalance, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAccounts, utils.AccountSv1AccountsForEvent, args, reply) } - -func (dS *DispatcherService) AccountSv1ActionRemoveBalance(args *utils.ArgsActRemoveBalances, reply *string) (err error) { +func (dS *DispatcherService) AccountSv1DebitConcretes(ctx *context.Context, args *utils.CGREvent, reply *utils.EventCharges) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.AccountSv1ActionRemoveBalance, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.AccountSv1DebitConcretes, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaAccounts, utils.AccountSv1ActionRemoveBalance, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAccounts, utils.AccountSv1DebitConcretes, args, reply) +} +func (dS *DispatcherService) AccountSv1ActionSetBalance(ctx *context.Context, args *utils.ArgsActSetBalance, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AccountSv1ActionSetBalance, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAccounts, utils.AccountSv1ActionSetBalance, args, reply) } diff --git a/dispatchers/accounts_test.go b/dispatchers/accounts_test.go index 401b6d7da..8fa594fd0 100644 --- a/dispatchers/accounts_test.go +++ b/dispatchers/accounts_test.go @@ -21,6 +21,7 @@ package dispatchers import ( "testing" + "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/utils" ) @@ -32,7 +33,7 @@ func TestDspAccountSv1PingNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.AccountSv1Ping(CGREvent, reply) + result := dspSrv.AccountSv1Ping(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -43,7 +44,7 @@ func TestDspAccountSv1PingNilArgs(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.AccountSv1Ping(nil, reply) + result := dspSrv.AccountSv1Ping(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -58,7 +59,7 @@ func TestDspAccountSv1PingErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.AccountSv1Ping(CGREvent, reply) + result := dspSrv.AccountSv1Ping(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -72,7 +73,7 @@ func TestDspAAccountsForEventNil(t *testing.T) { Tenant: "tenant", } var reply *[]*utils.Account - result := dspSrv.AccountSv1AccountsForEvent(CGREvent, reply) + result := dspSrv.AccountSv1AccountsForEvent(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -87,7 +88,7 @@ func TestDspAccountsForEventErrorNil(t *testing.T) { Tenant: "tenant", } var reply *[]*utils.Account - result := dspSrv.AccountSv1AccountsForEvent(CGREvent, reply) + result := dspSrv.AccountSv1AccountsForEvent(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -101,7 +102,7 @@ func TestDspMaxAbstractsNil(t *testing.T) { Tenant: "tenant", } var reply *utils.EventCharges - result := dspSrv.AccountSv1MaxAbstracts(CGREvent, reply) + result := dspSrv.AccountSv1MaxAbstracts(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -116,7 +117,7 @@ func TestDspMaxAbstractsErrorNil(t *testing.T) { Tenant: "tenant", } var reply *utils.EventCharges - result := dspSrv.AccountSv1MaxAbstracts(CGREvent, reply) + result := dspSrv.AccountSv1MaxAbstracts(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -130,7 +131,7 @@ func TestDspDebitAbstractsNil(t *testing.T) { Tenant: "tenant", } var reply *utils.EventCharges - result := dspSrv.AccountSv1DebitAbstracts(CGREvent, reply) + result := dspSrv.AccountSv1DebitAbstracts(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -145,7 +146,7 @@ func TestDspDebitAbstractsErrorNil(t *testing.T) { Tenant: "tenant", } var reply *utils.EventCharges - result := dspSrv.AccountSv1DebitAbstracts(CGREvent, reply) + result := dspSrv.AccountSv1DebitAbstracts(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -159,7 +160,7 @@ func TestDspMaxConcretesNil(t *testing.T) { Tenant: "tenant", } var reply *utils.EventCharges - result := dspSrv.AccountSv1MaxConcretes(CGREvent, reply) + result := dspSrv.AccountSv1MaxConcretes(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -174,7 +175,7 @@ func TestDspMaxConcretesErrorNil(t *testing.T) { Tenant: "tenant", } var reply *utils.EventCharges - result := dspSrv.AccountSv1MaxConcretes(CGREvent, reply) + result := dspSrv.AccountSv1MaxConcretes(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -188,7 +189,7 @@ func TestDspDebitConcretesNil(t *testing.T) { Tenant: "tenant", } var reply *utils.EventCharges - result := dspSrv.AccountSv1DebitConcretes(CGREvent, reply) + result := dspSrv.AccountSv1DebitConcretes(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -203,7 +204,7 @@ func TestDspDebitConcretesErrorNil(t *testing.T) { Tenant: "tenant", } var reply *utils.EventCharges - result := dspSrv.AccountSv1DebitConcretes(CGREvent, reply) + result := dspSrv.AccountSv1DebitConcretes(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -217,7 +218,7 @@ func TestDspAccountSv1ActionSetBalanceNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.AccountSv1ActionSetBalance(CGREvent, reply) + result := dspSrv.AccountSv1ActionSetBalance(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -232,7 +233,7 @@ func TestDspAccountSv1ActionSetBalanceErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.AccountSv1ActionSetBalance(CGREvent, reply) + result := dspSrv.AccountSv1ActionSetBalance(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -246,7 +247,7 @@ func TestDspAAccountSv1ActionRemoveBalanceNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.AccountSv1ActionRemoveBalance(CGREvent, reply) + result := dspSrv.AccountSv1ActionRemoveBalance(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -261,7 +262,7 @@ func TestDspAccountSv1ActionRemoveBalanceErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.AccountSv1ActionRemoveBalance(CGREvent, reply) + result := dspSrv.AccountSv1ActionRemoveBalance(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) diff --git a/dispatchers/actions.go b/dispatchers/actions.go index d219375ff..d7608d77a 100644 --- a/dispatchers/actions.go +++ b/dispatchers/actions.go @@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ +// do not modify this code because it's generated package dispatchers import ( @@ -23,50 +24,63 @@ import ( "github.com/cgrates/cgrates/utils" ) -func (dS *DispatcherService) ActionSv1Ping(args *utils.CGREvent, rpl *string) (err error) { - if args == nil { - args = new(utils.CGREvent) - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ActionSv1Ping, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaActions, utils.ActionSv1Ping, args, rpl) -} - -func (dS *DispatcherService) ActionSv1ScheduleActions(args *utils.CGREvent, rpl *string) (err error) { - if args == nil { - args = &utils.CGREvent{} - } +func (dS *DispatcherService) ActionSv1ExecuteActions(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ActionSv1ScheduleActions, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ActionSv1ExecuteActions, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaActions, utils.ActionSv1ScheduleActions, args, rpl) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaActions, utils.ActionSv1ExecuteActions, args, reply) } - -func (dS *DispatcherService) ActionSv1ExecuteActions(args *utils.CGREvent, rpl *string) (err error) { - if args == nil { - args = &utils.CGREvent{} - } +func (dS *DispatcherService) ActionSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ActionSv1Ping, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ActionSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaActions, utils.ActionSv1Ping, args, rpl) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaActions, utils.ActionSv1Ping, args, reply) +} +func (dS *DispatcherService) ActionSv1ScheduleActions(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ActionSv1ScheduleActions, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaActions, utils.ActionSv1ScheduleActions, args, reply) } diff --git a/dispatchers/actions_test.go b/dispatchers/actions_test.go index d01dd7f63..a7857192e 100644 --- a/dispatchers/actions_test.go +++ b/dispatchers/actions_test.go @@ -21,6 +21,7 @@ package dispatchers import ( "testing" + "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/utils" ) @@ -32,7 +33,7 @@ func TestDspActionSv1PingNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ActionSv1Ping(CGREvent, reply) + result := dspSrv.ActionSv1Ping(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -43,7 +44,7 @@ func TestDspActionSv1PingNilArgs(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ActionSv1Ping(nil, reply) + result := dspSrv.ActionSv1Ping(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -58,7 +59,7 @@ func TestDspActionSv1PingErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ActionSv1Ping(CGREvent, reply) + result := dspSrv.ActionSv1Ping(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -72,7 +73,7 @@ func TestDspActionSv1ScheduleActionsNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ActionSv1ScheduleActions(CGREvent, reply) + result := dspSrv.ActionSv1ScheduleActions(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -87,7 +88,7 @@ func TestDspActionSv1ScheduleActionsErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ActionSv1ScheduleActions(CGREvent, reply) + result := dspSrv.ActionSv1ScheduleActions(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -99,7 +100,7 @@ func TestDspActionSv1ScheduleActionsNilArgs(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *string - result := dspSrv.ActionSv1ScheduleActions(nil, reply) + result := dspSrv.ActionSv1ScheduleActions(context.Background(), nil, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -113,7 +114,7 @@ func TestDspActionSv1ExecuteActionsNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ActionSv1ExecuteActions(CGREvent, reply) + result := dspSrv.ActionSv1ExecuteActions(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -128,7 +129,7 @@ func TestDspActionSv1ExecuteActionsErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ActionSv1ExecuteActions(CGREvent, reply) + result := dspSrv.ActionSv1ExecuteActions(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -140,7 +141,7 @@ func TestDspActionSv1ExecuteActionsNilArgs(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *string - result := dspSrv.ActionSv1ExecuteActions(nil, reply) + result := dspSrv.ActionSv1ExecuteActions(context.Background(), nil, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) diff --git a/dispatchers/admins.go b/dispatchers/admins.go new file mode 100644 index 000000000..efcc8ae35 --- /dev/null +++ b/dispatchers/admins.go @@ -0,0 +1,1374 @@ +/* +Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments +Copyright (C) ITsysCOM GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ + +// do not modify this code because it's generated +package dispatchers + +import ( + "github.com/cgrates/birpc/context" + "github.com/cgrates/cgrates/apis" + "github.com/cgrates/cgrates/engine" + "github.com/cgrates/cgrates/utils" +) + +func (dS *DispatcherService) AdminSv1GetDispatcherProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.DispatcherProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetDispatcherProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetDispatcherProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1GetFilterIDs(ctx *context.Context, args *utils.PaginatorWithTenant, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetFilterIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetFilterIDs, args, reply) +} +func (dS *DispatcherService) AdminSv1GetRateProfileCount(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *int) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetRateProfileCount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetRateProfileCount, args, reply) +} +func (dS *DispatcherService) AdminSv1GetRateProfilesIndexesHealth(ctx *context.Context, args *engine.IndexHealthArgs, reply *engine.FilterIHReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetRateProfilesIndexesHealth, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetRateProfilesIndexesHealth, args, reply) +} +func (dS *DispatcherService) AdminSv1GetResourceProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.ResourceProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetResourceProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetResourceProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1RemoveDispatcherProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1RemoveDispatcherProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1RemoveDispatcherProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1SetFilter(ctx *context.Context, args *engine.FilterWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.Filter != nil && len(args.Filter.Tenant) != 0) { + tnt = args.Filter.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1SetFilter, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1SetFilter, args, reply) +} +func (dS *DispatcherService) AdminSv1GetAccount(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *utils.Account) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetAccount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetAccount, args, reply) +} +func (dS *DispatcherService) AdminSv1GetAccountCount(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *int) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetAccountCount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetAccountCount, args, reply) +} +func (dS *DispatcherService) AdminSv1GetDispatcherHostCount(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *int) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetDispatcherHostCount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetDispatcherHostCount, args, reply) +} +func (dS *DispatcherService) AdminSv1GetDispatcherProfileCount(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *int) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetDispatcherProfileCount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetDispatcherProfileCount, args, reply) +} +func (dS *DispatcherService) AdminSv1RemoveFilterIndexes(ctx *context.Context, args *apis.AttrRemFilterIndexes, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1RemoveFilterIndexes, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1RemoveFilterIndexes, args, reply) +} +func (dS *DispatcherService) AdminSv1GetActionProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.ActionProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetActionProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetActionProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1GetFilterCount(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *int) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetFilterCount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetFilterCount, args, reply) +} +func (dS *DispatcherService) AdminSv1GetReverseFilterHealth(ctx *context.Context, args *engine.IndexHealthArgs, reply *map[string]*engine.ReverseFilterIHReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetReverseFilterHealth, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetReverseFilterHealth, args, reply) +} +func (dS *DispatcherService) AdminSv1GetRouteProfileCount(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *int) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetRouteProfileCount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetRouteProfileCount, args, reply) +} +func (dS *DispatcherService) AdminSv1SetRateProfile(ctx *context.Context, args *utils.APIRateProfile, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1SetRateProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1SetRateProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1GetChargersIndexesHealth(ctx *context.Context, args *engine.IndexHealthArgs, reply *engine.FilterIHReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetChargersIndexesHealth, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetChargersIndexesHealth, args, reply) +} +func (dS *DispatcherService) AdminSv1SetDispatcherHost(ctx *context.Context, args *engine.DispatcherHostWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.DispatcherHost != nil && len(args.DispatcherHost.Tenant) != 0) { + tnt = args.DispatcherHost.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1SetDispatcherHost, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1SetDispatcherHost, args, reply) +} +func (dS *DispatcherService) AdminSv1GetChargerProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.ChargerProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetChargerProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetChargerProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1GetRateProfileIDs(ctx *context.Context, args *utils.PaginatorWithTenant, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetRateProfileIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetRateProfileIDs, args, reply) +} +func (dS *DispatcherService) AdminSv1GetRateRatesIndexesHealth(ctx *context.Context, args *engine.IndexHealthArgs, reply *engine.FilterIHReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetRateRatesIndexesHealth, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetRateRatesIndexesHealth, args, reply) +} +func (dS *DispatcherService) AdminSv1GetStatQueueProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.StatQueueProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetStatQueueProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetStatQueueProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1SetAccount(ctx *context.Context, args *apis.APIAccountWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.APIAccount != nil && len(args.APIAccount.Tenant) != 0) { + tnt = args.APIAccount.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1SetAccount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1SetAccount, args, reply) +} +func (dS *DispatcherService) AdminSv1ComputeFilterIndexes(ctx *context.Context, args *utils.ArgsComputeFilterIndexes, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1ComputeFilterIndexes, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1ComputeFilterIndexes, args, reply) +} +func (dS *DispatcherService) AdminSv1GetFilterIndexes(ctx *context.Context, args *apis.AttrGetFilterIndexes, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetFilterIndexes, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetFilterIndexes, args, reply) +} +func (dS *DispatcherService) AdminSv1RemoveAccount(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1RemoveAccount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1RemoveAccount, args, reply) +} +func (dS *DispatcherService) AdminSv1RemoveRateProfileRates(ctx *context.Context, args *utils.RemoveRPrfRates, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1RemoveRateProfileRates, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1RemoveRateProfileRates, args, reply) +} +func (dS *DispatcherService) AdminSv1RemoveThresholdProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1RemoveThresholdProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1RemoveThresholdProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1GetRouteProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.APIRouteProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetRouteProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetRouteProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1GetThresholdProfileIDs(ctx *context.Context, args *utils.PaginatorWithTenant, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetThresholdProfileIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetThresholdProfileIDs, args, reply) +} +func (dS *DispatcherService) AdminSv1GetThresholdsIndexesHealth(ctx *context.Context, args *engine.IndexHealthArgs, reply *engine.FilterIHReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetThresholdsIndexesHealth, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetThresholdsIndexesHealth, args, reply) +} +func (dS *DispatcherService) AdminSv1RemoveRouteProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1RemoveRouteProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1RemoveRouteProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1GetChargerProfileCount(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *int) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetChargerProfileCount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetChargerProfileCount, args, reply) +} +func (dS *DispatcherService) AdminSv1GetDispatcherHost(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.DispatcherHost) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetDispatcherHost, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetDispatcherHost, args, reply) +} +func (dS *DispatcherService) AdminSv1GetRateProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *utils.RateProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetRateProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetRateProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1GetRoutesIndexesHealth(ctx *context.Context, args *engine.IndexHealthArgs, reply *engine.FilterIHReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetRoutesIndexesHealth, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetRoutesIndexesHealth, args, reply) +} +func (dS *DispatcherService) AdminSv1GetStatsIndexesHealth(ctx *context.Context, args *engine.IndexHealthArgs, reply *engine.FilterIHReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetStatsIndexesHealth, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetStatsIndexesHealth, args, reply) +} +func (dS *DispatcherService) AdminSv1RemoveRateProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1RemoveRateProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1RemoveRateProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1SetDispatcherProfile(ctx *context.Context, args *apis.DispatcherWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.DispatcherProfile != nil && len(args.DispatcherProfile.Tenant) != 0) { + tnt = args.DispatcherProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1SetDispatcherProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1SetDispatcherProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1GetAccountsIndexesHealth(ctx *context.Context, args *engine.IndexHealthArgs, reply *engine.FilterIHReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetAccountsIndexesHealth, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetAccountsIndexesHealth, args, reply) +} +func (dS *DispatcherService) AdminSv1RemoveFilter(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1RemoveFilter, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1RemoveFilter, args, reply) +} +func (dS *DispatcherService) AdminSv1RemoveResourceProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1RemoveResourceProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1RemoveResourceProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1GetActionsIndexesHealth(ctx *context.Context, args *engine.IndexHealthArgs, reply *engine.FilterIHReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetActionsIndexesHealth, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetActionsIndexesHealth, args, reply) +} +func (dS *DispatcherService) AdminSv1RemoveChargerProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1RemoveChargerProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1RemoveChargerProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1SetAttributeProfile(ctx *context.Context, args *engine.APIAttributeProfileWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.APIAttributeProfile != nil && len(args.APIAttributeProfile.Tenant) != 0) { + tnt = args.APIAttributeProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1SetAttributeProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1SetAttributeProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1SetStatQueueProfile(ctx *context.Context, args *engine.StatQueueProfileWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.StatQueueProfile != nil && len(args.StatQueueProfile.Tenant) != 0) { + tnt = args.StatQueueProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1SetStatQueueProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1SetStatQueueProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1GetChargerProfileIDs(ctx *context.Context, args *utils.PaginatorWithTenant, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetChargerProfileIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetChargerProfileIDs, args, reply) +} +func (dS *DispatcherService) AdminSv1GetThresholdProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.ThresholdProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetThresholdProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetThresholdProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1Ping, args, reply) +} +func (dS *DispatcherService) AdminSv1GetActionProfileIDs(ctx *context.Context, args *utils.PaginatorWithTenant, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetActionProfileIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetActionProfileIDs, args, reply) +} +func (dS *DispatcherService) AdminSv1GetAttributesIndexesHealth(ctx *context.Context, args *engine.IndexHealthArgs, reply *engine.FilterIHReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetAttributesIndexesHealth, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetAttributesIndexesHealth, args, reply) +} +func (dS *DispatcherService) AdminSv1GetDispatchersIndexesHealth(ctx *context.Context, args *engine.IndexHealthArgs, reply *engine.FilterIHReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetDispatchersIndexesHealth, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetDispatchersIndexesHealth, args, reply) +} +func (dS *DispatcherService) AdminSv1GetResourcesIndexesHealth(ctx *context.Context, args *engine.IndexHealthArgs, reply *engine.FilterIHReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetResourcesIndexesHealth, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetResourcesIndexesHealth, args, reply) +} +func (dS *DispatcherService) AdminSv1GetThresholdProfileCount(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *int) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetThresholdProfileCount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetThresholdProfileCount, args, reply) +} +func (dS *DispatcherService) AdminSv1SetResourceProfile(ctx *context.Context, args *engine.ResourceProfileWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.ResourceProfile != nil && len(args.ResourceProfile.Tenant) != 0) { + tnt = args.ResourceProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1SetResourceProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1SetResourceProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1GetActionProfileCount(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *int) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetActionProfileCount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetActionProfileCount, args, reply) +} +func (dS *DispatcherService) AdminSv1GetResourceProfileCount(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *int) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetResourceProfileCount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetResourceProfileCount, args, reply) +} +func (dS *DispatcherService) AdminSv1GetRouteProfileIDs(ctx *context.Context, args *utils.PaginatorWithTenant, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetRouteProfileIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetRouteProfileIDs, args, reply) +} +func (dS *DispatcherService) AdminSv1SetRouteProfile(ctx *context.Context, args *engine.APIRouteProfileWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.APIRouteProfile != nil && len(args.APIRouteProfile.Tenant) != 0) { + tnt = args.APIRouteProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1SetRouteProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1SetRouteProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1SetThresholdProfile(ctx *context.Context, args *engine.ThresholdProfileWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.ThresholdProfile != nil && len(args.ThresholdProfile.Tenant) != 0) { + tnt = args.ThresholdProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1SetThresholdProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1SetThresholdProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1GetAttributeProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.APIAttributeProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetAttributeProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetAttributeProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1GetAttributeProfileIDs(ctx *context.Context, args *utils.PaginatorWithTenant, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetAttributeProfileIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetAttributeProfileIDs, args, reply) +} +func (dS *DispatcherService) AdminSv1GetDispatcherHostIDs(ctx *context.Context, args *utils.PaginatorWithTenant, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetDispatcherHostIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetDispatcherHostIDs, args, reply) +} +func (dS *DispatcherService) AdminSv1GetResourceProfileIDs(ctx *context.Context, args *utils.PaginatorWithTenant, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetResourceProfileIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetResourceProfileIDs, args, reply) +} +func (dS *DispatcherService) AdminSv1GetStatQueueProfileIDs(ctx *context.Context, args *utils.PaginatorWithTenant, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetStatQueueProfileIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetStatQueueProfileIDs, args, reply) +} +func (dS *DispatcherService) AdminSv1RemoveDispatcherHost(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1RemoveDispatcherHost, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1RemoveDispatcherHost, args, reply) +} +func (dS *DispatcherService) AdminSv1SetRateProfileRates(ctx *context.Context, args *utils.APIRateProfile, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1SetRateProfileRates, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1SetRateProfileRates, args, reply) +} +func (dS *DispatcherService) AdminSv1GetAccountIDs(ctx *context.Context, args *utils.PaginatorWithTenant, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetAccountIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetAccountIDs, args, reply) +} +func (dS *DispatcherService) AdminSv1GetDispatcherProfileIDs(ctx *context.Context, args *utils.PaginatorWithTenant, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetDispatcherProfileIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetDispatcherProfileIDs, args, reply) +} +func (dS *DispatcherService) AdminSv1GetFilter(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.Filter) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetFilter, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetFilter, args, reply) +} +func (dS *DispatcherService) AdminSv1GetStatQueueProfileCount(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *int) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetStatQueueProfileCount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetStatQueueProfileCount, args, reply) +} +func (dS *DispatcherService) AdminSv1RemoveActionProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1RemoveActionProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1RemoveActionProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1RemoveAttributeProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1RemoveAttributeProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1RemoveAttributeProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1SetActionProfile(ctx *context.Context, args *engine.ActionProfileWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.ActionProfile != nil && len(args.ActionProfile.Tenant) != 0) { + tnt = args.ActionProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1SetActionProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1SetActionProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1ComputeFilterIndexIDs(ctx *context.Context, args *utils.ArgsComputeFilterIndexIDs, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1ComputeFilterIndexIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1ComputeFilterIndexIDs, args, reply) +} +func (dS *DispatcherService) AdminSv1GetAttributeProfileCount(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *int) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1GetAttributeProfileCount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1GetAttributeProfileCount, args, reply) +} +func (dS *DispatcherService) AdminSv1RemoveStatQueueProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1RemoveStatQueueProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1RemoveStatQueueProfile, args, reply) +} +func (dS *DispatcherService) AdminSv1SetChargerProfile(ctx *context.Context, args *apis.ChargerWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.ChargerProfile != nil && len(args.ChargerProfile.Tenant) != 0) { + tnt = args.ChargerProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AdminSv1SetChargerProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAdminS, utils.AdminSv1SetChargerProfile, args, reply) +} diff --git a/dispatchers/analyzers.go b/dispatchers/analyzers.go new file mode 100644 index 000000000..2ccdb958f --- /dev/null +++ b/dispatchers/analyzers.go @@ -0,0 +1,58 @@ +/* +Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments +Copyright (C) ITsysCOM GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ + +// do not modify this code because it's generated +package dispatchers + +import ( + "github.com/cgrates/birpc/context" + "github.com/cgrates/cgrates/analyzers" + "github.com/cgrates/cgrates/utils" +) + +func (dS *DispatcherService) AnalyzerSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AnalyzerSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAnalyzer, utils.AnalyzerSv1Ping, args, reply) +} +func (dS *DispatcherService) AnalyzerSv1StringQuery(ctx *context.Context, args *analyzers.QueryArgs, reply *[]map[string]interface{}) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AnalyzerSv1StringQuery, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAnalyzer, utils.AnalyzerSv1StringQuery, args, reply) +} diff --git a/dispatchers/attributes.go b/dispatchers/attributes.go index ac078ca27..be5fb3099 100644 --- a/dispatchers/attributes.go +++ b/dispatchers/attributes.go @@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ +// do not modify this code because it's generated package dispatchers import ( @@ -24,41 +25,63 @@ import ( "github.com/cgrates/cgrates/utils" ) -// AttributeSv1Ping interrogates AttributeS server responsible to process the event -func (dS *DispatcherService) AttributeSv1Ping(ctx *context.Context, args *utils.CGREvent, - reply *string) (err error) { - return dS.ping(ctx, utils.MetaAttributes, utils.AttributeSv1Ping, args, reply) -} - -// AttributeSv1GetAttributeForEvent is the dispatcher method for AttributeSv1.GetAttributeForEvent -func (dS *DispatcherService) AttributeSv1GetAttributeForEvent(ctx *context.Context, args *utils.CGREvent, - reply *engine.AttributeProfile) (err error) { +func (dS *DispatcherService) AttributeSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.AttributeSv1GetAttributeForEvent, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.AttributeSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(ctx, args, utils.MetaAttributes, utils.AttributeSv1GetAttributeForEvent, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAttributes, utils.AttributeSv1Ping, args, reply) } - -// AttributeSv1ProcessEvent . -func (dS *DispatcherService) AttributeSv1ProcessEvent(ctx *context.Context, args *utils.CGREvent, - reply *engine.AttrSProcessEventReply) (err error) { +func (dS *DispatcherService) AttributeSv1GetAttributeForEvent(ctx *context.Context, args *utils.CGREvent, reply *engine.APIAttributeProfile) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.AttributeSv1ProcessEvent, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.AttributeSv1GetAttributeForEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } - } - return dS.Dispatch(ctx, args, utils.MetaAttributes, utils.AttributeSv1ProcessEvent, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAttributes, utils.AttributeSv1GetAttributeForEvent, args, reply) +} +func (dS *DispatcherService) AttributeSv1ProcessEvent(ctx *context.Context, args *utils.CGREvent, reply *engine.AttrSProcessEventReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.AttributeSv1ProcessEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaAttributes, utils.AttributeSv1ProcessEvent, args, reply) } diff --git a/dispatchers/attributes_test.go b/dispatchers/attributes_test.go index 8c3265727..7e28c29b2 100644 --- a/dispatchers/attributes_test.go +++ b/dispatchers/attributes_test.go @@ -86,7 +86,7 @@ func TestDspAttributeSv1GetAttributeForEventError(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) ev := &utils.CGREvent{} - var reply *engine.AttributeProfile + var reply *engine.APIAttributeProfile err := dspSrv.AttributeSv1GetAttributeForEvent(context.Background(), ev, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if err == nil || err.Error() != expected { @@ -101,7 +101,7 @@ func TestDspAttributeSv1GetAttributeForEventErrorTenant(t *testing.T) { ev := &utils.CGREvent{ Tenant: "tenant", } - var reply *engine.AttributeProfile + var reply *engine.APIAttributeProfile err := dspSrv.AttributeSv1GetAttributeForEvent(context.Background(), ev, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if err == nil || err.Error() != expected { @@ -116,7 +116,7 @@ func TestDspAttributeSv1GetAttributeForEventErrorAttributeS(t *testing.T) { Tenant: "tenant", } - var reply *engine.AttributeProfile + var reply *engine.APIAttributeProfile err := dspSrv.AttributeSv1GetAttributeForEvent(context.Background(), ev, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if err == nil || err.Error() != expected { diff --git a/dispatchers/caches.go b/dispatchers/caches.go index b55f64062..796f77314 100644 --- a/dispatchers/caches.go +++ b/dispatchers/caches.go @@ -16,313 +16,288 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ +// do not modify this code because it's generated package dispatchers import ( - "time" - "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/utils" "github.com/cgrates/ltcache" + "time" ) -// CacheSv1Ping interogates CacheSv1 server responsible to process the event -func (dS *DispatcherService) CacheSv1Ping(args *utils.CGREvent, - reply *string) (err error) { - if args == nil { - args = new(utils.CGREvent) - } +func (dS *DispatcherService) CacheSv1GetItemExpiryTime(ctx *context.Context, args *utils.ArgsGetCacheItemWithAPIOpts, reply *time.Time) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1Ping, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1GetItemExpiryTime, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaCaches, utils.CacheSv1Ping, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1GetItemExpiryTime, args, reply) } - -// CacheSv1GetItemIDs returns the IDs for cacheID with given prefix -func (dS *DispatcherService) CacheSv1GetItemIDs(args *utils.ArgsGetCacheItemIDsWithAPIOpts, - reply *[]string) (err error) { +func (dS *DispatcherService) CacheSv1LoadCache(ctx *context.Context, args *utils.AttrReloadCacheWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1GetItemIDs, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1LoadCache, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaCaches, utils.CacheSv1GetItemIDs, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1LoadCache, args, reply) } - -// CacheSv1HasItem verifies the existence of an Item in cache -func (dS *DispatcherService) CacheSv1HasItem(args *utils.ArgsGetCacheItemWithAPIOpts, - reply *bool) (err error) { +func (dS *DispatcherService) CacheSv1HasItem(ctx *context.Context, args *utils.ArgsGetCacheItemWithAPIOpts, reply *bool) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1HasItem, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1HasItem, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, - utils.MetaCaches, utils.CacheSv1HasItem, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1HasItem, args, reply) } - -// CacheSv1GetItemExpiryTime returns the expiryTime for an item -func (dS *DispatcherService) CacheSv1GetItemExpiryTime(args *utils.ArgsGetCacheItemWithAPIOpts, - reply *time.Time) (err error) { +func (dS *DispatcherService) CacheSv1ReplicateSet(ctx *context.Context, args *utils.ArgCacheReplicateSet, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1GetItemExpiryTime, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1ReplicateSet, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaCaches, utils.CacheSv1GetItemExpiryTime, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1ReplicateSet, args, reply) } - -// CacheSv1RemoveItem removes the Item with ID from cache -func (dS *DispatcherService) CacheSv1RemoveItem(args *utils.ArgsGetCacheItemWithAPIOpts, - reply *string) (err error) { +func (dS *DispatcherService) CacheSv1RemoveGroup(ctx *context.Context, args *utils.ArgsGetGroupWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1RemoveItem, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1RemoveGroup, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaCaches, utils.CacheSv1RemoveItem, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1RemoveGroup, args, reply) } - -// CacheSv1RemoveItems removes the Item with ID from cache -func (dS *DispatcherService) CacheSv1RemoveItems(args *utils.AttrReloadCacheWithAPIOpts, - reply *string) (err error) { +func (dS *DispatcherService) CacheSv1ReloadCache(ctx *context.Context, args *utils.AttrReloadCacheWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1RemoveItems, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1ReloadCache, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaCaches, utils.CacheSv1RemoveItems, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1ReloadCache, args, reply) } - -// CacheSv1Clear will clear partitions in the cache (nil fol all, empty slice for none) -func (dS *DispatcherService) CacheSv1Clear(args *utils.AttrCacheIDsWithAPIOpts, - reply *string) (err error) { +func (dS *DispatcherService) CacheSv1RemoveItem(ctx *context.Context, args *utils.ArgsGetCacheItemWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1Clear, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1RemoveItem, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaCaches, utils.CacheSv1Clear, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1RemoveItem, args, reply) } - -// CacheSv1GetCacheStats returns CacheStats filtered by cacheIDs -func (dS *DispatcherService) CacheSv1GetCacheStats(args *utils.AttrCacheIDsWithAPIOpts, - reply *map[string]*ltcache.CacheStats) (err error) { +func (dS *DispatcherService) CacheSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1GetCacheStats, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaCaches, utils.CacheSv1GetCacheStats, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1Ping, args, reply) } - -// CacheSv1PrecacheStatus checks status of active precache processes -func (dS *DispatcherService) CacheSv1PrecacheStatus(args *utils.AttrCacheIDsWithAPIOpts, reply *map[string]string) (err error) { +func (dS *DispatcherService) CacheSv1RemoveItems(ctx *context.Context, args *utils.AttrReloadCacheWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1PrecacheStatus, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1RemoveItems, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaCaches, utils.CacheSv1PrecacheStatus, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1RemoveItems, args, reply) } - -// CacheSv1HasGroup checks existence of a group in cache -func (dS *DispatcherService) CacheSv1HasGroup(args *utils.ArgsGetGroupWithAPIOpts, - reply *bool) (err error) { +func (dS *DispatcherService) CacheSv1ReplicateRemove(ctx *context.Context, args *utils.ArgCacheReplicateRemove, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1HasGroup, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1ReplicateRemove, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaCaches, utils.CacheSv1HasGroup, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1ReplicateRemove, args, reply) } - -// CacheSv1GetGroupItemIDs returns a list of itemIDs in a cache group -func (dS *DispatcherService) CacheSv1GetGroupItemIDs(args *utils.ArgsGetGroupWithAPIOpts, - reply *[]string) (err error) { +func (dS *DispatcherService) CacheSv1GetCacheStats(ctx *context.Context, args *utils.AttrCacheIDsWithAPIOpts, reply *map[string]*ltcache.CacheStats) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1GetGroupItemIDs, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1GetCacheStats, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaCaches, utils.CacheSv1GetGroupItemIDs, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1GetCacheStats, args, reply) } - -// CacheSv1RemoveGroup will remove a group and all items belonging to it from cache -func (dS *DispatcherService) CacheSv1RemoveGroup(args *utils.ArgsGetGroupWithAPIOpts, reply *string) (err error) { +func (dS *DispatcherService) CacheSv1GetGroupItemIDs(ctx *context.Context, args *utils.ArgsGetGroupWithAPIOpts, reply *[]string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1RemoveGroup, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1GetGroupItemIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaCaches, utils.CacheSv1RemoveGroup, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1GetGroupItemIDs, args, reply) } - -// CacheSv1ReloadCache reloads cache from DB for a prefix or completely -func (dS *DispatcherService) CacheSv1ReloadCache(args *utils.AttrReloadCacheWithAPIOpts, reply *string) (err error) { +func (dS *DispatcherService) CacheSv1HasGroup(ctx *context.Context, args *utils.ArgsGetGroupWithAPIOpts, reply *bool) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1ReloadCache, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1HasGroup, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaCaches, utils.CacheSv1ReloadCache, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1HasGroup, args, reply) } - -// CacheSv1LoadCache loads cache from DB for a prefix or completely -func (dS *DispatcherService) CacheSv1LoadCache(args *utils.AttrReloadCacheWithAPIOpts, reply *string) (err error) { +func (dS *DispatcherService) CacheSv1PrecacheStatus(ctx *context.Context, args *utils.AttrCacheIDsWithAPIOpts, reply *map[string]string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1LoadCache, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1PrecacheStatus, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaCaches, utils.CacheSv1LoadCache, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1PrecacheStatus, args, reply) } - -// CacheSv1ReplicateRemove remove an item -func (dS *DispatcherService) CacheSv1ReplicateRemove(args *utils.ArgCacheReplicateRemove, reply *string) (err error) { +func (dS *DispatcherService) CacheSv1GetItemIDs(ctx *context.Context, args *utils.ArgsGetCacheItemIDsWithAPIOpts, reply *[]string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1ReplicateRemove, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1GetItemIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaCaches, utils.CacheSv1ReplicateRemove, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1GetItemIDs, args, reply) } - -// CacheSv1ReplicateSet replicate an item -func (dS *DispatcherService) CacheSv1ReplicateSet(args *utils.ArgCacheReplicateSet, reply *string) (err error) { +func (dS *DispatcherService) CacheSv1Clear(ctx *context.Context, args *utils.AttrCacheIDsWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CacheSv1ReplicateSet, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CacheSv1Clear, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaCaches, utils.CacheSv1ReplicateSet, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCaches, utils.CacheSv1Clear, args, reply) } diff --git a/dispatchers/caches_test.go b/dispatchers/caches_test.go index d7cd7f308..d7cd8dd65 100644 --- a/dispatchers/caches_test.go +++ b/dispatchers/caches_test.go @@ -22,6 +22,7 @@ import ( "testing" "time" + "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/utils" "github.com/cgrates/ltcache" @@ -37,7 +38,7 @@ func TestDspCacheSv1PingError(t *testing.T) { APIOpts: nil, } var reply *string - result := dspSrv.CacheSv1Ping(CGREvent, reply) + result := dspSrv.CacheSv1Ping(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -48,7 +49,7 @@ func TestDspCacheSv1PingErrorArgs(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.CacheSv1Ping(nil, reply) + result := dspSrv.CacheSv1Ping(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -66,7 +67,7 @@ func TestDspCacheSv1PingErrorAttributeSConns(t *testing.T) { APIOpts: nil, } var reply *string - result := dspSrv.CacheSv1Ping(CGREvent, reply) + result := dspSrv.CacheSv1Ping(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -79,7 +80,7 @@ func TestDspCacheSv1GetItemIDsError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.ArgsGetCacheItemIDsWithAPIOpts{} var reply *[]string - result := dspSrv.CacheSv1GetItemIDs(CGREvent, reply) + result := dspSrv.CacheSv1GetItemIDs(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -93,7 +94,7 @@ func TestDspCacheSv1GetItemIDsErrorArgsNil(t *testing.T) { Tenant: "tenant", } var reply *[]string - result := dspSrv.CacheSv1GetItemIDs(CGREvent, reply) + result := dspSrv.CacheSv1GetItemIDs(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -106,7 +107,7 @@ func TestDspCacheSv1HasItemError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.ArgsGetCacheItemWithAPIOpts{} var reply *bool - result := dspSrv.CacheSv1HasItem(CGREvent, reply) + result := dspSrv.CacheSv1HasItem(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -120,7 +121,7 @@ func TestDspCacheSv1HasItemErrorArgsNil(t *testing.T) { Tenant: "tenant", } var reply *bool - result := dspSrv.CacheSv1HasItem(CGREvent, reply) + result := dspSrv.CacheSv1HasItem(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -133,7 +134,7 @@ func TestDspCacheSv1GetItemExpiryTimeCacheSv1GetItemExpiryTimeError(t *testing.T cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.ArgsGetCacheItemWithAPIOpts{} var reply *time.Time - result := dspSrv.CacheSv1GetItemExpiryTime(CGREvent, reply) + result := dspSrv.CacheSv1GetItemExpiryTime(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -147,7 +148,7 @@ func TestDspCacheSv1GetItemExpiryTimeCacheSv1GetItemExpiryTimeErrorArgsNil(t *te Tenant: "tenant", } var reply *time.Time - result := dspSrv.CacheSv1GetItemExpiryTime(CGREvent, reply) + result := dspSrv.CacheSv1GetItemExpiryTime(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -160,7 +161,7 @@ func TestDspCacheSv1RemoveItemError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.ArgsGetCacheItemWithAPIOpts{} var reply *string - result := dspSrv.CacheSv1RemoveItem(CGREvent, reply) + result := dspSrv.CacheSv1RemoveItem(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -174,7 +175,7 @@ func TestDspCacheSv1RemoveItemArgsNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.CacheSv1RemoveItem(CGREvent, reply) + result := dspSrv.CacheSv1RemoveItem(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -187,7 +188,7 @@ func TestDspCacheSv1RemoveItemsError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.AttrReloadCacheWithAPIOpts{} var reply *string - result := dspSrv.CacheSv1RemoveItems(CGREvent, reply) + result := dspSrv.CacheSv1RemoveItems(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -201,7 +202,7 @@ func TestDspCacheSv1RemoveItemsArgsNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.CacheSv1RemoveItems(CGREvent, reply) + result := dspSrv.CacheSv1RemoveItems(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -214,7 +215,7 @@ func TestDspCacheSv1ClearError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.AttrCacheIDsWithAPIOpts{} var reply *string - result := dspSrv.CacheSv1Clear(CGREvent, reply) + result := dspSrv.CacheSv1Clear(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -228,7 +229,7 @@ func TestDspCacheSv1ClearArgsNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.CacheSv1Clear(CGREvent, reply) + result := dspSrv.CacheSv1Clear(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -241,7 +242,7 @@ func TestDspCacheSv1GetCacheStatsError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.AttrCacheIDsWithAPIOpts{} var reply *map[string]*ltcache.CacheStats - result := dspSrv.CacheSv1GetCacheStats(CGREvent, reply) + result := dspSrv.CacheSv1GetCacheStats(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -255,7 +256,7 @@ func TestDspCacheSv1GetCacheStatsArgsNil(t *testing.T) { Tenant: "tenant", } var reply *map[string]*ltcache.CacheStats - result := dspSrv.CacheSv1GetCacheStats(CGREvent, reply) + result := dspSrv.CacheSv1GetCacheStats(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -268,7 +269,7 @@ func TestDspCacheSv1PrecacheStatusError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.AttrCacheIDsWithAPIOpts{} var reply *map[string]string - result := dspSrv.CacheSv1PrecacheStatus(CGREvent, reply) + result := dspSrv.CacheSv1PrecacheStatus(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -282,7 +283,7 @@ func TestDspCacheSv1PrecacheStatusArgsNil(t *testing.T) { Tenant: "tenant", } var reply *map[string]string - result := dspSrv.CacheSv1PrecacheStatus(CGREvent, reply) + result := dspSrv.CacheSv1PrecacheStatus(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -295,7 +296,7 @@ func TestDspCacheSv1HasGroupError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.ArgsGetGroupWithAPIOpts{} var reply *bool - result := dspSrv.CacheSv1HasGroup(CGREvent, reply) + result := dspSrv.CacheSv1HasGroup(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -309,7 +310,7 @@ func TestDspCacheSv1HasGroupArgsNil(t *testing.T) { Tenant: "tenant", } var reply *bool - result := dspSrv.CacheSv1HasGroup(CGREvent, reply) + result := dspSrv.CacheSv1HasGroup(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -322,7 +323,7 @@ func TestDspCacheSv1GetGroupItemIDsError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.ArgsGetGroupWithAPIOpts{} var reply *[]string - result := dspSrv.CacheSv1GetGroupItemIDs(CGREvent, reply) + result := dspSrv.CacheSv1GetGroupItemIDs(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -336,7 +337,7 @@ func TestDspCacheSv1GetGroupItemIDsArgsNil(t *testing.T) { Tenant: "tenant", } var reply *[]string - result := dspSrv.CacheSv1GetGroupItemIDs(CGREvent, reply) + result := dspSrv.CacheSv1GetGroupItemIDs(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -349,7 +350,7 @@ func TestDspCacheSv1RemoveGroupError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.ArgsGetGroupWithAPIOpts{} var reply *string - result := dspSrv.CacheSv1RemoveGroup(CGREvent, reply) + result := dspSrv.CacheSv1RemoveGroup(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -363,7 +364,7 @@ func TestDspCacheSv1RemoveGroupArgsNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.CacheSv1RemoveGroup(CGREvent, reply) + result := dspSrv.CacheSv1RemoveGroup(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -376,7 +377,7 @@ func TestDspCacheSv1ReloadCacheError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.AttrReloadCacheWithAPIOpts{} var reply *string - result := dspSrv.CacheSv1ReloadCache(CGREvent, reply) + result := dspSrv.CacheSv1ReloadCache(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -390,7 +391,7 @@ func TestDspCacheSv1ReloadCacheNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.CacheSv1ReloadCache(CGREvent, reply) + result := dspSrv.CacheSv1ReloadCache(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -403,7 +404,7 @@ func TestDspCacheSv1LoadCacheError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.AttrReloadCacheWithAPIOpts{} var reply *string - result := dspSrv.CacheSv1LoadCache(CGREvent, reply) + result := dspSrv.CacheSv1LoadCache(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -417,7 +418,7 @@ func TestDspCacheSv1LoadCacheNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.CacheSv1LoadCache(CGREvent, reply) + result := dspSrv.CacheSv1LoadCache(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -430,7 +431,7 @@ func TestDspCacheSv1ReplicateRemoveError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.ArgCacheReplicateRemove{} var reply *string - result := dspSrv.CacheSv1ReplicateRemove(CGREvent, reply) + result := dspSrv.CacheSv1ReplicateRemove(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -444,7 +445,7 @@ func TestDspCacheSv1ReplicateRemoveNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.CacheSv1ReplicateRemove(CGREvent, reply) + result := dspSrv.CacheSv1ReplicateRemove(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -457,7 +458,7 @@ func TestDspCacheSv1ReplicateSetError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.ArgCacheReplicateSet{} var reply *string - result := dspSrv.CacheSv1ReplicateSet(CGREvent, reply) + result := dspSrv.CacheSv1ReplicateSet(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -471,7 +472,7 @@ func TestDspCacheSv1ReplicateSetNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.CacheSv1ReplicateSet(CGREvent, reply) + result := dspSrv.CacheSv1ReplicateSet(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) diff --git a/dispatchers/cdrs.go b/dispatchers/cdrs.go index 94b7ce747..bd5eadae8 100644 --- a/dispatchers/cdrs.go +++ b/dispatchers/cdrs.go @@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ +// do not modify this code because it's generated package dispatchers import ( @@ -23,52 +24,63 @@ import ( "github.com/cgrates/cgrates/utils" ) -// CDRsV1Ping interogates CDRsV1 server responsible to process the event -func (dS *DispatcherService) CDRsV1Ping(args *utils.CGREvent, - reply *string) (err error) { - if args == nil { - args = new(utils.CGREvent) - } +func (dS *DispatcherService) CDRsV1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CDRsV1Ping, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CDRsV1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaCDRs, - utils.CDRsV1Ping, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCDRs, utils.CDRsV1Ping, args, reply) } - -func (dS *DispatcherService) CDRsV1ProcessEvent(args *utils.CGREvent, reply *string) (err error) { +func (dS *DispatcherService) CDRsV1ProcessEvent(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CDRsV1ProcessEvent, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CDRsV1ProcessEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaCDRs, - utils.CDRsV1ProcessEvent, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCDRs, utils.CDRsV1ProcessEvent, args, reply) } - -func (dS *DispatcherService) CDRsV2ProcessEvent(args *utils.CGREvent, reply *[]*utils.EventWithFlags) (err error) { - tnt := args.Tenant - if tnt == utils.EmptyString { - tnt = dS.cfg.GeneralCfg().DefaultTenant +func (dS *DispatcherService) CDRsV1ProcessEventWithGet(ctx *context.Context, args *utils.CGREvent, reply *[]*utils.EventWithFlags) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CDRsV2ProcessEvent, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.CDRsV1ProcessEventWithGet, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaCDRs, - utils.CDRsV2ProcessEvent, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCDRs, utils.CDRsV1ProcessEventWithGet, args, reply) } diff --git a/dispatchers/cdrs_test.go b/dispatchers/cdrs_test.go index 3ced13883..d8186f261 100644 --- a/dispatchers/cdrs_test.go +++ b/dispatchers/cdrs_test.go @@ -21,6 +21,7 @@ package dispatchers import ( "testing" + "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/utils" ) @@ -31,7 +32,7 @@ func TestDspCDRsV1PingError(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.CGREvent{} var reply *string - result := dspSrv.CDRsV1Ping(CGREvent, reply) + result := dspSrv.CDRsV1Ping(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -45,7 +46,7 @@ func TestDspCDRsV1PingNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.CDRsV1Ping(CGREvent, reply) + result := dspSrv.CDRsV1Ping(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -57,7 +58,7 @@ func TestDspCDRsV1PingNilError(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *string - result := dspSrv.CDRsV1Ping(nil, reply) + result := dspSrv.CDRsV1Ping(context.Background(), nil, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -72,7 +73,7 @@ func TestDspCDRsV1ProcessEventError(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.CDRsV1ProcessEvent(ev, reply) + result := dspSrv.CDRsV1ProcessEvent(context.Background(), ev, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -86,12 +87,14 @@ func TestDspCDRsV1ProcessEventNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.CDRsV1ProcessEvent(ev, reply) + result := dspSrv.CDRsV1ProcessEvent(context.Background(), ev, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) } } + +/* func TestDspCDRsV2ProcessEventError(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) @@ -100,7 +103,7 @@ func TestDspCDRsV2ProcessEventError(t *testing.T) { Tenant: "tenant", } var reply *[]*utils.EventWithFlags - result := dspSrv.CDRsV2ProcessEvent(ev, reply) + result := dspSrv.CDRsV2ProcessEvent(context.Background(), ev, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -114,7 +117,7 @@ func TestDspCDRsV2ProcessEventNil(t *testing.T) { Tenant: "tenant", } var reply *[]*utils.EventWithFlags - result := dspSrv.CDRsV2ProcessEvent(ev, reply) + result := dspSrv.CDRsV2ProcessEvent(context.Background(), ev, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -127,9 +130,10 @@ func TestDspCDRsV2ProcessEventErrorNil(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} ev := &utils.CGREvent{} var reply *[]*utils.EventWithFlags - result := dspSrv.CDRsV2ProcessEvent(ev, reply) + result := dspSrv.CDRsV2ProcessEvent(context.Background(), ev, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) } } +*/ diff --git a/dispatchers/chargers.go b/dispatchers/chargers.go index 6f80ee1b4..3d1574436 100644 --- a/dispatchers/chargers.go +++ b/dispatchers/chargers.go @@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ +// do not modify this code because it's generated package dispatchers import ( @@ -24,49 +25,63 @@ import ( "github.com/cgrates/cgrates/utils" ) -func (dS *DispatcherService) ChargerSv1Ping(args *utils.CGREvent, reply *string) (err error) { - if args == nil { - args = new(utils.CGREvent) - } +func (dS *DispatcherService) ChargerSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ChargerSv1Ping, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ChargerSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaChargers, utils.ChargerSv1Ping, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaChargers, utils.ChargerSv1Ping, args, reply) } - -func (dS *DispatcherService) ChargerSv1GetChargersForEvent(args *utils.CGREvent, - reply *engine.ChargerProfiles) (err error) { +func (dS *DispatcherService) ChargerSv1GetChargersForEvent(ctx *context.Context, args *utils.CGREvent, reply *engine.ChargerProfiles) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ChargerSv1GetChargersForEvent, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ChargerSv1GetChargersForEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaChargers, utils.ChargerSv1GetChargersForEvent, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaChargers, utils.ChargerSv1GetChargersForEvent, args, reply) } - -func (dS *DispatcherService) ChargerSv1ProcessEvent(args *utils.CGREvent, - reply *[]*engine.ChrgSProcessEventReply) (err error) { +func (dS *DispatcherService) ChargerSv1ProcessEvent(ctx *context.Context, args *utils.CGREvent, reply *[]*engine.ChrgSProcessEventReply) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ChargerSv1ProcessEvent, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ChargerSv1ProcessEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaChargers, utils.ChargerSv1ProcessEvent, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaChargers, utils.ChargerSv1ProcessEvent, args, reply) } diff --git a/dispatchers/chargers_test.go b/dispatchers/chargers_test.go index df43e60e4..a554adadc 100644 --- a/dispatchers/chargers_test.go +++ b/dispatchers/chargers_test.go @@ -21,6 +21,7 @@ package dispatchers import ( "testing" + "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" @@ -30,7 +31,7 @@ func TestDspChargerSv1PingNilStruct(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ChargerSv1Ping(nil, reply) + result := dspSrv.ChargerSv1Ping(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -44,7 +45,7 @@ func TestDspChargerSv1PingNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ChargerSv1Ping(CGREvent, reply) + result := dspSrv.ChargerSv1Ping(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -57,7 +58,7 @@ func TestDspChargerSv1PingErrorNil(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.CGREvent{} var reply *string - result := dspSrv.ChargerSv1Ping(CGREvent, reply) + result := dspSrv.ChargerSv1Ping(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -71,7 +72,7 @@ func TestDspChargerSv1GetChargersForEventNil(t *testing.T) { Tenant: "tenant", } var reply *engine.ChargerProfiles - result := dspSrv.ChargerSv1GetChargersForEvent(CGREvent, reply) + result := dspSrv.ChargerSv1GetChargersForEvent(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -84,7 +85,7 @@ func TestDspChargerSv1GetChargersForEventErrorNil(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.CGREvent{} var reply *engine.ChargerProfiles - result := dspSrv.ChargerSv1GetChargersForEvent(CGREvent, reply) + result := dspSrv.ChargerSv1GetChargersForEvent(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -98,7 +99,7 @@ func TestDspChargerSv1ProcessEventNil(t *testing.T) { Tenant: "tenant", } var reply *[]*engine.ChrgSProcessEventReply - result := dspSrv.ChargerSv1ProcessEvent(CGREvent, reply) + result := dspSrv.ChargerSv1ProcessEvent(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -111,7 +112,7 @@ func TestDspChargerSv1ProcessEventErrorNil(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.CGREvent{} var reply *[]*engine.ChrgSProcessEventReply - result := dspSrv.ChargerSv1ProcessEvent(CGREvent, reply) + result := dspSrv.ChargerSv1ProcessEvent(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) diff --git a/dispatchers/config.go b/dispatchers/config.go index ce9c9f4fd..527887c90 100644 --- a/dispatchers/config.go +++ b/dispatchers/config.go @@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ +// do not modify this code because it's generated package dispatchers import ( @@ -24,87 +25,125 @@ import ( "github.com/cgrates/cgrates/utils" ) -func (dS *DispatcherService) ConfigSv1GetConfig(args *config.SectionWithAPIOpts, reply *map[string]interface{}) (err error) { +func (dS *DispatcherService) ConfigSv1StoreCfgInDB(ctx *context.Context, args *config.SectionWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ConfigSv1GetConfig, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ConfigSv1StoreCfgInDB, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaConfig, utils.ConfigSv1GetConfig, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaConfig, utils.ConfigSv1StoreCfgInDB, args, reply) } - -func (dS *DispatcherService) ConfigSv1ReloadConfig(args *config.ReloadArgs, reply *string) (err error) { +func (dS *DispatcherService) ConfigSv1GetConfig(ctx *context.Context, args *config.SectionWithAPIOpts, reply *map[string]interface{}) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ConfigSv1ReloadConfig, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ConfigSv1GetConfig, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaConfig, utils.ConfigSv1ReloadConfig, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaConfig, utils.ConfigSv1GetConfig, args, reply) } - -func (dS *DispatcherService) ConfigSv1SetConfig(args *config.SetConfigArgs, reply *string) (err error) { +func (dS *DispatcherService) ConfigSv1GetConfigAsJSON(ctx *context.Context, args *config.SectionWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ConfigSv1SetConfig, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ConfigSv1GetConfigAsJSON, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaConfig, utils.ConfigSv1SetConfig, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaConfig, utils.ConfigSv1GetConfigAsJSON, args, reply) } - -func (dS *DispatcherService) ConfigSv1SetConfigFromJSON(args *config.SetConfigFromJSONArgs, reply *string) (err error) { +func (dS *DispatcherService) ConfigSv1ReloadConfig(ctx *context.Context, args *config.ReloadArgs, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ConfigSv1SetConfigFromJSON, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ConfigSv1ReloadConfig, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaConfig, utils.ConfigSv1SetConfigFromJSON, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaConfig, utils.ConfigSv1ReloadConfig, args, reply) } - -func (dS *DispatcherService) ConfigSv1GetConfigAsJSON(args *config.SectionWithAPIOpts, reply *string) (err error) { +func (dS *DispatcherService) ConfigSv1SetConfig(ctx *context.Context, args *config.SetConfigArgs, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ConfigSv1GetConfigAsJSON, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ConfigSv1SetConfig, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaConfig, utils.ConfigSv1GetConfigAsJSON, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaConfig, utils.ConfigSv1SetConfig, args, reply) +} +func (dS *DispatcherService) ConfigSv1SetConfigFromJSON(ctx *context.Context, args *config.SetConfigFromJSONArgs, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ConfigSv1SetConfigFromJSON, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaConfig, utils.ConfigSv1SetConfigFromJSON, args, reply) +} +func (dS *DispatcherService) ConfigSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ConfigSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaConfig, utils.ConfigSv1Ping, args, reply) } diff --git a/dispatchers/config_test.go b/dispatchers/config_test.go index 65007c8b8..5da061334 100644 --- a/dispatchers/config_test.go +++ b/dispatchers/config_test.go @@ -21,6 +21,7 @@ package dispatchers import ( "testing" + "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" ) @@ -31,7 +32,7 @@ func TestDspConfigSv1GetConfigNil(t *testing.T) { Tenant: "tenant", } var reply *map[string]interface{} - result := dspSrv.ConfigSv1GetConfig(CGREvent, reply) + result := dspSrv.ConfigSv1GetConfig(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -44,7 +45,7 @@ func TestDspConfigSv1GetConfigErrorNil(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &config.SectionWithAPIOpts{} var reply *map[string]interface{} - result := dspSrv.ConfigSv1GetConfig(CGREvent, reply) + result := dspSrv.ConfigSv1GetConfig(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -58,7 +59,7 @@ func TestDspConfigSv1ReloadConfigNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ConfigSv1ReloadConfig(CGREvent, reply) + result := dspSrv.ConfigSv1ReloadConfig(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -71,7 +72,7 @@ func TestDspConfigSv1ReloadConfigErrorNil(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &config.ReloadArgs{} var reply *string - result := dspSrv.ConfigSv1ReloadConfig(CGREvent, reply) + result := dspSrv.ConfigSv1ReloadConfig(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -85,7 +86,7 @@ func TestDspConfigSv1SetConfigNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ConfigSv1SetConfig(CGREvent, reply) + result := dspSrv.ConfigSv1SetConfig(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -98,7 +99,7 @@ func TestDspConfigSv1SetConfigErrorNil(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &config.SetConfigArgs{} var reply *string - result := dspSrv.ConfigSv1SetConfig(CGREvent, reply) + result := dspSrv.ConfigSv1SetConfig(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -112,7 +113,7 @@ func TestDspConfigSv1SetConfigFromJSONNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ConfigSv1SetConfigFromJSON(CGREvent, reply) + result := dspSrv.ConfigSv1SetConfigFromJSON(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -125,7 +126,7 @@ func TestDspConfigSv1SetConfigFromJSONErrorNil(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &config.SetConfigFromJSONArgs{} var reply *string - result := dspSrv.ConfigSv1SetConfigFromJSON(CGREvent, reply) + result := dspSrv.ConfigSv1SetConfigFromJSON(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -139,7 +140,7 @@ func TestDspConfigSv1GetConfigAsJSONNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ConfigSv1GetConfigAsJSON(CGREvent, reply) + result := dspSrv.ConfigSv1GetConfigAsJSON(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -152,7 +153,7 @@ func TestDspConfigSv1GetConfigAsJSONErrorNil(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &config.SectionWithAPIOpts{} var reply *string - result := dspSrv.ConfigSv1GetConfigAsJSON(CGREvent, reply) + result := dspSrv.ConfigSv1GetConfigAsJSON(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) diff --git a/dispatchers/cores.go b/dispatchers/cores.go new file mode 100644 index 000000000..f579eb73e --- /dev/null +++ b/dispatchers/cores.go @@ -0,0 +1,168 @@ +/* +Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments +Copyright (C) ITsysCOM GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ + +// do not modify this code because it's generated +package dispatchers + +import ( + "github.com/cgrates/birpc/context" + "github.com/cgrates/cgrates/utils" +) + +func (dS *DispatcherService) CoreSv1StopMemoryProfiling(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.CoreSv1StopMemoryProfiling, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCore, utils.CoreSv1StopMemoryProfiling, args, reply) +} +func (dS *DispatcherService) CoreSv1Shutdown(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.CoreSv1Shutdown, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCore, utils.CoreSv1Shutdown, args, reply) +} +func (dS *DispatcherService) CoreSv1Sleep(ctx *context.Context, args *utils.DurationArgs, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.CoreSv1Sleep, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCore, utils.CoreSv1Sleep, args, reply) +} +func (dS *DispatcherService) CoreSv1StartCPUProfiling(ctx *context.Context, args *utils.DirectoryArgs, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.CoreSv1StartCPUProfiling, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCore, utils.CoreSv1StartCPUProfiling, args, reply) +} +func (dS *DispatcherService) CoreSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.CoreSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCore, utils.CoreSv1Ping, args, reply) +} +func (dS *DispatcherService) CoreSv1StartMemoryProfiling(ctx *context.Context, args *utils.MemoryPrf, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.CoreSv1StartMemoryProfiling, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCore, utils.CoreSv1StartMemoryProfiling, args, reply) +} +func (dS *DispatcherService) CoreSv1Status(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *map[string]interface{}) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.CoreSv1Status, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCore, utils.CoreSv1Status, args, reply) +} +func (dS *DispatcherService) CoreSv1StopCPUProfiling(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.CoreSv1StopCPUProfiling, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaCore, utils.CoreSv1StopCPUProfiling, args, reply) +} diff --git a/dispatchers/dispatchers.go b/dispatchers/dispatchers.go index a88716c12..631ba3f17 100644 --- a/dispatchers/dispatchers.go +++ b/dispatchers/dispatchers.go @@ -1,3 +1,4 @@ +//go:generate go run ../data/scripts/generate_dispatchers/generator.go /* Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments Copyright (C) ITsysCOM GmbH @@ -55,9 +56,9 @@ func (dS *DispatcherService) Shutdown() { utils.Logger.Info(fmt.Sprintf("<%s> service shutdown complete", utils.DispatcherS)) } -func (dS *DispatcherService) authorizeEvent(ev *utils.CGREvent, +func (dS *DispatcherService) authorizeEvent(ctx *context.Context, ev *utils.CGREvent, reply *engine.AttrSProcessEventReply) (err error) { - if err = dS.connMgr.Call(context.TODO(), dS.cfg.DispatcherSCfg().AttributeSConns, + if err = dS.connMgr.Call(ctx, dS.cfg.DispatcherSCfg().AttributeSConns, utils.AttributeSv1ProcessEvent, ev, reply); err != nil { if err.Error() == utils.ErrNotFound.Error() { err = utils.ErrUnknownApiKey @@ -67,7 +68,10 @@ func (dS *DispatcherService) authorizeEvent(ev *utils.CGREvent, return } -func (dS *DispatcherService) authorize(method, tenant string, apiKey string) (err error) { +func (dS *DispatcherService) authorize2(method, tenant string, apiKey string) (err error) { + return dS.authorize(context.Background(), method, tenant, apiKey) +} +func (dS *DispatcherService) authorize(ctx *context.Context, method, tenant string, apiKey string) (err error) { if apiKey == "" { return utils.NewErrMandatoryIeMissing(utils.APIKey) } @@ -83,7 +87,7 @@ func (dS *DispatcherService) authorize(method, tenant string, apiKey string) (er }, } var rplyEv engine.AttrSProcessEventReply - if err = dS.authorizeEvent(ev, &rplyEv); err != nil { + if err = dS.authorizeEvent(ctx, ev, &rplyEv); err != nil { return } var apiMethods string @@ -218,7 +222,7 @@ func (dS *DispatcherService) ping(ctx *context.Context, subsys, method string, a tnt = args.Tenant } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(method, tnt, + if err = dS.authorize(ctx, method, tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { return } @@ -226,51 +230,51 @@ func (dS *DispatcherService) ping(ctx *context.Context, subsys, method string, a return dS.Dispatch(ctx, args, subsys, method, args, reply) } -func (dS *DispatcherService) DispatcherSv1RemoteStatus(args *utils.TenantWithAPIOpts, +func (dS *DispatcherService) DispatcherSv1RemoteStatus(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *map[string]interface{}) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant if args.Tenant != utils.EmptyString { tnt = args.Tenant } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CoreSv1Status, tnt, + if err = dS.authorize(ctx, utils.CoreSv1Status, tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.Background(), &utils.CGREvent{ + return dS.Dispatch(ctx, &utils.CGREvent{ Tenant: tnt, APIOpts: args.APIOpts, }, utils.MetaCore, utils.CoreSv1Status, args, reply) } -func (dS *DispatcherService) DispatcherSv1RemoteSleep(args *utils.DurationArgs, reply *string) (err error) { +func (dS *DispatcherService) DispatcherSv1RemoteSleep(ctx *context.Context, args *utils.DurationArgs, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant if args.Tenant != utils.EmptyString { tnt = args.Tenant } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CoreSv1Sleep, tnt, + if err = dS.authorize(ctx, utils.CoreSv1Sleep, tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.Background(), &utils.CGREvent{ + return dS.Dispatch(ctx, &utils.CGREvent{ Tenant: tnt, APIOpts: args.APIOpts, }, utils.MetaCore, utils.CoreSv1Sleep, args, reply) } -func (dS *DispatcherService) DispatcherSv1RemotePing(args *utils.CGREvent, reply *string) (err error) { +func (dS *DispatcherService) DispatcherSv1RemotePing(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant if args != nil && args.Tenant != utils.EmptyString { tnt = args.Tenant } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.CoreSv1Ping, tnt, + if err = dS.authorize(ctx, utils.CoreSv1Ping, tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.Background(), args, utils.MetaCore, utils.CoreSv1Ping, args, reply) + return dS.Dispatch(ctx, args, utils.MetaCore, utils.CoreSv1Ping, args, reply) } diff --git a/dispatchers/dispatchers_test.go b/dispatchers/dispatchers_test.go index 925bb45aa..bf17c87d8 100644 --- a/dispatchers/dispatchers_test.go +++ b/dispatchers/dispatchers_test.go @@ -126,7 +126,7 @@ func TestDispatcherauthorizeEvent(t *testing.T) { dsp := NewDispatcherService(dm, cfg, fltr, connMgr) ev := &utils.CGREvent{} reply := &engine.AttrSProcessEventReply{} - err := dsp.authorizeEvent(ev, reply) + err := dsp.authorizeEvent(context.Background(), ev, reply) expected := "MANDATORY_IE_MISSING: [connIDs]" if err == nil || err.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) @@ -141,7 +141,7 @@ func TestDispatcherAuthorizeEventErr(t *testing.T) { dsp := NewDispatcherService(dm, cfg, fltr, connMgr) ev := &utils.CGREvent{} reply := &engine.AttrSProcessEventReply{} - err := dsp.authorizeEvent(ev, reply) + err := dsp.authorizeEvent(context.Background(), ev, reply) expected := "MANDATORY_IE_MISSING: [connIDs]" if err == nil || err.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) @@ -203,7 +203,7 @@ func TestDispatcherAuthorizeError(t *testing.T) { } connMng := engine.NewConnManager(cfg) dsp := NewDispatcherService(nil, cfg, nil, connMng) - err := dsp.authorize("", "cgrates.org", utils.APIMethods) + err := dsp.authorize2("", "cgrates.org", utils.APIMethods) expected := "dial tcp: address error: missing port in address" if err == nil || err.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) @@ -227,7 +227,7 @@ func TestDispatcherAuthorizeError2(t *testing.T) { } connMng := engine.NewConnManager(cfg) dsp := NewDispatcherService(nil, cfg, nil, connMng) - err := dsp.authorize("", "cgrates.org", utils.APIMethods) + err := dsp.authorize2("", "cgrates.org", utils.APIMethods) expected := "dial tcp: address error: missing port in address" if err == nil || err.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) @@ -248,7 +248,7 @@ func TestDispatcherServiceAuthorizeEvenError1(t *testing.T) { reply := &engine.AttrSProcessEventReply{} engine.Cache.SetWithoutReplicate(utils.CacheRPCConnections, "connID", nil, nil, true, utils.NonTransactional) - err := dsp.authorizeEvent(ev, reply) + err := dsp.authorizeEvent(context.Background(), ev, reply) expected := "UNKNOWN_API_KEY" if err == nil || err.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) @@ -282,7 +282,7 @@ func TestDispatcherServiceAuthorizeEventError2(t *testing.T) { value, nil, true, utils.NonTransactional) expected := "dial tcp: missing address" - if err := dsp.authorizeEvent(ev, reply); err == nil || err.Error() != expected { + if err := dsp.authorizeEvent(context.Background(), ev, reply); err == nil || err.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) } engine.Cache = cacheInit @@ -327,7 +327,7 @@ func TestDispatcherServiceAuthorizeEventError3(t *testing.T) { engine.Cache.SetWithoutReplicate(utils.CacheRPCConnections, "testID", value, nil, true, utils.NonTransactional) rply := &engine.AttrSProcessEventReply{} - if err := dsp.authorizeEvent(ev, rply); err != nil { + if err := dsp.authorizeEvent(context.Background(), ev, rply); err != nil { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", nil, err) } engine.Cache = cacheInit @@ -376,7 +376,7 @@ func TestDispatcherServiceAuthorizeError(t *testing.T) { engine.Cache.SetWithoutReplicate(utils.CacheRPCConnections, "testID", value, nil, true, utils.NonTransactional) expected := "UNAUTHORIZED_API" - if err := dsp.authorize(utils.APIMethods, "testTenant", "apikey"); err == nil || err.Error() != expected { + if err := dsp.authorize2(utils.APIMethods, "testTenant", "apikey"); err == nil || err.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) } engine.Cache = cacheInit @@ -424,7 +424,7 @@ func TestDispatcherServiceAuthorizeError2(t *testing.T) { engine.Cache.SetWithoutReplicate(utils.CacheRPCConnections, "testID", value, nil, true, utils.NonTransactional) expected := "NOT_FOUND" - if err := dsp.authorize(utils.APIMethods, "testTenant", "apikey"); err == nil || err.Error() != expected { + if err := dsp.authorize2(utils.APIMethods, "testTenant", "apikey"); err == nil || err.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) } engine.Cache = cacheInit @@ -473,7 +473,7 @@ func TestDispatcherServiceAuthorizeError3(t *testing.T) { engine.Cache = newCache engine.Cache.SetWithoutReplicate(utils.CacheRPCConnections, "testID", value, nil, true, utils.NonTransactional) - if err := dsp.authorize("testMethod", "testTenant", "apikey"); err != nil { + if err := dsp.authorize2("testMethod", "testTenant", "apikey"); err != nil { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", nil, err) } engine.Cache = cacheInit diff --git a/dispatchers/ees.go b/dispatchers/ees.go new file mode 100644 index 000000000..88f0dd5e0 --- /dev/null +++ b/dispatchers/ees.go @@ -0,0 +1,84 @@ +/* +Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments +Copyright (C) ITsysCOM GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ + +// do not modify this code because it's generated +package dispatchers + +import ( + "github.com/cgrates/birpc/context" + "github.com/cgrates/cgrates/ees" + "github.com/cgrates/cgrates/utils" +) + +func (dS *DispatcherService) EeSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.EeSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaEEs, utils.EeSv1Ping, args, reply) +} +func (dS *DispatcherService) EeSv1ArchiveEventsInReply(ctx *context.Context, args *ees.ArchiveEventsArgs, reply *[]uint8) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.EeSv1ArchiveEventsInReply, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaEEs, utils.EeSv1ArchiveEventsInReply, args, reply) +} +func (dS *DispatcherService) EeSv1ProcessEvent(ctx *context.Context, args *utils.CGREventWithEeIDs, reply *map[string]map[string]interface{}) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.CGREvent != nil && len(args.CGREvent.Tenant) != 0) { + tnt = args.CGREvent.Tenant + } + ev := make(map[string]interface{}) + if args != nil && args.CGREvent != nil { + ev = args.CGREvent.Event + } + opts := make(map[string]interface{}) + if args != nil && args.CGREvent != nil { + opts = args.CGREvent.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.EeSv1ProcessEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaEEs, utils.EeSv1ProcessEvent, args, reply) +} diff --git a/dispatchers/guardian.go b/dispatchers/guardian.go index 97fe4ecfb..dabf8e61a 100644 --- a/dispatchers/guardian.go +++ b/dispatchers/guardian.go @@ -31,7 +31,7 @@ func (dS *DispatcherService) GuardianSv1Ping(args *utils.CGREvent, } args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.GuardianSv1Ping, args.Tenant, + if err = dS.authorize2(utils.GuardianSv1Ping, args.Tenant, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { return } @@ -47,7 +47,7 @@ func (dS *DispatcherService) GuardianSv1RemoteLock(args AttrRemoteLockWithAPIOpt tnt = args.Tenant } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.GuardianSv1RemoteLock, tnt, + if err = dS.authorize2(utils.GuardianSv1RemoteLock, tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { return } @@ -66,7 +66,7 @@ func (dS *DispatcherService) GuardianSv1RemoteUnlock(args AttrRemoteUnlockWithAP tnt = args.Tenant } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.GuardianSv1RemoteUnlock, tnt, + if err = dS.authorize2(utils.GuardianSv1RemoteUnlock, tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { return } diff --git a/dispatchers/loaders.go b/dispatchers/loaders.go new file mode 100644 index 000000000..bde8687d6 --- /dev/null +++ b/dispatchers/loaders.go @@ -0,0 +1,61 @@ +/* +Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments +Copyright (C) ITsysCOM GmbH + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see +*/ + +// do not modify this code because it's generated +package dispatchers + +import ( + "github.com/cgrates/birpc/context" + "github.com/cgrates/cgrates/loaders" + "github.com/cgrates/cgrates/utils" +) + +func (dS *DispatcherService) LoaderSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.LoaderSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaLoaders, utils.LoaderSv1Ping, args, reply) +} +func (dS *DispatcherService) LoaderSv1Run(ctx *context.Context, args *loaders.ArgsProcessFolder, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.LoaderSv1Run, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaLoaders, utils.LoaderSv1Run, args, reply) +} diff --git a/dispatchers/rates.go b/dispatchers/rates.go index a92183c6b..e9429177a 100644 --- a/dispatchers/rates.go +++ b/dispatchers/rates.go @@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ +// do not modify this code because it's generated package dispatchers import ( @@ -23,30 +24,43 @@ import ( "github.com/cgrates/cgrates/utils" ) -func (dS *DispatcherService) RateSv1Ping(args *utils.CGREvent, rpl *string) (err error) { - if args == nil { - args = new(utils.CGREvent) +func (dS *DispatcherService) RateSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.RateSv1Ping, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.RateSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.RateS, utils.RateSv1Ping, args, rpl) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.RateS, utils.RateSv1Ping, args, reply) } - -func (dS *DispatcherService) RateSv1CostForEvent(args *utils.CGREvent, rpCost *utils.RateProfileCost) (err error) { - if args == nil { - args = &utils.CGREvent{} +func (dS *DispatcherService) RateSv1CostForEvent(ctx *context.Context, args *utils.CGREvent, reply *utils.RateProfileCost) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.RateSv1CostForEvent, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.RateSv1CostForEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.RateS, utils.RateSv1CostForEvent, args, rpCost) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.RateS, utils.RateSv1CostForEvent, args, reply) } diff --git a/dispatchers/rates_test.go b/dispatchers/rates_test.go index c03bc7fa8..84955dd11 100644 --- a/dispatchers/rates_test.go +++ b/dispatchers/rates_test.go @@ -21,6 +21,7 @@ package dispatchers import ( "testing" + "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/utils" ) @@ -32,7 +33,7 @@ func TestDspRateSv1PingErrorCase2(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.RateSv1Ping(CGREvent, reply) + result := dspSrv.RateSv1Ping(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -47,7 +48,7 @@ func TestDspRateSv1PingErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.RateSv1Ping(CGREvent, reply) + result := dspSrv.RateSv1Ping(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -58,7 +59,7 @@ func TestDspRateSv1CostForEventCaseNil(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.RateSv1Ping(nil, reply) + result := dspSrv.RateSv1Ping(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -72,7 +73,7 @@ func TestDspRateSv1CostForEventCase2(t *testing.T) { Tenant: "tenant", } var reply *utils.RateProfileCost - result := dspSrv.RateSv1CostForEvent(CGREvent, reply) + result := dspSrv.RateSv1CostForEvent(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -83,7 +84,7 @@ func TestDspRateSv1PingNil(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *utils.RateProfileCost - result := dspSrv.RateSv1CostForEvent(nil, reply) + result := dspSrv.RateSv1CostForEvent(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -98,7 +99,7 @@ func TestDspRateSv1CostForEventErrorNil(t *testing.T) { Tenant: "tenant", } var reply *utils.RateProfileCost - result := dspSrv.RateSv1CostForEvent(CGREvent, reply) + result := dspSrv.RateSv1CostForEvent(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) diff --git a/dispatchers/replicator.go b/dispatchers/replicator.go index c15395f07..7f493cd9d 100644 --- a/dispatchers/replicator.go +++ b/dispatchers/replicator.go @@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ +// do not modify this code because it's generated package dispatchers import ( @@ -24,949 +25,870 @@ import ( "github.com/cgrates/cgrates/utils" ) -func (dS *DispatcherService) ReplicatorSv1Ping(args *utils.CGREvent, rpl *string) (err error) { - if args == nil { - args = new(utils.CGREvent) - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1Ping, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaReplicator, utils.ReplicatorSv1Ping, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1GetStatQueue(args *utils.TenantIDWithAPIOpts, reply *engine.StatQueue) (err error) { +func (dS *DispatcherService) ReplicatorSv1RemoveFilter(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetStatQueue, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveFilter, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetStatQueue, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveFilter, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1GetFilter(args *utils.TenantIDWithAPIOpts, reply *engine.Filter) (err error) { +func (dS *DispatcherService) ReplicatorSv1SetResourceProfile(ctx *context.Context, args *engine.ResourceProfileWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.ResourceProfile != nil && len(args.ResourceProfile.Tenant) != 0) { + tnt = args.ResourceProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetResourceProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetResourceProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1GetStatQueueProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.StatQueueProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetFilter, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetStatQueueProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetFilter, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetStatQueueProfile, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1GetThreshold(args *utils.TenantIDWithAPIOpts, reply *engine.Threshold) (err error) { +func (dS *DispatcherService) ReplicatorSv1RemoveDispatcherProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetThreshold, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveDispatcherProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetThreshold, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveDispatcherProfile, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1GetThresholdProfile(args *utils.TenantIDWithAPIOpts, reply *engine.ThresholdProfile) (err error) { +func (dS *DispatcherService) ReplicatorSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1Ping, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1RemoveChargerProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetThresholdProfile, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveChargerProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetThresholdProfile, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveChargerProfile, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1GetStatQueueProfile(args *utils.TenantIDWithAPIOpts, reply *engine.StatQueueProfile) (err error) { +func (dS *DispatcherService) ReplicatorSv1SetDispatcherProfile(ctx *context.Context, args *engine.DispatcherProfileWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.DispatcherProfile != nil && len(args.DispatcherProfile.Tenant) != 0) { + tnt = args.DispatcherProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetDispatcherProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetDispatcherProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1SetRateProfile(ctx *context.Context, args *utils.RateProfileWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.RateProfile != nil && len(args.RateProfile.Tenant) != 0) { + tnt = args.RateProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetRateProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetRateProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1SetThreshold(ctx *context.Context, args *engine.ThresholdWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.Threshold != nil && len(args.Threshold.Tenant) != 0) { + tnt = args.Threshold.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetThreshold, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetThreshold, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1GetDispatcherHost(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.DispatcherHost) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetStatQueueProfile, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetDispatcherHost, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetStatQueueProfile, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetDispatcherHost, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1GetResource(args *utils.TenantIDWithAPIOpts, reply *engine.Resource) (err error) { +func (dS *DispatcherService) ReplicatorSv1GetResourceProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.ResourceProfile) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetResource, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetResourceProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetResource, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetResourceProfile, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1GetResourceProfile(args *utils.TenantIDWithAPIOpts, reply *engine.ResourceProfile) (err error) { +func (dS *DispatcherService) ReplicatorSv1GetChargerProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.ChargerProfile) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetResourceProfile, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetChargerProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetResourceProfile, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetChargerProfile, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1GetRouteProfile(args *utils.TenantIDWithAPIOpts, reply *engine.RouteProfile) (err error) { +func (dS *DispatcherService) ReplicatorSv1GetDispatcherProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.DispatcherProfile) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetRouteProfile, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetDispatcherProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetRouteProfile, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetDispatcherProfile, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1GetAttributeProfile(args *utils.TenantIDWithAPIOpts, reply *engine.AttributeProfile) (err error) { +func (dS *DispatcherService) ReplicatorSv1RemoveActionProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetAttributeProfile, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveActionProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetAttributeProfile, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveActionProfile, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1GetChargerProfile(args *utils.TenantIDWithAPIOpts, reply *engine.ChargerProfile) (err error) { +func (dS *DispatcherService) ReplicatorSv1RemoveAttributeProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetChargerProfile, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveAttributeProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetChargerProfile, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveAttributeProfile, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1GetDispatcherProfile(args *utils.TenantIDWithAPIOpts, reply *engine.DispatcherProfile) (err error) { +func (dS *DispatcherService) ReplicatorSv1RemoveResourceProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetDispatcherProfile, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveResourceProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetDispatcherProfile, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveResourceProfile, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1GetDispatcherHost(args *utils.TenantIDWithAPIOpts, reply *engine.DispatcherHost) (err error) { +func (dS *DispatcherService) ReplicatorSv1RemoveStatQueueProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetDispatcherHost, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveStatQueueProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetDispatcherHost, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveStatQueueProfile, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1GetRateProfile(args *utils.TenantIDWithAPIOpts, reply *utils.RateProfile) (err error) { +func (dS *DispatcherService) ReplicatorSv1GetAccount(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *utils.Account) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetRateProfile, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetAccount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetRateProfile, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetAccount, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1GetActionProfile(args *utils.TenantIDWithAPIOpts, reply *engine.ActionProfile) (err error) { +func (dS *DispatcherService) ReplicatorSv1GetAttributeProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.AttributeProfile) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetActionProfile, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetAttributeProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetActionProfile, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetAttributeProfile, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1GetItemLoadIDs(args *utils.StringWithAPIOpts, rpl *map[string]int64) (err error) { - if args == nil { - args = new(utils.StringWithAPIOpts) - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetItemLoadIDs, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetItemLoadIDs, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetThresholdProfile(args *engine.ThresholdProfileWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &engine.ThresholdProfileWithAPIOpts{ - ThresholdProfile: &engine.ThresholdProfile{}, - } - } - args.ThresholdProfile.Tenant = utils.FirstNonEmpty(args.ThresholdProfile.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetThresholdProfile, args.ThresholdProfile.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.ThresholdProfile.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetThresholdProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetThreshold(args *engine.ThresholdWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &engine.ThresholdWithAPIOpts{ - Threshold: &engine.Threshold{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetThreshold, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetThreshold, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetStatQueue(args *engine.StatQueueWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &engine.StatQueueWithAPIOpts{ - StatQueue: &engine.StatQueue{}, - } - } - args.StatQueue.Tenant = utils.FirstNonEmpty(args.StatQueue.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetStatQueue, args.StatQueue.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.StatQueue.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetStatQueue, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetFilter(args *engine.FilterWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &engine.FilterWithAPIOpts{ - Filter: &engine.Filter{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetFilter, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetFilter, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetStatQueueProfile(args *engine.StatQueueProfileWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &engine.StatQueueProfileWithAPIOpts{ - StatQueueProfile: &engine.StatQueueProfile{}, - } - - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetStatQueueProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetStatQueueProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetResource(args *engine.ResourceWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &engine.ResourceWithAPIOpts{ - Resource: &engine.Resource{}, - } - - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetResource, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetResource, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetResourceProfile(args *engine.ResourceProfileWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &engine.ResourceProfileWithAPIOpts{ - ResourceProfile: &engine.ResourceProfile{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetResourceProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetResourceProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetRouteProfile(args *engine.RouteProfileWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &engine.RouteProfileWithAPIOpts{ - RouteProfile: &engine.RouteProfile{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetRouteProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetRouteProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetAttributeProfile(args *engine.AttributeProfileWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &engine.AttributeProfileWithAPIOpts{ - AttributeProfile: &engine.AttributeProfile{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetAttributeProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetAttributeProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetChargerProfile(args *engine.ChargerProfileWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &engine.ChargerProfileWithAPIOpts{ - ChargerProfile: &engine.ChargerProfile{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetChargerProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetChargerProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetDispatcherProfile(args *engine.DispatcherProfileWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &engine.DispatcherProfileWithAPIOpts{ - DispatcherProfile: &engine.DispatcherProfile{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetDispatcherProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetDispatcherProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetRateProfile(args *utils.RateProfileWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.RateProfileWithAPIOpts{ - RateProfile: &utils.RateProfile{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetRateProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetRateProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetActionProfile(args *engine.ActionProfileWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &engine.ActionProfileWithAPIOpts{ - ActionProfile: &engine.ActionProfile{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetActionProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetActionProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetDispatcherHost(args *engine.DispatcherHostWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &engine.DispatcherHostWithAPIOpts{ - DispatcherHost: &engine.DispatcherHost{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetDispatcherHost, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetDispatcherHost, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1RemoveThreshold(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } - - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveThreshold, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveThreshold, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1SetLoadIDs(args *utils.LoadIDsWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.LoadIDsWithAPIOpts{} - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetLoadIDs, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetLoadIDs, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1RemoveStatQueue(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveStatQueue, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveStatQueue, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1RemoveFilter(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveFilter, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveFilter, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1RemoveThresholdProfile(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveThresholdProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveThresholdProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1RemoveStatQueueProfile(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveStatQueueProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveStatQueueProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1RemoveResource(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } - - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveResource, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveResource, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1RemoveResourceProfile(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveResourceProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveResourceProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1RemoveRouteProfile(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } - - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveRouteProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveRouteProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1RemoveAttributeProfile(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveAttributeProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveAttributeProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1RemoveChargerProfile(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveChargerProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveChargerProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1RemoveDispatcherProfile(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveDispatcherProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveDispatcherProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1RemoveDispatcherHost(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveDispatcherHost, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveDispatcherHost, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1RemoveRateProfile(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveRateProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveRateProfile, args, rpl) -} - -func (dS *DispatcherService) ReplicatorSv1RemoveActionProfile(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveActionProfile, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveActionProfile, args, rpl) -} - -// ReplicatorSv1GetIndexes . -func (dS *DispatcherService) ReplicatorSv1GetIndexes(args *utils.GetIndexesArg, reply *map[string]utils.StringSet) (err error) { - if args == nil { - args = &utils.GetIndexesArg{} - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetIndexes, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetIndexes, args, reply) -} - -// ReplicatorSv1SetIndexes . -func (dS *DispatcherService) ReplicatorSv1SetIndexes(args *utils.SetIndexesArg, reply *string) (err error) { - if args == nil { - args = &utils.SetIndexesArg{} - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetIndexes, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetIndexes, args, reply) -} - -// ReplicatorSv1RemoveIndexes . -func (dS *DispatcherService) ReplicatorSv1RemoveIndexes(args *utils.GetIndexesArg, reply *string) (err error) { - if args == nil { - args = &utils.GetIndexesArg{} - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveIndexes, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveIndexes, args, reply) -} - -func (dS *DispatcherService) ReplicatorSv1GetAccount(args *utils.TenantIDWithAPIOpts, reply *utils.Account) (err error) { +func (dS *DispatcherService) ReplicatorSv1SetDispatcherHost(ctx *context.Context, args *engine.DispatcherHostWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.DispatcherHost != nil && len(args.DispatcherHost.Tenant) != 0) { + tnt = args.DispatcherHost.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetDispatcherHost, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetDispatcherHost, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1SetStatQueue(ctx *context.Context, args *engine.StatQueueWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetStatQueue, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetStatQueue, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1SetThresholdProfile(ctx *context.Context, args *engine.ThresholdProfileWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.ThresholdProfile != nil && len(args.ThresholdProfile.Tenant) != 0) { + tnt = args.ThresholdProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetThresholdProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetThresholdProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1RemoveThresholdProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1GetAccount, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveThresholdProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1GetAccount, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveThresholdProfile, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1SetAccount(args *utils.AccountWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.AccountWithAPIOpts{ - Account: &utils.Account{}, - } +func (dS *DispatcherService) ReplicatorSv1SetAccount(ctx *context.Context, args *utils.AccountWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.Account != nil && len(args.Account.Tenant) != 0) { + tnt = args.Account.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1SetAccount, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetAccount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1SetAccount, args, rpl) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetAccount, args, reply) } - -func (dS *DispatcherService) ReplicatorSv1RemoveAccount(args *utils.TenantIDWithAPIOpts, rpl *string) (err error) { - if args == nil { - args = &utils.TenantIDWithAPIOpts{ - TenantID: &utils.TenantID{}, - } +func (dS *DispatcherService) ReplicatorSv1RemoveIndexes(ctx *context.Context, args *utils.GetIndexesArg, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ReplicatorSv1RemoveAccount, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveIndexes, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - APIOpts: args.APIOpts, - }, utils.MetaReplicator, utils.ReplicatorSv1RemoveAccount, args, rpl) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveIndexes, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1RemoveStatQueue(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveStatQueue, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveStatQueue, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1SetLoadIDs(ctx *context.Context, args *utils.LoadIDsWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetLoadIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetLoadIDs, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1GetFilter(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.Filter) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetFilter, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetFilter, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1GetThresholdProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.ThresholdProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetThresholdProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetThresholdProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1RemoveRouteProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveRouteProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveRouteProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1SetIndexes(ctx *context.Context, args *utils.SetIndexesArg, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetIndexes, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetIndexes, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1GetIndexes(ctx *context.Context, args *utils.GetIndexesArg, reply *map[string]utils.StringSet) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetIndexes, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetIndexes, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1RemoveResource(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveResource, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveResource, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1GetRouteProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.RouteProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetRouteProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetRouteProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1RemoveDispatcherHost(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveDispatcherHost, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveDispatcherHost, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1SetChargerProfile(ctx *context.Context, args *engine.ChargerProfileWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.ChargerProfile != nil && len(args.ChargerProfile.Tenant) != 0) { + tnt = args.ChargerProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetChargerProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetChargerProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1GetItemLoadIDs(ctx *context.Context, args *utils.StringWithAPIOpts, reply *map[string]int64) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetItemLoadIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetItemLoadIDs, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1GetRateProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *utils.RateProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetRateProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetRateProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1RemoveRateProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveRateProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveRateProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1SetFilter(ctx *context.Context, args *engine.FilterWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.Filter != nil && len(args.Filter.Tenant) != 0) { + tnt = args.Filter.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetFilter, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetFilter, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1SetStatQueueProfile(ctx *context.Context, args *engine.StatQueueProfileWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.StatQueueProfile != nil && len(args.StatQueueProfile.Tenant) != 0) { + tnt = args.StatQueueProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetStatQueueProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetStatQueueProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1GetResource(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.Resource) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetResource, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetResource, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1GetStatQueue(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.StatQueue) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetStatQueue, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetStatQueue, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1RemoveAccount(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveAccount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveAccount, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1RemoveThreshold(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1RemoveThreshold, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1RemoveThreshold, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1SetActionProfile(ctx *context.Context, args *engine.ActionProfileWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.ActionProfile != nil && len(args.ActionProfile.Tenant) != 0) { + tnt = args.ActionProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetActionProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetActionProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1SetAttributeProfile(ctx *context.Context, args *engine.AttributeProfileWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.AttributeProfile != nil && len(args.AttributeProfile.Tenant) != 0) { + tnt = args.AttributeProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetAttributeProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetAttributeProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1SetResource(ctx *context.Context, args *engine.ResourceWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.Resource != nil && len(args.Resource.Tenant) != 0) { + tnt = args.Resource.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetResource, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetResource, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1SetRouteProfile(ctx *context.Context, args *engine.RouteProfileWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.RouteProfile != nil && len(args.RouteProfile.Tenant) != 0) { + tnt = args.RouteProfile.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1SetRouteProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1SetRouteProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1GetActionProfile(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.ActionProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetActionProfile, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetActionProfile, args, reply) +} +func (dS *DispatcherService) ReplicatorSv1GetThreshold(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.Threshold) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ReplicatorSv1GetThreshold, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaReplicator, utils.ReplicatorSv1GetThreshold, args, reply) } diff --git a/dispatchers/replicator_test.go b/dispatchers/replicator_test.go index 0929ea2bf..ae7378bf2 100644 --- a/dispatchers/replicator_test.go +++ b/dispatchers/replicator_test.go @@ -21,6 +21,7 @@ package dispatchers import ( "testing" + "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" @@ -31,7 +32,7 @@ func TestDspReplicatorSv1PingNilEvent(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *string - result := dspSrv.ReplicatorSv1Ping(nil, reply) + result := dspSrv.ReplicatorSv1Ping(context.Background(), nil, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -46,7 +47,7 @@ func TestDspReplicatorSv1PingNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ReplicatorSv1Ping(CGREvent, reply) + result := dspSrv.ReplicatorSv1Ping(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -60,7 +61,7 @@ func TestDspReplicatorSv1PingErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ReplicatorSv1Ping(CGREvent, reply) + result := dspSrv.ReplicatorSv1Ping(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -77,7 +78,7 @@ func TestDspReplicatorSv1GetStatQueueNil(t *testing.T) { }, } var reply *engine.StatQueue - result := dspSrv.ReplicatorSv1GetStatQueue(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetStatQueue(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -93,7 +94,7 @@ func TestDspReplicatorSv1GetStatQueueErrorNil(t *testing.T) { }, } var reply *engine.StatQueue - result := dspSrv.ReplicatorSv1GetStatQueue(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetStatQueue(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -110,7 +111,7 @@ func TestDspReplicatorSv1GetFilterNil(t *testing.T) { }, } var reply *engine.Filter - result := dspSrv.ReplicatorSv1GetFilter(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetFilter(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -126,7 +127,7 @@ func TestDspReplicatorSv1GetFilterErrorNil(t *testing.T) { }, } var reply *engine.Filter - result := dspSrv.ReplicatorSv1GetFilter(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetFilter(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -143,7 +144,7 @@ func TestDspReplicatorSv1GetThresholdNil(t *testing.T) { }, } var reply *engine.Threshold - result := dspSrv.ReplicatorSv1GetThreshold(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetThreshold(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -159,7 +160,7 @@ func TestDspReplicatorSv1GetThresholdErrorNil(t *testing.T) { }, } var reply *engine.Threshold - result := dspSrv.ReplicatorSv1GetThreshold(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetThreshold(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -176,7 +177,7 @@ func TestDspReplicatorSv1GetThresholdProfileNil(t *testing.T) { }, } var reply *engine.ThresholdProfile - result := dspSrv.ReplicatorSv1GetThresholdProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetThresholdProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -192,7 +193,7 @@ func TestDspReplicatorSv1GetThresholdProfileErrorNil(t *testing.T) { }, } var reply *engine.ThresholdProfile - result := dspSrv.ReplicatorSv1GetThresholdProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetThresholdProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -209,7 +210,7 @@ func TestDspReplicatorSv1GetStatQueueProfileNil(t *testing.T) { }, } var reply *engine.StatQueueProfile - result := dspSrv.ReplicatorSv1GetStatQueueProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetStatQueueProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -225,7 +226,7 @@ func TestDspReplicatorSv1GetStatQueueProfileErrorNil(t *testing.T) { }, } var reply *engine.StatQueueProfile - result := dspSrv.ReplicatorSv1GetStatQueueProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetStatQueueProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -242,7 +243,7 @@ func TestDspReplicatorSv1GetResourceNil(t *testing.T) { }, } var reply *engine.Resource - result := dspSrv.ReplicatorSv1GetResource(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetResource(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -258,7 +259,7 @@ func TestDspReplicatorSv1GetResourceErrorNil(t *testing.T) { }, } var reply *engine.Resource - result := dspSrv.ReplicatorSv1GetResource(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetResource(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -275,7 +276,7 @@ func TestDspReplicatorSv1GetResourceProfileReplicatorSv1GetResourceProfileNil(t }, } var reply *engine.ResourceProfile - result := dspSrv.ReplicatorSv1GetResourceProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetResourceProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -291,7 +292,7 @@ func TestDspReplicatorSv1GetResourceProfileErrorNil(t *testing.T) { }, } var reply *engine.ResourceProfile - result := dspSrv.ReplicatorSv1GetResourceProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetResourceProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -308,7 +309,7 @@ func TestDspReplicatorSv1GetRouteProfileNil(t *testing.T) { }, } var reply *engine.RouteProfile - result := dspSrv.ReplicatorSv1GetRouteProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetRouteProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -324,7 +325,7 @@ func TestDspReplicatorSv1GetRouteProfileErrorNil(t *testing.T) { }, } var reply *engine.RouteProfile - result := dspSrv.ReplicatorSv1GetRouteProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetRouteProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -341,7 +342,7 @@ func TestDspReplicatorSv1GetAttributeProfileNil(t *testing.T) { }, } var reply *engine.AttributeProfile - result := dspSrv.ReplicatorSv1GetAttributeProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetAttributeProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -357,7 +358,7 @@ func TestDspReplicatorSv1GetAttributeProfileErrorNil(t *testing.T) { }, } var reply *engine.AttributeProfile - result := dspSrv.ReplicatorSv1GetAttributeProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetAttributeProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -374,7 +375,7 @@ func TestDspReplicatorSv1GetChargerProfileNil(t *testing.T) { }, } var reply *engine.ChargerProfile - result := dspSrv.ReplicatorSv1GetChargerProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetChargerProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -390,7 +391,7 @@ func TestDspReplicatorSv1GetChargerProfileErrorNil(t *testing.T) { }, } var reply *engine.ChargerProfile - result := dspSrv.ReplicatorSv1GetChargerProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetChargerProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -407,7 +408,7 @@ func TestDspReplicatorSv1GetDispatcherProfileNil(t *testing.T) { }, } var reply *engine.DispatcherProfile - result := dspSrv.ReplicatorSv1GetDispatcherProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetDispatcherProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -423,7 +424,7 @@ func TestDspReplicatorSv1GetDispatcherProfileErrorNil(t *testing.T) { }, } var reply *engine.DispatcherProfile - result := dspSrv.ReplicatorSv1GetDispatcherProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetDispatcherProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -440,7 +441,7 @@ func TestDspReplicatorSv1GetDispatcherHostNil(t *testing.T) { }, } var reply *engine.DispatcherHost - result := dspSrv.ReplicatorSv1GetDispatcherHost(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetDispatcherHost(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -456,7 +457,7 @@ func TestDspReplicatorSv1GetDispatcherHostErrorNil(t *testing.T) { }, } var reply *engine.DispatcherHost - result := dspSrv.ReplicatorSv1GetDispatcherHost(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetDispatcherHost(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -468,7 +469,7 @@ func TestDspReplicatorSv1GetItemLoadIDsNilEvent(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *map[string]int64 - result := dspSrv.ReplicatorSv1GetItemLoadIDs(nil, reply) + result := dspSrv.ReplicatorSv1GetItemLoadIDs(context.Background(), nil, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -483,7 +484,7 @@ func TestDspReplicatorSv1GetItemLoadIDsNil(t *testing.T) { Tenant: "tenant", } var reply *map[string]int64 - result := dspSrv.ReplicatorSv1GetItemLoadIDs(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetItemLoadIDs(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -497,7 +498,7 @@ func TestDspReplicatorSv1GetItemLoadIDsErrorNil(t *testing.T) { Tenant: "tenant", } var reply *map[string]int64 - result := dspSrv.ReplicatorSv1GetItemLoadIDs(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetItemLoadIDs(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -514,7 +515,7 @@ func TestDspReplicatorSv1SetThresholdProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetThresholdProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetThresholdProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -530,7 +531,7 @@ func TestDspReplicatorSv1SetThresholdProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetThresholdProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetThresholdProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -547,7 +548,7 @@ func TestDspReplicatorSv1RemoveFilterNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveFilter(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveFilter(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -563,7 +564,7 @@ func TestDspReplicatorSv1RemoveFilterErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveFilter(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveFilter(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -574,7 +575,7 @@ func TestDspReplicatorSv1RemoveFilterNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1RemoveFilter(nil, reply) + result := dspSrv.ReplicatorSv1RemoveFilter(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -591,7 +592,7 @@ func TestDspReplicatorSv1RemoveThresholdProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveThresholdProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveThresholdProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -607,7 +608,7 @@ func TestDspReplicatorSv1RemoveThresholdProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveThresholdProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveThresholdProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -618,7 +619,7 @@ func TestDspReplicatorSv1RemoveThresholdProfileNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1RemoveThresholdProfile(nil, reply) + result := dspSrv.ReplicatorSv1RemoveThresholdProfile(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -635,7 +636,7 @@ func TestDspReplicatorSv1RemoveStatQueueProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveStatQueueProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveStatQueueProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -651,7 +652,7 @@ func TestDspReplicatorSv1RemoveStatQueueProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveStatQueueProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveStatQueueProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -662,7 +663,7 @@ func TestDspReplicatorSv1RemoveStatQueueProfileNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1RemoveStatQueueProfile(nil, reply) + result := dspSrv.ReplicatorSv1RemoveStatQueueProfile(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -679,7 +680,7 @@ func TestDspReplicatorSv1RemoveResourceNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveResource(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveResource(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -695,7 +696,7 @@ func TestDspReplicatorSv1RemoveResourceErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveResource(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveResource(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -706,7 +707,7 @@ func TestDspReplicatorSv1RemoveResourceNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1RemoveResource(nil, reply) + result := dspSrv.ReplicatorSv1RemoveResource(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -723,7 +724,7 @@ func TestDspReplicatorSv1RemoveResourceProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveResourceProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveResourceProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -739,7 +740,7 @@ func TestDspReplicatorSv1RemoveResourceProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveResourceProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveResourceProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -750,7 +751,7 @@ func TestDspReplicatorSv1RemoveResourceProfileNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1RemoveResourceProfile(nil, reply) + result := dspSrv.ReplicatorSv1RemoveResourceProfile(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -767,7 +768,7 @@ func TestDspReplicatorSv1RemoveRouteProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveRouteProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveRouteProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -783,7 +784,7 @@ func TestDspReplicatorSv1RemoveRouteProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveRouteProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveRouteProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -794,7 +795,7 @@ func TestDspReplicatorSv1RemoveRouteProfileNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1RemoveRouteProfile(nil, reply) + result := dspSrv.ReplicatorSv1RemoveRouteProfile(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -811,7 +812,7 @@ func TestDspReplicatorSv1RemoveAttributeProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveAttributeProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveAttributeProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -827,7 +828,7 @@ func TestDspReplicatorSv1RemoveAttributeProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveAttributeProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveAttributeProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -838,7 +839,7 @@ func TestDspReplicatorSv1RemoveAttributeProfileNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1RemoveAttributeProfile(nil, reply) + result := dspSrv.ReplicatorSv1RemoveAttributeProfile(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -855,7 +856,7 @@ func TestDspReplicatorSv1RemoveChargerProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveChargerProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveChargerProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -871,7 +872,7 @@ func TestDspReplicatorSv1RemoveChargerProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveChargerProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveChargerProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -882,7 +883,7 @@ func TestDspReplicatorSv1RemoveChargerProfileNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1RemoveChargerProfile(nil, reply) + result := dspSrv.ReplicatorSv1RemoveChargerProfile(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -899,7 +900,7 @@ func TestDspReplicatorSv1RemoveDispatcherHostNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveDispatcherHost(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveDispatcherHost(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -915,7 +916,7 @@ func TestDspReplicatorSv1RemoveDispatcherHostErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveDispatcherHost(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveDispatcherHost(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -926,7 +927,7 @@ func TestDspReplicatorSv1RemoveDispatcherHostNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1RemoveDispatcherHost(nil, reply) + result := dspSrv.ReplicatorSv1RemoveDispatcherHost(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -943,7 +944,7 @@ func TestDspReplicatorSv1RemoveDispatcherProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveDispatcherProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveDispatcherProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -959,7 +960,7 @@ func TestDspReplicatorSv1RemoveDispatcherProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveDispatcherProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveDispatcherProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -970,7 +971,7 @@ func TestDspReplicatorSv1RemoveDispatcherProfileNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1RemoveDispatcherProfile(nil, reply) + result := dspSrv.ReplicatorSv1RemoveDispatcherProfile(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -985,7 +986,7 @@ func TestDspReplicatorSv1GetIndexesNil(t *testing.T) { Tenant: "tenant", } var reply *map[string]utils.StringSet - result := dspSrv.ReplicatorSv1GetIndexes(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetIndexes(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -999,7 +1000,7 @@ func TestDspReplicatorSv1GetIndexesErrorNil(t *testing.T) { Tenant: "tenant", } var reply *map[string]utils.StringSet - result := dspSrv.ReplicatorSv1GetIndexes(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetIndexes(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1010,7 +1011,7 @@ func TestDspReplicatorSv1GetIndexesNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *map[string]utils.StringSet - result := dspSrv.ReplicatorSv1GetIndexes(nil, reply) + result := dspSrv.ReplicatorSv1GetIndexes(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1025,7 +1026,7 @@ func TestDspReplicatorSv1SetIndexesNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ReplicatorSv1SetIndexes(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetIndexes(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1039,7 +1040,7 @@ func TestDspReplicatorSv1SetIndexesErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ReplicatorSv1SetIndexes(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetIndexes(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1050,7 +1051,7 @@ func TestDspReplicatorSv1SetIndexesNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetIndexes(nil, reply) + result := dspSrv.ReplicatorSv1SetIndexes(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1065,7 +1066,7 @@ func TestDspReplicatorSv1RemoveIndexesNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ReplicatorSv1RemoveIndexes(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveIndexes(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1080,7 +1081,7 @@ func TestDspReplicatorSv1SetLoadIDsNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ReplicatorSv1SetLoadIDs(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetLoadIDs(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1094,7 +1095,7 @@ func TestDspReplicatorSv1SetLoadIDsErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ReplicatorSv1SetLoadIDs(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetLoadIDs(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1105,7 +1106,7 @@ func TestDspReplicatorSv1SetLoadIDsNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetLoadIDs(nil, reply) + result := dspSrv.ReplicatorSv1SetLoadIDs(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1122,7 +1123,7 @@ func TestDspReplicatorSv1RemoveAccountNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveAccount(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveAccount(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1138,7 +1139,7 @@ func TestDspReplicatorSv1RemoveAccountErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveAccount(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveAccount(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1149,7 +1150,7 @@ func TestDspReplicatorSv1RemoveAccountNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1RemoveAccount(nil, reply) + result := dspSrv.ReplicatorSv1RemoveAccount(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1166,7 +1167,7 @@ func TestDspReplicatorSv1RemoveStatQueueNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveStatQueue(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveStatQueue(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1182,7 +1183,7 @@ func TestDspReplicatorSv1RemoveStatQueueErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveStatQueue(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveStatQueue(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1193,7 +1194,7 @@ func TestDspReplicatorSv1RemoveStatQueueNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1RemoveStatQueue(nil, reply) + result := dspSrv.ReplicatorSv1RemoveStatQueue(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1207,7 +1208,7 @@ func TestDspReplicatorSv1RemoveIndexesErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ReplicatorSv1RemoveIndexes(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveIndexes(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1218,7 +1219,7 @@ func TestDspReplicatorSv1RemoveIndexesNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1RemoveIndexes(nil, reply) + result := dspSrv.ReplicatorSv1RemoveIndexes(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1229,7 +1230,7 @@ func TestDspReplicatorSv1SetThresholdProfileNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetThresholdProfile(nil, reply) + result := dspSrv.ReplicatorSv1SetThresholdProfile(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1246,7 +1247,7 @@ func TestDspReplicatorSv1SetThresholdNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetThreshold(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetThreshold(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1262,7 +1263,7 @@ func TestDspReplicatorSv1SetThresholdErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetThreshold(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetThreshold(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1273,7 +1274,7 @@ func TestDspReplicatorSv1SetThresholdNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetThreshold(nil, reply) + result := dspSrv.ReplicatorSv1SetThreshold(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1288,7 +1289,7 @@ func TestDspReplicatorSv1SetAccountNil(t *testing.T) { Account: &utils.Account{}, } var reply *string - result := dspSrv.ReplicatorSv1SetAccount(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetAccount(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1304,7 +1305,7 @@ func TestDspReplicatorSv1SetAccountErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetAccount(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetAccount(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1315,7 +1316,7 @@ func TestDspReplicatorSv1SetAccountNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetAccount(nil, reply) + result := dspSrv.ReplicatorSv1SetAccount(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1332,7 +1333,7 @@ func TestDspReplicatorSv1SetStatQueueNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetStatQueue(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetStatQueue(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1348,7 +1349,7 @@ func TestDspReplicatorSv1SetStatQueueErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetStatQueue(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetStatQueue(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1359,7 +1360,7 @@ func TestDspReplicatorSv1SetStatQueueNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetStatQueue(nil, reply) + result := dspSrv.ReplicatorSv1SetStatQueue(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1376,7 +1377,7 @@ func TestDspReplicatorSv1SetFilterNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetFilter(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetFilter(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1392,7 +1393,7 @@ func TestDspReplicatorSv1SetFilterErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetFilter(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetFilter(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1403,7 +1404,7 @@ func TestDspReplicatorSv1SetFilterNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetFilter(nil, reply) + result := dspSrv.ReplicatorSv1SetFilter(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1420,7 +1421,7 @@ func TestDspReplicatorSv1SetStatQueueProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetStatQueueProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetStatQueueProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1436,7 +1437,7 @@ func TestDspReplicatorSv1SetStatQueueProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetStatQueueProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetStatQueueProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1447,7 +1448,7 @@ func TestDspReplicatorSv1SetStatQueueProfileNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetStatQueueProfile(nil, reply) + result := dspSrv.ReplicatorSv1SetStatQueueProfile(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1464,7 +1465,7 @@ func TestDspReplicatorSv1SetResourceNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetResource(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetResource(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1480,7 +1481,7 @@ func TestDspReplicatorSv1SetResourceErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetResource(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetResource(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1491,7 +1492,7 @@ func TestDspReplicatorSv1SetResourceNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetResource(nil, reply) + result := dspSrv.ReplicatorSv1SetResource(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1508,7 +1509,7 @@ func TestDspReplicatorSv1SetResourceProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetResourceProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetResourceProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1524,7 +1525,7 @@ func TestReplicatorSv1SetResourceProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetResourceProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetResourceProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1535,7 +1536,7 @@ func TestDspReplicatorSv1SetResourceProfileNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetResourceProfile(nil, reply) + result := dspSrv.ReplicatorSv1SetResourceProfile(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1552,7 +1553,7 @@ func TestDspReplicatorSv1SetRouteProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetRouteProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetRouteProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1568,7 +1569,7 @@ func TestDspReplicatorSv1SetRouteProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetRouteProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetRouteProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1579,7 +1580,7 @@ func TestDspReplicatorSv1SetRouteProfileNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetRouteProfile(nil, reply) + result := dspSrv.ReplicatorSv1SetRouteProfile(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1596,7 +1597,7 @@ func TestDspReplicatorSv1SetAttributeProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetAttributeProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetAttributeProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1612,7 +1613,7 @@ func TestDspReplicatorSv1SetAttributeProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetAttributeProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetAttributeProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1623,7 +1624,7 @@ func TestDspReplicatorSv1SetAttributeProfileNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetAttributeProfile(nil, reply) + result := dspSrv.ReplicatorSv1SetAttributeProfile(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1640,7 +1641,7 @@ func TestDspReplicatorSv1SetChargerProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetChargerProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetChargerProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1656,7 +1657,7 @@ func TestDspReplicatorSv1SetChargerProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetChargerProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetChargerProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1667,7 +1668,7 @@ func TestDspReplicatorSv1SetChargerProfileNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetChargerProfile(nil, reply) + result := dspSrv.ReplicatorSv1SetChargerProfile(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1684,7 +1685,7 @@ func TestDspReplicatorSv1SetDispatcherProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetDispatcherProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetDispatcherProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1700,7 +1701,7 @@ func TestDspReplicatorSv1SetDispatcherProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetDispatcherProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetDispatcherProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1711,7 +1712,7 @@ func TestDspReplicatorSv1SetDispatcherProfileNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetDispatcherProfile(nil, reply) + result := dspSrv.ReplicatorSv1SetDispatcherProfile(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1728,7 +1729,7 @@ func TestDspReplicatorSv1SetDispatcherHostNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetDispatcherHost(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetDispatcherHost(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1744,7 +1745,7 @@ func TestReplicatorSv1SetDispatcherHostErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetDispatcherHost(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetDispatcherHost(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1755,7 +1756,7 @@ func TestDspReplicatorSv1SetDispatcherHostNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1SetDispatcherHost(nil, reply) + result := dspSrv.ReplicatorSv1SetDispatcherHost(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1772,7 +1773,7 @@ func TestDspReplicatorSv1RemoveThresholdNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveThreshold(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveThreshold(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1788,7 +1789,7 @@ func TestReplicatorSv1RemoveThresholdErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveThreshold(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveThreshold(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1799,7 +1800,7 @@ func TestDspReplicatorSv1RemoveThresholdNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ReplicatorSv1RemoveThreshold(nil, reply) + result := dspSrv.ReplicatorSv1RemoveThreshold(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1815,7 +1816,7 @@ func TestDspReplicatorSv1GetRateProfileNil(t *testing.T) { }, } var reply *utils.RateProfile - result := dspSrv.ReplicatorSv1GetRateProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetRateProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1831,7 +1832,7 @@ func TestDspReplicatorSv1GetRateProfileErrorTenant(t *testing.T) { }, } var reply *utils.RateProfile - result := dspSrv.ReplicatorSv1GetRateProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetRateProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1844,7 +1845,7 @@ func TestDspReplicatorSv1GetRateProfileErrorNil(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.TenantIDWithAPIOpts{} var reply *utils.RateProfile - result := dspSrv.ReplicatorSv1GetRateProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetRateProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1860,7 +1861,7 @@ func TestDspReplicatorSv1GetActionProfileNil(t *testing.T) { }, } var reply *engine.ActionProfile - result := dspSrv.ReplicatorSv1GetActionProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetActionProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1876,7 +1877,7 @@ func TestDspReplicatorSv1GetActionProfileErrorTenant(t *testing.T) { }, } var reply *engine.ActionProfile - result := dspSrv.ReplicatorSv1GetActionProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetActionProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1893,7 +1894,7 @@ func TestDspReplicatorSv1GetActionProfileErrorNil(t *testing.T) { }, } var reply *engine.ActionProfile - result := dspSrv.ReplicatorSv1GetActionProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetActionProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1909,7 +1910,7 @@ func TestDspReplicatorSv1SetActionProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetActionProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetActionProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1926,7 +1927,7 @@ func TestDspReplicatorSv1SetActionProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetActionProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetActionProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1938,7 +1939,7 @@ func TestDspReplicatorSv1SetActionProfileErrorNilArgs(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *string - result := dspSrv.ReplicatorSv1SetActionProfile(nil, reply) + result := dspSrv.ReplicatorSv1SetActionProfile(context.Background(), nil, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1954,7 +1955,7 @@ func TestDspReplicatorSv1SetRateProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetRateProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetRateProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1971,7 +1972,7 @@ func TestDspReplicatorSv1SetRateProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1SetRateProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1SetRateProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1983,7 +1984,7 @@ func TestDspReplicatorSv1SetRateProfileErrorNilArgs(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *string - result := dspSrv.ReplicatorSv1SetRateProfile(nil, reply) + result := dspSrv.ReplicatorSv1SetRateProfile(context.Background(), nil, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -1999,7 +2000,7 @@ func TestDspReplicatorSv1RemoveRateProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveRateProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveRateProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -2016,7 +2017,7 @@ func TestDsReplicatorSv1RemoveRateProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveRateProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveRateProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -2028,7 +2029,7 @@ func TestDspReplicatorSv1RemoveRateProfileErrorNilArgs(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *string - result := dspSrv.ReplicatorSv1RemoveRateProfile(nil, reply) + result := dspSrv.ReplicatorSv1RemoveRateProfile(context.Background(), nil, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -2044,7 +2045,7 @@ func TestDspReplicatorSv1RemoveActionProfileNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveActionProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveActionProfile(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -2061,7 +2062,7 @@ func TestDspReplicatorSv1RemoveActionProfileErrorNil(t *testing.T) { }, } var reply *string - result := dspSrv.ReplicatorSv1RemoveActionProfile(CGREvent, reply) + result := dspSrv.ReplicatorSv1RemoveActionProfile(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -2073,7 +2074,7 @@ func TestReplicatorSv1RemoveActionProfileNilArgs(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *string - result := dspSrv.ReplicatorSv1RemoveActionProfile(nil, reply) + result := dspSrv.ReplicatorSv1RemoveActionProfile(context.Background(), nil, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -2090,7 +2091,7 @@ func TestDspReplicatorSv1GetAccountErrorNil(t *testing.T) { }, } var reply *utils.Account - result := dspSrv.ReplicatorSv1GetAccount(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetAccount(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -2106,7 +2107,7 @@ func TestDspReplicatorSv1GetAccountErrorCase2(t *testing.T) { }, } var reply *utils.Account - result := dspSrv.ReplicatorSv1GetAccount(CGREvent, reply) + result := dspSrv.ReplicatorSv1GetAccount(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) diff --git a/dispatchers/resources.go b/dispatchers/resources.go index 9e62e3dd2..f862e9430 100644 --- a/dispatchers/resources.go +++ b/dispatchers/resources.go @@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ +// do not modify this code because it's generated package dispatchers import ( @@ -24,112 +25,137 @@ import ( "github.com/cgrates/cgrates/utils" ) -func (dS *DispatcherService) ResourceSv1Ping(args *utils.CGREvent, rpl *string) (err error) { - if args == nil { - args = new(utils.CGREvent) - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ResourceSv1Ping, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaResources, utils.ResourceSv1Ping, args, rpl) -} - -func (dS *DispatcherService) ResourceSv1GetResourcesForEvent(args *utils.CGREvent, - reply *engine.Resources) (err error) { +func (dS *DispatcherService) ResourceSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ResourceSv1GetResourcesForEvent, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ResourceSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaResources, utils.ResourceSv1GetResourcesForEvent, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaResources, utils.ResourceSv1Ping, args, reply) } - -func (dS *DispatcherService) ResourceSv1AuthorizeResources(args *utils.CGREvent, - reply *string) (err error) { +func (dS *DispatcherService) ResourceSv1AllocateResources(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ResourceSv1AuthorizeResources, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ResourceSv1AllocateResources, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaResources, utils.ResourceSv1AuthorizeResources, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaResources, utils.ResourceSv1AllocateResources, args, reply) } - -func (dS *DispatcherService) ResourceSv1AllocateResources(args *utils.CGREvent, - reply *string) (err error) { +func (dS *DispatcherService) ResourceSv1AuthorizeResources(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ResourceSv1AllocateResources, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ResourceSv1AuthorizeResources, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaResources, utils.ResourceSv1AllocateResources, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaResources, utils.ResourceSv1AuthorizeResources, args, reply) } - -func (dS *DispatcherService) ResourceSv1ReleaseResources(args *utils.CGREvent, - reply *string) (err error) { +func (dS *DispatcherService) ResourceSv1GetResource(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.Resource) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args != nil && args.Tenant != utils.EmptyString { - tnt = args.Tenant - } - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ResourceSv1ReleaseResources, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaResources, utils.ResourceSv1ReleaseResources, args, reply) -} - -func (dS *DispatcherService) ResourceSv1GetResource(args *utils.TenantIDWithAPIOpts, reply *engine.Resource) (err error) { - tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ResourceSv1GetResource, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ResourceSv1GetResource, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaResources, utils.ResourceSv1GetResource, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaResources, utils.ResourceSv1GetResource, args, reply) } - -func (dS *DispatcherService) ResourceSv1GetResourceWithConfig(args *utils.TenantIDWithAPIOpts, reply *engine.ResourceWithConfig) (err error) { +func (dS *DispatcherService) ResourceSv1GetResourceWithConfig(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.ResourceWithConfig) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ResourceSv1GetResourceWithConfig, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ResourceSv1GetResourceWithConfig, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaResources, utils.ResourceSv1GetResourceWithConfig, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaResources, utils.ResourceSv1GetResourceWithConfig, args, reply) +} +func (dS *DispatcherService) ResourceSv1GetResourcesForEvent(ctx *context.Context, args *utils.CGREvent, reply *engine.Resources) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ResourceSv1GetResourcesForEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaResources, utils.ResourceSv1GetResourcesForEvent, args, reply) +} +func (dS *DispatcherService) ResourceSv1ReleaseResources(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ResourceSv1ReleaseResources, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaResources, utils.ResourceSv1ReleaseResources, args, reply) } diff --git a/dispatchers/resources_test.go b/dispatchers/resources_test.go index 56bc9ff0a..762b70811 100644 --- a/dispatchers/resources_test.go +++ b/dispatchers/resources_test.go @@ -21,6 +21,7 @@ package dispatchers import ( "testing" + "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" @@ -31,7 +32,7 @@ func TestDspResourceSv1PingNilEvent(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *string - result := dspSrv.ResourceSv1Ping(nil, reply) + result := dspSrv.ResourceSv1Ping(context.Background(), nil, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -46,7 +47,7 @@ func TestDspResourceSv1PingNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ResourceSv1Ping(CGREvent, reply) + result := dspSrv.ResourceSv1Ping(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -60,7 +61,7 @@ func TestDspResourceSv1PingErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ResourceSv1Ping(CGREvent, reply) + result := dspSrv.ResourceSv1Ping(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -75,7 +76,7 @@ func TestDspResourceSv1GetResourcesForEventNil(t *testing.T) { Tenant: "tenant", } var reply *engine.Resources - result := dspSrv.ResourceSv1GetResourcesForEvent(CGREvent, reply) + result := dspSrv.ResourceSv1GetResourcesForEvent(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -89,7 +90,7 @@ func TestDspResourceSv1GetResourcesForEventErrorNil(t *testing.T) { Tenant: "tenant", } var reply *engine.Resources - result := dspSrv.ResourceSv1GetResourcesForEvent(CGREvent, reply) + result := dspSrv.ResourceSv1GetResourcesForEvent(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -104,7 +105,7 @@ func TestDspResourceSv1AuthorizeResourcesNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ResourceSv1AuthorizeResources(CGREvent, reply) + result := dspSrv.ResourceSv1AuthorizeResources(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -118,7 +119,7 @@ func TestDspResourceSv1AuthorizeResourcesErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ResourceSv1AuthorizeResources(CGREvent, reply) + result := dspSrv.ResourceSv1AuthorizeResources(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -133,7 +134,7 @@ func TestDspResourceSv1ReleaseResourcesNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ResourceSv1ReleaseResources(CGREvent, reply) + result := dspSrv.ResourceSv1ReleaseResources(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -147,7 +148,7 @@ func TestDspResourceSv1ReleaseResourcesErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ResourceSv1ReleaseResources(CGREvent, reply) + result := dspSrv.ResourceSv1ReleaseResources(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -164,7 +165,7 @@ func TestDspResourceSv1GetResourceNil(t *testing.T) { }, } var reply *engine.Resource - result := dspSrv.ResourceSv1GetResource(CGREvent, reply) + result := dspSrv.ResourceSv1GetResource(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -180,7 +181,7 @@ func TestDspResourceSv1GetResourceErrorNil(t *testing.T) { }, } var reply *engine.Resource - result := dspSrv.ResourceSv1GetResource(CGREvent, reply) + result := dspSrv.ResourceSv1GetResource(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -195,7 +196,7 @@ func TestDspResourceSv1AllocateResourcesNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ResourceSv1AllocateResources(CGREvent, reply) + result := dspSrv.ResourceSv1AllocateResources(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -209,7 +210,7 @@ func TestDspResourceSv1AllocateResourcesErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.ResourceSv1AllocateResources(CGREvent, reply) + result := dspSrv.ResourceSv1AllocateResources(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -226,7 +227,7 @@ func TestDspResourceSv1GetResourceWithConfigNil(t *testing.T) { }, } var reply *engine.ResourceWithConfig - result := dspSrv.ResourceSv1GetResourceWithConfig(CGREvent, reply) + result := dspSrv.ResourceSv1GetResourceWithConfig(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -242,7 +243,7 @@ func TestDspResourceSv1GetResourceWithConfigErrorNil(t *testing.T) { }, } var reply *engine.ResourceWithConfig - result := dspSrv.ResourceSv1GetResourceWithConfig(CGREvent, reply) + result := dspSrv.ResourceSv1GetResourceWithConfig(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) diff --git a/dispatchers/routes.go b/dispatchers/routes.go index 8de2e309f..d3663c664 100644 --- a/dispatchers/routes.go +++ b/dispatchers/routes.go @@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ +// do not modify this code because it's generated package dispatchers import ( @@ -24,53 +25,83 @@ import ( "github.com/cgrates/cgrates/utils" ) -func (dS *DispatcherService) RouteSv1Ping(args *utils.CGREvent, reply *string) (err error) { - if args == nil { - args = new(utils.CGREvent) +func (dS *DispatcherService) RouteSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.RouteSv1Ping, - args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.RouteSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaRoutes, utils.RouteSv1Ping, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaRoutes, utils.RouteSv1Ping, args, reply) } - -func (dS *DispatcherService) RouteSv1GetRoutes(args *utils.CGREvent, reply *engine.SortedRoutesList) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) +func (dS *DispatcherService) RouteSv1GetRoutes(ctx *context.Context, args *utils.CGREvent, reply *engine.SortedRoutesList) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.RouteSv1GetRoutes, - args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.RouteSv1GetRoutes, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaRoutes, utils.RouteSv1GetRoutes, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaRoutes, utils.RouteSv1GetRoutes, args, reply) } - -func (dS *DispatcherService) RouteSv1GetRoutesList(args *utils.CGREvent, reply *[]string) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) +func (dS *DispatcherService) RouteSv1GetRoutesList(ctx *context.Context, args *utils.CGREvent, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.RouteSv1GetRoutesList, - args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.RouteSv1GetRoutesList, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaRoutes, utils.RouteSv1GetRoutesList, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaRoutes, utils.RouteSv1GetRoutesList, args, reply) } - -func (dS *DispatcherService) RouteSv1GetRouteProfilesForEvent(args *utils.CGREvent, reply *[]*engine.RouteProfile) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) +func (dS *DispatcherService) RouteSv1GetRouteProfilesForEvent(ctx *context.Context, args *utils.CGREvent, reply *[]*engine.RouteProfile) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.RouteSv1GetRouteProfilesForEvent, - args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.RouteSv1GetRouteProfilesForEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), args, utils.MetaRoutes, utils.RouteSv1GetRouteProfilesForEvent, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaRoutes, utils.RouteSv1GetRouteProfilesForEvent, args, reply) } diff --git a/dispatchers/routes_test.go b/dispatchers/routes_test.go index 1aa2e566a..41474196d 100644 --- a/dispatchers/routes_test.go +++ b/dispatchers/routes_test.go @@ -21,6 +21,7 @@ package dispatchers import ( "testing" + "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" @@ -31,7 +32,7 @@ func TestDspRouteSv1PingNilEvent(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *string - result := dspSrv.RouteSv1Ping(nil, reply) + result := dspSrv.RouteSv1Ping(context.Background(), nil, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -46,7 +47,7 @@ func TestDspRouteSv1PingNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.RouteSv1Ping(CGREvent, reply) + result := dspSrv.RouteSv1Ping(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -60,7 +61,7 @@ func TestDspRouteSv1PingErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.RouteSv1Ping(CGREvent, reply) + result := dspSrv.RouteSv1Ping(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -75,7 +76,7 @@ func TestDspRouteSv1GetRoutesNil(t *testing.T) { Tenant: "tenant", } var reply *engine.SortedRoutesList - result := dspSrv.RouteSv1GetRoutes(CGREvent, reply) + result := dspSrv.RouteSv1GetRoutes(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -89,7 +90,7 @@ func TestDspRouteSv1GetRoutesErrorNil(t *testing.T) { Tenant: "tenant", } var reply *engine.SortedRoutesList - result := dspSrv.RouteSv1GetRoutes(CGREvent, reply) + result := dspSrv.RouteSv1GetRoutes(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -104,7 +105,7 @@ func TestDspRouteSv1GetRoutesListNil(t *testing.T) { Tenant: "tenant", } var reply *[]string - result := dspSrv.RouteSv1GetRoutesList(CGREvent, reply) + result := dspSrv.RouteSv1GetRoutesList(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -118,7 +119,7 @@ func TestDspRouteSv1GetRoutesListErrorNil(t *testing.T) { Tenant: "tenant", } var reply *[]string - result := dspSrv.RouteSv1GetRoutesList(CGREvent, reply) + result := dspSrv.RouteSv1GetRoutesList(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -133,7 +134,7 @@ func TestDspRouteSv1GetRouteProfilesForEventNil(t *testing.T) { Tenant: "tenant", } var reply *[]*engine.RouteProfile - result := dspSrv.RouteSv1GetRouteProfilesForEvent(CGREvent, reply) + result := dspSrv.RouteSv1GetRouteProfilesForEvent(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -147,7 +148,7 @@ func TestDspRouteSv1GetRouteProfilesForEventErrorNil(t *testing.T) { Tenant: "tenant", } var reply *[]*engine.RouteProfile - result := dspSrv.RouteSv1GetRouteProfilesForEvent(CGREvent, reply) + result := dspSrv.RouteSv1GetRouteProfilesForEvent(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) diff --git a/dispatchers/servicemanager.go b/dispatchers/servicemanager.go index 836a9cf52..1d42ca6c8 100644 --- a/dispatchers/servicemanager.go +++ b/dispatchers/servicemanager.go @@ -31,7 +31,7 @@ func (dS *DispatcherService) ServiceManagerV1Ping(args *utils.CGREvent, } args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ServiceManagerV1Ping, args.Tenant, + if err = dS.authorize2(utils.ServiceManagerV1Ping, args.Tenant, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { return } diff --git a/dispatchers/sessions.go b/dispatchers/sessions.go index 8591fbb1b..c24e4f030 100644 --- a/dispatchers/sessions.go +++ b/dispatchers/sessions.go @@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ +// do not modify this code because it's generated package dispatchers import ( @@ -24,327 +25,434 @@ import ( "github.com/cgrates/cgrates/utils" ) -func (dS *DispatcherService) SessionSv1Ping(args *utils.CGREvent, reply *string) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1Ping, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaSessionS, utils.SessionSv1Ping, args, reply) -} - -func (dS *DispatcherService) SessionSv1AuthorizeEvent(args *utils.CGREvent, - reply *sessions.V1AuthorizeReply) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1AuthorizeEvent, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaSessionS, utils.SessionSv1AuthorizeEvent, args, reply) -} - -func (dS *DispatcherService) SessionSv1AuthorizeEventWithDigest(args *utils.CGREvent, - reply *sessions.V1AuthorizeReplyWithDigest) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1AuthorizeEventWithDigest, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaSessionS, utils.SessionSv1AuthorizeEventWithDigest, args, reply) -} - -func (dS *DispatcherService) SessionSv1InitiateSession(args *utils.CGREvent, - reply *sessions.V1InitSessionReply) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1InitiateSession, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaSessionS, utils.SessionSv1InitiateSession, args, reply) -} - -func (dS *DispatcherService) SessionSv1InitiateSessionWithDigest(args *utils.CGREvent, - reply *sessions.V1InitReplyWithDigest) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1InitiateSessionWithDigest, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaSessionS, utils.SessionSv1InitiateSessionWithDigest, args, reply) -} - -func (dS *DispatcherService) SessionSv1UpdateSession(args *utils.CGREvent, - reply *sessions.V1UpdateSessionReply) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1UpdateSession, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaSessionS, utils.SessionSv1UpdateSession, args, reply) -} - -func (dS *DispatcherService) SessionSv1SyncSessions(args *utils.TenantWithAPIOpts, - reply *string) (err error) { +func (dS *DispatcherService) SessionSv1GetPassiveSessions(ctx *context.Context, args *utils.SessionFilter, reply *[]*sessions.ExternalSession) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1SyncSessions, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.SessionSv1GetPassiveSessions, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaSessionS, utils.SessionSv1SyncSessions, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1GetPassiveSessions, args, reply) } - -func (dS *DispatcherService) SessionSv1TerminateSession(args *utils.CGREvent, - reply *string) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1TerminateSession, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaSessionS, utils.SessionSv1TerminateSession, args, reply) -} - -func (dS *DispatcherService) SessionSv1ProcessCDR(args *utils.CGREvent, - reply *string) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1ProcessCDR, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaSessionS, utils.SessionSv1ProcessCDR, args, reply) -} - -func (dS *DispatcherService) SessionSv1ProcessMessage(args *utils.CGREvent, - reply *sessions.V1ProcessMessageReply) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1ProcessMessage, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaSessionS, utils.SessionSv1ProcessMessage, args, reply) -} - -func (dS *DispatcherService) SessionSv1ProcessEvent(args *utils.CGREvent, - reply *sessions.V1ProcessEventReply) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1ProcessEvent, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaSessionS, utils.SessionSv1ProcessEvent, args, reply) -} - -func (dS *DispatcherService) SessionSv1GetActiveSessions(args *utils.SessionFilter, - reply *[]*sessions.ExternalSession) (err error) { +func (dS *DispatcherService) SessionSv1ReplicateSessions(ctx *context.Context, args sessions.ArgsReplicateSessions, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := args.APIOpts if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1GetActiveSessions, - tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.SessionSv1ReplicateSessions, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaSessionS, utils.SessionSv1GetActiveSessions, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1ReplicateSessions, args, reply) } - -func (dS *DispatcherService) SessionSv1GetActiveSessionsCount(args *utils.SessionFilter, - reply *int) (err error) { +func (dS *DispatcherService) SessionSv1AuthorizeEventWithDigest(ctx *context.Context, args *utils.CGREvent, reply *sessions.V1AuthorizeReplyWithDigest) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1GetActiveSessionsCount, - tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.SessionSv1AuthorizeEventWithDigest, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaSessionS, utils.SessionSv1GetActiveSessionsCount, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1AuthorizeEventWithDigest, args, reply) } - -func (dS *DispatcherService) SessionSv1ForceDisconnect(args *utils.SessionFilter, - reply *string) (err error) { +func (dS *DispatcherService) SessionSv1GetActiveSessions(ctx *context.Context, args *utils.SessionFilter, reply *[]*sessions.ExternalSession) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1ForceDisconnect, - tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.SessionSv1GetActiveSessions, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaSessionS, utils.SessionSv1ForceDisconnect, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1GetActiveSessions, args, reply) } - -func (dS *DispatcherService) SessionSv1GetPassiveSessions(args *utils.SessionFilter, - reply *[]*sessions.ExternalSession) (err error) { +func (dS *DispatcherService) SessionSv1ActivateSessions(ctx *context.Context, args *utils.SessionIDsWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1GetPassiveSessions, - tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.SessionSv1ActivateSessions, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaSessionS, utils.SessionSv1GetPassiveSessions, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1ActivateSessions, args, reply) } - -func (dS *DispatcherService) SessionSv1GetPassiveSessionsCount(args *utils.SessionFilter, - reply *int) (err error) { +func (dS *DispatcherService) SessionSv1ProcessEvent(ctx *context.Context, args *utils.CGREvent, reply *sessions.V1ProcessEventReply) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1GetPassiveSessionsCount, - tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.SessionSv1ProcessEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaSessionS, utils.SessionSv1GetPassiveSessionsCount, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1ProcessEvent, args, reply) } - -func (dS *DispatcherService) SessionSv1ReplicateSessions(args ArgsReplicateSessionsWithAPIOpts, - reply *string) (err error) { +func (dS *DispatcherService) SessionSv1DeactivateSessions(ctx *context.Context, args *utils.SessionIDsWithAPIOpts, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1ReplicateSessions, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.SessionSv1DeactivateSessions, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaSessionS, utils.SessionSv1ReplicateSessions, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1DeactivateSessions, args, reply) } - -func (dS *DispatcherService) SessionSv1SetPassiveSession(args *sessions.Session, - reply *string) (err error) { +func (dS *DispatcherService) SessionSv1ForceDisconnect(ctx *context.Context, args *utils.SessionFilter, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1SetPassiveSession, tnt, - utils.IfaceAsString(args.OptsStart[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.SessionSv1ForceDisconnect, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.OptsStart, - }, utils.MetaSessionS, utils.SessionSv1SetPassiveSession, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1ForceDisconnect, args, reply) } - -func (dS *DispatcherService) SessionSv1ActivateSessions(args *utils.SessionIDsWithAPIOpts, reply *string) (err error) { +func (dS *DispatcherService) SessionSv1GetActiveSessionsCount(ctx *context.Context, args *utils.SessionFilter, reply *int) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1ActivateSessions, - tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.SessionSv1GetActiveSessionsCount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaSessionS, utils.SessionSv1ActivateSessions, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1GetActiveSessionsCount, args, reply) } - -func (dS *DispatcherService) SessionSv1DeactivateSessions(args *utils.SessionIDsWithAPIOpts, reply *string) (err error) { +func (dS *DispatcherService) SessionSv1UpdateSession(ctx *context.Context, args *utils.CGREvent, reply *sessions.V1UpdateSessionReply) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1DeactivateSessions, - tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.SessionSv1UpdateSession, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaSessionS, utils.SessionSv1DeactivateSessions, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1UpdateSession, args, reply) } - -func (dS *DispatcherService) SessionSv1STIRAuthenticate(args *sessions.V1STIRAuthenticateArgs, reply *string) (err error) { +func (dS *DispatcherService) SessionSv1DisconnectPeer(ctx *context.Context, args *utils.DPRArgs, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1STIRAuthenticate, - tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.SessionSv1DisconnectPeer, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaSessionS, utils.SessionSv1STIRAuthenticate, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1DisconnectPeer, args, reply) } - -func (dS *DispatcherService) SessionSv1STIRIdentity(args *sessions.V1STIRIdentityArgs, reply *string) (err error) { +func (dS *DispatcherService) SessionSv1STIRIdentity(ctx *context.Context, args *sessions.V1STIRIdentityArgs, reply *string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.SessionSv1STIRIdentity, - tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.SessionSv1STIRIdentity, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaSessionS, utils.SessionSv1STIRIdentity, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1STIRIdentity, args, reply) +} +func (dS *DispatcherService) SessionSv1STIRAuthenticate(ctx *context.Context, args *sessions.V1STIRAuthenticateArgs, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.SessionSv1STIRAuthenticate, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1STIRAuthenticate, args, reply) +} +func (dS *DispatcherService) SessionSv1AuthorizeEvent(ctx *context.Context, args *utils.CGREvent, reply *sessions.V1AuthorizeReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.SessionSv1AuthorizeEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1AuthorizeEvent, args, reply) +} +func (dS *DispatcherService) SessionSv1ProcessCDR(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.SessionSv1ProcessCDR, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1ProcessCDR, args, reply) +} +func (dS *DispatcherService) SessionSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.SessionSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1Ping, args, reply) +} +func (dS *DispatcherService) SessionSv1TerminateSession(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.SessionSv1TerminateSession, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1TerminateSession, args, reply) +} +func (dS *DispatcherService) SessionSv1RegisterInternalBiJSONConn(ctx *context.Context, args string, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.SessionSv1RegisterInternalBiJSONConn, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1RegisterInternalBiJSONConn, args, reply) +} +func (dS *DispatcherService) SessionSv1InitiateSession(ctx *context.Context, args *utils.CGREvent, reply *sessions.V1InitSessionReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.SessionSv1InitiateSession, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1InitiateSession, args, reply) +} +func (dS *DispatcherService) SessionSv1InitiateSessionWithDigest(ctx *context.Context, args *utils.CGREvent, reply *sessions.V1InitReplyWithDigest) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.SessionSv1InitiateSessionWithDigest, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1InitiateSessionWithDigest, args, reply) +} +func (dS *DispatcherService) SessionSv1ReAuthorize(ctx *context.Context, args *utils.SessionFilter, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.SessionSv1ReAuthorize, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1ReAuthorize, args, reply) +} +func (dS *DispatcherService) SessionSv1GetPassiveSessionsCount(ctx *context.Context, args *utils.SessionFilter, reply *int) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.SessionSv1GetPassiveSessionsCount, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1GetPassiveSessionsCount, args, reply) +} +func (dS *DispatcherService) SessionSv1SetPassiveSession(ctx *context.Context, args *sessions.Session, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.SessionSv1SetPassiveSession, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1SetPassiveSession, args, reply) +} +func (dS *DispatcherService) SessionSv1ProcessMessage(ctx *context.Context, args *utils.CGREvent, reply *sessions.V1ProcessMessageReply) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.SessionSv1ProcessMessage, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1ProcessMessage, args, reply) +} +func (dS *DispatcherService) SessionSv1SyncSessions(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.SessionSv1SyncSessions, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaSessionS, utils.SessionSv1SyncSessions, args, reply) } diff --git a/dispatchers/sessions_test.go b/dispatchers/sessions_test.go index 6f9b6e758..5e4bb53db 100644 --- a/dispatchers/sessions_test.go +++ b/dispatchers/sessions_test.go @@ -21,6 +21,7 @@ package dispatchers import ( "testing" + "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/sessions" "github.com/cgrates/cgrates/utils" @@ -33,7 +34,7 @@ func TestDspSessionSv1PingNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.SessionSv1Ping(CGREvent, reply) + result := dspSrv.SessionSv1Ping(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -48,7 +49,7 @@ func TestDspSessionSv1PingErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.SessionSv1Ping(CGREvent, reply) + result := dspSrv.SessionSv1Ping(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -62,7 +63,7 @@ func TestDspSessionSv1AuthorizeEventNil(t *testing.T) { Tenant: "tenant", } var reply *sessions.V1AuthorizeReply - result := dspSrv.SessionSv1AuthorizeEvent(CGREvent, reply) + result := dspSrv.SessionSv1AuthorizeEvent(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -77,7 +78,7 @@ func TestDspSessionSv1AuthorizeEventErrorNil(t *testing.T) { Tenant: "tenant", } var reply *sessions.V1AuthorizeReply - result := dspSrv.SessionSv1AuthorizeEvent(CGREvent, reply) + result := dspSrv.SessionSv1AuthorizeEvent(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -91,7 +92,7 @@ func TestDspSessionSv1AuthorizeEventWithDigestNil(t *testing.T) { Tenant: "tenant", } var reply *sessions.V1AuthorizeReplyWithDigest - result := dspSrv.SessionSv1AuthorizeEventWithDigest(CGREvent, reply) + result := dspSrv.SessionSv1AuthorizeEventWithDigest(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -106,7 +107,7 @@ func TestDspSessionSv1AuthorizeEventWithDigestErrorNil(t *testing.T) { Tenant: "tenant", } var reply *sessions.V1AuthorizeReplyWithDigest - result := dspSrv.SessionSv1AuthorizeEventWithDigest(CGREvent, reply) + result := dspSrv.SessionSv1AuthorizeEventWithDigest(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -120,7 +121,7 @@ func TestDspSessionSv1SyncSessionsNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.SessionSv1SyncSessions(CGREvent, reply) + result := dspSrv.SessionSv1SyncSessions(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -135,7 +136,7 @@ func TestDspSessionSv1SyncSessionsErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.SessionSv1SyncSessions(CGREvent, reply) + result := dspSrv.SessionSv1SyncSessions(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -149,7 +150,7 @@ func TestDspSessionSv1ProcessCDRNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.SessionSv1ProcessCDR(CGREvent, reply) + result := dspSrv.SessionSv1ProcessCDR(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -164,7 +165,7 @@ func TestDspSessionSv1ProcessCDRErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.SessionSv1ProcessCDR(CGREvent, reply) + result := dspSrv.SessionSv1ProcessCDR(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -178,7 +179,7 @@ func TestDspSessionSv1ProcessMessageNil(t *testing.T) { Tenant: "tenant", } var reply *sessions.V1ProcessMessageReply - result := dspSrv.SessionSv1ProcessMessage(CGREvent, reply) + result := dspSrv.SessionSv1ProcessMessage(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -193,7 +194,7 @@ func TestDspSessionSv1ProcessMessageErrorNil(t *testing.T) { Tenant: "tenant", } var reply *sessions.V1ProcessMessageReply - result := dspSrv.SessionSv1ProcessMessage(CGREvent, reply) + result := dspSrv.SessionSv1ProcessMessage(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -207,7 +208,7 @@ func TestDspSessionSv1ProcessEventNil(t *testing.T) { Tenant: "tenant", } var reply *sessions.V1ProcessEventReply - result := dspSrv.SessionSv1ProcessEvent(CGREvent, reply) + result := dspSrv.SessionSv1ProcessEvent(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -222,7 +223,7 @@ func TestDspSessionSv1ProcessEventErrorNil(t *testing.T) { Tenant: "tenant", } var reply *sessions.V1ProcessEventReply - result := dspSrv.SessionSv1ProcessEvent(CGREvent, reply) + result := dspSrv.SessionSv1ProcessEvent(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -236,7 +237,7 @@ func TestDspSessionSv1GetActiveSessionsNil(t *testing.T) { Tenant: "tenant", } var reply *[]*sessions.ExternalSession - result := dspSrv.SessionSv1GetActiveSessions(CGREvent, reply) + result := dspSrv.SessionSv1GetActiveSessions(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -251,7 +252,7 @@ func TestDspSessionSv1GetActiveSessionsErrorNil(t *testing.T) { Tenant: "tenant", } var reply *[]*sessions.ExternalSession - result := dspSrv.SessionSv1GetActiveSessions(CGREvent, reply) + result := dspSrv.SessionSv1GetActiveSessions(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -265,7 +266,7 @@ func TestDspSessionSv1GetActiveSessionsCountNil(t *testing.T) { Tenant: "tenant", } var reply *int - result := dspSrv.SessionSv1GetActiveSessionsCount(CGREvent, reply) + result := dspSrv.SessionSv1GetActiveSessionsCount(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -280,7 +281,7 @@ func TestDspSessionSv1GetActiveSessionsCountErrorNil(t *testing.T) { Tenant: "tenant", } var reply *int - result := dspSrv.SessionSv1GetActiveSessionsCount(CGREvent, reply) + result := dspSrv.SessionSv1GetActiveSessionsCount(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -294,7 +295,7 @@ func TestDspSessionSv1ForceDisconnectNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.SessionSv1ForceDisconnect(CGREvent, reply) + result := dspSrv.SessionSv1ForceDisconnect(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -309,7 +310,7 @@ func TestDspSessionSv1ForceDisconnectErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.SessionSv1ForceDisconnect(CGREvent, reply) + result := dspSrv.SessionSv1ForceDisconnect(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -323,7 +324,7 @@ func TestDspSessionSv1GetPassiveSessionsNil(t *testing.T) { Tenant: "tenant", } var reply *[]*sessions.ExternalSession - result := dspSrv.SessionSv1GetPassiveSessions(CGREvent, reply) + result := dspSrv.SessionSv1GetPassiveSessions(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -338,7 +339,7 @@ func TestDspSessionSv1GetPassiveSessionsErrorNil(t *testing.T) { Tenant: "tenant", } var reply *[]*sessions.ExternalSession - result := dspSrv.SessionSv1GetPassiveSessions(CGREvent, reply) + result := dspSrv.SessionSv1GetPassiveSessions(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -348,11 +349,11 @@ func TestDspSessionSv1GetPassiveSessionsErrorNil(t *testing.T) { func TestDspSessionSv1ReplicateSessionsNil(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) - CGREvent := ArgsReplicateSessionsWithAPIOpts{ + CGREvent := sessions.ArgsReplicateSessions{ Tenant: "tenant", } var reply *string - result := dspSrv.SessionSv1ReplicateSessions(CGREvent, reply) + result := dspSrv.SessionSv1ReplicateSessions(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -363,11 +364,11 @@ func TestDspSessionSv1ReplicateSessionsErrorNil(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} - CGREvent := ArgsReplicateSessionsWithAPIOpts{ + CGREvent := sessions.ArgsReplicateSessions{ Tenant: "tenant", } var reply *string - result := dspSrv.SessionSv1ReplicateSessions(CGREvent, reply) + result := dspSrv.SessionSv1ReplicateSessions(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -381,7 +382,7 @@ func TestDspSessionSv1GetPassiveSessionsCountNil(t *testing.T) { Tenant: "tenant", } var reply *int - result := dspSrv.SessionSv1GetPassiveSessionsCount(CGREvent, reply) + result := dspSrv.SessionSv1GetPassiveSessionsCount(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -396,7 +397,7 @@ func TestDspSessionSv1GetPassiveSessionsCountErrorNil(t *testing.T) { Tenant: "tenant", } var reply *int - result := dspSrv.SessionSv1GetPassiveSessionsCount(CGREvent, reply) + result := dspSrv.SessionSv1GetPassiveSessionsCount(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -410,7 +411,7 @@ func TestDspSessionSv1SetPassiveSessionNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.SessionSv1SetPassiveSession(CGREvent, reply) + result := dspSrv.SessionSv1SetPassiveSession(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -425,7 +426,7 @@ func TestDspSessionSv1SetPassiveSessionErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.SessionSv1SetPassiveSession(CGREvent, reply) + result := dspSrv.SessionSv1SetPassiveSession(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -437,7 +438,7 @@ func TestDspSessionSv1STIRAuthenticateNil(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) CGREvent := &sessions.V1STIRAuthenticateArgs{} var reply *string - result := dspSrv.SessionSv1STIRAuthenticate(CGREvent, reply) + result := dspSrv.SessionSv1STIRAuthenticate(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -450,7 +451,7 @@ func TestDspSessionSv1STIRAuthenticateErrorNil(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &sessions.V1STIRAuthenticateArgs{} var reply *string - result := dspSrv.SessionSv1STIRAuthenticate(CGREvent, reply) + result := dspSrv.SessionSv1STIRAuthenticate(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -462,7 +463,7 @@ func TestDspSessionSv1STIRIdentityNil(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) CGREvent := &sessions.V1STIRIdentityArgs{} var reply *string - result := dspSrv.SessionSv1STIRIdentity(CGREvent, reply) + result := dspSrv.SessionSv1STIRIdentity(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -475,7 +476,7 @@ func TestDspSessionSv1STIRIdentityErrorNil(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &sessions.V1STIRIdentityArgs{} var reply *string - result := dspSrv.SessionSv1STIRIdentity(CGREvent, reply) + result := dspSrv.SessionSv1STIRIdentity(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -487,7 +488,7 @@ func TestDspSessionSv1ActivateSessionsNil(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) CGREvent := &utils.SessionIDsWithAPIOpts{} var reply *string - result := dspSrv.SessionSv1ActivateSessions(CGREvent, reply) + result := dspSrv.SessionSv1ActivateSessions(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -501,7 +502,7 @@ func TestDspSessionSv1ActivateSessionsErrorTenant(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.SessionSv1ActivateSessions(CGREvent, reply) + result := dspSrv.SessionSv1ActivateSessions(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -514,7 +515,7 @@ func TestDspSessionSv1ActivateSessionsErrorNil(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.SessionIDsWithAPIOpts{} var reply *string - result := dspSrv.SessionSv1ActivateSessions(CGREvent, reply) + result := dspSrv.SessionSv1ActivateSessions(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -526,7 +527,7 @@ func TestDspSessionSv1DeactivateSessionsNil(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) CGREvent := &utils.SessionIDsWithAPIOpts{} var reply *string - result := dspSrv.SessionSv1DeactivateSessions(CGREvent, reply) + result := dspSrv.SessionSv1DeactivateSessions(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -540,7 +541,7 @@ func TestDspSessionSv1DeactivateSessionsErrorTenant(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.SessionSv1DeactivateSessions(CGREvent, reply) + result := dspSrv.SessionSv1DeactivateSessions(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -553,7 +554,7 @@ func TestDspSessionSv1DeactivateSessionsErrorNil(t *testing.T) { cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} CGREvent := &utils.SessionIDsWithAPIOpts{} var reply *string - result := dspSrv.SessionSv1DeactivateSessions(CGREvent, reply) + result := dspSrv.SessionSv1DeactivateSessions(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) diff --git a/dispatchers/stats.go b/dispatchers/stats.go index 43da4591b..e075bca23 100644 --- a/dispatchers/stats.go +++ b/dispatchers/stats.go @@ -16,117 +16,174 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ +// do not modify this code because it's generated package dispatchers import ( "github.com/cgrates/birpc/context" + "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" ) -func (dS *DispatcherService) StatSv1Ping(args *utils.CGREvent, reply *string) (err error) { - if args == nil { - args = new(utils.CGREvent) - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.StatSv1Ping, - args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaStats, utils.StatSv1Ping, args, reply) -} - -func (dS *DispatcherService) StatSv1GetStatQueuesForEvent(args *utils.CGREvent, - reply *[]string) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.StatSv1GetStatQueuesForEvent, - args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaStats, utils.StatSv1GetStatQueuesForEvent, args, reply) -} - -func (dS *DispatcherService) StatSv1GetQueueStringMetrics(args *utils.TenantIDWithAPIOpts, - reply *map[string]string) (err error) { - - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.StatSv1GetQueueStringMetrics, - args.TenantID.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaStats, utils.StatSv1GetQueueStringMetrics, args, reply) -} - -func (dS *DispatcherService) StatSv1ProcessEvent(args *utils.CGREvent, - reply *[]string) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.StatSv1ProcessEvent, - args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaStats, utils.StatSv1ProcessEvent, args, reply) -} - -func (dS *DispatcherService) StatSv1GetQueueFloatMetrics(args *utils.TenantIDWithAPIOpts, - reply *map[string]float64) (err error) { - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.StatSv1GetQueueFloatMetrics, - args.TenantID.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaStats, utils.StatSv1GetQueueFloatMetrics, args, reply) -} - -func (dS *DispatcherService) StatSv1GetQueueDecimalMetrics(args *utils.TenantIDWithAPIOpts, - reply *map[string]float64) (err error) { - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.StatSv1GetQueueDecimalMetrics, - args.TenantID.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: args.Tenant, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaStats, utils.StatSv1GetQueueDecimalMetrics, args, reply) -} - -func (dS *DispatcherService) StatSv1GetQueueIDs(args *utils.TenantWithAPIOpts, - reply *[]string) (err error) { +func (dS *DispatcherService) StatSv1GetQueueFloatMetrics(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *map[string]float64) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.StatSv1GetQueueFloatMetrics, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaStats, utils.StatSv1GetQueueFloatMetrics, args, reply) +} +func (dS *DispatcherService) StatSv1GetQueueIDs(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.StatSv1GetQueueIDs, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.StatSv1GetQueueIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaStats, utils.StatSv1GetQueueIDs, args, reply) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaStats, utils.StatSv1GetQueueIDs, args, reply) +} +func (dS *DispatcherService) StatSv1GetStatQueuesForEvent(ctx *context.Context, args *utils.CGREvent, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.StatSv1GetStatQueuesForEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaStats, utils.StatSv1GetStatQueuesForEvent, args, reply) +} +func (dS *DispatcherService) StatSv1ProcessEvent(ctx *context.Context, args *utils.CGREvent, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.StatSv1ProcessEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaStats, utils.StatSv1ProcessEvent, args, reply) +} +func (dS *DispatcherService) StatSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.StatSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaStats, utils.StatSv1Ping, args, reply) +} +func (dS *DispatcherService) StatSv1GetQueueStringMetrics(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *map[string]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.StatSv1GetQueueStringMetrics, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaStats, utils.StatSv1GetQueueStringMetrics, args, reply) +} +func (dS *DispatcherService) StatSv1ResetStatQueue(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.StatSv1ResetStatQueue, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaStats, utils.StatSv1ResetStatQueue, args, reply) +} +func (dS *DispatcherService) StatSv1GetQueueDecimalMetrics(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *map[string]*utils.Decimal) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.StatSv1GetQueueDecimalMetrics, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaStats, utils.StatSv1GetQueueDecimalMetrics, args, reply) +} +func (dS *DispatcherService) StatSv1GetStatQueue(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.StatQueue) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.StatSv1GetStatQueue, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaStats, utils.StatSv1GetStatQueue, args, reply) } diff --git a/dispatchers/stats_test.go b/dispatchers/stats_test.go index 2bbce11b1..3f6796cc5 100644 --- a/dispatchers/stats_test.go +++ b/dispatchers/stats_test.go @@ -21,6 +21,7 @@ package dispatchers import ( "testing" + "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/utils" ) @@ -32,7 +33,7 @@ func TestDspStatSv1PingNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.StatSv1Ping(CGREvent, reply) + result := dspSrv.StatSv1Ping(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -44,7 +45,7 @@ func TestDspStatSv1PingNilEvent(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *string - result := dspSrv.StatSv1Ping(nil, reply) + result := dspSrv.StatSv1Ping(context.Background(), nil, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -59,7 +60,7 @@ func TestDspStatSv1PingErrorNil(t *testing.T) { Tenant: "tenant", } var reply *string - result := dspSrv.StatSv1Ping(CGREvent, reply) + result := dspSrv.StatSv1Ping(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -73,7 +74,7 @@ func TestDspStatSv1GetStatQueuesForEventNil(t *testing.T) { Tenant: "tenant", } var reply *[]string - result := dspSrv.StatSv1GetStatQueuesForEvent(CGREvent, reply) + result := dspSrv.StatSv1GetStatQueuesForEvent(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -88,7 +89,7 @@ func TestDspStatSv1GetStatQueuesForEventErrorNil(t *testing.T) { Tenant: "tenant", } var reply *[]string - result := dspSrv.StatSv1GetStatQueuesForEvent(CGREvent, reply) + result := dspSrv.StatSv1GetStatQueuesForEvent(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -104,7 +105,7 @@ func TestDspStatSv1GetQueueStringMetricsNil(t *testing.T) { }, } var reply *map[string]string - result := dspSrv.StatSv1GetQueueStringMetrics(CGREvent, reply) + result := dspSrv.StatSv1GetQueueStringMetrics(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -121,7 +122,7 @@ func TestDspStatSv1GetQueueStringMetricsErrorNil(t *testing.T) { }, } var reply *map[string]string - result := dspSrv.StatSv1GetQueueStringMetrics(CGREvent, reply) + result := dspSrv.StatSv1GetQueueStringMetrics(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -135,7 +136,7 @@ func TestDspStatSv1ProcessEventNil(t *testing.T) { Tenant: "tenant", } var reply *[]string - result := dspSrv.StatSv1ProcessEvent(CGREvent, reply) + result := dspSrv.StatSv1ProcessEvent(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -150,7 +151,7 @@ func TestDspStatSv1ProcessEventErrorNil(t *testing.T) { Tenant: "tenant", } var reply *[]string - result := dspSrv.StatSv1ProcessEvent(CGREvent, reply) + result := dspSrv.StatSv1ProcessEvent(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -166,7 +167,7 @@ func TestDspStatSv1GetQueueFloatMetricsNil(t *testing.T) { }, } var reply *map[string]float64 - result := dspSrv.StatSv1GetQueueFloatMetrics(CGREvent, reply) + result := dspSrv.StatSv1GetQueueFloatMetrics(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -183,7 +184,7 @@ func TestDspStatSv1GetQueueFloatMetricsErrorNil(t *testing.T) { }, } var reply *map[string]float64 - result := dspSrv.StatSv1GetQueueFloatMetrics(CGREvent, reply) + result := dspSrv.StatSv1GetQueueFloatMetrics(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -197,7 +198,7 @@ func TestDspStatSv1GetQueueIDsNil(t *testing.T) { Tenant: "tenant", } var reply *[]string - result := dspSrv.StatSv1GetQueueIDs(CGREvent, reply) + result := dspSrv.StatSv1GetQueueIDs(context.Background(), CGREvent, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -212,7 +213,7 @@ func TestDspStatSv1GetQueueIDsErrorNil(t *testing.T) { Tenant: "tenant", } var reply *[]string - result := dspSrv.StatSv1GetQueueIDs(CGREvent, reply) + result := dspSrv.StatSv1GetQueueIDs(context.Background(), CGREvent, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) diff --git a/dispatchers/thresholds.go b/dispatchers/thresholds.go index c2669dbbd..920319898 100644 --- a/dispatchers/thresholds.go +++ b/dispatchers/thresholds.go @@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see */ +// do not modify this code because it's generated package dispatchers import ( @@ -24,77 +25,114 @@ import ( "github.com/cgrates/cgrates/utils" ) -func (dS *DispatcherService) ThresholdSv1Ping(args *utils.CGREvent, reply *string) (err error) { - if args == nil { - args = new(utils.CGREvent) - } - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ThresholdSv1Ping, args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaThresholds, utils.ThresholdSv1Ping, args, reply) -} - -func (dS *DispatcherService) ThresholdSv1GetThresholdsForEvent(args *utils.CGREvent, - t *engine.Thresholds) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ThresholdSv1GetThresholdsForEvent, - args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaThresholds, utils.ThresholdSv1GetThresholdsForEvent, args, t) -} - -func (dS *DispatcherService) ThresholdSv1ProcessEvent(args *utils.CGREvent, - tIDs *[]string) (err error) { - args.Tenant = utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) - if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ThresholdSv1ProcessEvent, - args.Tenant, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { - return - } - } - return dS.Dispatch(context.TODO(), args, utils.MetaThresholds, utils.ThresholdSv1ProcessEvent, args, tIDs) -} - -func (dS *DispatcherService) ThresholdSv1GetThresholdIDs(args *utils.TenantWithAPIOpts, tIDs *[]string) (err error) { +func (dS *DispatcherService) ThresholdSv1GetThresholdIDs(ctx *context.Context, args *utils.TenantWithAPIOpts, reply *[]string) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { tnt = args.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ThresholdSv1GetThresholdIDs, - tnt, utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ThresholdSv1GetThresholdIDs, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - APIOpts: args.APIOpts, - }, utils.MetaThresholds, utils.ThresholdSv1GetThresholdIDs, args, tIDs) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaThresholds, utils.ThresholdSv1GetThresholdIDs, args, reply) } - -func (dS *DispatcherService) ThresholdSv1GetThreshold(args *utils.TenantIDWithAPIOpts, th *engine.Threshold) (err error) { +func (dS *DispatcherService) ThresholdSv1GetThresholdsForEvent(ctx *context.Context, args *utils.CGREvent, reply *engine.Thresholds) (err error) { tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString { + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ThresholdSv1GetThresholdsForEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaThresholds, utils.ThresholdSv1GetThresholdsForEvent, args, reply) +} +func (dS *DispatcherService) ThresholdSv1ProcessEvent(ctx *context.Context, args *utils.CGREvent, reply *[]string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ThresholdSv1ProcessEvent, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaThresholds, utils.ThresholdSv1ProcessEvent, args, reply) +} +func (dS *DispatcherService) ThresholdSv1ResetThreshold(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { tnt = args.TenantID.Tenant } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { - if err = dS.authorize(utils.ThresholdSv1GetThreshold, tnt, - utils.IfaceAsString(args.APIOpts[utils.OptsAPIKey])); err != nil { + if err = dS.authorize(ctx, utils.ThresholdSv1ResetThreshold, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { return } } - return dS.Dispatch(context.TODO(), &utils.CGREvent{ - Tenant: tnt, - ID: args.ID, - APIOpts: args.APIOpts, - }, utils.MetaThresholds, utils.ThresholdSv1GetThreshold, args, th) + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaThresholds, utils.ThresholdSv1ResetThreshold, args, reply) +} +func (dS *DispatcherService) ThresholdSv1Ping(ctx *context.Context, args *utils.CGREvent, reply *string) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && len(args.Tenant) != 0 { + tnt = args.Tenant + } + ev := make(map[string]interface{}) + if args != nil { + ev = args.Event + } + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ThresholdSv1Ping, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaThresholds, utils.ThresholdSv1Ping, args, reply) +} +func (dS *DispatcherService) ThresholdSv1GetThreshold(ctx *context.Context, args *utils.TenantIDWithAPIOpts, reply *engine.Threshold) (err error) { + tnt := dS.cfg.GeneralCfg().DefaultTenant + if args != nil && (args.TenantID != nil && len(args.TenantID.Tenant) != 0) { + tnt = args.TenantID.Tenant + } + ev := make(map[string]interface{}) + opts := make(map[string]interface{}) + if args != nil { + opts = args.APIOpts + } + if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 { + if err = dS.authorize(ctx, utils.ThresholdSv1GetThreshold, tnt, utils.IfaceAsString(opts[utils.OptsAPIKey])); err != nil { + return + } + } + return dS.Dispatch(ctx, &utils.CGREvent{Tenant: tnt, Event: ev, APIOpts: opts}, utils.MetaThresholds, utils.ThresholdSv1GetThreshold, args, reply) } diff --git a/dispatchers/thresholds_test.go b/dispatchers/thresholds_test.go index 18fe74f3c..c76d10cdc 100644 --- a/dispatchers/thresholds_test.go +++ b/dispatchers/thresholds_test.go @@ -21,6 +21,7 @@ package dispatchers import ( "testing" + "github.com/cgrates/birpc/context" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" "github.com/cgrates/cgrates/utils" @@ -30,7 +31,7 @@ func TestDspThresholdSv1PingNilEvent(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ThresholdSv1Ping(nil, reply) + result := dspSrv.ThresholdSv1Ping(context.Background(), nil, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -41,7 +42,7 @@ func TestDspThresholdSv1PingNil(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *string - result := dspSrv.ThresholdSv1Ping(&utils.CGREvent{ + result := dspSrv.ThresholdSv1Ping(context.Background(), &utils.CGREvent{ Tenant: "tenant", }, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" @@ -55,7 +56,7 @@ func TestDspThresholdSv1PingErrorNil(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *string - result := dspSrv.ThresholdSv1Ping(&utils.CGREvent{}, reply) + result := dspSrv.ThresholdSv1Ping(context.Background(), &utils.CGREvent{}, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" if result == nil || result.Error() != expected { t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, result) @@ -66,7 +67,7 @@ func TestDspThresholdSv1GetThresholdsForEventNil(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *engine.Thresholds - result := dspSrv.ThresholdSv1GetThresholdsForEvent(&utils.CGREvent{ + result := dspSrv.ThresholdSv1GetThresholdsForEvent(context.Background(), &utils.CGREvent{ Tenant: "tenant", }, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" @@ -80,7 +81,7 @@ func TestDspThresholdSv1GetThresholdsEvnil(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *engine.Thresholds - result := dspSrv.ThresholdSv1GetThresholdsForEvent(&utils.CGREvent{ + result := dspSrv.ThresholdSv1GetThresholdsForEvent(context.Background(), &utils.CGREvent{ Tenant: "tenant", }, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" @@ -93,7 +94,7 @@ func TestDspThresholdSv1ProcessEventNil(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *[]string - result := dspSrv.ThresholdSv1ProcessEvent(&utils.CGREvent{ + result := dspSrv.ThresholdSv1ProcessEvent(context.Background(), &utils.CGREvent{ Tenant: "tenant", }, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" @@ -107,7 +108,7 @@ func TestDspThresholdSv1ProcessEventnNil(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *[]string - result := dspSrv.ThresholdSv1ProcessEvent(&utils.CGREvent{ + result := dspSrv.ThresholdSv1ProcessEvent(context.Background(), &utils.CGREvent{ Tenant: "tenant", }, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" @@ -120,7 +121,7 @@ func TestDspThresholdSv1GetThresholdIDsNil(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *[]string - result := dspSrv.ThresholdSv1GetThresholdIDs(&utils.TenantWithAPIOpts{ + result := dspSrv.ThresholdSv1GetThresholdIDs(context.Background(), &utils.TenantWithAPIOpts{ Tenant: "tenant", }, reply) expected := "DISPATCHER_ERROR:NO_DATABASE_CONNECTION" @@ -134,7 +135,7 @@ func TestDspThresholdSv1GetThresholdIDErrorNil(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *[]string - result := dspSrv.ThresholdSv1GetThresholdIDs(&utils.TenantWithAPIOpts{ + result := dspSrv.ThresholdSv1GetThresholdIDs(context.Background(), &utils.TenantWithAPIOpts{ Tenant: "tenant", }, reply) expected := "MANDATORY_IE_MISSING: [ApiKey]" @@ -147,7 +148,7 @@ func TestDspThresholdSv1GetThresholdNil(t *testing.T) { cgrCfg := config.NewDefaultCGRConfig() dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) var reply *engine.Threshold - result := dspSrv.ThresholdSv1GetThreshold(&utils.TenantIDWithAPIOpts{ + result := dspSrv.ThresholdSv1GetThreshold(context.Background(), &utils.TenantIDWithAPIOpts{ TenantID: &utils.TenantID{ Tenant: "tenant", }, @@ -163,7 +164,7 @@ func TestDspThresholdSv1GetThresholdErrorNil(t *testing.T) { dspSrv := NewDispatcherService(nil, cgrCfg, nil, nil) cgrCfg.DispatcherSCfg().AttributeSConns = []string{"test"} var reply *engine.Threshold - result := dspSrv.ThresholdSv1GetThreshold(&utils.TenantIDWithAPIOpts{ + result := dspSrv.ThresholdSv1GetThreshold(context.Background(), &utils.TenantIDWithAPIOpts{ TenantID: &utils.TenantID{ Tenant: "tenant", }, diff --git a/dispatchers/utils.go b/dispatchers/utils.go index 96c75e15c..b6ec7ff0c 100644 --- a/dispatchers/utils.go +++ b/dispatchers/utils.go @@ -21,16 +21,9 @@ package dispatchers import ( "strings" - "github.com/cgrates/cgrates/sessions" "github.com/cgrates/cgrates/utils" ) -type ArgsReplicateSessionsWithAPIOpts struct { - APIOpts map[string]interface{} - Tenant string - sessions.ArgsReplicateSessions -} - type AttrRemoteLockWithAPIOpts struct { APIOpts map[string]interface{} Tenant string diff --git a/engine/attributes.go b/engine/attributes.go index e8070e603..843656954 100644 --- a/engine/attributes.go +++ b/engine/attributes.go @@ -33,29 +33,29 @@ import ( // NewAttributeService returns a new AttributeService func NewAttributeService(dm *DataManager, filterS *FilterS, - cgrcfg *config.CGRConfig) *AttributeService { - return &AttributeService{ + cgrcfg *config.CGRConfig) *AttributeS { + return &AttributeS{ dm: dm, fltrS: filterS, cfg: cgrcfg, } } -// AttributeService the service for the API -type AttributeService struct { +// AttributeS the service for the API +type AttributeS struct { dm *DataManager fltrS *FilterS cfg *config.CGRConfig } // Shutdown is called to shutdown the service -func (alS *AttributeService) Shutdown() { +func (alS *AttributeS) Shutdown() { utils.Logger.Info(fmt.Sprintf("<%s> shutdown initialized", utils.AttributeS)) utils.Logger.Info(fmt.Sprintf("<%s> shutdown complete", utils.AttributeS)) } // attributeProfileForEvent returns the matching attribute -func (alS *AttributeService) attributeProfileForEvent(ctx *context.Context, tnt string, attrIDs []string, +func (alS *AttributeS) attributeProfileForEvent(ctx *context.Context, tnt string, attrIDs []string, evNm utils.MapStorage, lastID string, processedPrfNo map[string]int, profileRuns int, ignoreFilters bool) (matchAttrPrfl *AttributeProfile, err error) { if len(attrIDs) == 0 { ignoreFilters = false @@ -130,7 +130,7 @@ func (attrReply *AttrSProcessEventReply) Digest() (rplyDigest string) { } // processEvent will match event with attribute profile and do the necessary replacements -func (alS *AttributeService) processEvent(ctx *context.Context, tnt string, args *utils.CGREvent, evNm utils.MapStorage, dynDP utils.DataProvider, +func (alS *AttributeS) processEvent(ctx *context.Context, tnt string, args *utils.CGREvent, evNm utils.MapStorage, dynDP utils.DataProvider, lastID string, processedPrfNo map[string]int, profileRuns int) (rply *AttrSProcessEventReply, err error) { var attrIDs []string if attrIDs, err = GetStringSliceOpts(ctx, args.Tenant, args, alS.fltrS, alS.cfg.AttributeSCfg().Opts.ProfileIDs, @@ -203,7 +203,7 @@ func (alS *AttributeService) processEvent(ctx *context.Context, tnt string, args } // V1GetAttributeForEvent returns the AttributeProfile that matches the event -func (alS *AttributeService) V1GetAttributeForEvent(ctx *context.Context, args *utils.CGREvent, +func (alS *AttributeS) V1GetAttributeForEvent(ctx *context.Context, args *utils.CGREvent, attrPrfl *APIAttributeProfile) (err error) { if args == nil { return utils.NewErrMandatoryIeMissing(utils.CGREventString) @@ -240,7 +240,7 @@ func (alS *AttributeService) V1GetAttributeForEvent(ctx *context.Context, args * } // V1ProcessEvent proccess the event and returns the result -func (alS *AttributeService) V1ProcessEvent(ctx *context.Context, args *utils.CGREvent, +func (alS *AttributeS) V1ProcessEvent(ctx *context.Context, args *utils.CGREvent, reply *AttrSProcessEventReply) (err error) { tnt := args.Tenant if tnt == utils.EmptyString { diff --git a/engine/caches.go b/engine/caches.go index 1473172c6..26e3b7645 100644 --- a/engine/caches.go +++ b/engine/caches.go @@ -253,7 +253,7 @@ func (chS *CacheS) V1HasItem(_ *context.Context, args *utils.ArgsGetCacheItemWit return } -func (chS *CacheS) V1GetItemExpiryTime(args *utils.ArgsGetCacheItemWithAPIOpts, +func (chS *CacheS) V1GetItemExpiryTime(_ *context.Context, args *utils.ArgsGetCacheItemWithAPIOpts, reply *time.Time) (err error) { expTime, has := chS.tCache.GetItemExpiryTime(args.CacheID, args.ItemID) if !has { @@ -295,7 +295,7 @@ func (chS *CacheS) V1GetCacheStats(ctx *context.Context, args *utils.AttrCacheID return } -func (chS *CacheS) V1PrecacheStatus(args *utils.AttrCacheIDsWithAPIOpts, rply *map[string]string) (err error) { +func (chS *CacheS) V1PrecacheStatus(_ *context.Context, args *utils.AttrCacheIDsWithAPIOpts, rply *map[string]string) (err error) { if len(args.CacheIDs) == 0 { args.CacheIDs = utils.CachePartitions.AsSlice() } @@ -315,13 +315,13 @@ func (chS *CacheS) V1PrecacheStatus(args *utils.AttrCacheIDsWithAPIOpts, rply *m return } -func (chS *CacheS) V1HasGroup(args *utils.ArgsGetGroupWithAPIOpts, +func (chS *CacheS) V1HasGroup(_ *context.Context, args *utils.ArgsGetGroupWithAPIOpts, rply *bool) (err error) { *rply = chS.tCache.HasGroup(args.CacheID, args.GroupID) return } -func (chS *CacheS) V1GetGroupItemIDs(args *utils.ArgsGetGroupWithAPIOpts, +func (chS *CacheS) V1GetGroupItemIDs(_ *context.Context, args *utils.ArgsGetGroupWithAPIOpts, rply *[]string) (err error) { if has := chS.tCache.HasGroup(args.CacheID, args.GroupID); !has { return utils.ErrNotFound @@ -330,7 +330,7 @@ func (chS *CacheS) V1GetGroupItemIDs(args *utils.ArgsGetGroupWithAPIOpts, return } -func (chS *CacheS) V1RemoveGroup(args *utils.ArgsGetGroupWithAPIOpts, +func (chS *CacheS) V1RemoveGroup(_ *context.Context, args *utils.ArgsGetGroupWithAPIOpts, rply *string) (err error) { chS.tCache.RemoveGroup(args.CacheID, args.GroupID, true, utils.NonTransactional) *rply = utils.OK @@ -399,7 +399,7 @@ func (chS *CacheS) ReplicateSet(ctx *context.Context, chID, itmID string, value } // V1ReplicateSet replicate an item -func (chS *CacheS) V1ReplicateSet(args *utils.ArgCacheReplicateSet, reply *string) (err error) { +func (chS *CacheS) V1ReplicateSet(_ *context.Context, args *utils.ArgCacheReplicateSet, reply *string) (err error) { if cmp, canCast := args.Value.(utils.Compiler); canCast { if err = cmp.Compile(); err != nil { return @@ -425,7 +425,7 @@ func (chS *CacheS) ReplicateRemove(ctx *context.Context, chID, itmID string) (er } // V1ReplicateRemove replicate an item -func (chS *CacheS) V1ReplicateRemove(args *utils.ArgCacheReplicateRemove, reply *string) (err error) { +func (chS *CacheS) V1ReplicateRemove(_ *context.Context, args *utils.ArgCacheReplicateRemove, reply *string) (err error) { chS.tCache.Remove(args.CacheID, args.ItemID, true, utils.EmptyString) *reply = utils.OK return diff --git a/engine/libengine_test.go b/engine/libengine_test.go index 1b2b9713a..3c06a6f31 100644 --- a/engine/libengine_test.go +++ b/engine/libengine_test.go @@ -119,7 +119,6 @@ func (TestRPCSrvMock) V2Do(*context.Context, interface{}, *string) error { retur type TestRPCSrvMockS struct{} // exported for service -func (TestRPCSrvMockS) Do(*context.Context, interface{}, *string) error { return nil } func (TestRPCSrvMockS) V1Do(*context.Context, interface{}, *string) error { return nil } func (TestRPCSrvMockS) V2Do(*context.Context, interface{}, *string) error { return nil } @@ -167,7 +166,7 @@ func TestIntServiceNewService(t *testing.T) { } methods = getMethods(s) exp = map[string][]string{ - "TestRPCSrvMockS": {"Do", "Ping", "V1Do", "V2Do"}, + "TestRPCSrvMockS": {"Ping", "V1Do", "V2Do"}, "TestRPCSrvMockSv1": {"Do", "Ping"}, "TestRPCSrvMockSv2": {"Do", "Ping"}, } diff --git a/engine/z_attributes_test.go b/engine/z_attributes_test.go index aba534e1b..78c62cc96 100644 --- a/engine/z_attributes_test.go +++ b/engine/z_attributes_test.go @@ -30,7 +30,7 @@ import ( var ( expTimeAttributes = time.Now().Add(20 * time.Minute) - attrS *AttributeService + attrS *AttributeS dmAtr *DataManager attrEvs = []*utils.CGREvent{ { //matching AttributeProfile1 @@ -3454,7 +3454,7 @@ func TestAttributesattributeProfileForEventNoDBConn(t *testing.T) { dataDB := NewInternalDB(nil, nil, cfg.DataDbCfg().Items) dm := NewDataManager(dataDB, cfg.CacheCfg(), nil) Cache = NewCacheS(cfg, dm, nil) - alS := &AttributeService{ + alS := &AttributeS{ cfg: cfg, dm: dm, fltrS: NewFilterS(cfg, nil, dm), @@ -3527,7 +3527,7 @@ func TestAttributesattributeProfileForEventErrNotFound(t *testing.T) { dataDB := NewInternalDB(nil, nil, cfg.DataDbCfg().Items) dm := NewDataManager(dataDB, cfg.CacheCfg(), nil) Cache = NewCacheS(cfg, dm, nil) - alS := &AttributeService{ + alS := &AttributeS{ cfg: cfg, dm: dm, fltrS: NewFilterS(cfg, nil, dm), @@ -3565,7 +3565,7 @@ func TestAttributesattributeProfileForEventErrPass(t *testing.T) { dataDB := NewInternalDB(nil, nil, cfg.DataDbCfg().Items) dm := NewDataManager(dataDB, cfg.CacheCfg(), nil) Cache = NewCacheS(cfg, dm, nil) - alS := &AttributeService{ + alS := &AttributeS{ cfg: cfg, dm: dm, fltrS: NewFilterS(cfg, nil, dm), diff --git a/generate.sh b/generate.sh new file mode 100755 index 000000000..083b2edcf --- /dev/null +++ b/generate.sh @@ -0,0 +1,4 @@ +#! /usr/bin/env sh +go generate ./... +go fmt ./... +./build.sh \ No newline at end of file diff --git a/services/attributes.go b/services/attributes.go index f27d652df..cb26ac6cd 100644 --- a/services/attributes.go +++ b/services/attributes.go @@ -60,7 +60,7 @@ type AttributeService struct { filterSChan chan *engine.FilterS server *cores.Server - attrS *engine.AttributeService + attrS *engine.AttributeS rpc *apis.AttributeSv1 // useful on restart connChan chan birpc.ClientConnector // publish the internal Subsystem when available anz *AnalyzerService diff --git a/services/attributes_test.go b/services/attributes_test.go index 6d71baed9..da685b6ea 100644 --- a/services/attributes_test.go +++ b/services/attributes_test.go @@ -59,7 +59,7 @@ func TestAttributeSCoverage(t *testing.T) { if attrS2.IsRunning() { t.Errorf("Expected service to be down") } - attrS2.attrS = &engine.AttributeService{} + attrS2.attrS = &engine.AttributeS{} if !attrS2.IsRunning() { t.Errorf("Expected service to be running") } diff --git a/services/sessions.go b/services/sessions.go index c389c9240..fd11cd5a2 100644 --- a/services/sessions.go +++ b/services/sessions.go @@ -106,7 +106,9 @@ func (smg *SessionService) Start(ctx *context.Context, shtDw context.CancelFunc) // Register BiRpc handlers if smg.cfg.SessionSCfg().ListenBijson != utils.EmptyString { smg.bircpEnabled = true - smg.server.BiRPCRegisterName(utils.SessionSv1, srv) + for n, s := range srv { + smg.server.BiRPCRegisterName(n, s) + } // run this in it's own goroutine go smg.start(shtDw) } diff --git a/sessions/libsessions.go b/sessions/libsessions.go index 0a332fb61..2b3c5e49f 100644 --- a/sessions/libsessions.go +++ b/sessions/libsessions.go @@ -609,6 +609,8 @@ type ArgsReplicateSessions struct { CGRID string Passive bool ConnIDs []string + APIOpts map[string]interface{} + Tenant string } // getMaxUsageFromRuns will return maxUsage with the lowest one from maxAbstractsRuns diff --git a/utils/consts.go b/utils/consts.go index 3c4a99209..54bf24052 100644 --- a/utils/consts.go +++ b/utils/consts.go @@ -1114,6 +1114,14 @@ const ( // APIerSv1 APIs const ( + AdminSv1GetRateRatesIndexesHealth = "AdminSv1.GetRateRatesIndexesHealth" + AdminSv1GetChargerProfileCount = "AdminSv1.GetChargerProfileCount" + AdminSv1GetAccountsIndexesHealth = "AdminSv1.GetAccountsIndexesHealth" + AdminSv1GetDispatcherProfileCount = "AdminSv1.GetDispatcherProfileCount" + AdminSv1GetRouteProfileCount = "AdminSv1.GetRouteProfileCount" + AdminSv1GetActionsIndexesHealth = "AdminSv1.GetActionsIndexesHealth" + AdminSv1GetDispatcherHostCount = "AdminSv1.GetDispatcherHostCount" + AdminSv1GetRateProfilesIndexesHealth = "AdminSv1.GetRateProfilesIndexesHealth" AdminSv1ComputeFilterIndexes = "AdminSv1.ComputeFilterIndexes" AdminSv1ComputeFilterIndexIDs = "AdminSv1.ComputeFilterIndexIDs" AdminSv1GetAccountActionPlansIndexHealth = "AdminSv1.GetAccountActionPlansIndexHealth" @@ -1256,6 +1264,7 @@ const ( ConfigSv1GetConfigAsJSON = "ConfigSv1.GetConfigAsJSON" ConfigSv1SetConfigFromJSON = "ConfigSv1.SetConfigFromJSON" ConfigSv1StoreCfgInDB = "ConfigSv1.StoreCfgInDB" + ConfigSv1Ping = "ConfigSv1.Ping" ) const ( @@ -1483,18 +1492,19 @@ const ( // Cdrs APIs const ( - CDRsV1 = "CDRsV1" - CDRsV1GetCDRsCount = "CDRsV1.GetCDRsCount" - CDRsV1RateCDRs = "CDRsV1.RateCDRs" - CDRsV1GetCDRs = "CDRsV1.GetCDRs" - CDRsV1ProcessCDR = "CDRsV1.ProcessCDR" - CDRsV1ProcessExternalCDR = "CDRsV1.ProcessExternalCDR" - CDRsV1StoreSessionCost = "CDRsV1.StoreSessionCost" - CDRsV1ProcessEvent = "CDRsV1.ProcessEvent" - CDRsV1Ping = "CDRsV1.Ping" - CDRsV2 = "CDRsV2" - CDRsV2StoreSessionCost = "CDRsV2.StoreSessionCost" - CDRsV2ProcessEvent = "CDRsV2.ProcessEvent" + CDRsV1 = "CDRsV1" + CDRsV1GetCDRsCount = "CDRsV1.GetCDRsCount" + CDRsV1RateCDRs = "CDRsV1.RateCDRs" + CDRsV1GetCDRs = "CDRsV1.GetCDRs" + CDRsV1ProcessCDR = "CDRsV1.ProcessCDR" + CDRsV1ProcessExternalCDR = "CDRsV1.ProcessExternalCDR" + CDRsV1StoreSessionCost = "CDRsV1.StoreSessionCost" + CDRsV1ProcessEvent = "CDRsV1.ProcessEvent" + CDRsV1ProcessEventWithGet = "CDRsV1.ProcessEventWithGet" + CDRsV1Ping = "CDRsV1.Ping" + CDRsV2 = "CDRsV2" + CDRsV2StoreSessionCost = "CDRsV2.StoreSessionCost" + CDRsV2ProcessEvent = "CDRsV2.ProcessEvent" ) // EEs