mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-22 15:48:44 +05:00
Added ResourceSv1.GetResource to dispatcher
This commit is contained in:
committed by
Dan Christian Bogos
parent
9e42e0562e
commit
7ad109d7bc
@@ -51,6 +51,7 @@ type ResourceSv1Interface interface {
|
||||
AuthorizeResources(args utils.ArgRSv1ResourceUsage, reply *string) error
|
||||
AllocateResources(args utils.ArgRSv1ResourceUsage, reply *string) error
|
||||
ReleaseResources(args utils.ArgRSv1ResourceUsage, reply *string) error
|
||||
GetResource(args *utils.TenantIDWithArgDispatcher, reply *engine.Resource) error
|
||||
Ping(ign *utils.CGREventWithArgDispatcher, reply *string) error
|
||||
}
|
||||
|
||||
@@ -138,6 +139,9 @@ type CDRsV1Interface interface {
|
||||
ProcessExternalCDR(cdr *engine.ExternalCDRWithArgDispatcher, reply *string) error
|
||||
RateCDRs(arg *engine.ArgRateCDRs, reply *string) error
|
||||
StoreSessionCost(attr *engine.AttrCDRSStoreSMCost, reply *string) error
|
||||
GetCDRsCount(args *utils.RPCCDRsFilterWithArgDispatcher, reply *int64) error
|
||||
GetCDRs(args utils.RPCCDRsFilterWithArgDispatcher, reply *[]*engine.CDR) error
|
||||
Ping(ign *utils.CGREventWithArgDispatcher, reply *string) error
|
||||
}
|
||||
|
||||
type ServiceManagerV1Interface interface {
|
||||
|
||||
@@ -303,6 +303,10 @@ func (dRs *DispatcherResourceSv1) GetResourcesForEvent(args utils.ArgRSv1Resourc
|
||||
return dRs.dRs.ResourceSv1GetResourcesForEvent(args, reply)
|
||||
}
|
||||
|
||||
func (dRs *DispatcherResourceSv1) GetResource(args *utils.TenantIDWithArgDispatcher, reply *engine.Resource) error {
|
||||
return dRs.dRs.ResourceSv1GetResource(args, reply)
|
||||
}
|
||||
|
||||
func (dRs *DispatcherResourceSv1) AuthorizeResources(args utils.ArgRSv1ResourceUsage,
|
||||
reply *string) error {
|
||||
return dRs.dRs.ResourceSv1AuthorizeResources(args, reply)
|
||||
|
||||
@@ -308,7 +308,7 @@ func testInternalRemoteITGetResource(t *testing.T) {
|
||||
Usages: map[string]*engine.ResourceUsage{},
|
||||
}
|
||||
if err := internalRPC.Call(utils.ResourceSv1GetResource,
|
||||
&utils.TenantID{Tenant: "cgrates.org", ID: "ResGroup1"}, &reply); err != nil {
|
||||
&utils.TenantIDWithArgDispatcher{TenantID: &utils.TenantID{Tenant: "cgrates.org", ID: "ResGroup1"}}, &reply); err != nil {
|
||||
t.Error(err)
|
||||
} else if !reflect.DeepEqual(reply, expectedResources) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(expectedResources), utils.ToJSON(reply))
|
||||
|
||||
@@ -60,7 +60,7 @@ func (rsv1 *ResourceSv1) ReleaseResources(args utils.ArgRSv1ResourceUsage, reply
|
||||
}
|
||||
|
||||
// GetResource returns a resource configuration
|
||||
func (rsv1 *ResourceSv1) GetResource(args *utils.TenantID, reply *engine.Resource) error {
|
||||
func (rsv1 *ResourceSv1) GetResource(args *utils.TenantIDWithArgDispatcher, reply *engine.Resource) error {
|
||||
return rsv1.rls.V1GetResource(args, reply)
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ func init() {
|
||||
c := &CmdGetResource{
|
||||
name: "resource",
|
||||
rpcMethod: utils.ResourceSv1GetResource,
|
||||
rpcParams: &utils.TenantID{},
|
||||
rpcParams: &utils.TenantIDWithArgDispatcher{},
|
||||
}
|
||||
commands[c.Name()] = c
|
||||
c.CommandExecuter = &CommandExecuter{c}
|
||||
@@ -37,7 +37,7 @@ func init() {
|
||||
type CmdGetResource struct {
|
||||
name string
|
||||
rpcMethod string
|
||||
rpcParams *utils.TenantID
|
||||
rpcParams *utils.TenantIDWithArgDispatcher
|
||||
*CommandExecuter
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ func (self *CmdGetResource) RpcMethod() string {
|
||||
|
||||
func (self *CmdGetResource) RpcParams(reset bool) interface{} {
|
||||
if reset || self.rpcParams == nil {
|
||||
self.rpcParams = &utils.TenantID{}
|
||||
self.rpcParams = &utils.TenantIDWithArgDispatcher{}
|
||||
}
|
||||
return self.rpcParams
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
package dispatchers
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/cgrates/cgrates/engine"
|
||||
"github.com/cgrates/cgrates/utils"
|
||||
)
|
||||
@@ -140,3 +142,24 @@ func (dS *DispatcherService) ResourceSv1ReleaseResources(args utils.ArgRSv1Resou
|
||||
return dS.Dispatch(args.CGREvent, utils.MetaResources, routeID,
|
||||
utils.ResourceSv1ReleaseResources, args, reply)
|
||||
}
|
||||
|
||||
func (dS *DispatcherService) ResourceSv1GetResource(args *utils.TenantIDWithArgDispatcher, reply *engine.Resource) (err error) {
|
||||
tnt := dS.cfg.GeneralCfg().DefaultTenant
|
||||
if args.TenantID != nil && args.TenantID.Tenant != utils.EmptyString {
|
||||
tnt = args.TenantID.Tenant
|
||||
}
|
||||
if args.ArgDispatcher == nil {
|
||||
return utils.NewErrMandatoryIeMissing(utils.ArgDispatcherField)
|
||||
}
|
||||
if len(dS.cfg.DispatcherSCfg().AttributeSConns) != 0 {
|
||||
if err = dS.authorize(utils.ResourceSv1GetResources, tnt,
|
||||
args.APIKey, utils.TimePointer(time.Now())); err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
routeID := args.ArgDispatcher.RouteID
|
||||
return dS.Dispatch(&utils.CGREvent{
|
||||
Tenant: tnt,
|
||||
ID: args.ID,
|
||||
}, utils.MetaResources, routeID, utils.ResourceSv1GetResources, args, reply)
|
||||
}
|
||||
|
||||
@@ -458,8 +458,8 @@ func (fS *FilterS) getFieldNameDataProvider(initialDP config.DataProvider,
|
||||
return nil, fmt.Errorf("invalid fieldname <%s>", fieldName)
|
||||
}
|
||||
var reply *Resource
|
||||
if err := fS.connMgr.Call(fS.cfg.FilterSCfg().ResourceSConns, nil, utils.ResourceSv1GetResource,
|
||||
&utils.TenantID{Tenant: tenant, ID: splitFldName[1]}, &reply); err != nil {
|
||||
if err := fS.connMgr.Call(fS.cfg.FilterSCfg().ResourceSConns, nil, utils.ResourceSv1GetResource, &utils.TenantIDWithArgDispatcher{
|
||||
TenantID: &utils.TenantID{Tenant: tenant, ID: splitFldName[1]}}, &reply); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dp = config.NewObjectDP(reply, []string{utils.MetaResources, reply.ID})
|
||||
@@ -535,7 +535,8 @@ func (fS *FilterS) getFieldValueDataProvider(initialDP config.DataProvider,
|
||||
}
|
||||
var reply *Resource
|
||||
if err := fS.connMgr.Call(fS.cfg.FilterSCfg().ResourceSConns, nil, utils.ResourceSv1GetResource,
|
||||
&utils.TenantID{Tenant: tenant, ID: splitFldName[1]}, &reply); err != nil {
|
||||
&utils.TenantIDWithArgDispatcher{TenantID: &utils.TenantID{
|
||||
Tenant: tenant, ID: splitFldName[1]}}, &reply); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
dp = config.NewObjectDP(reply, []string{utils.MetaResources, reply.ID})
|
||||
|
||||
@@ -749,7 +749,7 @@ func (rS *ResourceService) V1ReleaseResource(args utils.ArgRSv1ResourceUsage, re
|
||||
}
|
||||
|
||||
// GetResource returns a resource configuration
|
||||
func (rS *ResourceService) V1GetResource(arg *utils.TenantID, reply *Resource) error {
|
||||
func (rS *ResourceService) V1GetResource(arg *utils.TenantIDWithArgDispatcher, reply *Resource) error {
|
||||
if missing := utils.MissingStructFields(arg, []string{"Tenant", "ID"}); len(missing) != 0 { //Params missing
|
||||
return utils.NewErrMandatoryIeMissing(missing...)
|
||||
}
|
||||
|
||||
@@ -368,9 +368,9 @@ func (spS *SupplierService) resourceUsage(resIDs []string, tenant string) (tUsag
|
||||
for _, resID := range resIDs {
|
||||
var res Resource
|
||||
if err = spS.connMgr.Call(spS.cgrcfg.SupplierSCfg().ResourceSConns, nil, utils.ResourceSv1GetResource,
|
||||
&utils.TenantID{Tenant: tenant, ID: resID}, &res); err != nil &&
|
||||
err.Error() != utils.ErrNotFound.Error() {
|
||||
utils.Logger.Warning(
|
||||
&utils.TenantIDWithArgDispatcher{TenantID: &utils.TenantID{ Tenant: tenant, ID: resID}}, &res);
|
||||
err != nil && err.Error() != utils.ErrNotFound.Error() {
|
||||
utils.Logger.Warning(
|
||||
fmt.Sprintf("<SupplierS> error: %s getting resource for ID : %s", err.Error(), resID))
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -1265,6 +1265,7 @@ const (
|
||||
const (
|
||||
ResourceSv1AuthorizeResources = "ResourceSv1.AuthorizeResources"
|
||||
ResourceSv1GetResourcesForEvent = "ResourceSv1.GetResourcesForEvent"
|
||||
ResourceSv1GetResources = "ResourceSv1.GetResources"
|
||||
ResourceSv1AllocateResources = "ResourceSv1.AllocateResources"
|
||||
ResourceSv1ReleaseResources = "ResourceSv1.ReleaseResources"
|
||||
ResourceSv1Ping = "ResourceSv1.Ping"
|
||||
|
||||
Reference in New Issue
Block a user