Update agents with new type for Flags(MapSubsystemIDs)

This commit is contained in:
TeoV
2019-07-02 17:58:13 +03:00
committed by Dan Christian Bogos
parent 0d29845611
commit 1e69216613
11 changed files with 227 additions and 50 deletions

View File

@@ -291,7 +291,10 @@ func (da *DiameterAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaSuppliers),
reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors),
reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost),
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator)
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator,
reqProcessor.Flags.GetIDs(utils.MetaAttributes),
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := new(sessions.V1AuthorizeReply)
err = da.sS.Call(utils.SessionSv1AuthorizeEvent,
authArgs, rply)
@@ -305,7 +308,10 @@ func (da *DiameterAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaAccounts),
reqProcessor.Flags.HasKey(utils.MetaThresholds),
reqProcessor.Flags.HasKey(utils.MetaStats),
cgrEv, cgrArgs.ArgDispatcher)
cgrEv, cgrArgs.ArgDispatcher,
reqProcessor.Flags.GetIDs(utils.MetaAttributes),
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := new(sessions.V1InitSessionReply)
err = da.sS.Call(utils.SessionSv1InitiateSession,
initArgs, rply)
@@ -316,7 +322,8 @@ func (da *DiameterAgent) processRequest(reqProcessor *config.RequestProcessor,
updateArgs := sessions.NewV1UpdateSessionArgs(
reqProcessor.Flags.HasKey(utils.MetaAttributes),
reqProcessor.Flags.HasKey(utils.MetaAccounts),
cgrEv, cgrArgs.ArgDispatcher)
cgrEv, cgrArgs.ArgDispatcher,
reqProcessor.Flags.GetIDs(utils.MetaAttributes))
rply := new(sessions.V1UpdateSessionReply)
err = da.sS.Call(utils.SessionSv1UpdateSession,
updateArgs, rply)
@@ -329,7 +336,9 @@ func (da *DiameterAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaResources),
reqProcessor.Flags.HasKey(utils.MetaThresholds),
reqProcessor.Flags.HasKey(utils.MetaStats),
cgrEv, cgrArgs.ArgDispatcher)
cgrEv, cgrArgs.ArgDispatcher,
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := utils.StringPointer("")
err = da.sS.Call(utils.SessionSv1TerminateSession,
terminateArgs, rply)
@@ -346,7 +355,10 @@ func (da *DiameterAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaSuppliers),
reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors),
reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost),
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator)
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator,
reqProcessor.Flags.GetIDs(utils.MetaAttributes),
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := new(sessions.V1ProcessEventReply)
err = da.sS.Call(utils.SessionSv1ProcessEvent,
evArgs, rply)

View File

@@ -192,7 +192,10 @@ func (da *DNSAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaSuppliers),
reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors),
reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost),
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator)
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator,
reqProcessor.Flags.GetIDs(utils.MetaAttributes),
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := new(sessions.V1AuthorizeReply)
err = da.sS.Call(utils.SessionSv1AuthorizeEvent,
authArgs, rply)
@@ -206,7 +209,10 @@ func (da *DNSAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaAccounts),
reqProcessor.Flags.HasKey(utils.MetaThresholds),
reqProcessor.Flags.HasKey(utils.MetaStats),
cgrEv, cgrArgs.ArgDispatcher)
cgrEv, cgrArgs.ArgDispatcher,
reqProcessor.Flags.GetIDs(utils.MetaAttributes),
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := new(sessions.V1InitSessionReply)
err = da.sS.Call(utils.SessionSv1InitiateSession,
initArgs, rply)
@@ -217,7 +223,8 @@ func (da *DNSAgent) processRequest(reqProcessor *config.RequestProcessor,
updateArgs := sessions.NewV1UpdateSessionArgs(
reqProcessor.Flags.HasKey(utils.MetaAttributes),
reqProcessor.Flags.HasKey(utils.MetaAccounts),
cgrEv, cgrArgs.ArgDispatcher)
cgrEv, cgrArgs.ArgDispatcher,
reqProcessor.Flags.GetIDs(utils.MetaAttributes))
rply := new(sessions.V1UpdateSessionReply)
err = da.sS.Call(utils.SessionSv1UpdateSession,
updateArgs, rply)
@@ -230,7 +237,9 @@ func (da *DNSAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaResources),
reqProcessor.Flags.HasKey(utils.MetaThresholds),
reqProcessor.Flags.HasKey(utils.MetaStats),
cgrEv, cgrArgs.ArgDispatcher)
cgrEv, cgrArgs.ArgDispatcher,
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := utils.StringPointer("")
err = da.sS.Call(utils.SessionSv1TerminateSession,
terminateArgs, rply)
@@ -247,7 +256,10 @@ func (da *DNSAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaSuppliers),
reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors),
reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost),
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator)
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator,
reqProcessor.Flags.GetIDs(utils.MetaAttributes),
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := new(sessions.V1ProcessEventReply) // need it so rpcclient can clone
err = da.sS.Call(utils.SessionSv1ProcessEvent,
evArgs, rply)

View File

@@ -140,7 +140,10 @@ func (ha *HTTPAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaSuppliers),
reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors),
reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost),
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator)
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator,
reqProcessor.Flags.GetIDs(utils.MetaAttributes),
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := new(sessions.V1AuthorizeReply)
err = ha.sessionS.Call(utils.SessionSv1AuthorizeEvent,
authArgs, rply)
@@ -154,7 +157,10 @@ func (ha *HTTPAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaAccounts),
reqProcessor.Flags.HasKey(utils.MetaThresholds),
reqProcessor.Flags.HasKey(utils.MetaStats),
cgrEv, cgrArgs.ArgDispatcher)
cgrEv, cgrArgs.ArgDispatcher,
reqProcessor.Flags.GetIDs(utils.MetaAttributes),
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := new(sessions.V1InitSessionReply)
err = ha.sessionS.Call(utils.SessionSv1InitiateSession,
initArgs, rply)
@@ -165,7 +171,8 @@ func (ha *HTTPAgent) processRequest(reqProcessor *config.RequestProcessor,
updateArgs := sessions.NewV1UpdateSessionArgs(
reqProcessor.Flags.HasKey(utils.MetaAttributes),
reqProcessor.Flags.HasKey(utils.MetaAccounts),
cgrEv, cgrArgs.ArgDispatcher)
cgrEv, cgrArgs.ArgDispatcher,
reqProcessor.Flags.GetIDs(utils.MetaAttributes))
rply := new(sessions.V1UpdateSessionReply)
err = ha.sessionS.Call(utils.SessionSv1UpdateSession,
updateArgs, rply)
@@ -178,7 +185,9 @@ func (ha *HTTPAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaResources),
reqProcessor.Flags.HasKey(utils.MetaThresholds),
reqProcessor.Flags.HasKey(utils.MetaStats),
cgrEv, cgrArgs.ArgDispatcher)
cgrEv, cgrArgs.ArgDispatcher,
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := utils.StringPointer("")
err = ha.sessionS.Call(utils.SessionSv1TerminateSession,
terminateArgs, rply)
@@ -195,7 +204,10 @@ func (ha *HTTPAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaSuppliers),
reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors),
reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost),
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator)
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator,
reqProcessor.Flags.GetIDs(utils.MetaAttributes),
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := new(sessions.V1ProcessEventReply)
err = ha.sessionS.Call(utils.SessionSv1ProcessEvent,
evArgs, rply)

View File

@@ -186,7 +186,10 @@ func (ra *RadiusAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaSuppliers),
reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors),
reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost),
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator)
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator,
reqProcessor.Flags.GetIDs(utils.MetaAttributes),
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := new(sessions.V1AuthorizeReply)
err = ra.sessionS.Call(utils.SessionSv1AuthorizeEvent,
authArgs, rply)
@@ -200,7 +203,10 @@ func (ra *RadiusAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaAccounts),
reqProcessor.Flags.HasKey(utils.MetaThresholds),
reqProcessor.Flags.HasKey(utils.MetaStats),
cgrEv, cgrArgs.ArgDispatcher)
cgrEv, cgrArgs.ArgDispatcher,
reqProcessor.Flags.GetIDs(utils.MetaAttributes),
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := new(sessions.V1InitSessionReply)
err = ra.sessionS.Call(utils.SessionSv1InitiateSession,
initArgs, rply)
@@ -211,7 +217,8 @@ func (ra *RadiusAgent) processRequest(reqProcessor *config.RequestProcessor,
updateArgs := sessions.NewV1UpdateSessionArgs(
reqProcessor.Flags.HasKey(utils.MetaAttributes),
reqProcessor.Flags.HasKey(utils.MetaAccounts),
cgrEv, cgrArgs.ArgDispatcher)
cgrEv, cgrArgs.ArgDispatcher,
reqProcessor.Flags.GetIDs(utils.MetaAttributes))
rply := new(sessions.V1UpdateSessionReply)
err = ra.sessionS.Call(utils.SessionSv1UpdateSession,
updateArgs, rply)
@@ -224,7 +231,9 @@ func (ra *RadiusAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaResources),
reqProcessor.Flags.HasKey(utils.MetaThresholds),
reqProcessor.Flags.HasKey(utils.MetaStats),
cgrEv, cgrArgs.ArgDispatcher)
cgrEv, cgrArgs.ArgDispatcher,
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := utils.StringPointer("")
err = ra.sessionS.Call(utils.SessionSv1TerminateSession,
terminateArgs, rply)
@@ -241,7 +250,10 @@ func (ra *RadiusAgent) processRequest(reqProcessor *config.RequestProcessor,
reqProcessor.Flags.HasKey(utils.MetaSuppliers),
reqProcessor.Flags.HasKey(utils.MetaSuppliersIgnoreErrors),
reqProcessor.Flags.HasKey(utils.MetaSuppliersEventCost),
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator)
cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator,
reqProcessor.Flags.GetIDs(utils.MetaAttributes),
reqProcessor.Flags.GetIDs(utils.MetaThresholds),
reqProcessor.Flags.GetIDs(utils.MetaStats))
rply := new(sessions.V1ProcessEventReply)
err = ra.sessionS.Call(utils.SessionSv1ProcessEvent, evArgs, rply)
if utils.ErrHasPrefix(err, utils.RalsErrorPrfx) {

View File

@@ -90,7 +90,7 @@ func TestRequestProcessorloadFromJsonCfg(t *testing.T) {
ID: "cgrates",
Tenant: NewRSRParsersMustCompile("tenant", true, utils.INFIELD_SEP),
Filters: []string{"filter1", "filter2"},
Flags: utils.StringMap{"flag1": true, "flag2": true},
Flags: utils.MapSubsystemIDs{"flag1": []string{}, "flag2": []string{}},
ContinueOnSuccess: true,
}
if err = dareq.loadFromJsonCfg(json, utils.INFIELD_SEP); err != nil {

View File

@@ -81,7 +81,7 @@ type RequestProcessor struct {
ID string
Tenant RSRParsers
Filters []string
Flags utils.StringMap
Flags utils.MapSubsystemIDs
ContinueOnSuccess bool
Timezone string
RequestFields []*FCTemplate
@@ -102,7 +102,9 @@ func (rp *RequestProcessor) loadFromJsonCfg(jsnCfg *ReqProcessorJsnCfg, sep stri
}
}
if jsnCfg.Flags != nil {
rp.Flags = utils.StringMapFromSlice(*jsnCfg.Flags)
if rp.Flags, err = utils.MapSubsystemIDsFromSlice(*jsnCfg.Flags); err != nil {
return
}
}
if jsnCfg.Timezone != nil {
rp.Timezone = *jsnCfg.Timezone

View File

@@ -74,7 +74,7 @@ func TestHttpAgentCfgsloadFromJsonCfg(t *testing.T) {
ID: "OutboundAUTHDryRun",
Filters: []string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"},
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
Flags: utils.StringMap{"*dryrun": true},
Flags: utils.MapSubsystemIDs{"*dryrun": []string{}},
RequestFields: []*FCTemplate{},
ReplyFields: []*FCTemplate{{
Tag: "Allow",
@@ -153,7 +153,7 @@ func TestHttpAgentCfgsloadFromJsonCfg(t *testing.T) {
ID: "OutboundAUTHDryRun",
Filters: []string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"},
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
Flags: utils.StringMap{"*dryrun": true},
Flags: utils.MapSubsystemIDs{"*dryrun": []string{}},
RequestFields: []*FCTemplate{},
ReplyFields: []*FCTemplate{{
Tag: "Allow",
@@ -166,7 +166,7 @@ func TestHttpAgentCfgsloadFromJsonCfg(t *testing.T) {
ID: "mtcall_cdr",
Filters: []string{"*string:*req.request_type:MTCALL_CDR"},
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
Flags: utils.StringMap{"*cdrs": true},
Flags: utils.MapSubsystemIDs{"*cdrs": []string{}},
RequestFields: []*FCTemplate{{
Tag: "RequestType",
FieldId: "RequestType",
@@ -191,7 +191,7 @@ func TestHttpAgentCfgsloadFromJsonCfg(t *testing.T) {
RequestProcessors: []*RequestProcessor{{
ID: "cdr_from_xml",
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
Flags: utils.StringMap{"*cdrs": true},
Flags: utils.MapSubsystemIDs{"*cdrs": []string{}},
RequestFields: []*FCTemplate{},
ReplyFields: []*FCTemplate{},
}},
@@ -247,7 +247,7 @@ func TestHttpAgentCfgloadFromJsonCfg(t *testing.T) {
ID: "OutboundAUTHDryRun",
Filters: []string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"},
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
Flags: utils.StringMap{"*dryrun": true},
Flags: utils.MapSubsystemIDs{"*dryrun": []string{}},
RequestFields: []*FCTemplate{},
ReplyFields: []*FCTemplate{},
}},
@@ -271,7 +271,7 @@ func TestHttpAgentCfgappendHttpAgntProcCfgs(t *testing.T) {
ID: "OutboundAUTHDryRun",
Filters: []string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"},
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
Flags: utils.StringMap{"*dryrun": true},
Flags: utils.MapSubsystemIDs{"*dryrun": []string{}},
RequestFields: []*FCTemplate{},
ReplyFields: []*FCTemplate{{
Tag: "Allow",
@@ -320,7 +320,7 @@ func TestHttpAgentCfgappendHttpAgntProcCfgs(t *testing.T) {
ID: "OutboundAUTHDryRun",
Filters: []string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"},
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
Flags: utils.StringMap{"*dryrun": true},
Flags: utils.MapSubsystemIDs{"*dryrun": []string{}},
RequestFields: []*FCTemplate{},
ReplyFields: []*FCTemplate{{
Tag: "Allow",
@@ -333,7 +333,7 @@ func TestHttpAgentCfgappendHttpAgntProcCfgs(t *testing.T) {
ID: "OutboundAUTHDryRun1",
Filters: []string{"*string:*req.request_type:OutboundAUTH", "*string:*req.Msisdn:497700056231"},
Tenant: NewRSRParsersMustCompile("cgrates.org", true, utils.INFIELD_SEP),
Flags: utils.StringMap{"*dryrun": true},
Flags: utils.MapSubsystemIDs{"*dryrun": []string{}},
RequestFields: []*FCTemplate{},
ReplyFields: []*FCTemplate{{
Tag: "Allow",

View File

@@ -1677,7 +1677,8 @@ func (sS *SessionS) BiRPCv1ReplicateSessions(clnt rpcclient.RpcClientConnection,
func NewV1AuthorizeArgs(attrs, res, maxUsage, thrslds,
statQueues, suppls, supplsIgnoreErrs, supplsEventCost bool,
cgrEv *utils.CGREvent, argDisp *utils.ArgDispatcher,
supplierPaginator utils.Paginator) (args *V1AuthorizeArgs) {
supplierPaginator utils.Paginator,
attributeIDs, thresholdIDs, statIDs []string) (args *V1AuthorizeArgs) {
args = &V1AuthorizeArgs{
GetAttributes: attrs,
AuthorizeResources: res,
@@ -1693,6 +1694,16 @@ func NewV1AuthorizeArgs(attrs, res, maxUsage, thrslds,
}
args.ArgDispatcher = argDisp
args.Paginator = supplierPaginator
if len(attributeIDs) != 0 {
args.AttributeIDs = &attributeIDs
}
if len(thresholdIDs) != 0 {
args.ThresholdIDs = &thresholdIDs
}
if len(statIDs) != 0 {
args.StatIDs = &statIDs
}
return
}
@@ -1706,6 +1717,9 @@ type V1AuthorizeArgs struct {
GetSuppliers bool
SuppliersMaxCost string
SuppliersIgnoreErrors bool
AttributeIDs *[]string
ThresholdIDs *[]string
StatIDs *[]string
*utils.CGREvent
utils.Paginator
*utils.ArgDispatcher
@@ -1796,6 +1810,9 @@ func (sS *SessionS) BiRPCv1AuthorizeEvent(clnt rpcclient.RpcClientConnection,
CGREvent: args.CGREvent,
ArgDispatcher: args.ArgDispatcher,
}
if args.AttributeIDs != nil {
attrArgs.AttributeIDs = *args.AttributeIDs
}
var rplyEv engine.AttrSProcessEventReply
if err := sS.attrS.Call(utils.AttributeSv1ProcessEvent,
attrArgs, &rplyEv); err == nil {
@@ -1872,6 +1889,9 @@ func (sS *SessionS) BiRPCv1AuthorizeEvent(clnt rpcclient.RpcClientConnection,
CGREvent: args.CGREvent,
ArgDispatcher: args.ArgDispatcher,
}
if args.ThresholdIDs != nil {
thEv.ThresholdIDs = *args.ThresholdIDs
}
if err := sS.thdS.Call(utils.ThresholdSv1ProcessEvent, thEv, &tIDs); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
utils.Logger.Warning(
@@ -1888,6 +1908,9 @@ func (sS *SessionS) BiRPCv1AuthorizeEvent(clnt rpcclient.RpcClientConnection,
CGREvent: args.CGREvent,
ArgDispatcher: args.ArgDispatcher,
}
if args.StatIDs != nil {
statArgs.StatIDs = *args.StatIDs
}
var statReply []string
if err := sS.statS.Call(utils.StatSv1ProcessEvent,
statArgs, &statReply); err != nil &&
@@ -1947,7 +1970,8 @@ func (sS *SessionS) BiRPCv1AuthorizeEventWithDigest(clnt rpcclient.RpcClientConn
// NewV1InitSessionArgs is a constructor for V1InitSessionArgs
func NewV1InitSessionArgs(attrs, resrc, acnt, thrslds, stats bool,
cgrEv *utils.CGREvent, argDisp *utils.ArgDispatcher) (args *V1InitSessionArgs) {
cgrEv *utils.CGREvent, argDisp *utils.ArgDispatcher,
attributeIDs, thresholdIDs, statIDs []string) (args *V1InitSessionArgs) {
args = &V1InitSessionArgs{
GetAttributes: attrs,
AllocateResources: resrc,
@@ -1957,6 +1981,15 @@ func NewV1InitSessionArgs(attrs, resrc, acnt, thrslds, stats bool,
CGREvent: cgrEv,
ArgDispatcher: argDisp,
}
if len(attributeIDs) != 0 {
args.AttributeIDs = &attributeIDs
}
if len(thresholdIDs) != 0 {
args.ThresholdIDs = &thresholdIDs
}
if len(statIDs) != 0 {
args.StatIDs = &statIDs
}
return
}
@@ -1967,6 +2000,9 @@ type V1InitSessionArgs struct {
InitSession bool
ProcessThresholds bool
ProcessStats bool
AttributeIDs *[]string
ThresholdIDs *[]string
StatIDs *[]string
*utils.CGREvent
*utils.ArgDispatcher
}
@@ -2053,6 +2089,9 @@ func (sS *SessionS) BiRPCv1InitiateSession(clnt rpcclient.RpcClientConnection,
CGREvent: args.CGREvent,
ArgDispatcher: args.ArgDispatcher,
}
if args.AttributeIDs != nil {
attrArgs.AttributeIDs = *args.AttributeIDs
}
var rplyEv engine.AttrSProcessEventReply
if err := sS.attrS.Call(utils.AttributeSv1ProcessEvent,
attrArgs, &rplyEv); err == nil {
@@ -2120,6 +2159,9 @@ func (sS *SessionS) BiRPCv1InitiateSession(clnt rpcclient.RpcClientConnection,
CGREvent: args.CGREvent,
ArgDispatcher: args.ArgDispatcher,
}
if args.ThresholdIDs != nil {
thEv.ThresholdIDs = *args.ThresholdIDs
}
if err := sS.thdS.Call(utils.ThresholdSv1ProcessEvent,
thEv, &tIDs); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
@@ -2138,6 +2180,9 @@ func (sS *SessionS) BiRPCv1InitiateSession(clnt rpcclient.RpcClientConnection,
CGREvent: args.CGREvent,
ArgDispatcher: args.ArgDispatcher,
}
if args.StatIDs != nil {
statArgs.StatIDs = *args.StatIDs
}
if err := sS.statS.Call(utils.StatSv1ProcessEvent,
statArgs, &statReply); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
@@ -2194,13 +2239,17 @@ func (sS *SessionS) BiRPCv1InitiateSessionWithDigest(clnt rpcclient.RpcClientCon
// NewV1UpdateSessionArgs is a constructor for update session arguments
func NewV1UpdateSessionArgs(attrs, acnts bool,
cgrEv *utils.CGREvent, argDisp *utils.ArgDispatcher) (args *V1UpdateSessionArgs) {
cgrEv *utils.CGREvent, argDisp *utils.ArgDispatcher,
attributeIDs []string) (args *V1UpdateSessionArgs) {
args = &V1UpdateSessionArgs{
GetAttributes: attrs,
UpdateSession: acnts,
CGREvent: cgrEv,
ArgDispatcher: argDisp,
}
if len(attributeIDs) != 0 {
args.AttributeIDs = &attributeIDs
}
return
}
@@ -2208,6 +2257,7 @@ func NewV1UpdateSessionArgs(attrs, acnts bool,
type V1UpdateSessionArgs struct {
GetAttributes bool
UpdateSession bool
AttributeIDs *[]string
*utils.CGREvent
*utils.ArgDispatcher
}
@@ -2281,6 +2331,9 @@ func (sS *SessionS) BiRPCv1UpdateSession(clnt rpcclient.RpcClientConnection,
CGREvent: args.CGREvent,
ArgDispatcher: args.ArgDispatcher,
}
if *args.AttributeIDs != nil {
attrArgs.AttributeIDs = *args.AttributeIDs
}
var rplyEv engine.AttrSProcessEventReply
if err := sS.attrS.Call(utils.AttributeSv1ProcessEvent,
attrArgs, &rplyEv); err == nil {
@@ -2329,7 +2382,8 @@ func (sS *SessionS) BiRPCv1UpdateSession(clnt rpcclient.RpcClientConnection,
}
func NewV1TerminateSessionArgs(acnts, resrc, thrds, stats bool,
cgrEv *utils.CGREvent, argDisp *utils.ArgDispatcher) (args *V1TerminateSessionArgs) {
cgrEv *utils.CGREvent, argDisp *utils.ArgDispatcher,
thresholdIDs, statIDs []string) (args *V1TerminateSessionArgs) {
args = &V1TerminateSessionArgs{
TerminateSession: acnts,
ReleaseResources: resrc,
@@ -2338,6 +2392,12 @@ func NewV1TerminateSessionArgs(acnts, resrc, thrds, stats bool,
CGREvent: cgrEv,
ArgDispatcher: argDisp,
}
if len(thresholdIDs) != 0 {
args.ThresholdIDs = &thresholdIDs
}
if len(statIDs) != 0 {
args.StatIDs = &statIDs
}
return
}
@@ -2346,6 +2406,8 @@ type V1TerminateSessionArgs struct {
ReleaseResources bool
ProcessThresholds bool
ProcessStats bool
ThresholdIDs *[]string
StatIDs *[]string
*utils.CGREvent
*utils.ArgDispatcher
}
@@ -2446,6 +2508,9 @@ func (sS *SessionS) BiRPCv1TerminateSession(clnt rpcclient.RpcClientConnection,
CGREvent: args.CGREvent,
ArgDispatcher: args.ArgDispatcher,
}
if args.ThresholdIDs != nil {
thEv.ThresholdIDs = *args.ThresholdIDs
}
if err := sS.thdS.Call(utils.ThresholdSv1ProcessEvent, thEv, &tIDs); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
utils.Logger.Warning(
@@ -2462,6 +2527,9 @@ func (sS *SessionS) BiRPCv1TerminateSession(clnt rpcclient.RpcClientConnection,
CGREvent: args.CGREvent,
ArgDispatcher: args.ArgDispatcher,
}
if args.StatIDs != nil {
statArgs.StatIDs = *args.StatIDs
}
if err := sS.statS.Call(utils.StatSv1ProcessEvent,
statArgs, &statReply); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
@@ -2570,7 +2638,8 @@ func (sS *SessionS) BiRPCv1ProcessCDR(clnt rpcclient.RpcClientConnection,
func NewV1ProcessEventArgs(resrc, acnts, attrs, thds, stats,
suppls, supplsIgnoreErrs, supplsEventCost bool,
cgrEv *utils.CGREvent, argDisp *utils.ArgDispatcher,
supplierPaginator utils.Paginator) (args *V1ProcessEventArgs) {
supplierPaginator utils.Paginator,
attributeIDs, thresholdIDs, statIDs []string) (args *V1ProcessEventArgs) {
args = &V1ProcessEventArgs{
AllocateResources: resrc,
Debit: acnts,
@@ -2586,6 +2655,15 @@ func NewV1ProcessEventArgs(resrc, acnts, attrs, thds, stats,
args.SuppliersMaxCost = utils.MetaSuppliersEventCost
}
args.Paginator = supplierPaginator
if len(attributeIDs) != 0 {
args.AttributeIDs = &attributeIDs
}
if len(thresholdIDs) != 0 {
args.ThresholdIDs = &thresholdIDs
}
if len(statIDs) != 0 {
args.StatIDs = &statIDs
}
return
}
@@ -2599,6 +2677,9 @@ type V1ProcessEventArgs struct {
GetSuppliers bool
SuppliersMaxCost string
SuppliersIgnoreErrors bool
AttributeIDs *[]string
ThresholdIDs *[]string
StatIDs *[]string
*utils.CGREvent
utils.Paginator
*utils.ArgDispatcher
@@ -2689,6 +2770,9 @@ func (sS *SessionS) BiRPCv1ProcessEvent(clnt rpcclient.RpcClientConnection,
CGREvent: args.CGREvent,
ArgDispatcher: args.ArgDispatcher,
}
if args.AttributeIDs != nil {
attrArgs.AttributeIDs = *args.AttributeIDs
}
var rplyEv engine.AttrSProcessEventReply
if err := sS.attrS.Call(utils.AttributeSv1ProcessEvent,
attrArgs, &rplyEv); err == nil {
@@ -2764,6 +2848,9 @@ func (sS *SessionS) BiRPCv1ProcessEvent(clnt rpcclient.RpcClientConnection,
CGREvent: args.CGREvent,
ArgDispatcher: args.ArgDispatcher,
}
if args.ThresholdIDs != nil {
thEv.ThresholdIDs = *args.ThresholdIDs
}
if err := sS.thdS.Call(utils.ThresholdSv1ProcessEvent,
thEv, &tIDs); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
@@ -2782,6 +2869,9 @@ func (sS *SessionS) BiRPCv1ProcessEvent(clnt rpcclient.RpcClientConnection,
CGREvent: args.CGREvent,
ArgDispatcher: args.ArgDispatcher,
}
if args.StatIDs != nil {
statArgs.StatIDs = *args.StatIDs
}
if err := sS.statS.Call(utils.StatSv1ProcessEvent,
statArgs, &statReply); err != nil &&
err.Error() != utils.ErrNotFound.Error() {

View File

@@ -826,7 +826,7 @@ func TestSessionSNewV1AuthorizeArgs(t *testing.T) {
GetAttributes: true,
CGREvent: cgrEv,
}
rply := NewV1AuthorizeArgs(true, true, false, false, false, false, false, false, cgrEv, nil, utils.Paginator{})
rply := NewV1AuthorizeArgs(true, true, false, false, false, false, false, false, cgrEv, nil, utils.Paginator{}, nil, nil, nil)
if !reflect.DeepEqual(expected, rply) {
t.Errorf("Expecting %+v, received: %+v", expected, rply)
}
@@ -841,7 +841,7 @@ func TestSessionSNewV1AuthorizeArgs(t *testing.T) {
SuppliersMaxCost: utils.MetaSuppliersEventCost,
CGREvent: cgrEv,
}
rply = NewV1AuthorizeArgs(true, false, true, false, true, false, true, true, cgrEv, nil, utils.Paginator{})
rply = NewV1AuthorizeArgs(true, false, true, false, true, false, true, true, cgrEv, nil, utils.Paginator{}, nil, nil, nil)
if !reflect.DeepEqual(expected, rply) {
t.Errorf("Expecting %+v,\n received: %+v", expected, rply)
}
@@ -861,7 +861,7 @@ func TestSessionSNewV1UpdateSessionArgs(t *testing.T) {
UpdateSession: true,
CGREvent: cgrEv,
}
rply := NewV1UpdateSessionArgs(true, true, cgrEv, nil)
rply := NewV1UpdateSessionArgs(true, true, cgrEv, nil, nil)
if !reflect.DeepEqual(expected, rply) {
t.Errorf("Expecting %+v, received: %+v", expected, rply)
}
@@ -870,7 +870,7 @@ func TestSessionSNewV1UpdateSessionArgs(t *testing.T) {
UpdateSession: true,
CGREvent: cgrEv,
}
rply = NewV1UpdateSessionArgs(false, true, cgrEv, nil)
rply = NewV1UpdateSessionArgs(false, true, cgrEv, nil, nil)
if !reflect.DeepEqual(expected, rply) {
t.Errorf("Expecting %+v, received: %+v", expected, rply)
}
@@ -890,14 +890,14 @@ func TestSessionSNewV1TerminateSessionArgs(t *testing.T) {
ProcessThresholds: true,
CGREvent: cgrEv,
}
rply := NewV1TerminateSessionArgs(true, false, true, false, cgrEv, nil)
rply := NewV1TerminateSessionArgs(true, false, true, false, cgrEv, nil, nil, nil)
if !reflect.DeepEqual(expected, rply) {
t.Errorf("Expecting %+v, received: %+v", expected, rply)
}
expected = &V1TerminateSessionArgs{
CGREvent: cgrEv,
}
rply = NewV1TerminateSessionArgs(false, false, false, false, cgrEv, nil)
rply = NewV1TerminateSessionArgs(false, false, false, false, cgrEv, nil, nil, nil)
if !reflect.DeepEqual(expected, rply) {
t.Errorf("Expecting %+v, received: %+v", expected, rply)
}
@@ -919,7 +919,7 @@ func TestSessionSNewV1ProcessEventArgs(t *testing.T) {
CGREvent: cgrEv,
GetSuppliers: true,
}
rply := NewV1ProcessEventArgs(true, true, true, false, false, true, false, false, cgrEv, nil, utils.Paginator{})
rply := NewV1ProcessEventArgs(true, true, true, false, false, true, false, false, cgrEv, nil, utils.Paginator{}, nil, nil, nil)
if !reflect.DeepEqual(expected, rply) {
t.Errorf("Expecting %+v, received: %+v", expected, rply)
}
@@ -931,7 +931,7 @@ func TestSessionSNewV1ProcessEventArgs(t *testing.T) {
SuppliersMaxCost: utils.MetaSuppliersEventCost,
SuppliersIgnoreErrors: true,
}
rply = NewV1ProcessEventArgs(true, false, true, false, false, true, true, true, cgrEv, nil, utils.Paginator{})
rply = NewV1ProcessEventArgs(true, false, true, false, false, true, true, true, cgrEv, nil, utils.Paginator{}, nil, nil, nil)
if !reflect.DeepEqual(expected, rply) {
t.Errorf("Expecting %+v, received: %+v", expected, rply)
}
@@ -954,7 +954,7 @@ func TestSessionSNewV1InitSessionArgs(t *testing.T) {
ProcessStats: true,
CGREvent: cgrEv,
}
rply := NewV1InitSessionArgs(true, true, true, true, true, cgrEv, nil)
rply := NewV1InitSessionArgs(true, true, true, true, true, cgrEv, nil, nil, nil, nil)
if !reflect.DeepEqual(expected, rply) {
t.Errorf("Expecting %+v, received: %+v", expected, rply)
}
@@ -966,7 +966,7 @@ func TestSessionSNewV1InitSessionArgs(t *testing.T) {
ProcessStats: true,
CGREvent: cgrEv,
}
rply = NewV1InitSessionArgs(true, false, true, false, true, cgrEv, nil)
rply = NewV1InitSessionArgs(true, false, true, false, true, cgrEv, nil, nil, nil, nil)
if !reflect.DeepEqual(expected, rply) {
t.Errorf("Expecting %+v, received: %+v", expected, rply)
}
@@ -1279,7 +1279,7 @@ func TestSessionSNewV1AuthorizeArgsWithArgDispatcher(t *testing.T) {
},
}
cgrArgs := cgrEv.ConsumeArgs(true, true)
rply := NewV1AuthorizeArgs(true, true, false, false, false, false, false, false, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator)
rply := NewV1AuthorizeArgs(true, true, false, false, false, false, false, false, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, nil, nil, nil)
if !reflect.DeepEqual(expected, rply) {
t.Errorf("Expecting %+v, received: %+v", utils.ToJSON(expected), utils.ToJSON(rply))
}
@@ -1298,7 +1298,7 @@ func TestSessionSNewV1AuthorizeArgsWithArgDispatcher(t *testing.T) {
RouteID: utils.StringPointer("testrouteid"),
},
}
rply = NewV1AuthorizeArgs(true, false, true, false, true, false, true, true, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator)
rply = NewV1AuthorizeArgs(true, false, true, false, true, false, true, true, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, nil, nil, nil)
if !reflect.DeepEqual(expected, rply) {
t.Errorf("Expecting %+v, received: %+v", utils.ToJSON(expected), utils.ToJSON(rply))
}
@@ -1323,7 +1323,7 @@ func TestSessionSNewV1AuthorizeArgsWithArgDispatcher2(t *testing.T) {
},
}
cgrArgs := cgrEv.ConsumeArgs(true, true)
rply := NewV1AuthorizeArgs(true, true, false, false, false, false, false, false, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator)
rply := NewV1AuthorizeArgs(true, true, false, false, false, false, false, false, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, nil, nil, nil)
if !reflect.DeepEqual(expected, rply) {
t.Errorf("Expecting %+v, received: %+v", utils.ToJSON(expected), utils.ToJSON(rply))
}
@@ -1341,7 +1341,7 @@ func TestSessionSNewV1AuthorizeArgsWithArgDispatcher2(t *testing.T) {
RouteID: utils.StringPointer("testrouteid"),
},
}
rply = NewV1AuthorizeArgs(true, false, true, false, true, false, true, true, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator)
rply = NewV1AuthorizeArgs(true, false, true, false, true, false, true, true, cgrEv, cgrArgs.ArgDispatcher, *cgrArgs.SupplierPaginator, nil, nil, nil)
if !reflect.DeepEqual(expected, rply) {
t.Errorf("Expecting %+v, received: %+v", utils.ToJSON(expected), utils.ToJSON(rply))
}

View File

@@ -268,3 +268,11 @@ func (msIDs MapSubsystemIDs) HasKey(key string) (has bool) {
_, has = msIDs[key]
return
}
func (msIDs MapSubsystemIDs) GetIDs(key string) []string {
ids, has := msIDs[key]
if !has {
return []string{}
}
return ids
}

View File

@@ -163,3 +163,32 @@ func TestMapSubsystemIDsHasKey(t *testing.T) {
}
}
func TestMapSubsystemIDsGetIDs(t *testing.T) {
sls := []string{"*event", "*thresholds:ID1;ID2;ID3", "*attributes", "*stats:ID"}
eMp := MapSubsystemIDs{
"*event": []string{},
"*thresholds": []string{"ID1", "ID2", "ID3"},
"*attributes": []string{},
"*stats": []string{"ID"},
}
mp, err := MapSubsystemIDsFromSlice(sls)
if err != nil {
t.Error(err)
} else if !reflect.DeepEqual(mp, eMp) {
t.Errorf("Expecting: %+v, received: %+v", eMp, mp)
}
eIDs := []string{"ID1", "ID2", "ID3"}
if ids := mp.GetIDs("*thresholds"); !reflect.DeepEqual(ids, eIDs) {
t.Errorf("Expecting: %+v, received: %+v", eIDs, ids)
}
eIDs = []string{}
if ids := mp.GetIDs("*event"); !reflect.DeepEqual(ids, eIDs) {
t.Errorf("Expecting: %+v, received: %+v", eIDs, ids)
}
eIDs = []string{}
if ids := mp.GetIDs("*test"); !reflect.DeepEqual(ids, eIDs) {
t.Errorf("Expecting: %+v, received: %+v", eIDs, ids)
}
}