mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Added reversedestinationshealth API
This commit is contained in:
committed by
Dan Christian Bogos
parent
1578e542ff
commit
b77eb9fd00
@@ -592,8 +592,19 @@ func (apierSv1 *APIerSv1) ComputeFilterIndexIDs(args *utils.ArgsComputeFilterInd
|
||||
return nil
|
||||
}
|
||||
|
||||
func (apierSv1 *APIerSv1) GetAccountActionPlansIndexHealth(args *engine.IndexHealthArgs, reply *engine.IndexHealthReply) error {
|
||||
rp, err := engine.GetAccountActionPlanIndexHealth(apierSv1.DataManager, args.ObjectCacheLimit, args.IndexCacheLimit,
|
||||
func (apierSv1 *APIerSv1) GetAccountActionPlansIndexHealth(args *engine.IndexHealthArgs, reply *engine.AccountActionPlanIHReply) error {
|
||||
rp, err := engine.GetAccountActionPlansIndexHealth(apierSv1.DataManager, args.ObjectCacheLimit, args.IndexCacheLimit,
|
||||
args.ObjectCacheTTL, args.IndexCacheTTL,
|
||||
args.ObjectCacheStaticTTL, args.IndexCacheStaticTTL)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*reply = *rp
|
||||
return nil
|
||||
}
|
||||
|
||||
func (apierSv1 *APIerSv1) GetReverseDestinationsIndexHealth(args *engine.IndexHealthArgs, reply *engine.ReverseDestinationsIHReply) error {
|
||||
rp, err := engine.GetReverseDestinationsIndexHealth(apierSv1.DataManager, args.ObjectCacheLimit, args.IndexCacheLimit,
|
||||
args.ObjectCacheTTL, args.IndexCacheTTL,
|
||||
args.ObjectCacheStaticTTL, args.IndexCacheStaticTTL)
|
||||
if err != nil {
|
||||
|
||||
@@ -42,6 +42,7 @@ var (
|
||||
testV1FIdxHRpcConn,
|
||||
testV1FIdxHLoadFromFolder,
|
||||
testV1FIdxHAccountActionPlansHealth,
|
||||
testV1FIdxHReverseDestinationHealth,
|
||||
|
||||
testV1FIdxHStopEngine,
|
||||
}
|
||||
@@ -111,17 +112,33 @@ func testV1FIdxHLoadFromFolder(t *testing.T) {
|
||||
}
|
||||
|
||||
func testV1FIdxHAccountActionPlansHealth(t *testing.T) {
|
||||
var reply engine.IndexHealthReply
|
||||
var reply engine.AccountActionPlanIHReply
|
||||
if err := tFIdxHRpc.Call(utils.APIerSv1GetAccountActionPlansIndexHealth, engine.IndexHealthArgs{
|
||||
IndexCacheLimit: -1,
|
||||
ObjectCacheLimit: -1,
|
||||
}, &reply); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
exp := engine.IndexHealthReply{
|
||||
MissingObjects: []string{},
|
||||
MissingIndexes: map[string][]string{},
|
||||
BrokenReferences: map[string][]string{},
|
||||
exp := engine.AccountActionPlanIHReply{
|
||||
MissingAccountActionPlans: map[string][]string{},
|
||||
BrokenReferences: map[string][]string{},
|
||||
}
|
||||
if !reflect.DeepEqual(exp, reply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(exp), utils.ToJSON(reply))
|
||||
}
|
||||
}
|
||||
|
||||
func testV1FIdxHReverseDestinationHealth(t *testing.T) {
|
||||
var reply engine.ReverseDestinationsIHReply
|
||||
if err := tFIdxHRpc.Call(utils.APIerSv1GetReverseDestinationsIndexHealth, engine.IndexHealthArgs{
|
||||
IndexCacheLimit: -1,
|
||||
ObjectCacheLimit: -1,
|
||||
}, &reply); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
exp := engine.ReverseDestinationsIHReply{
|
||||
MissingReverseDestinations: map[string][]string{},
|
||||
BrokenReferences: map[string][]string{},
|
||||
}
|
||||
if !reflect.DeepEqual(exp, reply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(exp), utils.ToJSON(reply))
|
||||
|
||||
@@ -845,9 +845,8 @@ type AccountActionPlanIHReply struct {
|
||||
}
|
||||
|
||||
// add cache in args API
|
||||
func GetAccountActionPlanIndexHealth(dm *DataManager, objLimit, indexLimit int, objTTL, indexTTL time.Duration, objStaticTTL, indexStaticTTL bool) (rply *AccountActionPlanIHReply, err error) {
|
||||
func GetAccountActionPlansIndexHealth(dm *DataManager, objLimit, indexLimit int, objTTL, indexTTL time.Duration, objStaticTTL, indexStaticTTL bool) (rply *AccountActionPlanIHReply, err error) {
|
||||
// posible errors
|
||||
missingAP := utils.StringSet{} // the index are present but the action plans are not //missing actionplans
|
||||
brokenRef := map[string][]string{} // the actionPlans match the index but they are missing the account // broken reference
|
||||
missingIndex := map[string][]string{} // the indexes are not present but the action plans points to that account // misingAccounts
|
||||
|
||||
@@ -910,7 +909,7 @@ func GetAccountActionPlanIndexHealth(dm *DataManager, objLimit, indexLimit int,
|
||||
return
|
||||
}
|
||||
err = nil
|
||||
missingAP.Add(apID) // not found
|
||||
brokenRef[apID] = nil
|
||||
continue
|
||||
|
||||
}
|
||||
@@ -941,23 +940,138 @@ func GetAccountActionPlanIndexHealth(dm *DataManager, objLimit, indexLimit int,
|
||||
return
|
||||
}
|
||||
err = nil
|
||||
missingIndex[apID] = append(missingIndex[apID], acntID)
|
||||
missingIndex[acntID] = append(missingIndex[acntID], apID)
|
||||
continue
|
||||
}
|
||||
if !utils.IsSliceMember(ids, apID) { // the index doesn't exits for this actionPlan
|
||||
missingIndex[apID] = append(missingIndex[apID], acntID)
|
||||
missingIndex[acntID] = append(missingIndex[acntID], apID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rply = &AccountActionPlanIHReply{
|
||||
MissingActionPlans: missingAP.AsSlice(),
|
||||
MissingAccountActionPlans: missingIndex,
|
||||
BrokenReferences: brokenRef,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
type ReverseDestinationsIHReply struct {
|
||||
MissingReverseDestinations map[string][]string // list of missing indexes for each object (the map has the key as the indexKey and a list of objects)
|
||||
BrokenReferences map[string][]string // list of broken references (the map has the key as the objectID and a list of indexes)
|
||||
}
|
||||
|
||||
// add cache in args API
|
||||
func GetReverseDestinationsIndexHealth(dm *DataManager, objLimit, indexLimit int, objTTL, indexTTL time.Duration, objStaticTTL, indexStaticTTL bool) (rply *ReverseDestinationsIHReply, err error) {
|
||||
// posible errors
|
||||
brokenRef := map[string][]string{} // the actionPlans match the index but they are missing the account // broken reference
|
||||
missingIndex := map[string][]string{} // the indexes are not present but the action plans points to that account // misingAccounts
|
||||
|
||||
// local cache
|
||||
indexesCache := ltcache.NewCache(objLimit, objTTL, objStaticTTL, nil)
|
||||
objectsCache := ltcache.NewCache(indexLimit, indexTTL, indexStaticTTL, nil)
|
||||
|
||||
getCachedIndex := func(prefix string) (dstIDs []string, err error) {
|
||||
if x, ok := indexesCache.Get(prefix); ok {
|
||||
if x == nil {
|
||||
return nil, utils.ErrNotFound
|
||||
}
|
||||
return x.([]string), nil
|
||||
}
|
||||
if dstIDs, err = dm.GetReverseDestination(prefix, true, false, utils.NonTransactional); err != nil { // read from cache but do not write if not there
|
||||
if err == utils.ErrNotFound {
|
||||
indexesCache.Set(prefix, nil, nil)
|
||||
}
|
||||
return
|
||||
}
|
||||
indexesCache.Set(prefix, dstIDs, nil)
|
||||
return
|
||||
}
|
||||
|
||||
getCachedObject := func(dstID string) (obj *Destination, err error) {
|
||||
if x, ok := objectsCache.Get(dstID); ok {
|
||||
if x == nil {
|
||||
return nil, utils.ErrNotFound
|
||||
}
|
||||
return x.(*Destination), nil
|
||||
}
|
||||
if obj, err = dm.GetDestination(dstID, true, false, utils.NonTransactional); err != nil { // read from cache but do not write if not there
|
||||
if err == utils.ErrNotFound {
|
||||
objectsCache.Set(dstID, nil, nil)
|
||||
}
|
||||
return
|
||||
}
|
||||
objectsCache.Set(dstID, obj, nil)
|
||||
return
|
||||
}
|
||||
|
||||
var prefixes []string // start with the indexes and check the references
|
||||
if prefixes, err = dm.DataDB().GetKeysForPrefix(utils.ReverseDestinationPrefix); err != nil {
|
||||
err = fmt.Errorf("error <%s> querying keys for reverseDestinations", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
for _, prefix := range prefixes {
|
||||
prefix = strings.TrimPrefix(prefix, utils.ReverseDestinationPrefix) //
|
||||
var dstIDs []string
|
||||
if dstIDs, err = getCachedIndex(prefix); err != nil { // read from cache but do not write if not there
|
||||
err = fmt.Errorf("error <%s> querying the reverseDestination: <%v>", err.Error(), prefix)
|
||||
return
|
||||
}
|
||||
for _, dstID := range dstIDs {
|
||||
var dst *Destination
|
||||
if dst, err = getCachedObject(dstID); err != nil {
|
||||
if err != utils.ErrNotFound {
|
||||
err = fmt.Errorf("error <%s> querying the destination: <%v>", err.Error(), dstID)
|
||||
return
|
||||
}
|
||||
err = nil
|
||||
brokenRef[dstID] = nil
|
||||
continue
|
||||
}
|
||||
if !utils.IsSliceMember(dst.Prefixes, prefix) { // the action plan exists but doesn't point towards the account we have index
|
||||
brokenRef[dstID] = append(brokenRef[dstID], prefix)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var dstIDs []string // we have all the indexes in cache now do a reverse check
|
||||
if dstIDs, err = dm.DataDB().GetKeysForPrefix(utils.DestinationPrefix); err != nil {
|
||||
err = fmt.Errorf("error <%s> querying keys for destinations", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
for _, dstID := range dstIDs {
|
||||
dstID = strings.TrimPrefix(dstID, utils.DestinationPrefix) //
|
||||
var dst *Destination
|
||||
if dst, err = getCachedObject(dstID); err != nil {
|
||||
err = fmt.Errorf("error <%s> querying the destination: <%v>", err.Error(), dstID)
|
||||
return
|
||||
}
|
||||
for _, prefix := range dst.Prefixes {
|
||||
var ids []string
|
||||
if ids, err = getCachedIndex(prefix); err != nil { // read from cache but do not write if not there
|
||||
if err != utils.ErrNotFound {
|
||||
err = fmt.Errorf("error <%s> querying the reverseDestination: <%v>", err.Error(), prefix)
|
||||
return
|
||||
}
|
||||
err = nil
|
||||
missingIndex[prefix] = append(missingIndex[prefix], dstID)
|
||||
continue
|
||||
}
|
||||
if !utils.IsSliceMember(ids, dstID) { // the index doesn't exits for this actionPlan
|
||||
missingIndex[prefix] = append(missingIndex[prefix], dstID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rply = &ReverseDestinationsIHReply{
|
||||
MissingReverseDestinations: missingIndex,
|
||||
BrokenReferences: brokenRef,
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func getFiltersAndContexts(dm *DataManager, indxType, tnt, id string) (filterIDs, contexts []string, err error) { // add contexts
|
||||
switch indxType {
|
||||
case utils.CacheResourceFilterIndexes:
|
||||
@@ -1016,7 +1130,6 @@ type FilterIHReply struct {
|
||||
MissingFilters map[string][]string // list of broken references (the map has the key as the filterID and a list of objectIDs)
|
||||
}
|
||||
|
||||
/*
|
||||
func GetFilterIndexHealth(dm *DataManager, indxType string,
|
||||
objLimit, indexLimit int, objTTL, indexTTL time.Duration,
|
||||
objStaticTTL, indexStaticTTL bool) (rply *FilterIHReply, err error) {
|
||||
@@ -1074,7 +1187,39 @@ func GetFilterIndexHealth(dm *DataManager, indxType string,
|
||||
return
|
||||
}
|
||||
for idxKey, idx := range indexes {
|
||||
for itmID:=range idx{}
|
||||
for itmID := range idx {
|
||||
var filterIDs, contexts []string
|
||||
if filterIDs, contexts, err = getFiltersAndContexts(dm, indxType, tnt, itmID); err != nil {
|
||||
if err != utils.ErrNotFound {
|
||||
return
|
||||
}
|
||||
rply.MissingObjects = append(rply.MissingObjects, utils.ConcatenatedKey(tnt, itmID))
|
||||
continue
|
||||
}
|
||||
if ctx != nil && !utils.IsSliceMember(contexts, *ctx) {
|
||||
key := utils.ConcatenatedKey(tntCtx, idxKey)
|
||||
rply.MissingIndexes[key] = append(rply.MissingIndexes[key], itmID)
|
||||
continue
|
||||
}
|
||||
for _, fltrID := range filterIDs {
|
||||
var fltr *Filter
|
||||
if fltr, err = dm.GetFilter(tnt, fltrID,
|
||||
true, false, utils.NonTransactional); err != nil {
|
||||
if err != utils.ErrNotFound {
|
||||
return
|
||||
}
|
||||
rply.MissingFilters[fltrID] = append(rply.MissingFilters[fltrID], itmID)
|
||||
}
|
||||
indexes := map[string]utils.StringSet{}
|
||||
if indexes, err = addFilterToIndexSet(dm, indxType, tntCtx, fltr, indexes); err != nil {
|
||||
return
|
||||
}
|
||||
if idx, has := indexes[idxKey]; !has || !idx.Has(itmID) {
|
||||
key := utils.ConcatenatedKey(tntCtx, idxKey)
|
||||
rply.MissingIndexes[key] = append(rply.MissingIndexes[key], itmID)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
@@ -1100,10 +1245,10 @@ func updateFilterIH(dm *DataManager, filterIDs []string, indxType, tnt, tntCtx,
|
||||
}
|
||||
for key, idx := range indexes {
|
||||
if !idx.Has(itmID) {
|
||||
rply.MissingIndexes[itmID] = append(rply.MissingIndexes[itmID], key)
|
||||
key = utils.ConcatenatedKey(tntCtx, key)
|
||||
rply.MissingIndexes[key] = append(rply.MissingIndexes[key], itmID)
|
||||
}
|
||||
}
|
||||
}
|
||||
return rply, nil
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -44,10 +44,10 @@ func TestHealthAccountAction(t *testing.T) {
|
||||
}
|
||||
|
||||
exp := &AccountActionPlanIHReply{
|
||||
MissingAccountActionPlans: map[string][]string{"1002": {"AP2"}}, // 1
|
||||
BrokenReferences: map[string][]string{"AP2": {"1001"}, "AP1": nil}, // 2
|
||||
MissingAccountActionPlans: map[string][]string{"1002": {"AP2"}},
|
||||
BrokenReferences: map[string][]string{"AP2": {"1001"}, "AP1": nil},
|
||||
}
|
||||
if rply, err := GetAccountActionPlanIndexHealth(dm, -1, -1, -1, -1, false, false); err != nil {
|
||||
if rply, err := GetAccountActionPlansIndexHealth(dm, -1, -1, -1, -1, false, false); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(exp, rply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(exp), utils.ToJSON(rply))
|
||||
@@ -72,11 +72,10 @@ func TestHealthAccountAction2(t *testing.T) {
|
||||
}
|
||||
|
||||
exp := &AccountActionPlanIHReply{
|
||||
MissingActionPlans: []string{"AP1"},
|
||||
MissingAccountActionPlans: map[string][]string{},
|
||||
BrokenReferences: map[string][]string{},
|
||||
BrokenReferences: map[string][]string{"AP1": nil},
|
||||
}
|
||||
if rply, err := GetAccountActionPlanIndexHealth(dm, -1, -1, -1, -1, false, false); err != nil {
|
||||
if rply, err := GetAccountActionPlansIndexHealth(dm, -1, -1, -1, -1, false, false); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(exp, rply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(exp), utils.ToJSON(rply))
|
||||
@@ -108,11 +107,10 @@ func TestHealthAccountAction3(t *testing.T) {
|
||||
}
|
||||
|
||||
exp := &AccountActionPlanIHReply{
|
||||
MissingActionPlans: []string{},
|
||||
MissingAccountActionPlans: map[string][]string{"AP2": {"1002"}},
|
||||
MissingAccountActionPlans: map[string][]string{"1002": {"AP2"}},
|
||||
BrokenReferences: map[string][]string{},
|
||||
}
|
||||
if rply, err := GetAccountActionPlanIndexHealth(dm, -1, -1, -1, -1, false, false); err != nil {
|
||||
if rply, err := GetAccountActionPlansIndexHealth(dm, -1, -1, -1, -1, false, false); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(exp, rply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(exp), utils.ToJSON(rply))
|
||||
@@ -147,11 +145,139 @@ func TestHealthAccountAction4(t *testing.T) {
|
||||
}
|
||||
|
||||
exp := &AccountActionPlanIHReply{
|
||||
MissingActionPlans: []string{},
|
||||
MissingAccountActionPlans: map[string][]string{},
|
||||
BrokenReferences: map[string][]string{"AP2": {"1002"}},
|
||||
}
|
||||
if rply, err := GetAccountActionPlanIndexHealth(dm, -1, -1, -1, -1, false, false); err != nil {
|
||||
if rply, err := GetAccountActionPlansIndexHealth(dm, -1, -1, -1, -1, false, false); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(exp, rply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(exp), utils.ToJSON(rply))
|
||||
}
|
||||
}
|
||||
|
||||
func TestHealthReverseDestination(t *testing.T) {
|
||||
Cache.Clear(nil)
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
db := NewInternalDB(nil, nil, true)
|
||||
dm := NewDataManager(db, cfg.CacheCfg(), nil)
|
||||
|
||||
if err := dm.SetReverseDestination("DST1", []string{"1001", "1002"}, utils.NonTransactional); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := dm.SetReverseDestination("DST2", []string{"1001"}, utils.NonTransactional); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := dm.SetDestination(&Destination{
|
||||
Id: "DST2",
|
||||
Prefixes: []string{"1002"},
|
||||
}, utils.NonTransactional); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
exp := &ReverseDestinationsIHReply{
|
||||
MissingReverseDestinations: map[string][]string{"1002": {"DST2"}},
|
||||
BrokenReferences: map[string][]string{"DST1": nil, "DST2": {"1001"}},
|
||||
}
|
||||
if rply, err := GetReverseDestinationsIndexHealth(dm, -1, -1, -1, -1, false, false); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(exp, rply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(exp), utils.ToJSON(rply))
|
||||
}
|
||||
}
|
||||
|
||||
func TestHealthReverseDestination2(t *testing.T) {
|
||||
Cache.Clear(nil)
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
db := NewInternalDB(nil, nil, true)
|
||||
dm := NewDataManager(db, cfg.CacheCfg(), nil)
|
||||
|
||||
if err := dm.SetReverseDestination("DST1", []string{"1001"}, utils.NonTransactional); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := dm.SetReverseDestination("DST2", []string{"1001"}, utils.NonTransactional); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := dm.SetDestination(&Destination{
|
||||
Id: "DST2",
|
||||
Prefixes: []string{"1001"},
|
||||
}, utils.NonTransactional); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
exp := &ReverseDestinationsIHReply{
|
||||
MissingReverseDestinations: map[string][]string{},
|
||||
BrokenReferences: map[string][]string{"DST1": nil},
|
||||
}
|
||||
if rply, err := GetReverseDestinationsIndexHealth(dm, -1, -1, -1, -1, false, false); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(exp, rply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(exp), utils.ToJSON(rply))
|
||||
}
|
||||
}
|
||||
|
||||
func TestHealthReverseDestination3(t *testing.T) {
|
||||
Cache.Clear(nil)
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
db := NewInternalDB(nil, nil, true)
|
||||
dm := NewDataManager(db, cfg.CacheCfg(), nil)
|
||||
|
||||
if err := dm.SetReverseDestination("DST1", []string{"1002"}, utils.NonTransactional); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := dm.SetDestination(&Destination{
|
||||
Id: "DST1",
|
||||
Prefixes: []string{"1002"},
|
||||
}, utils.NonTransactional); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := dm.SetDestination(&Destination{
|
||||
Id: "DST2",
|
||||
Prefixes: []string{"1002"},
|
||||
}, utils.NonTransactional); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
exp := &ReverseDestinationsIHReply{
|
||||
MissingReverseDestinations: map[string][]string{"1002": {"DST2"}},
|
||||
BrokenReferences: map[string][]string{},
|
||||
}
|
||||
if rply, err := GetReverseDestinationsIndexHealth(dm, -1, -1, -1, -1, false, false); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(exp, rply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(exp), utils.ToJSON(rply))
|
||||
}
|
||||
}
|
||||
|
||||
func TestHealthReverseDestination4(t *testing.T) {
|
||||
Cache.Clear(nil)
|
||||
cfg := config.NewDefaultCGRConfig()
|
||||
db := NewInternalDB(nil, nil, true)
|
||||
dm := NewDataManager(db, cfg.CacheCfg(), nil)
|
||||
|
||||
if err := dm.SetReverseDestination("DST1", []string{"1002"}, utils.NonTransactional); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := dm.SetReverseDestination("DST2", []string{"1001", "1002"}, utils.NonTransactional); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := dm.SetDestination(&Destination{
|
||||
Id: "DST1",
|
||||
Prefixes: []string{"1002"},
|
||||
}, utils.NonTransactional); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := dm.SetDestination(&Destination{
|
||||
Id: "DST2",
|
||||
Prefixes: []string{"1001"},
|
||||
}, utils.NonTransactional); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
exp := &ReverseDestinationsIHReply{
|
||||
MissingReverseDestinations: map[string][]string{},
|
||||
BrokenReferences: map[string][]string{"DST2": {"1002"}},
|
||||
}
|
||||
if rply, err := GetReverseDestinationsIndexHealth(dm, -1, -1, -1, -1, false, false); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(exp, rply) {
|
||||
t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(exp), utils.ToJSON(rply))
|
||||
|
||||
337
utils/consts.go
337
utils/consts.go
@@ -1271,174 +1271,175 @@ const (
|
||||
|
||||
// APIerSv1 APIs
|
||||
const (
|
||||
ApierV1 = "ApierV1"
|
||||
ApierV2 = "ApierV2"
|
||||
APIerSv1 = "APIerSv1"
|
||||
APIerSv1ComputeFilterIndexes = "APIerSv1.ComputeFilterIndexes"
|
||||
APIerSv1ComputeFilterIndexIDs = "APIerSv1.ComputeFilterIndexIDs"
|
||||
APIerSv1GetAccountActionPlansIndexHealth = "APIerSv1.GetAccountActionPlansIndexHealth"
|
||||
APIerSv1Ping = "APIerSv1.Ping"
|
||||
APIerSv1SetDispatcherProfile = "APIerSv1.SetDispatcherProfile"
|
||||
APIerSv1GetDispatcherProfile = "APIerSv1.GetDispatcherProfile"
|
||||
APIerSv1GetDispatcherProfileIDs = "APIerSv1.GetDispatcherProfileIDs"
|
||||
APIerSv1RemoveDispatcherProfile = "APIerSv1.RemoveDispatcherProfile"
|
||||
APIerSv1SetBalances = "APIerSv1.SetBalances"
|
||||
APIerSv1SetDispatcherHost = "APIerSv1.SetDispatcherHost"
|
||||
APIerSv1GetDispatcherHost = "APIerSv1.GetDispatcherHost"
|
||||
APIerSv1GetDispatcherHostIDs = "APIerSv1.GetDispatcherHostIDs"
|
||||
APIerSv1RemoveDispatcherHost = "APIerSv1.RemoveDispatcherHost"
|
||||
APIerSv1GetEventCost = "APIerSv1.GetEventCost"
|
||||
APIerSv1LoadTariffPlanFromFolder = "APIerSv1.LoadTariffPlanFromFolder"
|
||||
APIerSv1ExportToFolder = "APIerSv1.ExportToFolder"
|
||||
APIerSv1GetCost = "APIerSv1.GetCost"
|
||||
APIerSv1SetBalance = "APIerSv1.SetBalance"
|
||||
APIerSv1GetFilter = "APIerSv1.GetFilter"
|
||||
APIerSv1GetFilterIndexes = "APIerSv1.GetFilterIndexes"
|
||||
APIerSv1RemoveFilterIndexes = "APIerSv1.RemoveFilterIndexes"
|
||||
APIerSv1RemoveFilter = "APIerSv1.RemoveFilter"
|
||||
APIerSv1SetFilter = "APIerSv1.SetFilter"
|
||||
APIerSv1GetFilterIDs = "APIerSv1.GetFilterIDs"
|
||||
APIerSv1GetRatingProfile = "APIerSv1.GetRatingProfile"
|
||||
APIerSv1RemoveRatingProfile = "APIerSv1.RemoveRatingProfile"
|
||||
APIerSv1SetRatingProfile = "APIerSv1.SetRatingProfile"
|
||||
APIerSv1GetRatingProfileIDs = "APIerSv1.GetRatingProfileIDs"
|
||||
APIerSv1SetDataDBVersions = "APIerSv1.SetDataDBVersions"
|
||||
APIerSv1SetStorDBVersions = "APIerSv1.SetStorDBVersions"
|
||||
APIerSv1GetAccountActionPlan = "APIerSv1.GetAccountActionPlan"
|
||||
APIerSv1ComputeActionPlanIndexes = "APIerSv1.ComputeActionPlanIndexes"
|
||||
APIerSv1GetActions = "APIerSv1.GetActions"
|
||||
APIerSv1GetActionPlan = "APIerSv1.GetActionPlan"
|
||||
APIerSv1GetActionPlanIDs = "APIerSv1.GetActionPlanIDs"
|
||||
APIerSv1GetRatingPlanIDs = "APIerSv1.GetRatingPlanIDs"
|
||||
APIerSv1GetRatingPlan = "APIerSv1.GetRatingPlan"
|
||||
APIerSv1RemoveRatingPlan = "APIerSv1.RemoveRatingPlan"
|
||||
APIerSv1GetDestination = "APIerSv1.GetDestination"
|
||||
APIerSv1RemoveDestination = "APIerSv1.RemoveDestination"
|
||||
APIerSv1GetReverseDestination = "APIerSv1.GetReverseDestination"
|
||||
APIerSv1AddBalance = "APIerSv1.AddBalance"
|
||||
APIerSv1DebitBalance = "APIerSv1.DebitBalance"
|
||||
APIerSv1SetAccount = "APIerSv1.SetAccount"
|
||||
APIerSv1GetAccountsCount = "APIerSv1.GetAccountsCount"
|
||||
APIerSv1GetDataDBVersions = "APIerSv1.GetDataDBVersions"
|
||||
APIerSv1GetStorDBVersions = "APIerSv1.GetStorDBVersions"
|
||||
APIerSv1GetCDRs = "APIerSv1.GetCDRs"
|
||||
APIerSv1GetTPAccountActions = "APIerSv1.GetTPAccountActions"
|
||||
APIerSv1SetTPAccountActions = "APIerSv1.SetTPAccountActions"
|
||||
APIerSv1GetTPAccountActionsByLoadId = "APIerSv1.GetTPAccountActionsByLoadId"
|
||||
APIerSv1GetTPAccountActionLoadIds = "APIerSv1.GetTPAccountActionLoadIds"
|
||||
APIerSv1GetTPAccountActionIds = "APIerSv1.GetTPAccountActionIds"
|
||||
APIerSv1RemoveTPAccountActions = "APIerSv1.RemoveTPAccountActions"
|
||||
APIerSv1GetTPActionPlan = "APIerSv1.GetTPActionPlan"
|
||||
APIerSv1SetTPActionPlan = "APIerSv1.SetTPActionPlan"
|
||||
APIerSv1GetTPActionPlanIds = "APIerSv1.GetTPActionPlanIds"
|
||||
APIerSv1SetTPActionTriggers = "APIerSv1.SetTPActionTriggers"
|
||||
APIerSv1GetTPActionTriggers = "APIerSv1.GetTPActionTriggers"
|
||||
APIerSv1RemoveTPActionTriggers = "APIerSv1.RemoveTPActionTriggers"
|
||||
APIerSv1GetTPActionTriggerIds = "APIerSv1.GetTPActionTriggerIds"
|
||||
APIerSv1GetTPActions = "APIerSv1.GetTPActions"
|
||||
APIerSv1RemoveTPActionPlan = "APIerSv1.RemoveTPActionPlan"
|
||||
APIerSv1GetTPAttributeProfile = "APIerSv1.GetTPAttributeProfile"
|
||||
APIerSv1SetTPAttributeProfile = "APIerSv1.SetTPAttributeProfile"
|
||||
APIerSv1GetTPAttributeProfileIds = "APIerSv1.GetTPAttributeProfileIds"
|
||||
APIerSv1RemoveTPAttributeProfile = "APIerSv1.RemoveTPAttributeProfile"
|
||||
APIerSv1GetTPCharger = "APIerSv1.GetTPCharger"
|
||||
APIerSv1SetTPCharger = "APIerSv1.SetTPCharger"
|
||||
APIerSv1RemoveTPCharger = "APIerSv1.RemoveTPCharger"
|
||||
APIerSv1GetTPChargerIDs = "APIerSv1.GetTPChargerIDs"
|
||||
APIerSv1SetTPFilterProfile = "APIerSv1.SetTPFilterProfile"
|
||||
APIerSv1GetTPFilterProfile = "APIerSv1.GetTPFilterProfile"
|
||||
APIerSv1GetTPFilterProfileIds = "APIerSv1.GetTPFilterProfileIds"
|
||||
APIerSv1RemoveTPFilterProfile = "APIerSv1.RemoveTPFilterProfile"
|
||||
APIerSv1GetTPDestination = "APIerSv1.GetTPDestination"
|
||||
APIerSv1SetTPDestination = "APIerSv1.SetTPDestination"
|
||||
APIerSv1GetTPDestinationIDs = "APIerSv1.GetTPDestinationIDs"
|
||||
APIerSv1RemoveTPDestination = "APIerSv1.RemoveTPDestination"
|
||||
APIerSv1GetTPResource = "APIerSv1.GetTPResource"
|
||||
APIerSv1SetTPResource = "APIerSv1.SetTPResource"
|
||||
APIerSv1RemoveTPResource = "APIerSv1.RemoveTPResource"
|
||||
APIerSv1SetTPRate = "APIerSv1.SetTPRate"
|
||||
APIerSv1GetTPRate = "APIerSv1.GetTPRate"
|
||||
APIerSv1RemoveTPRate = "APIerSv1.RemoveTPRate"
|
||||
APIerSv1GetTPRateIds = "APIerSv1.GetTPRateIds"
|
||||
APIerSv1SetTPThreshold = "APIerSv1.SetTPThreshold"
|
||||
APIerSv1GetTPThreshold = "APIerSv1.GetTPThreshold"
|
||||
APIerSv1GetTPThresholdIDs = "APIerSv1.GetTPThresholdIDs"
|
||||
APIerSv1RemoveTPThreshold = "APIerSv1.RemoveTPThreshold"
|
||||
APIerSv1SetTPStat = "APIerSv1.SetTPStat"
|
||||
APIerSv1GetTPStat = "APIerSv1.GetTPStat"
|
||||
APIerSv1RemoveTPStat = "APIerSv1.RemoveTPStat"
|
||||
APIerSv1GetTPDestinationRate = "APIerSv1.GetTPDestinationRate"
|
||||
APIerSv1SetTPRouteProfile = "APIerSv1.SetTPRouteProfile"
|
||||
APIerSv1GetTPRouteProfile = "APIerSv1.GetTPRouteProfile"
|
||||
APIerSv1GetTPRouteProfileIDs = "APIerSv1.GetTPRouteProfileIDs"
|
||||
APIerSv1RemoveTPRouteProfile = "APIerSv1.RemoveTPRouteProfile"
|
||||
APIerSv1GetTPDispatcherProfile = "APIerSv1.GetTPDispatcherProfile"
|
||||
APIerSv1SetTPDispatcherProfile = "APIerSv1.SetTPDispatcherProfile"
|
||||
APIerSv1RemoveTPDispatcherProfile = "APIerSv1.RemoveTPDispatcherProfile"
|
||||
APIerSv1GetTPDispatcherProfileIDs = "APIerSv1.GetTPDispatcherProfileIDs"
|
||||
APIerSv1GetTPSharedGroups = "APIerSv1.GetTPSharedGroups"
|
||||
APIerSv1SetTPSharedGroups = "APIerSv1.SetTPSharedGroups"
|
||||
APIerSv1GetTPSharedGroupIds = "APIerSv1.GetTPSharedGroupIds"
|
||||
APIerSv1RemoveTPSharedGroups = "APIerSv1.RemoveTPSharedGroups"
|
||||
APIerSv1ExportCDRs = "APIerSv1.ExportCDRs"
|
||||
APIerSv1GetTPRatingPlan = "APIerSv1.GetTPRatingPlan"
|
||||
APIerSv1SetTPRatingPlan = "APIerSv1.SetTPRatingPlan"
|
||||
APIerSv1GetTPRatingPlanIds = "APIerSv1.GetTPRatingPlanIds"
|
||||
APIerSv1RemoveTPRatingPlan = "APIerSv1.RemoveTPRatingPlan"
|
||||
APIerSv1SetTPActions = "APIerSv1.SetTPActions"
|
||||
APIerSv1GetTPActionIds = "APIerSv1.GetTPActionIds"
|
||||
APIerSv1RemoveTPActions = "APIerSv1.RemoveTPActions"
|
||||
APIerSv1SetActionPlan = "APIerSv1.SetActionPlan"
|
||||
APIerSv1ExecuteAction = "APIerSv1.ExecuteAction"
|
||||
APIerSv1SetTPRatingProfile = "APIerSv1.SetTPRatingProfile"
|
||||
APIerSv1GetTPRatingProfile = "APIerSv1.GetTPRatingProfile"
|
||||
APIerSv1RemoveTPRatingProfile = "APIerSv1.RemoveTPRatingProfile"
|
||||
APIerSv1SetTPDestinationRate = "APIerSv1.SetTPDestinationRate"
|
||||
APIerSv1GetTPRatingProfileLoadIds = "APIerSv1.GetTPRatingProfileLoadIds"
|
||||
APIerSv1GetTPRatingProfilesByLoadID = "APIerSv1.GetTPRatingProfilesByLoadID"
|
||||
APIerSv1GetTPRatingProfileIds = "APIerSv1.GetTPRatingProfileIds"
|
||||
APIerSv1GetTPDestinationRateIds = "APIerSv1.GetTPDestinationRateIds"
|
||||
APIerSv1RemoveTPDestinationRate = "APIerSv1.RemoveTPDestinationRate"
|
||||
APIerSv1ImportTariffPlanFromFolder = "APIerSv1.ImportTariffPlanFromFolder"
|
||||
APIerSv1ExportTPToFolder = "APIerSv1.ExportTPToFolder"
|
||||
APIerSv1LoadRatingPlan = "APIerSv1.LoadRatingPlan"
|
||||
APIerSv1LoadRatingProfile = "APIerSv1.LoadRatingProfile"
|
||||
APIerSv1LoadAccountActions = "APIerSv1.LoadAccountActions"
|
||||
APIerSv1SetActions = "APIerSv1.SetActions"
|
||||
APIerSv1AddTriggeredAction = "APIerSv1.AddTriggeredAction"
|
||||
APIerSv1GetAccountActionTriggers = "APIerSv1.GetAccountActionTriggers"
|
||||
APIerSv1AddAccountActionTriggers = "APIerSv1.AddAccountActionTriggers"
|
||||
APIerSv1ResetAccountActionTriggers = "APIerSv1.ResetAccountActionTriggers"
|
||||
APIerSv1SetAccountActionTriggers = "APIerSv1.SetAccountActionTriggers"
|
||||
APIerSv1RemoveAccountActionTriggers = "APIerSv1.RemoveAccountActionTriggers"
|
||||
APIerSv1GetScheduledActions = "APIerSv1.GetScheduledActions"
|
||||
APIerSv1RemoveActionTiming = "APIerSv1.RemoveActionTiming"
|
||||
APIerSv1ComputeReverseDestinations = "APIerSv1.ComputeReverseDestinations"
|
||||
APIerSv1ComputeAccountActionPlans = "APIerSv1.ComputeAccountActionPlans"
|
||||
APIerSv1SetDestination = "APIerSv1.SetDestination"
|
||||
APIerSv1GetDataCost = "APIerSv1.GetDataCost"
|
||||
APIerSv1ReplayFailedPosts = "APIerSv1.ReplayFailedPosts"
|
||||
APIerSv1RemoveAccount = "APIerSv1.RemoveAccount"
|
||||
APIerSv1DebitUsage = "APIerSv1.DebitUsage"
|
||||
APIerSv1GetCacheStats = "APIerSv1.GetCacheStats"
|
||||
APIerSv1ReloadCache = "APIerSv1.ReloadCache"
|
||||
APIerSv1GetActionTriggers = "APIerSv1.GetActionTriggers"
|
||||
APIerSv1SetActionTrigger = "APIerSv1.SetActionTrigger"
|
||||
APIerSv1RemoveActionPlan = "APIerSv1.RemoveActionPlan"
|
||||
APIerSv1RemoveActions = "APIerSv1.RemoveActions"
|
||||
APIerSv1RemoveBalances = "APIerSv1.RemoveBalances"
|
||||
APIerSv1GetLoadHistory = "APIerSv1.GetLoadHistory"
|
||||
APIerSv1GetLoadIDs = "APIerSv1.GetLoadIDs"
|
||||
APIerSv1GetLoadTimes = "APIerSv1.GetLoadTimes"
|
||||
APIerSv1ExecuteScheduledActions = "APIerSv1.ExecuteScheduledActions"
|
||||
APIerSv1GetSharedGroup = "APIerSv1.GetSharedGroup"
|
||||
APIerSv1RemoveActionTrigger = "APIerSv1.RemoveActionTrigger"
|
||||
APIerSv1GetAccount = "APIerSv1.GetAccount"
|
||||
APIerSv1GetAttributeProfileCount = "APIerSv1.GetAttributeProfileCount"
|
||||
APIerSv1GetMaxUsage = "APIerSv1.GetMaxUsage"
|
||||
APIerSv1GetTiming = "APIerSv1.GetTiming"
|
||||
APIerSv1SetTiming = "APIerSv1.SetTiming"
|
||||
APIerSv1RemoveTiming = "APIerSv1.RemoveTiming"
|
||||
ApierV1 = "ApierV1"
|
||||
ApierV2 = "ApierV2"
|
||||
APIerSv1 = "APIerSv1"
|
||||
APIerSv1ComputeFilterIndexes = "APIerSv1.ComputeFilterIndexes"
|
||||
APIerSv1ComputeFilterIndexIDs = "APIerSv1.ComputeFilterIndexIDs"
|
||||
APIerSv1GetAccountActionPlansIndexHealth = "APIerSv1.GetAccountActionPlansIndexHealth"
|
||||
APIerSv1GetReverseDestinationsIndexHealth = "APIerSv1.GetReverseDestinationsIndexHealth"
|
||||
APIerSv1Ping = "APIerSv1.Ping"
|
||||
APIerSv1SetDispatcherProfile = "APIerSv1.SetDispatcherProfile"
|
||||
APIerSv1GetDispatcherProfile = "APIerSv1.GetDispatcherProfile"
|
||||
APIerSv1GetDispatcherProfileIDs = "APIerSv1.GetDispatcherProfileIDs"
|
||||
APIerSv1RemoveDispatcherProfile = "APIerSv1.RemoveDispatcherProfile"
|
||||
APIerSv1SetBalances = "APIerSv1.SetBalances"
|
||||
APIerSv1SetDispatcherHost = "APIerSv1.SetDispatcherHost"
|
||||
APIerSv1GetDispatcherHost = "APIerSv1.GetDispatcherHost"
|
||||
APIerSv1GetDispatcherHostIDs = "APIerSv1.GetDispatcherHostIDs"
|
||||
APIerSv1RemoveDispatcherHost = "APIerSv1.RemoveDispatcherHost"
|
||||
APIerSv1GetEventCost = "APIerSv1.GetEventCost"
|
||||
APIerSv1LoadTariffPlanFromFolder = "APIerSv1.LoadTariffPlanFromFolder"
|
||||
APIerSv1ExportToFolder = "APIerSv1.ExportToFolder"
|
||||
APIerSv1GetCost = "APIerSv1.GetCost"
|
||||
APIerSv1SetBalance = "APIerSv1.SetBalance"
|
||||
APIerSv1GetFilter = "APIerSv1.GetFilter"
|
||||
APIerSv1GetFilterIndexes = "APIerSv1.GetFilterIndexes"
|
||||
APIerSv1RemoveFilterIndexes = "APIerSv1.RemoveFilterIndexes"
|
||||
APIerSv1RemoveFilter = "APIerSv1.RemoveFilter"
|
||||
APIerSv1SetFilter = "APIerSv1.SetFilter"
|
||||
APIerSv1GetFilterIDs = "APIerSv1.GetFilterIDs"
|
||||
APIerSv1GetRatingProfile = "APIerSv1.GetRatingProfile"
|
||||
APIerSv1RemoveRatingProfile = "APIerSv1.RemoveRatingProfile"
|
||||
APIerSv1SetRatingProfile = "APIerSv1.SetRatingProfile"
|
||||
APIerSv1GetRatingProfileIDs = "APIerSv1.GetRatingProfileIDs"
|
||||
APIerSv1SetDataDBVersions = "APIerSv1.SetDataDBVersions"
|
||||
APIerSv1SetStorDBVersions = "APIerSv1.SetStorDBVersions"
|
||||
APIerSv1GetAccountActionPlan = "APIerSv1.GetAccountActionPlan"
|
||||
APIerSv1ComputeActionPlanIndexes = "APIerSv1.ComputeActionPlanIndexes"
|
||||
APIerSv1GetActions = "APIerSv1.GetActions"
|
||||
APIerSv1GetActionPlan = "APIerSv1.GetActionPlan"
|
||||
APIerSv1GetActionPlanIDs = "APIerSv1.GetActionPlanIDs"
|
||||
APIerSv1GetRatingPlanIDs = "APIerSv1.GetRatingPlanIDs"
|
||||
APIerSv1GetRatingPlan = "APIerSv1.GetRatingPlan"
|
||||
APIerSv1RemoveRatingPlan = "APIerSv1.RemoveRatingPlan"
|
||||
APIerSv1GetDestination = "APIerSv1.GetDestination"
|
||||
APIerSv1RemoveDestination = "APIerSv1.RemoveDestination"
|
||||
APIerSv1GetReverseDestination = "APIerSv1.GetReverseDestination"
|
||||
APIerSv1AddBalance = "APIerSv1.AddBalance"
|
||||
APIerSv1DebitBalance = "APIerSv1.DebitBalance"
|
||||
APIerSv1SetAccount = "APIerSv1.SetAccount"
|
||||
APIerSv1GetAccountsCount = "APIerSv1.GetAccountsCount"
|
||||
APIerSv1GetDataDBVersions = "APIerSv1.GetDataDBVersions"
|
||||
APIerSv1GetStorDBVersions = "APIerSv1.GetStorDBVersions"
|
||||
APIerSv1GetCDRs = "APIerSv1.GetCDRs"
|
||||
APIerSv1GetTPAccountActions = "APIerSv1.GetTPAccountActions"
|
||||
APIerSv1SetTPAccountActions = "APIerSv1.SetTPAccountActions"
|
||||
APIerSv1GetTPAccountActionsByLoadId = "APIerSv1.GetTPAccountActionsByLoadId"
|
||||
APIerSv1GetTPAccountActionLoadIds = "APIerSv1.GetTPAccountActionLoadIds"
|
||||
APIerSv1GetTPAccountActionIds = "APIerSv1.GetTPAccountActionIds"
|
||||
APIerSv1RemoveTPAccountActions = "APIerSv1.RemoveTPAccountActions"
|
||||
APIerSv1GetTPActionPlan = "APIerSv1.GetTPActionPlan"
|
||||
APIerSv1SetTPActionPlan = "APIerSv1.SetTPActionPlan"
|
||||
APIerSv1GetTPActionPlanIds = "APIerSv1.GetTPActionPlanIds"
|
||||
APIerSv1SetTPActionTriggers = "APIerSv1.SetTPActionTriggers"
|
||||
APIerSv1GetTPActionTriggers = "APIerSv1.GetTPActionTriggers"
|
||||
APIerSv1RemoveTPActionTriggers = "APIerSv1.RemoveTPActionTriggers"
|
||||
APIerSv1GetTPActionTriggerIds = "APIerSv1.GetTPActionTriggerIds"
|
||||
APIerSv1GetTPActions = "APIerSv1.GetTPActions"
|
||||
APIerSv1RemoveTPActionPlan = "APIerSv1.RemoveTPActionPlan"
|
||||
APIerSv1GetTPAttributeProfile = "APIerSv1.GetTPAttributeProfile"
|
||||
APIerSv1SetTPAttributeProfile = "APIerSv1.SetTPAttributeProfile"
|
||||
APIerSv1GetTPAttributeProfileIds = "APIerSv1.GetTPAttributeProfileIds"
|
||||
APIerSv1RemoveTPAttributeProfile = "APIerSv1.RemoveTPAttributeProfile"
|
||||
APIerSv1GetTPCharger = "APIerSv1.GetTPCharger"
|
||||
APIerSv1SetTPCharger = "APIerSv1.SetTPCharger"
|
||||
APIerSv1RemoveTPCharger = "APIerSv1.RemoveTPCharger"
|
||||
APIerSv1GetTPChargerIDs = "APIerSv1.GetTPChargerIDs"
|
||||
APIerSv1SetTPFilterProfile = "APIerSv1.SetTPFilterProfile"
|
||||
APIerSv1GetTPFilterProfile = "APIerSv1.GetTPFilterProfile"
|
||||
APIerSv1GetTPFilterProfileIds = "APIerSv1.GetTPFilterProfileIds"
|
||||
APIerSv1RemoveTPFilterProfile = "APIerSv1.RemoveTPFilterProfile"
|
||||
APIerSv1GetTPDestination = "APIerSv1.GetTPDestination"
|
||||
APIerSv1SetTPDestination = "APIerSv1.SetTPDestination"
|
||||
APIerSv1GetTPDestinationIDs = "APIerSv1.GetTPDestinationIDs"
|
||||
APIerSv1RemoveTPDestination = "APIerSv1.RemoveTPDestination"
|
||||
APIerSv1GetTPResource = "APIerSv1.GetTPResource"
|
||||
APIerSv1SetTPResource = "APIerSv1.SetTPResource"
|
||||
APIerSv1RemoveTPResource = "APIerSv1.RemoveTPResource"
|
||||
APIerSv1SetTPRate = "APIerSv1.SetTPRate"
|
||||
APIerSv1GetTPRate = "APIerSv1.GetTPRate"
|
||||
APIerSv1RemoveTPRate = "APIerSv1.RemoveTPRate"
|
||||
APIerSv1GetTPRateIds = "APIerSv1.GetTPRateIds"
|
||||
APIerSv1SetTPThreshold = "APIerSv1.SetTPThreshold"
|
||||
APIerSv1GetTPThreshold = "APIerSv1.GetTPThreshold"
|
||||
APIerSv1GetTPThresholdIDs = "APIerSv1.GetTPThresholdIDs"
|
||||
APIerSv1RemoveTPThreshold = "APIerSv1.RemoveTPThreshold"
|
||||
APIerSv1SetTPStat = "APIerSv1.SetTPStat"
|
||||
APIerSv1GetTPStat = "APIerSv1.GetTPStat"
|
||||
APIerSv1RemoveTPStat = "APIerSv1.RemoveTPStat"
|
||||
APIerSv1GetTPDestinationRate = "APIerSv1.GetTPDestinationRate"
|
||||
APIerSv1SetTPRouteProfile = "APIerSv1.SetTPRouteProfile"
|
||||
APIerSv1GetTPRouteProfile = "APIerSv1.GetTPRouteProfile"
|
||||
APIerSv1GetTPRouteProfileIDs = "APIerSv1.GetTPRouteProfileIDs"
|
||||
APIerSv1RemoveTPRouteProfile = "APIerSv1.RemoveTPRouteProfile"
|
||||
APIerSv1GetTPDispatcherProfile = "APIerSv1.GetTPDispatcherProfile"
|
||||
APIerSv1SetTPDispatcherProfile = "APIerSv1.SetTPDispatcherProfile"
|
||||
APIerSv1RemoveTPDispatcherProfile = "APIerSv1.RemoveTPDispatcherProfile"
|
||||
APIerSv1GetTPDispatcherProfileIDs = "APIerSv1.GetTPDispatcherProfileIDs"
|
||||
APIerSv1GetTPSharedGroups = "APIerSv1.GetTPSharedGroups"
|
||||
APIerSv1SetTPSharedGroups = "APIerSv1.SetTPSharedGroups"
|
||||
APIerSv1GetTPSharedGroupIds = "APIerSv1.GetTPSharedGroupIds"
|
||||
APIerSv1RemoveTPSharedGroups = "APIerSv1.RemoveTPSharedGroups"
|
||||
APIerSv1ExportCDRs = "APIerSv1.ExportCDRs"
|
||||
APIerSv1GetTPRatingPlan = "APIerSv1.GetTPRatingPlan"
|
||||
APIerSv1SetTPRatingPlan = "APIerSv1.SetTPRatingPlan"
|
||||
APIerSv1GetTPRatingPlanIds = "APIerSv1.GetTPRatingPlanIds"
|
||||
APIerSv1RemoveTPRatingPlan = "APIerSv1.RemoveTPRatingPlan"
|
||||
APIerSv1SetTPActions = "APIerSv1.SetTPActions"
|
||||
APIerSv1GetTPActionIds = "APIerSv1.GetTPActionIds"
|
||||
APIerSv1RemoveTPActions = "APIerSv1.RemoveTPActions"
|
||||
APIerSv1SetActionPlan = "APIerSv1.SetActionPlan"
|
||||
APIerSv1ExecuteAction = "APIerSv1.ExecuteAction"
|
||||
APIerSv1SetTPRatingProfile = "APIerSv1.SetTPRatingProfile"
|
||||
APIerSv1GetTPRatingProfile = "APIerSv1.GetTPRatingProfile"
|
||||
APIerSv1RemoveTPRatingProfile = "APIerSv1.RemoveTPRatingProfile"
|
||||
APIerSv1SetTPDestinationRate = "APIerSv1.SetTPDestinationRate"
|
||||
APIerSv1GetTPRatingProfileLoadIds = "APIerSv1.GetTPRatingProfileLoadIds"
|
||||
APIerSv1GetTPRatingProfilesByLoadID = "APIerSv1.GetTPRatingProfilesByLoadID"
|
||||
APIerSv1GetTPRatingProfileIds = "APIerSv1.GetTPRatingProfileIds"
|
||||
APIerSv1GetTPDestinationRateIds = "APIerSv1.GetTPDestinationRateIds"
|
||||
APIerSv1RemoveTPDestinationRate = "APIerSv1.RemoveTPDestinationRate"
|
||||
APIerSv1ImportTariffPlanFromFolder = "APIerSv1.ImportTariffPlanFromFolder"
|
||||
APIerSv1ExportTPToFolder = "APIerSv1.ExportTPToFolder"
|
||||
APIerSv1LoadRatingPlan = "APIerSv1.LoadRatingPlan"
|
||||
APIerSv1LoadRatingProfile = "APIerSv1.LoadRatingProfile"
|
||||
APIerSv1LoadAccountActions = "APIerSv1.LoadAccountActions"
|
||||
APIerSv1SetActions = "APIerSv1.SetActions"
|
||||
APIerSv1AddTriggeredAction = "APIerSv1.AddTriggeredAction"
|
||||
APIerSv1GetAccountActionTriggers = "APIerSv1.GetAccountActionTriggers"
|
||||
APIerSv1AddAccountActionTriggers = "APIerSv1.AddAccountActionTriggers"
|
||||
APIerSv1ResetAccountActionTriggers = "APIerSv1.ResetAccountActionTriggers"
|
||||
APIerSv1SetAccountActionTriggers = "APIerSv1.SetAccountActionTriggers"
|
||||
APIerSv1RemoveAccountActionTriggers = "APIerSv1.RemoveAccountActionTriggers"
|
||||
APIerSv1GetScheduledActions = "APIerSv1.GetScheduledActions"
|
||||
APIerSv1RemoveActionTiming = "APIerSv1.RemoveActionTiming"
|
||||
APIerSv1ComputeReverseDestinations = "APIerSv1.ComputeReverseDestinations"
|
||||
APIerSv1ComputeAccountActionPlans = "APIerSv1.ComputeAccountActionPlans"
|
||||
APIerSv1SetDestination = "APIerSv1.SetDestination"
|
||||
APIerSv1GetDataCost = "APIerSv1.GetDataCost"
|
||||
APIerSv1ReplayFailedPosts = "APIerSv1.ReplayFailedPosts"
|
||||
APIerSv1RemoveAccount = "APIerSv1.RemoveAccount"
|
||||
APIerSv1DebitUsage = "APIerSv1.DebitUsage"
|
||||
APIerSv1GetCacheStats = "APIerSv1.GetCacheStats"
|
||||
APIerSv1ReloadCache = "APIerSv1.ReloadCache"
|
||||
APIerSv1GetActionTriggers = "APIerSv1.GetActionTriggers"
|
||||
APIerSv1SetActionTrigger = "APIerSv1.SetActionTrigger"
|
||||
APIerSv1RemoveActionPlan = "APIerSv1.RemoveActionPlan"
|
||||
APIerSv1RemoveActions = "APIerSv1.RemoveActions"
|
||||
APIerSv1RemoveBalances = "APIerSv1.RemoveBalances"
|
||||
APIerSv1GetLoadHistory = "APIerSv1.GetLoadHistory"
|
||||
APIerSv1GetLoadIDs = "APIerSv1.GetLoadIDs"
|
||||
APIerSv1GetLoadTimes = "APIerSv1.GetLoadTimes"
|
||||
APIerSv1ExecuteScheduledActions = "APIerSv1.ExecuteScheduledActions"
|
||||
APIerSv1GetSharedGroup = "APIerSv1.GetSharedGroup"
|
||||
APIerSv1RemoveActionTrigger = "APIerSv1.RemoveActionTrigger"
|
||||
APIerSv1GetAccount = "APIerSv1.GetAccount"
|
||||
APIerSv1GetAttributeProfileCount = "APIerSv1.GetAttributeProfileCount"
|
||||
APIerSv1GetMaxUsage = "APIerSv1.GetMaxUsage"
|
||||
APIerSv1GetTiming = "APIerSv1.GetTiming"
|
||||
APIerSv1SetTiming = "APIerSv1.SetTiming"
|
||||
APIerSv1RemoveTiming = "APIerSv1.RemoveTiming"
|
||||
)
|
||||
|
||||
// APIerSv1 TP APIs
|
||||
|
||||
Reference in New Issue
Block a user