Partialy added filter_indexes_remove

This commit is contained in:
Trial97
2018-10-31 17:38:13 +02:00
committed by Dan Christian Bogos
parent 765950daba
commit 90f163ea12
4 changed files with 214 additions and 110 deletions

View File

@@ -20,9 +20,10 @@ package v1
import (
"fmt"
"strings"
"github.com/cgrates/cgrates/engine"
"github.com/cgrates/cgrates/utils"
"strings"
)
type AttrGetFilterIndexes struct {
@@ -35,6 +36,42 @@ type AttrGetFilterIndexes struct {
utils.Paginator
}
type AttrRemFilterIndexes struct {
Tenant string
Context string
ItemType string
}
func (self *ApierV1) RemoveFilterIndexes(arg AttrRemFilterIndexes, reply *string) (err error) {
if missing := utils.MissingStructFields(&arg, []string{"Tenant", "ItemType"}); len(missing) != 0 { //Params missing
return utils.NewErrMandatoryIeMissing(missing...)
}
key := arg.Tenant
switch arg.ItemType {
case utils.MetaThresholds:
arg.ItemType = utils.ThresholdProfilePrefix
case utils.MetaSuppliers:
arg.ItemType = utils.SupplierProfilePrefix
case utils.MetaStats:
arg.ItemType = utils.StatQueueProfilePrefix
case utils.MetaResources:
arg.ItemType = utils.ResourceProfilesPrefix
case utils.MetaChargers:
arg.ItemType = utils.ChargerProfilePrefix
case utils.MetaAttributes:
if missing := utils.MissingStructFields(&arg, []string{"Context"}); len(missing) != 0 { //Params missing
return utils.NewErrMandatoryIeMissing(missing...)
}
arg.ItemType = utils.AttributeProfilePrefix
key = utils.ConcatenatedKey(arg.Tenant, arg.Context)
}
if err = self.DataManager.RemoveFilterIndexes(utils.PrefixToIndexCache[arg.ItemType], key); err != nil {
return err
}
*reply = utils.OK
return nil
}
func (self *ApierV1) GetFilterIndexes(arg AttrGetFilterIndexes, reply *[]string) (err error) {
var indexes map[string]utils.StringMap
var indexedSlice []string

View File

@@ -20,7 +20,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
package v1
import (
"fmt"
"net/rpc"
"net/rpc/jsonrpc"
"path"
@@ -35,15 +34,9 @@ import (
var (
tFIdxRpc *rpc.Client
rdsITdb *engine.RedisStorage
mgoITdb *engine.MongoStorage
onStor *engine.DataManager
err error
indexes map[string]utils.StringMap
)
var sTestsFilterIndexesSV1 = []func(t *testing.T){
testFlush,
testV1FIdxLoadConfig,
testV1FIdxdxInitDataDb,
testV1FIdxResetStorDb,
@@ -81,7 +74,7 @@ var sTestsFilterIndexesSV1 = []func(t *testing.T){
testV1FIdxSecondComputeAttributeProfileIndexes,
testV1FIdxRemoveAttributeProfile,
testFlush,
testV1FIdxdxInitDataDb,
testV1FIdxPopulateDatabase,
testV1FIdxGetFilterIndexes1,
testV1FIdxGetFilterIndexes2,
@@ -93,16 +86,6 @@ var sTestsFilterIndexesSV1 = []func(t *testing.T){
// Test start here
func TestFIdxV1ITMySQL(t *testing.T) {
cfg, _ := config.NewDefaultCGRConfig()
rdsITdb, err = engine.NewRedisStorage(
fmt.Sprintf("%s:%s", cfg.DataDbCfg().DataDbHost, cfg.DataDbCfg().DataDbPort),
10, cfg.DataDbCfg().DataDbPass, cfg.GeneralCfg().DBDataEncoding,
utils.REDIS_MAX_CONNS, nil, "")
if err != nil {
t.Fatal("Could not connect to Redis", err.Error())
}
onStor = engine.NewDataManager(rdsITdb)
tSv1ConfDIR = "tutmysql"
for _, stest := range sTestsFilterIndexesSV1 {
t.Run(tSv1ConfDIR, stest)
@@ -110,18 +93,6 @@ func TestFIdxV1ITMySQL(t *testing.T) {
}
func TestFIdxV1ITMongo(t *testing.T) {
cdrsMongoCfgPath := path.Join(*dataDir, "conf", "samples", "tutmongo")
mgoITCfg, err := config.NewCGRConfigFromFolder(cdrsMongoCfgPath)
if err != nil {
t.Fatal(err)
}
if mgoITdb, err = engine.NewMongoStorage(mgoITCfg.DataDbCfg().DataDbHost,
mgoITCfg.DataDbCfg().DataDbPort, mgoITCfg.DataDbCfg().DataDbName,
mgoITCfg.DataDbCfg().DataDbUser, mgoITCfg.DataDbCfg().DataDbPass,
utils.DataDB, nil, mgoITCfg.CacheCfg()); err != nil {
t.Fatal(err)
}
onStor = engine.NewDataManager(mgoITdb)
tSv1ConfDIR = "tutmongo"
time.Sleep(time.Duration(2 * time.Second)) // give time for engine to start
for _, stest := range sTestsFilterIndexesSV1 {
@@ -130,9 +101,8 @@ func TestFIdxV1ITMongo(t *testing.T) {
}
func testV1FIdxLoadConfig(t *testing.T) {
var err error
tSv1CfgPath = path.Join(*dataDir, "conf", "samples", tSv1ConfDIR)
if tSv1Cfg, err = config.NewCGRConfigFromFolder(tSv1CfgPath); err != nil {
if tSv1Cfg, err := config.NewCGRConfigFromFolder(tSv1CfgPath); err != nil {
t.Error(err)
}
switch tSv1ConfDIR {
@@ -156,13 +126,6 @@ func testV1FIdxResetStorDb(t *testing.T) {
}
}
func testFlush(t *testing.T) {
onStor.DataDB().Flush("")
if err := engine.SetDBVersions(onStor.DataDB()); err != nil {
t.Error("Error ", err.Error())
}
}
func testV1FIdxStartEngine(t *testing.T) {
if _, err := engine.StopStartEngine(tSv1CfgPath, thdsDelay); err != nil {
t.Fatal(err)
@@ -234,12 +197,17 @@ func testV1FIdxSetThresholdProfile(t *testing.T) {
} else if !reflect.DeepEqual(tPrfl, reply) {
t.Errorf("Expecting: %+v, received: %+v", tPrfl, reply)
}
if err = onStor.RemoveFilterIndexes(utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
tenant); err != nil {
if err := tFIdxRpc.Call("ApierV1.RemoveFilterIndexes", &AttrRemFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
Tenant: tenant}, &result); err != nil {
t.Error(err)
} else if result != utils.OK {
t.Error("Unexpected reply returned", result)
}
if indexes, err = onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
}
@@ -265,10 +233,10 @@ func testV1FIdxComputeThresholdsIndexes(t *testing.T) {
}
expectedIDX := map[string]utils.StringMap{
"*string:Account:1001": {"TEST_PROFILE1": true}}
indexes, err := onStor.GetFilterIndexes(
utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
tenant, engine.MetaString, nil)
if err != nil {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedIDX, indexes) {
@@ -332,14 +300,17 @@ func testV1FIdxSetSecondThresholdProfile(t *testing.T) {
} else if !reflect.DeepEqual(tPrfl, reply) {
t.Errorf("Expecting: %+v, received: %+v", tPrfl, reply)
}
if err = onStor.RemoveFilterIndexes(
utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
tenant); err != nil {
if err := tFIdxRpc.Call("ApierV1.RemoveFilterIndexes", &AttrRemFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
Tenant: tenant}, &result); err != nil {
t.Error(err)
} else if result != utils.OK {
t.Error("Unexpected reply returned", result)
}
if _, err = onStor.GetFilterIndexes(
utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
}
@@ -366,10 +337,10 @@ func testV1FIdxSecondComputeThresholdsIndexes(t *testing.T) {
}
expectedIDX := map[string]utils.StringMap{
"*string:Account:1002": {"TEST_PROFILE2": true}}
indexes, err := onStor.GetFilterIndexes(
utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
tenant, engine.MetaString, nil)
if err != nil {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
if !reflect.DeepEqual(expectedIDX, indexes) {
@@ -401,10 +372,10 @@ func testV1FIdxThirdComputeThresholdsIndexes(t *testing.T) {
"*string:Account:1002": {
"TEST_PROFILE2": true},
}
indexes, err := onStor.GetFilterIndexes(
utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
tenant, engine.MetaString, nil)
if err != nil {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
if !reflect.DeepEqual(expectedIDX, indexes) {
@@ -455,8 +426,11 @@ func testV1FIdxRemoveThresholdProfile(t *testing.T) {
err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
if _, err = onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
tenant, engine.MetaString, nil); err != nil && err != utils.ErrNotFound {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ThresholdProfilePrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err != nil &&
err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
}
@@ -528,12 +502,17 @@ func testV1FIdxSetStatQueueProfileIndexes(t *testing.T) {
} else if !reflect.DeepEqual(statConfig, reply) {
t.Errorf("Expecting: %+v, received: %+v", statConfig, reply)
}
if err = onStor.RemoveFilterIndexes(utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
tenant); err != nil {
if err := tFIdxRpc.Call("ApierV1.RemoveFilterIndexes", &AttrRemFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
Tenant: tenant}, &result); err != nil {
t.Error(err)
} else if result != utils.OK {
t.Error("Unexpected reply returned", result)
}
if indexes, err = onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
}
@@ -558,10 +537,10 @@ func testV1FIdxComputeStatQueueProfileIndexes(t *testing.T) {
}
expectedIDX := map[string]utils.StringMap{
"*string:Account:1001": {"TEST_PROFILE1": true}}
indexes, err := onStor.GetFilterIndexes(
utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
tenant, engine.MetaString, nil)
if err != nil {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedIDX, indexes) {
@@ -636,14 +615,17 @@ func testV1FIdxSetSecondStatQueueProfileIndexes(t *testing.T) {
} else if !reflect.DeepEqual(statConfig, reply) {
t.Errorf("Expecting: %+v, received: %+v", statConfig, reply)
}
if err = onStor.RemoveFilterIndexes(
utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
tenant); err != nil {
if err := tFIdxRpc.Call("ApierV1.RemoveFilterIndexes", &AttrRemFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
Tenant: tenant}, &result); err != nil {
t.Error(err)
} else if result != utils.OK {
t.Error("Unexpected reply returned", result)
}
if indexes, err = onStor.GetFilterIndexes(
utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
}
@@ -670,10 +652,10 @@ func testV1FIdxSecondComputeStatQueueProfileIndexes(t *testing.T) {
}
expectedIDX := map[string]utils.StringMap{
"*string:Account:1001": {"TEST_PROFILE2": true}}
indexes, err := onStor.GetFilterIndexes(
utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
tenant, engine.MetaString, nil)
if err != nil {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedIDX, indexes) {
@@ -723,8 +705,11 @@ func testV1FIdxRemoveStatQueueProfile(t *testing.T) {
err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
if _, err = onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
tenant, engine.MetaString, nil); err != nil && err != utils.ErrNotFound {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.StatQueueProfilePrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
}
@@ -784,12 +769,17 @@ func testV1FIdxSetResourceProfileIndexes(t *testing.T) {
} else if result != utils.OK {
t.Error("Unexpected reply returned", result)
}
if err = onStor.RemoveFilterIndexes(utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
tenant); err != nil {
if err := tFIdxRpc.Call("ApierV1.RemoveFilterIndexes", &AttrRemFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
Tenant: tenant}, &result); err != nil {
t.Error(err)
} else if result != utils.OK {
t.Error("Unexpected reply returned", result)
}
if indexes, err = onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
}
@@ -814,10 +804,10 @@ func testV1FIdxComputeResourceProfileIndexes(t *testing.T) {
}
expectedIDX := map[string]utils.StringMap{
"*string:Account:1001": {"RCFG1": true}}
indexes, err := onStor.GetFilterIndexes(
utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
tenant, engine.MetaString, nil)
if err != nil {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedIDX, indexes) {
@@ -880,13 +870,17 @@ func testV1FIdxSetSecondResourceProfileIndexes(t *testing.T) {
} else if result != utils.OK {
t.Error("Unexpected reply returned", result)
}
if err = onStor.RemoveFilterIndexes(utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
tenant); err != nil {
if err := tFIdxRpc.Call("ApierV1.RemoveFilterIndexes", &AttrRemFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
Tenant: tenant}, &result); err != nil {
t.Error(err)
} else if result != utils.OK {
t.Error("Unexpected reply returned", result)
}
if indexes, err = onStor.GetFilterIndexes(
utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
}
@@ -912,9 +906,10 @@ func testV1FIdxSecondComputeResourceProfileIndexes(t *testing.T) {
t.Errorf("Error: %+v", reply2)
}
expectedIDX := map[string]utils.StringMap{"*string:Account:1001": {"RCFG2": true}}
indexes, err := onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
tenant, engine.MetaString, nil)
if err != nil {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err != nil {
t.Error(err)
}
if !reflect.DeepEqual(expectedIDX, indexes) {
@@ -961,8 +956,10 @@ func testV1FIdxRemoveResourceProfile(t *testing.T) {
&reply2); err == nil || err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
if _, err = onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
tenant, engine.MetaString, nil); err != nil && err != utils.ErrNotFound {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.ResourceProfilesPrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err != nil && err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
}
@@ -1028,12 +1025,17 @@ func testV1FIdxSetSupplierProfileIndexes(t *testing.T) {
} else if !reflect.DeepEqual(splPrf, reply) {
t.Errorf("Expecting: %+v, received: %+v", splPrf, reply)
}
if err = onStor.RemoveFilterIndexes(utils.PrefixToIndexCache[utils.SupplierProfilePrefix],
tenant); err != nil {
if err := tFIdxRpc.Call("ApierV1.RemoveFilterIndexes", &AttrRemFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.SupplierProfilePrefix],
Tenant: tenant}, &result); err != nil {
t.Error(err)
} else if result != utils.OK {
t.Error("Unexpected reply returned", result)
}
if indexes, err = onStor.GetFilterIndexes(utils.PrefixToIndexCache[utils.SupplierProfilePrefix],
tenant, engine.MetaString, nil); err != utils.ErrNotFound {
var indexes []string
if err := tFIdxRpc.Call("ApierV1.GetFilterIndexes", &AttrGetFilterIndexes{
ItemType: utils.PrefixToIndexCache[utils.SupplierProfilePrefix],
Tenant: tenant, FilterType: engine.MetaString}, &indexes); err.Error() != utils.ErrNotFound.Error() {
t.Error(err)
}
}

View File

@@ -36,7 +36,7 @@ import (
var tFIdxCaRpc *rpc.Client
var sTestsFilterIndexesSV1Ca = []func(t *testing.T){
testFlush,
testV1FIdxdxInitDataDb,
testV1FIdxCaLoadConfig,
testV1FIdxCadxInitDataDb,
testV1FIdxCaResetStorDb,
@@ -51,7 +51,7 @@ var sTestsFilterIndexesSV1Ca = []func(t *testing.T){
testV1FIdxCaUpdateThresholdProfileFromTP,
testV1FIdxCaRemoveThresholdProfile,
testFlush,
testV1FIdxdxInitDataDb,
testV1FIdxCaGetStatQueuesWithNotFound,
testV1FIdxCaSetStatQueueProfile,
testV1FIdxCaFromFolder,
@@ -60,7 +60,7 @@ var sTestsFilterIndexesSV1Ca = []func(t *testing.T){
testV1FIdxCaUpdateStatQueueProfileFromTP,
testV1FIdxCaRemoveStatQueueProfile,
testFlush,
testV1FIdxdxInitDataDb,
testV1FIdxCaProcessAttributeProfileEventWithNotFound,
testV1FIdxCaSetAttributeProfile,
testV1FIdxCaFromFolder,
@@ -69,7 +69,7 @@ var sTestsFilterIndexesSV1Ca = []func(t *testing.T){
testV1FIdxCaUpdateAttributeProfileFromTP,
testV1FIdxCaRemoveAttributeProfile,
testFlush,
testV1FIdxdxInitDataDb,
testV1FIdxCaGetResourceProfileWithNotFound,
testV1FIdxCaSetResourceProfile,
testV1FIdxCaFromFolder,

View File

@@ -0,0 +1,65 @@
/*
Real-time Online/Offline Charging System (OCS) for Telecom & ISP environments
Copyright (C) ITsysCOM GmbH
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>
*/
package console
import (
"github.com/cgrates/cgrates/apier/v1"
)
func init() {
c := &CmdRemoveFilterIndexes{
name: "filter_indexes_remove",
rpcMethod: "ApierV1.RemoveFilterIndexes",
rpcParams: &v1.AttrRemFilterIndexes{},
}
commands[c.Name()] = c
c.CommandExecuter = &CommandExecuter{c}
}
// Commander implementation
type CmdRemoveFilterIndexes struct {
name string
rpcMethod string
rpcParams *v1.AttrRemFilterIndexes
*CommandExecuter
}
func (self *CmdRemoveFilterIndexes) Name() string {
return self.name
}
func (self *CmdRemoveFilterIndexes) RpcMethod() string {
return self.rpcMethod
}
func (self *CmdRemoveFilterIndexes) RpcParams(reset bool) interface{} {
if reset || self.rpcParams == nil {
self.rpcParams = &v1.AttrRemFilterIndexes{}
}
return self.rpcParams
}
func (self *CmdRemoveFilterIndexes) PostprocessRpcParams() error {
return nil
}
func (self *CmdRemoveFilterIndexes) RpcResult() interface{} {
var atr string
return &atr
}