diff --git a/apier/v1/filter_indexes.go b/apier/v1/filter_indexes.go index eb4a5f956..42413bf69 100644 --- a/apier/v1/filter_indexes.go +++ b/apier/v1/filter_indexes.go @@ -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 diff --git a/apier/v1/filter_indexes_it_test.go b/apier/v1/filter_indexes_it_test.go index 7845beccc..03647f394 100644 --- a/apier/v1/filter_indexes_it_test.go +++ b/apier/v1/filter_indexes_it_test.go @@ -20,7 +20,6 @@ along with this program. If not, see 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) } } diff --git a/apier/v1/filterindexecache_it_test.go b/apier/v1/filterindexecache_it_test.go index 372a0be1c..f37bcf11d 100644 --- a/apier/v1/filterindexecache_it_test.go +++ b/apier/v1/filterindexecache_it_test.go @@ -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, diff --git a/console/filter_indexes_remove.go b/console/filter_indexes_remove.go new file mode 100644 index 000000000..4ec1d4217 --- /dev/null +++ b/console/filter_indexes_remove.go @@ -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 +*/ + +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 +}