diff --git a/dispatchers/attributes.go b/dispatchers/attributes.go index 7a54e98c4..5421ddef3 100755 --- a/dispatchers/attributes.go +++ b/dispatchers/attributes.go @@ -26,43 +26,52 @@ import ( // AttributeSv1Ping interogates AttributeS server responsible to process the event func (dS *DispatcherService) AttributeSv1Ping(args *utils.CGREventWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + args.CGREvent.Tenant = utils.FirstNonEmpty(args.CGREvent.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.AttributeSv1Ping, args.Tenant, args.APIKey, args.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaAttributes, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaAttributes, routeID, utils.AttributeSv1Ping, args, reply) } // AttributeSv1GetAttributeForEvent is the dispatcher method for AttributeSv1.GetAttributeForEvent func (dS *DispatcherService) AttributeSv1GetAttributeForEvent(args *engine.AttrArgsProcessEvent, reply *engine.AttributeProfile) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.AttributeSv1GetAttributeForEvent, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(&args.CGREvent, utils.MetaAttributes, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaAttributes, routeID, utils.AttributeSv1GetAttributeForEvent, args, reply) } func (dS *DispatcherService) AttributeSv1ProcessEvent(args *engine.AttrArgsProcessEvent, reply *engine.AttrSProcessEventReply) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.AttributeSv1ProcessEvent, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { @@ -70,6 +79,10 @@ func (dS *DispatcherService) AttributeSv1ProcessEvent(args *engine.AttrArgsProce } } - return dS.Dispatch(&args.CGREvent, utils.MetaAttributes, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaAttributes, routeID, utils.AttributeSv1ProcessEvent, args, reply) } diff --git a/dispatchers/caches.go b/dispatchers/caches.go index 1001021d4..bb4752407 100644 --- a/dispatchers/caches.go +++ b/dispatchers/caches.go @@ -28,213 +28,255 @@ import ( // CacheSv1Ping interogates CacheSv1 server responsible to process the event func (dS *DispatcherService) CacheSv1Ping(args *utils.CGREventWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + args.CGREvent.Tenant = utils.FirstNonEmpty(args.CGREvent.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CacheSv1Ping, - args.CGREvent.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CacheSv1Ping, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaCaches, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaCaches, routeID, utils.CacheSv1Ping, args, reply) } // GetItemIDs returns the IDs for cacheID with given prefix func (dS *DispatcherService) CacheSv1GetItemIDs(args *utils.ArgsGetCacheItemIDsWithArgDispatcher, reply *[]string) (err error) { + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CacheSv1GetItemIDs, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CacheSv1GetItemIDs, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCaches, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCaches, routeID, utils.CacheSv1GetItemIDs, &args.ArgsGetCacheItemIDs, reply) } // HasItem verifies the existence of an Item in cache func (dS *DispatcherService) CacheSv1HasItem(args *utils.ArgsGetCacheItemWithArgDispatcher, reply *bool) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CacheSv1HasItem, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CacheSv1HasItem, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCaches, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCaches, routeID, utils.CacheSv1HasItem, &args.ArgsGetCacheItem, reply) } // GetItemExpiryTime returns the expiryTime for an item func (dS *DispatcherService) CacheSv1GetItemExpiryTime(args *utils.ArgsGetCacheItemWithArgDispatcher, reply *time.Time) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CacheSv1GetItemExpiryTime, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CacheSv1GetItemExpiryTime, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCaches, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCaches, routeID, utils.CacheSv1GetItemExpiryTime, &args.ArgsGetCacheItem, reply) } // RemoveItem removes the Item with ID from cache func (dS *DispatcherService) CacheSv1RemoveItem(args *utils.ArgsGetCacheItemWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CacheSv1RemoveItem, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CacheSv1RemoveItem, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCaches, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCaches, routeID, utils.CacheSv1RemoveItem, &args.ArgsGetCacheItem, reply) } // Clear will clear partitions in the cache (nil fol all, empty slice for none) func (dS *DispatcherService) CacheSv1Clear(args *utils.AttrCacheIDsWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CacheSv1Clear, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CacheSv1Clear, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCaches, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCaches, routeID, utils.CacheSv1Clear, args.CacheIDs, reply) } // FlushCache wipes out cache for a prefix or completely func (dS *DispatcherService) CacheSv1FlushCache(args utils.AttrReloadCacheWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CacheSv1FlushCache, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CacheSv1FlushCache, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCaches, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCaches, routeID, utils.CacheSv1FlushCache, args.AttrReloadCache, reply) } // GetCacheStats returns CacheStats filtered by cacheIDs func (dS *DispatcherService) CacheSv1GetCacheStats(args *utils.AttrCacheIDsWithArgDispatcher, reply *map[string]*ltcache.CacheStats) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CacheSv1GetCacheStats, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CacheSv1GetCacheStats, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCaches, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCaches, routeID, utils.CacheSv1GetCacheStats, args.CacheIDs, reply) } // PrecacheStatus checks status of active precache processes func (dS *DispatcherService) CacheSv1PrecacheStatus(args *utils.AttrCacheIDsWithArgDispatcher, reply *map[string]string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CacheSv1PrecacheStatus, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CacheSv1PrecacheStatus, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCaches, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCaches, routeID, utils.CacheSv1PrecacheStatus, args.CacheIDs, reply) } // HasGroup checks existence of a group in cache func (dS *DispatcherService) CacheSv1HasGroup(args *utils.ArgsGetGroupWithArgDispatcher, reply *bool) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CacheSv1HasGroup, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CacheSv1HasGroup, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCaches, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCaches, routeID, utils.CacheSv1HasGroup, args.ArgsGetGroup, reply) } // GetGroupItemIDs returns a list of itemIDs in a cache group func (dS *DispatcherService) CacheSv1GetGroupItemIDs(args *utils.ArgsGetGroupWithArgDispatcher, reply *[]string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CacheSv1GetGroupItemIDs, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CacheSv1GetGroupItemIDs, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCaches, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCaches, routeID, utils.CacheSv1GetGroupItemIDs, args.ArgsGetGroup, reply) } // RemoveGroup will remove a group and all items belonging to it from cache -func (dS *DispatcherService) CacheSv1RemoveGroup(args *utils.ArgsGetGroupWithArgDispatcher, - reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } +func (dS *DispatcherService) CacheSv1RemoveGroup(args *utils.ArgsGetGroupWithArgDispatcher, reply *string) (err error) { + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CacheSv1RemoveGroup, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CacheSv1RemoveGroup, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCaches, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCaches, routeID, utils.CacheSv1RemoveGroup, args.ArgsGetGroup, reply) } // ReloadCache reloads cache from DB for a prefix or completely func (dS *DispatcherService) CacheSv1ReloadCache(args utils.AttrReloadCacheWithArgDispatcher, reply *string) (err error) { - tnt := dS.cfg.GeneralCfg().DefaultTenant - if args.TenantArg.Tenant != "" { - tnt = args.TenantArg.Tenant - } - var routeID *string - if args.ArgDispatcher != nil && - args.ArgDispatcher.RouteID != nil { - routeID = args.ArgDispatcher.RouteID - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { if args.ArgDispatcher == nil { return utils.NewErrMandatoryIeMissing("ArgDispatcher") @@ -244,22 +286,30 @@ func (dS *DispatcherService) CacheSv1ReloadCache(args utils.AttrReloadCacheWithA return } } + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCaches, routeID, utils.CacheSv1ReloadCache, args.AttrReloadCache, reply) } // LoadCache loads cache from DB for a prefix or completely func (dS *DispatcherService) CacheSv1LoadCache(args utils.AttrReloadCacheWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CacheSv1LoadCache, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CacheSv1LoadCache, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCaches, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCaches, routeID, utils.CacheSv1LoadCache, args.AttrReloadCache, reply) } diff --git a/dispatchers/cdrs.go b/dispatchers/cdrs.go index 4d2dfd7d9..6c3ce8ca1 100644 --- a/dispatchers/cdrs.go +++ b/dispatchers/cdrs.go @@ -28,121 +28,152 @@ import ( // CDRsV1Ping interogates CDRsV1 server responsible to process the event func (dS *DispatcherService) CDRsV1Ping(args *utils.CGREventWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + args.CGREvent.Tenant = utils.FirstNonEmpty(args.CGREvent.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CDRsV1Ping, - args.CGREvent.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CDRsV1Ping, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaCDRs, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaCDRs, routeID, utils.CDRsV1Ping, args, reply) } func (dS *DispatcherService) CDRsV1GetCDRs(args utils.RPCCDRsFilterWithArgDispatcher, reply *[]*engine.CDR) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CDRsV1GetCDRs, - args.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CDRsV1GetCDRs, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCDRs, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCDRs, routeID, utils.CDRsV1GetCDRs, args, reply) } func (dS *DispatcherService) CDRsV1CountCDRs(args *utils.RPCCDRsFilterWithArgDispatcher, reply *int64) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CDRsV1CountCDRs, - args.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CDRsV1CountCDRs, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCDRs, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCDRs, routeID, utils.CDRsV1CountCDRs, args, reply) } func (dS *DispatcherService) CDRsV1StoreSessionCost(args *engine.AttrCDRSStoreSMCost, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CDRsV1StoreSessionCost, - args.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CDRsV1StoreSessionCost, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCDRs, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCDRs, routeID, utils.CDRsV1StoreSessionCost, args, reply) } func (dS *DispatcherService) CDRsV1RateCDRs(args *engine.ArgRateCDRs, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.CDRsV1RateCDRs, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CDRsV1RateCDRs, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaCDRs, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaCDRs, routeID, utils.CDRsV1RateCDRs, args, reply) } func (dS *DispatcherService) CDRsV1ProcessExternalCDR(args *engine.ExternalCDRWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.CDRsV1ProcessExternalCDR, args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaCDRs, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaCDRs, routeID, utils.CDRsV1ProcessExternalCDR, args, reply) } func (dS *DispatcherService) CDRsV1ProcessEvent(args *engine.ArgV1ProcessEvent, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { - if err = dS.authorize(utils.CDRsV1ProcessEvent, - args.CGREvent.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.CDRsV1ProcessEvent, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(&args.CGREvent, utils.MetaCDRs, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaCDRs, routeID, utils.CDRsV1ProcessEvent, args, reply) } func (dS *DispatcherService) CDRsV1ProcessCDR(args *engine.CDRWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.CDRsV1ProcessCDR, args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaCDRs, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaCDRs, routeID, utils.CDRsV1ProcessCDR, args, reply) } diff --git a/dispatchers/chargers.go b/dispatchers/chargers.go index 2f8924eb7..740a6eefc 100755 --- a/dispatchers/chargers.go +++ b/dispatchers/chargers.go @@ -24,48 +24,61 @@ import ( ) func (dS *DispatcherService) ChargerSv1Ping(args *utils.CGREventWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + args.CGREvent.Tenant = utils.FirstNonEmpty(args.CGREvent.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ChargerSv1Ping, args.Tenant, args.APIKey, args.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaChargers, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaChargers, routeID, utils.ChargerSv1Ping, args, reply) } func (dS *DispatcherService) ChargerSv1GetChargersForEvent(args *utils.CGREventWithArgDispatcher, reply *engine.ChargerProfiles) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ChargerSv1GetChargersForEvent, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaChargers, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaChargers, routeID, utils.ChargerSv1GetChargersForEvent, args, reply) } func (dS *DispatcherService) ChargerSv1ProcessEvent(args *utils.CGREventWithArgDispatcher, reply *[]*engine.ChrgSProcessEventReply) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ChargerSv1ProcessEvent, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaChargers, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaChargers, routeID, utils.ChargerSv1ProcessEvent, args, reply) } diff --git a/dispatchers/config.go b/dispatchers/config.go index 66d7c6115..a4cb8e2d7 100644 --- a/dispatchers/config.go +++ b/dispatchers/config.go @@ -26,15 +26,20 @@ import ( ) func (dS *DispatcherService) ConfigSv1GetJSONSection(args *config.StringWithArgDispatcher, reply *map[string]interface{}) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.ConfigSv1GetJSONSection, - args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.ConfigSv1GetJSONSection, tnt, + args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, - utils.MetaConfig, args.RouteID, utils.ConfigSv1GetJSONSection, args, reply) + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, + utils.MetaConfig, routeID, utils.ConfigSv1GetJSONSection, args, reply) } diff --git a/dispatchers/dispatchers.go b/dispatchers/dispatchers.go index a12612fe7..857c2ab15 100755 --- a/dispatchers/dispatchers.go +++ b/dispatchers/dispatchers.go @@ -222,13 +222,12 @@ func (dS *DispatcherService) V1Apier(apier interface{}, args *utils.MethodParame } } - if argD == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } - tenant, _ := utils.IfaceAsString(parameters[utils.Tenant]) tenant = utils.FirstNonEmpty(tenant, config.CgrConfig().GeneralCfg().DefaultTenant) if dS.attrS != nil { + if argD == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(args.Method, tenant, argD.APIKey, utils.TimePointer(time.Now())); err != nil { @@ -275,7 +274,12 @@ func (dS *DispatcherService) V1Apier(apier interface{}, args *utils.MethodParame if realArgsType.Kind() != reflect.Ptr { realArgs = reflect.ValueOf(realArgs).Elem().Interface() } - if err := dS.Dispatch(&utils.CGREvent{Tenant: tenant, Event: parameters}, utils.MetaApier, argD.RouteID, + + var routeID *string + if argD != nil { + routeID = argD.RouteID + } + if err := dS.Dispatch(&utils.CGREvent{Tenant: tenant, Event: parameters}, utils.MetaApier, routeID, args.Method, realArgs, realReply); err != nil { return err } diff --git a/dispatchers/guardian.go b/dispatchers/guardian.go index 605a44ce8..b19026fe0 100644 --- a/dispatchers/guardian.go +++ b/dispatchers/guardian.go @@ -27,50 +27,63 @@ import ( // GuardianSv1Ping interogates GuardianSv1 server responsible to process the event func (dS *DispatcherService) GuardianSv1Ping(args *utils.CGREventWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + args.CGREvent.Tenant = utils.FirstNonEmpty(args.CGREvent.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.GuardianSv1Ping, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaGuardian, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaGuardian, routeID, utils.GuardianSv1Ping, args, reply) } // RemoteLock will lock a key from remote func (dS *DispatcherService) GuardianSv1RemoteLock(args AttrRemoteLockWithApiKey, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.GuardianSv1RemoteLock, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.GuardianSv1RemoteLock, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaGuardian, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaGuardian, routeID, utils.GuardianSv1RemoteLock, args.AttrRemoteLock, reply) } // RemoteUnlock will unlock a key from remote based on reference ID func (dS *DispatcherService) GuardianSv1RemoteUnlock(args AttrRemoteUnlockWithApiKey, reply *[]string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.GuardianSv1RemoteUnlock, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.GuardianSv1RemoteUnlock, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaGuardian, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaGuardian, routeID, utils.GuardianSv1RemoteUnlock, args, reply) } diff --git a/dispatchers/resources.go b/dispatchers/resources.go index 04fa791f2..e9eea84db 100755 --- a/dispatchers/resources.go +++ b/dispatchers/resources.go @@ -24,26 +24,31 @@ import ( ) func (dS *DispatcherService) ResourceSv1Ping(args *utils.CGREventWithArgDispatcher, rpl *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + args.CGREvent.Tenant = utils.FirstNonEmpty(args.CGREvent.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ResourceSv1Ping, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaResources, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaResources, routeID, utils.ResourceSv1Ping, args, rpl) } func (dS *DispatcherService) ResourceSv1GetResourcesForEvent(args utils.ArgRSv1ResourceUsage, reply *engine.Resources) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ResourceSv1GetResourcesForEvent, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { @@ -51,16 +56,20 @@ func (dS *DispatcherService) ResourceSv1GetResourcesForEvent(args utils.ArgRSv1R } } - return dS.Dispatch(&args.CGREvent, utils.MetaResources, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaResources, routeID, utils.ResourceSv1GetResourcesForEvent, args, reply) } func (dS *DispatcherService) ResourceSv1AuthorizeResources(args utils.ArgRSv1ResourceUsage, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ResourceSv1AuthorizeResources, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { @@ -68,16 +77,20 @@ func (dS *DispatcherService) ResourceSv1AuthorizeResources(args utils.ArgRSv1Res } } - return dS.Dispatch(&args.CGREvent, utils.MetaResources, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaResources, routeID, utils.ResourceSv1AuthorizeResources, args, reply) } func (dS *DispatcherService) ResourceSv1AllocateResources(args utils.ArgRSv1ResourceUsage, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ResourceSv1AllocateResources, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { @@ -85,16 +98,20 @@ func (dS *DispatcherService) ResourceSv1AllocateResources(args utils.ArgRSv1Reso } } - return dS.Dispatch(&args.CGREvent, utils.MetaResources, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaResources, routeID, utils.ResourceSv1AllocateResources, args, reply) } func (dS *DispatcherService) ResourceSv1ReleaseResources(args utils.ArgRSv1ResourceUsage, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ResourceSv1ReleaseResources, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { @@ -102,6 +119,10 @@ func (dS *DispatcherService) ResourceSv1ReleaseResources(args utils.ArgRSv1Resou } } - return dS.Dispatch(&args.CGREvent, utils.MetaResources, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaResources, routeID, utils.ResourceSv1ReleaseResources, args, reply) } diff --git a/dispatchers/responder.go b/dispatchers/responder.go index 3453b6dd1..f362281a0 100644 --- a/dispatchers/responder.go +++ b/dispatchers/responder.go @@ -28,157 +28,194 @@ import ( // ResponderPing interogates Responder server responsible to process the event func (dS *DispatcherService) ResponderPing(args *utils.CGREventWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ResponderPing, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaResponder, args.RouteID, - utils.ResponderPing, args, reply) + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaResponder, + routeID, utils.ResponderPing, args, reply) } func (dS *DispatcherService) ResponderStatus(args *utils.TenantWithArgDispatcher, reply *map[string]interface{}) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.ResponderStatus, args.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.ResponderStatus, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{ - Tenant: args.Tenant, - }, utils.MetaResponder, args.RouteID, utils.ResponderStatus, - args, reply) + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaResponder, + routeID, utils.ResponderStatus, args, reply) } func (dS *DispatcherService) ResponderGetCost(args *engine.CallDescriptorWithArgDispatcher, reply *engine.CallCost) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ResponderGetCost, args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } return dS.Dispatch(args.AsCGREvent(), utils.MetaResponder, - args.RouteID, utils.ResponderGetCost, args, reply) + routeID, utils.ResponderGetCost, args, reply) } func (dS *DispatcherService) ResponderDebit(args *engine.CallDescriptorWithArgDispatcher, reply *engine.CallCost) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ResponderDebit, args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } return dS.Dispatch(args.AsCGREvent(), utils.MetaResponder, - args.RouteID, utils.ResponderDebit, args, reply) + routeID, utils.ResponderDebit, args, reply) } func (dS *DispatcherService) ResponderMaxDebit(args *engine.CallDescriptorWithArgDispatcher, reply *engine.CallCost) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ResponderMaxDebit, args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } return dS.Dispatch(args.AsCGREvent(), utils.MetaResponder, - args.RouteID, utils.ResponderMaxDebit, args, reply) + routeID, utils.ResponderMaxDebit, args, reply) } func (dS *DispatcherService) ResponderRefundIncrements(args *engine.CallDescriptorWithArgDispatcher, reply *engine.Account) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ResponderRefundIncrements, args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } return dS.Dispatch(args.AsCGREvent(), utils.MetaResponder, - args.RouteID, utils.ResponderRefundIncrements, args, reply) + routeID, utils.ResponderRefundIncrements, args, reply) } func (dS *DispatcherService) ResponderRefundRounding(args *engine.CallDescriptorWithArgDispatcher, reply *float64) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ResponderRefundRounding, args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } return dS.Dispatch(args.AsCGREvent(), utils.MetaResponder, - args.RouteID, utils.ResponderRefundRounding, args, reply) + routeID, utils.ResponderRefundRounding, args, reply) } func (dS *DispatcherService) ResponderGetMaxSessionTime(args *engine.CallDescriptorWithArgDispatcher, reply *time.Duration) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ResponderGetMaxSessionTime, args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } return dS.Dispatch(args.AsCGREvent(), utils.MetaResponder, - args.RouteID, utils.ResponderGetMaxSessionTime, args, reply) + routeID, utils.ResponderGetMaxSessionTime, args, reply) } func (dS *DispatcherService) ResponderShutdown(args *utils.TenantWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.ResponderShutdown, args.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.ResponderShutdown, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{ - Tenant: args.Tenant, - }, utils.MetaResponder, args.RouteID, utils.ResponderShutdown, - args, reply) + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaResponder, + routeID, utils.ResponderShutdown, args, reply) } func (dS *DispatcherService) ResponderGetTimeout(args *utils.TenantWithArgDispatcher, reply *time.Duration) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.ResponderGetTimeout, args.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.ResponderGetTimeout, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{ - Tenant: args.Tenant, - }, utils.MetaResponder, args.RouteID, utils.ResponderGetTimeout, - 0, reply) + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaResponder, + routeID, utils.ResponderGetTimeout, 0, reply) } diff --git a/dispatchers/scheduler.go b/dispatchers/scheduler.go index ab4801c66..5fdde1b8c 100644 --- a/dispatchers/scheduler.go +++ b/dispatchers/scheduler.go @@ -23,31 +23,41 @@ import ( ) func (dS *DispatcherService) SchedulerSv1Ping(args *utils.CGREventWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + args.CGREvent.Tenant = utils.FirstNonEmpty(args.CGREvent.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SchedulerSv1Ping, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaScheduler, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaScheduler, routeID, utils.SchedulerSv1Ping, args, reply) } func (dS *DispatcherService) SchedulerSv1Reload(args *utils.CGREventWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + args.CGREvent.Tenant = utils.FirstNonEmpty(args.CGREvent.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SchedulerSv1Ping, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaScheduler, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaScheduler, routeID, utils.SchedulerSv1Reload, args, reply) } diff --git a/dispatchers/servicemanager.go b/dispatchers/servicemanager.go index 74862813e..26ea209c6 100644 --- a/dispatchers/servicemanager.go +++ b/dispatchers/servicemanager.go @@ -27,64 +27,81 @@ import ( // ServiceManagerV1Ping interogates ServiceManager server responsible to process the event func (dS *DispatcherService) ServiceManagerV1Ping(args *utils.CGREventWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + args.CGREvent.Tenant = utils.FirstNonEmpty(args.CGREvent.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.ServiceManagerV1Ping, args.Tenant, args.APIKey, args.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaServiceManager, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaServiceManager, routeID, utils.ServiceManagerV1Ping, args, reply) } func (dS *DispatcherService) ServiceManagerV1StartService(args ArgStartServiceWithApiKey, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.ServiceManagerV1StartService, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.ServiceManagerV1StartService, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaServiceManager, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaServiceManager, routeID, utils.ServiceManagerV1StartService, args, reply) } func (dS *DispatcherService) ServiceManagerV1StopService(args ArgStartServiceWithApiKey, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.ServiceManagerV1StopService, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.ServiceManagerV1StopService, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaServiceManager, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaServiceManager, routeID, utils.ServiceManagerV1StopService, args, reply) } func (dS *DispatcherService) ServiceManagerV1ServiceStatus(args ArgStartServiceWithApiKey, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.ServiceManagerV1ServiceStatus, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.ServiceManagerV1ServiceStatus, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaServiceManager, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaServiceManager, routeID, utils.ServiceManagerV1ServiceStatus, args, reply) } diff --git a/dispatchers/sessions.go b/dispatchers/sessions.go index 808197d98..2e5c70d91 100755 --- a/dispatchers/sessions.go +++ b/dispatchers/sessions.go @@ -26,267 +26,336 @@ import ( ) func (dS *DispatcherService) SessionSv1Ping(args *utils.CGREventWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + args.CGREvent.Tenant = utils.FirstNonEmpty(args.CGREvent.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1Ping, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaSessionS, routeID, utils.SessionSv1Ping, args, reply) } func (dS *DispatcherService) SessionSv1AuthorizeEvent(args *sessions.V1AuthorizeArgs, reply *sessions.V1AuthorizeReply) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1AuthorizeEvent, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(&args.CGREvent, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaSessionS, routeID, utils.SessionSv1AuthorizeEvent, args, reply) } func (dS *DispatcherService) SessionSv1AuthorizeEventWithDigest(args *sessions.V1AuthorizeArgs, reply *sessions.V1AuthorizeReplyWithDigest) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1AuthorizeEventWithDigest, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(&args.CGREvent, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaSessionS, routeID, utils.SessionSv1AuthorizeEventWithDigest, args, reply) } func (dS *DispatcherService) SessionSv1InitiateSession(args *sessions.V1InitSessionArgs, reply *sessions.V1InitSessionReply) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1InitiateSession, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(&args.CGREvent, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaSessionS, routeID, utils.SessionSv1InitiateSession, args, reply) } func (dS *DispatcherService) SessionSv1InitiateSessionWithDigest(args *sessions.V1InitSessionArgs, reply *sessions.V1InitReplyWithDigest) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1InitiateSessionWithDigest, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(&args.CGREvent, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaSessionS, routeID, utils.SessionSv1InitiateSessionWithDigest, args, reply) } func (dS *DispatcherService) SessionSv1UpdateSession(args *sessions.V1UpdateSessionArgs, reply *sessions.V1UpdateSessionReply) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1UpdateSession, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(&args.CGREvent, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaSessionS, routeID, utils.SessionSv1UpdateSession, args, reply) } func (dS *DispatcherService) SessionSv1SyncSessions(args *utils.TenantWithArgDispatcher, reply *sessions.V1UpdateSessionReply) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.SessionSv1SyncSessions, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.SessionSv1SyncSessions, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaSessionS, args.RouteID, - utils.SessionSv1SyncSessions, &args.TenantArg.Tenant, reply) + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaSessionS, routeID, + utils.SessionSv1SyncSessions, &tnt, reply) } func (dS *DispatcherService) SessionSv1TerminateSession(args *sessions.V1TerminateSessionArgs, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1TerminateSession, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(&args.CGREvent, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaSessionS, routeID, utils.SessionSv1TerminateSession, args, reply) } func (dS *DispatcherService) SessionSv1ProcessCDR(args *utils.CGREventWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1ProcessCDR, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaSessionS, routeID, utils.SessionSv1ProcessCDR, args, reply) } func (dS *DispatcherService) SessionSv1ProcessEvent(args *sessions.V1ProcessEventArgs, reply *sessions.V1ProcessEventReply) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1ProcessEvent, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(&args.CGREvent, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaSessionS, routeID, utils.SessionSv1ProcessEvent, args, reply) } func (dS *DispatcherService) SessionSv1GetActiveSessions(args *utils.SessionFilter, reply *[]*sessions.ActiveSession) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1GetActiveSessions, args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaSessionS, routeID, utils.SessionSv1GetActiveSessions, args, reply) } func (dS *DispatcherService) SessionSv1GetActiveSessionsCount(args *utils.SessionFilter, reply *int) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1GetActiveSessionsCount, args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaSessionS, routeID, utils.SessionSv1GetActiveSessionsCount, args, reply) } func (dS *DispatcherService) SessionSv1ForceDisconnect(args *utils.SessionFilter, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1ForceDisconnect, args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaSessionS, routeID, utils.SessionSv1ForceDisconnect, args, reply) } func (dS *DispatcherService) SessionSv1GetPassiveSessions(args *utils.SessionFilter, reply *[]*sessions.ActiveSession) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1GetPassiveSessions, args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaSessionS, routeID, utils.SessionSv1GetPassiveSessions, args, reply) } func (dS *DispatcherService) SessionSv1GetPassiveSessionsCount(args *utils.SessionFilter, reply *int) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1GetPassiveSessionsCount, args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaSessionS, routeID, utils.SessionSv1GetPassiveSessionsCount, args, reply) } func (dS *DispatcherService) SessionSv1ReplicateSessions(args ArgsReplicateSessionsWithApiKey, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + tnt := utils.FirstNonEmpty(args.TenantArg.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { - if err = dS.authorize(utils.SessionSv1ReplicateSessions, - args.TenantArg.Tenant, + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } + if err = dS.authorize(utils.SessionSv1ReplicateSessions, tnt, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: tnt}, utils.MetaSessionS, routeID, utils.SessionSv1ReplicateSessions, args.ArgsReplicateSessions, reply) } func (dS *DispatcherService) SessionSv1SetPassiveSession(args *sessions.Session, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SessionSv1SetPassiveSession, args.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaSessionS, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, utils.MetaSessionS, routeID, utils.SessionSv1SetPassiveSession, args, reply) } diff --git a/dispatchers/stats.go b/dispatchers/stats.go index 51edecbcb..8a4893900 100755 --- a/dispatchers/stats.go +++ b/dispatchers/stats.go @@ -26,103 +26,127 @@ import ( ) func (dS *DispatcherService) StatSv1Ping(args *utils.CGREventWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.StatSv1Ping, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaStats, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaStats, routeID, utils.StatSv1Ping, args, reply) } func (dS *DispatcherService) StatSv1GetStatQueuesForEvent(args *engine.StatsArgsProcessEvent, reply *[]string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.StatSv1GetStatQueuesForEvent, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(&args.CGREvent, utils.MetaStats, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaStats, routeID, utils.StatSv1GetStatQueuesForEvent, args, reply) } func (dS *DispatcherService) StatSv1GetQueueStringMetrics(args *utils.TenantIDWithArgDispatcher, reply *map[string]string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.StatSv1GetQueueStringMetrics, args.TenantID.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } return dS.Dispatch(&utils.CGREvent{ Tenant: args.Tenant, ID: args.ID, - }, utils.MetaStats, args.RouteID, utils.StatSv1GetQueueStringMetrics, + }, utils.MetaStats, routeID, utils.StatSv1GetQueueStringMetrics, args.TenantID, reply) } func (dS *DispatcherService) StatSv1ProcessEvent(args *engine.StatsArgsProcessEvent, reply *[]string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.StatSv1ProcessEvent, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(&args.CGREvent, utils.MetaStats, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaStats, routeID, utils.StatSv1ProcessEvent, args, reply) } func (dS *DispatcherService) StatSv1GetQueueFloatMetrics(args *utils.TenantIDWithArgDispatcher, reply *map[string]float64) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.StatSv1GetQueueFloatMetrics, args.TenantID.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } return dS.Dispatch(&utils.CGREvent{ Tenant: args.Tenant, ID: args.ID, - }, utils.MetaStats, args.RouteID, utils.StatSv1GetQueueFloatMetrics, + }, utils.MetaStats, routeID, utils.StatSv1GetQueueFloatMetrics, args.TenantID, reply) } func (dS *DispatcherService) StatSv1GetQueueIDs(args *utils.TenantWithArgDispatcher, reply *[]string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.StatSv1GetQueueIDs, args.TenantArg.Tenant, args.APIKey, utils.TimePointer(time.Now())); err != nil { return } } + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } return dS.Dispatch(&utils.CGREvent{Tenant: args.Tenant}, - utils.MetaStats, args.RouteID, utils.StatSv1GetQueueIDs, + utils.MetaStats, routeID, utils.StatSv1GetQueueIDs, args.TenantArg, reply) } diff --git a/dispatchers/suppliers.go b/dispatchers/suppliers.go index 7482ff67f..12846a5b1 100755 --- a/dispatchers/suppliers.go +++ b/dispatchers/suppliers.go @@ -24,48 +24,61 @@ import ( ) func (dS *DispatcherService) SupplierSv1Ping(args *utils.CGREventWithArgDispatcher, reply *string) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } + args.CGREvent.Tenant = utils.FirstNonEmpty(args.CGREvent.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SupplierSv1Ping, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaSuppliers, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaSuppliers, routeID, utils.SupplierSv1Ping, args, reply) } func (dS *DispatcherService) SupplierSv1GetSuppliers(args *engine.ArgsGetSuppliers, reply *engine.SortedSuppliers) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SupplierSv1GetSuppliers, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(&args.CGREvent, utils.MetaSuppliers, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaSuppliers, routeID, utils.SupplierSv1GetSuppliers, args, reply) } func (dS *DispatcherService) SupplierSv1GetSupplierProfilesForEvent(args *utils.CGREventWithArgDispatcher, reply *[]*engine.SupplierProfile) (err error) { - if args.ArgDispatcher == nil { - return utils.NewErrMandatoryIeMissing("ArgDispatcher") - } if dS.attrS != nil { + if args.ArgDispatcher == nil { + return utils.NewErrMandatoryIeMissing("ArgDispatcher") + } if err = dS.authorize(utils.SupplierSv1GetSupplierProfilesForEvent, args.CGREvent.Tenant, args.APIKey, args.CGREvent.Time); err != nil { return } } - return dS.Dispatch(args.CGREvent, utils.MetaSuppliers, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaSuppliers, routeID, utils.SupplierSv1GetSupplierProfilesForEvent, args, reply) } diff --git a/dispatchers/thresholds.go b/dispatchers/thresholds.go index f3bccdf40..286b3acac 100755 --- a/dispatchers/thresholds.go +++ b/dispatchers/thresholds.go @@ -26,6 +26,7 @@ import ( ) func (dS *DispatcherService) ThresholdSv1Ping(args *utils.CGREventWithArgDispatcher, reply *string) (err error) { + args.CGREvent.Tenant = utils.FirstNonEmpty(args.CGREvent.Tenant, dS.cfg.GeneralCfg().DefaultTenant) if args.ArgDispatcher == nil { return utils.NewErrMandatoryIeMissing("ArgDispatcher") } @@ -36,7 +37,11 @@ func (dS *DispatcherService) ThresholdSv1Ping(args *utils.CGREventWithArgDispatc return } } - return dS.Dispatch(args.CGREvent, utils.MetaThresholds, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(args.CGREvent, utils.MetaThresholds, routeID, utils.ThresholdSv1Ping, args, reply) } @@ -52,7 +57,11 @@ func (dS *DispatcherService) ThresholdSv1GetThresholdsForEvent(args *engine.Args return } } - return dS.Dispatch(&args.CGREvent, utils.MetaThresholds, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaThresholds, routeID, utils.ThresholdSv1GetThresholdsForEvent, args, t) } @@ -68,7 +77,11 @@ func (dS *DispatcherService) ThresholdSv1ProcessEvent(args *engine.ArgsProcessEv return } } - return dS.Dispatch(&args.CGREvent, utils.MetaThresholds, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&args.CGREvent, utils.MetaThresholds, routeID, utils.ThresholdSv1ProcessEvent, args, tIDs) } @@ -82,7 +95,11 @@ func (dS *DispatcherService) ThresholdSv1GetThresholdIDs(args *utils.TenantWithA return } } - return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaThresholds, args.RouteID, + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } + return dS.Dispatch(&utils.CGREvent{Tenant: args.TenantArg.Tenant}, utils.MetaThresholds, routeID, utils.ThresholdSv1GetThresholdIDs, args.TenantArg, tIDs) } @@ -97,8 +114,12 @@ func (dS *DispatcherService) ThresholdSv1GetThreshold(args *utils.TenantIDWithAr return } } + var routeID *string + if args.ArgDispatcher != nil { + routeID = args.ArgDispatcher.RouteID + } return dS.Dispatch(&utils.CGREvent{ Tenant: args.Tenant, ID: args.ID, - }, utils.MetaThresholds, args.RouteID, utils.ThresholdSv1GetThreshold, args.TenantID, th) + }, utils.MetaThresholds, routeID, utils.ThresholdSv1GetThreshold, args.TenantID, th) }