From 999aabdf9fe52eca66a5e8228be05dec7f7357a3 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 20 Jan 2020 14:44:36 +0200 Subject: [PATCH] Updated FieldName for attributes --- apier/v1/apier2_it_test.go | 2 +- apier/v1/attributes_it_test.go | 110 +++++----- apier/v1/cdre_it_test.go | 8 +- apier/v1/chargers_it_test.go | 2 +- apier/v1/dm_remote_it_test.go | 8 +- apier/v1/filter_indexes.go | 42 ++-- apier/v1/filter_indexes_it_test.go | 64 +++--- apier/v1/filterindexecache_it_test.go | 178 +++++++-------- apier/v1/filters_it_test.go | 18 +- apier/v1/stats_it_test.go | 12 +- apier/v1/tpattributes_it_test.go | 14 +- apier/v1/tpfilters_it_test.go | 22 +- apier/v2/attributes_it_test.go | 24 +- apier/v2/cdrs_it_test.go | 8 +- cdrc/csv_it_test.go | 12 +- cdrc/fwv_it_test.go | 6 +- cdrc/xml_it_test.go | 12 +- config/config_defaults.go | 8 +- config/config_json_test.go | 16 +- config/config_test.go | 16 +- data/conf/cgrates/cgrates.json | 8 +- .../samples/loaders/tutmongo/cgrates.json | 2 +- .../samples/loaders/tutmysql/cgrates.json | 2 +- .../samples/tutmysql_internal/cgrates.json | 6 +- .../mysql/create_tariffplan_tables.sql | 12 +- .../postgres/create_tariffplan_tables.sql | 12 +- data/tariffplans/cluelrn/Attributes.csv | 2 +- data/tariffplans/cluelrn/Filters.csv | 2 +- data/tariffplans/dispatchers/Attributes.csv | 2 +- .../dispatchers_gob/Attributes.csv | 2 +- data/tariffplans/dnsagent/Attributes.csv | 2 +- data/tariffplans/oldtutorial/Attributes.csv | 2 +- data/tariffplans/oldtutorial/Filters.csv | 2 +- data/tariffplans/precache/Attributes.csv | 2 +- data/tariffplans/precache/Filters.csv | 2 +- data/tariffplans/testit/Attributes.csv | 2 +- data/tariffplans/testit/Filters.csv | 2 +- data/tariffplans/testtp/Attributes.csv | 2 +- data/tariffplans/testtp/Filters.csv | 2 +- data/tariffplans/tutorial/Attributes.csv | 2 +- data/tariffplans/tutorial/Filters.csv | 2 +- data/tariffplans/tutorial2/Attributes.csv | 2 +- dispatchers/attributes_it_test.go | 6 +- dispatchers/dispatchers_it_test.go | 4 +- docs/filters.rst | 18 +- docs/tariff_plans.rst | 6 +- engine/action.go | 2 +- engine/attributes.go | 14 +- engine/attributes_test.go | 206 +++++++++--------- engine/chargers_test.go | 30 +-- engine/filterindexer.go | 20 +- engine/filterindexer_it_test.go | 34 +-- engine/filters.go | 56 ++--- engine/filters_test.go | 74 +++---- engine/libattributes.go | 22 +- engine/libattributes_test.go | 16 +- engine/libtest.go | 4 +- engine/loader_csv_test.go | 40 ++-- engine/model_helpers.go | 32 +-- engine/model_helpers_test.go | 96 ++++---- engine/models.go | 8 +- engine/onstor_it_test.go | 40 ++-- engine/resources_test.go | 54 ++--- engine/stats_test.go | 54 ++--- engine/suppliers_test.go | 42 ++-- engine/thresholds_test.go | 30 +-- general_tests/cdrs_processevent_it_test.go | 4 +- general_tests/filters_it_test.go | 36 +-- general_tests/sentinel_it_test.go | 12 +- general_tests/sessions_concur_test.go | 4 +- loaders/libloader_test.go | 22 +- loaders/loader_it_test.go | 4 +- loaders/loader_test.go | 54 ++--- migrator/alias.go | 6 +- migrator/alias_it_test.go | 12 +- migrator/alias_test.go | 40 ++-- migrator/attributes.go | 6 +- migrator/attributes_it_test.go | 6 +- migrator/attributes_test.go | 8 +- migrator/derived_chargers.go | 6 +- migrator/derived_chargers_it_test.go | 14 +- migrator/derived_chargers_test.go | 80 +++---- migrator/filters.go | 30 +-- migrator/filters_it_test.go | 56 ++--- migrator/filters_test.go | 84 +++---- migrator/tp_filters_it_test.go | 6 +- migrator/user.go | 12 +- migrator/user_it_test.go | 20 +- migrator/user_test.go | 70 +++--- sessions/sessions.go | 2 +- sessions/sessions_test.go | 6 +- utils/apitpdata.go | 10 +- utils/apitpdata_test.go | 12 +- utils/consts.go | 1 + 94 files changed, 1099 insertions(+), 1088 deletions(-) diff --git a/apier/v1/apier2_it_test.go b/apier/v1/apier2_it_test.go index 8b63ff3f2..9a6087840 100644 --- a/apier/v1/apier2_it_test.go +++ b/apier/v1/apier2_it_test.go @@ -151,7 +151,7 @@ func testAPIerVerifyAttributesAfterLoad(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{}, - FieldName: utils.MetaReq + utils.NestingSep + "Password", + Path: utils.MetaReq + utils.NestingSep + "Password", Type: utils.META_CONSTANT, Value: config.NewRSRParsersMustCompile("CGRateS.org", true, utils.INFIELD_SEP), }, diff --git a/apier/v1/attributes_it_test.go b/apier/v1/attributes_it_test.go index 190a82564..eb601e74b 100644 --- a/apier/v1/attributes_it_test.go +++ b/apier/v1/attributes_it_test.go @@ -188,12 +188,12 @@ func testAttributeSGetAttributeForEvent(t *testing.T) { ActivationTime: time.Date(2014, 1, 14, 0, 0, 0, 0, time.UTC)}, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, }, Weight: 10.0, @@ -240,8 +240,8 @@ func testAttributeSGetAttributeForEventNotFound(t *testing.T) { ActivationTime: time.Date(2014, 1, 14, 0, 0, 0, 0, time.UTC)}, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, }, Weight: 10.0, @@ -292,8 +292,8 @@ func testAttributeSGetAttributeForEventWithMetaAnyContext(t *testing.T) { ActivationTime: time.Date(2014, 1, 14, 0, 0, 0, 0, time.UTC)}, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, }, Weight: 10.0, @@ -443,12 +443,12 @@ func testAttributeSProcessEventWithNoneSubstitute(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{"*string:~*req.Account:1008"}, - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, + Path: utils.MetaReq + utils.NestingSep + utils.Account, Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Value: config.NewRSRParsersMustCompile(utils.MetaRemove, true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Value: config.NewRSRParsersMustCompile(utils.MetaRemove, true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -511,12 +511,12 @@ func testAttributeSProcessEventWithNoneSubstitute2(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{"*string:~*req.Account:1008"}, - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, + Path: utils.MetaReq + utils.NestingSep + utils.Account, Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Value: config.NewRSRParsersMustCompile(utils.MetaRemove, true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Value: config.NewRSRParsersMustCompile(utils.MetaRemove, true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -590,12 +590,12 @@ func testAttributeSProcessEventWithNoneSubstitute3(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{"*string:~*req.Account:1008"}, - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, + Path: utils.MetaReq + utils.NestingSep + utils.Account, Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, { FilterIDs: []string{"*string:~*req.Subject:1008"}, - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, + Path: utils.MetaReq + utils.NestingSep + utils.Subject, Value: config.NewRSRParsersMustCompile(utils.MetaRemove, true, utils.INFIELD_SEP), }, }, @@ -643,8 +643,8 @@ func testAttributeSProcessEventWithHeader(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Value: config.NewRSRParsersMustCompile("~*req.Field1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Value: config.NewRSRParsersMustCompile("~*req.Field1", true, utils.INFIELD_SEP), }, }, Blocker: true, @@ -725,8 +725,8 @@ func testAttributeSSetAlsPrf(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "FL1", - Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "FL1", + Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -753,12 +753,12 @@ func testAttributeSSetAlsPrf(t *testing.T) { func testAttributeSUpdateAlsPrf(t *testing.T) { alsPrf.Attributes = []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "FL1", - Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "FL1", + Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + "FL2", - Value: config.NewRSRParsersMustCompile("Al2", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "FL2", + Value: config.NewRSRParsersMustCompile("Al2", true, utils.INFIELD_SEP), }, } alsPrf.Compile() @@ -818,7 +818,7 @@ func testAttributeSSetAlsPrf2(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, + Path: utils.MetaReq + utils.NestingSep + utils.Subject, Value: config.RSRParsers{ &config.RSRParser{ Rules: "roam", @@ -862,7 +862,7 @@ func testAttributeSSetAlsPrf3(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, + Path: utils.MetaReq + utils.NestingSep + utils.Subject, Value: config.RSRParsers{ &config.RSRParser{ Rules: "", @@ -893,7 +893,7 @@ func testAttributeSSetAlsPrf4(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, + Path: utils.MetaReq + utils.NestingSep + utils.Subject, Value: config.RSRParsers{ &config.RSRParser{}, }, @@ -930,8 +930,8 @@ func testAttributeSProcessEventWithSearchAndReplace(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Category", - Value: config.NewRSRParsersMustCompile("~*req.Category:s/(.*)/${1}_suffix/", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Category", + Value: config.NewRSRParsersMustCompile("~*req.Category:s/(.*)/${1}_suffix/", true, utils.INFIELD_SEP), }, }, Blocker: true, @@ -988,8 +988,8 @@ func testAttributeSProcessWithMultipleRuns(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Weight: 10, @@ -1006,8 +1006,8 @@ func testAttributeSProcessWithMultipleRuns(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -1024,8 +1024,8 @@ func testAttributeSProcessWithMultipleRuns(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field3", - Value: config.NewRSRParsersMustCompile("Value3", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field3", + Value: config.NewRSRParsersMustCompile("Value3", true, utils.INFIELD_SEP), }, }, Weight: 30, @@ -1098,8 +1098,8 @@ func testAttributeSProcessWithMultipleRuns2(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Weight: 10, @@ -1116,8 +1116,8 @@ func testAttributeSProcessWithMultipleRuns2(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -1134,8 +1134,8 @@ func testAttributeSProcessWithMultipleRuns2(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field3", - Value: config.NewRSRParsersMustCompile("Value3", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field3", + Value: config.NewRSRParsersMustCompile("Value3", true, utils.INFIELD_SEP), }, }, Weight: 30, @@ -1217,8 +1217,8 @@ func testAttributeSCachingMetaNone(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Weight: 10, @@ -1276,8 +1276,8 @@ func testAttributeSCachingMetaLoad(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Weight: 10, @@ -1368,8 +1368,8 @@ func testAttributeSCachingMetaReload1(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Weight: 10, @@ -1427,8 +1427,8 @@ func testAttributeSCachingMetaReload2(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Weight: 10, @@ -1467,8 +1467,8 @@ func testAttributeSCachingMetaReload2(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Weight: 10, @@ -1506,8 +1506,8 @@ func testAttributeSCachingMetaRemove(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Weight: 10, @@ -1556,8 +1556,8 @@ func testAttributeSCachingMetaRemove(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Weight: 10, diff --git a/apier/v1/cdre_it_test.go b/apier/v1/cdre_it_test.go index 19d822a55..0049e36eb 100755 --- a/apier/v1/cdre_it_test.go +++ b/apier/v1/cdre_it_test.go @@ -291,12 +291,12 @@ func testCDReAddAttributes(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Value: config.NewRSRParsersMustCompile("ATTR_SUBJECT", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Value: config.NewRSRParsersMustCompile("ATTR_SUBJECT", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + utils.Category, - Value: config.NewRSRParsersMustCompile("ATTR_CATEGORY", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Category, + Value: config.NewRSRParsersMustCompile("ATTR_CATEGORY", true, utils.INFIELD_SEP), }, }, Weight: 20, diff --git a/apier/v1/chargers_it_test.go b/apier/v1/chargers_it_test.go index b47217ff7..0d9cd8194 100755 --- a/apier/v1/chargers_it_test.go +++ b/apier/v1/chargers_it_test.go @@ -166,7 +166,7 @@ func testChargerSLoadAddCharger(t *testing.T) { Contexts: []string{"simpleauth"}, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Password", + Path: utils.MetaReq + utils.NestingSep + "Password", Value: config.RSRParsers{ &config.RSRParser{ Rules: "CGRateS.org", diff --git a/apier/v1/dm_remote_it_test.go b/apier/v1/dm_remote_it_test.go index 80d6eef80..aa6a9ee38 100644 --- a/apier/v1/dm_remote_it_test.go +++ b/apier/v1/dm_remote_it_test.go @@ -239,7 +239,7 @@ func testInternalRemoteITGetAttribute(t *testing.T) { Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Password", + Path: utils.MetaReq + utils.NestingSep + "Password", FilterIDs: []string{}, Type: utils.META_CONSTANT, Value: config.NewRSRParsersMustCompile("CGRateS.org", true, utils.INFIELD_SEP), @@ -463,9 +463,9 @@ func testInternalRemoteITGetFilter(t *testing.T) { ID: "FLTR_ACNT_1001", Rules: []*engine.FilterRule{ { - Type: "*string", - FieldName: "~*req.Account", - Values: []string{"1001"}, + Type: utils.MetaString, + Element: "~*req.Account", + Values: []string{"1001"}, }, }, ActivationInterval: &utils.ActivationInterval{ diff --git a/apier/v1/filter_indexes.go b/apier/v1/filter_indexes.go index 86ba9e370..06083d158 100644 --- a/apier/v1/filter_indexes.go +++ b/apier/v1/filter_indexes.go @@ -492,9 +492,9 @@ func (api *ApierV1) computeThresholdIndexes(tenant string, thIDs *[]string, ID: th.ID, Rules: []*engine.FilterRule{ { - Type: utils.META_NONE, - FieldName: utils.META_ANY, - Values: []string{utils.META_ANY}, + Type: utils.META_NONE, + Element: utils.META_ANY, + Values: []string{utils.META_ANY}, }, }, } @@ -562,9 +562,9 @@ func (api *ApierV1) computeAttributeIndexes(tenant, context string, attrIDs *[]s ID: ap.ID, Rules: []*engine.FilterRule{ { - Type: utils.META_NONE, - FieldName: utils.META_ANY, - Values: []string{utils.META_ANY}, + Type: utils.META_NONE, + Element: utils.META_ANY, + Values: []string{utils.META_ANY}, }, }, } @@ -628,9 +628,9 @@ func (api *ApierV1) computeResourceIndexes(tenant string, rsIDs *[]string, ID: rp.ID, Rules: []*engine.FilterRule{ { - Type: utils.META_NONE, - FieldName: utils.META_ANY, - Values: []string{utils.META_ANY}, + Type: utils.META_NONE, + Element: utils.META_ANY, + Values: []string{utils.META_ANY}, }, }, } @@ -694,9 +694,9 @@ func (api *ApierV1) computeStatIndexes(tenant string, stIDs *[]string, ID: sqp.ID, Rules: []*engine.FilterRule{ { - Type: utils.META_NONE, - FieldName: utils.META_ANY, - Values: []string{utils.META_ANY}, + Type: utils.META_NONE, + Element: utils.META_ANY, + Values: []string{utils.META_ANY}, }, }, } @@ -760,9 +760,9 @@ func (api *ApierV1) computeSupplierIndexes(tenant string, sppIDs *[]string, ID: spp.ID, Rules: []*engine.FilterRule{ { - Type: utils.META_NONE, - FieldName: utils.META_ANY, - Values: []string{utils.META_ANY}, + Type: utils.META_NONE, + Element: utils.META_ANY, + Values: []string{utils.META_ANY}, }, }, } @@ -826,9 +826,9 @@ func (api *ApierV1) computeChargerIndexes(tenant string, cppIDs *[]string, ID: cpp.ID, Rules: []*engine.FilterRule{ { - Type: utils.META_NONE, - FieldName: utils.META_ANY, - Values: []string{utils.META_ANY}, + Type: utils.META_NONE, + Element: utils.META_ANY, + Values: []string{utils.META_ANY}, }, }, } @@ -896,9 +896,9 @@ func (api *ApierV1) computeDispatcherIndexes(tenant, context string, dspIDs *[]s ID: dsp.ID, Rules: []*engine.FilterRule{ { - Type: utils.META_NONE, - FieldName: utils.META_ANY, - Values: []string{utils.META_ANY}, + Type: utils.META_NONE, + Element: utils.META_ANY, + Values: []string{utils.META_ANY}, }, }, } diff --git a/apier/v1/filter_indexes_it_test.go b/apier/v1/filter_indexes_it_test.go index 4067bd642..8eb9853d4 100644 --- a/apier/v1/filter_indexes_it_test.go +++ b/apier/v1/filter_indexes_it_test.go @@ -158,9 +158,9 @@ func testV1FIdxSetThresholdProfile(t *testing.T) { Tenant: tenant, ID: "TestFilter", Rules: []*engine.FilterRule{{ - FieldName: "~*req.Account", - Type: utils.MetaString, - Values: []string{"1001"}, + Element: "~*req.Account", + Type: utils.MetaString, + Values: []string{"1001"}, }}, ActivationInterval: &utils.ActivationInterval{ ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -252,9 +252,9 @@ func testV1FIdxSetSecondThresholdProfile(t *testing.T) { Tenant: tenant, ID: "TestFilter2", Rules: []*engine.FilterRule{{ - FieldName: "~*req.Account", - Type: utils.MetaString, - Values: []string{"1002"}, + Element: "~*req.Account", + Type: utils.MetaString, + Values: []string{"1002"}, }}, ActivationInterval: &utils.ActivationInterval{ ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -417,9 +417,9 @@ func testV1FIdxSetStatQueueProfileIndexes(t *testing.T) { Tenant: tenant, ID: "FLTR_1", Rules: []*engine.FilterRule{{ - FieldName: "~*req.Account", - Type: utils.MetaString, - Values: []string{"1001"}, + Element: "~*req.Account", + Type: utils.MetaString, + Values: []string{"1001"}, }}, ActivationInterval: &utils.ActivationInterval{ ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -520,9 +520,9 @@ func testV1FIdxSetSecondStatQueueProfileIndexes(t *testing.T) { Tenant: tenant, ID: "FLTR_2", Rules: []*engine.FilterRule{{ - FieldName: "~*req.Account", - Type: utils.MetaString, - Values: []string{"1001"}, + Element: "~*req.Account", + Type: utils.MetaString, + Values: []string{"1001"}, }}, ActivationInterval: &utils.ActivationInterval{ ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -666,9 +666,9 @@ func testV1FIdxSetResourceProfileIndexes(t *testing.T) { Tenant: tenant, ID: "FLTR_RES_RCFG1", Rules: []*engine.FilterRule{{ - FieldName: "~*req.Account", - Type: utils.MetaString, - Values: []string{"1001"}, + Element: "~*req.Account", + Type: utils.MetaString, + Values: []string{"1001"}, }}, ActivationInterval: &utils.ActivationInterval{ ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -759,9 +759,9 @@ func testV1FIdxSetSecondResourceProfileIndexes(t *testing.T) { Tenant: tenant, ID: "FLTR_2", Rules: []*engine.FilterRule{{ - FieldName: "~*req.Account", - Type: utils.MetaString, - Values: []string{"1001"}, + Element: "~*req.Account", + Type: utils.MetaString, + Values: []string{"1001"}, }}, ActivationInterval: &utils.ActivationInterval{ ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -895,9 +895,9 @@ func testV1FIdxSetSupplierProfileIndexes(t *testing.T) { ID: "FLTR_1", Rules: []*engine.FilterRule{ { - FieldName: "~*req.Account", - Type: utils.MetaString, - Values: []string{"1001"}, + Element: "~*req.Account", + Type: utils.MetaString, + Values: []string{"1001"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -994,9 +994,9 @@ func testV1FIdxSetSecondSupplierProfileIndexes(t *testing.T) { Tenant: tenant, ID: "FLTR_2", Rules: []*engine.FilterRule{{ - FieldName: "~*req.Account", - Type: utils.MetaString, - Values: []string{"1001"}, + Element: "~*req.Account", + Type: utils.MetaString, + Values: []string{"1001"}, }}, ActivationInterval: &utils.ActivationInterval{ ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -1137,9 +1137,9 @@ func testV1FIdxSetAttributeProfileIndexes(t *testing.T) { Tenant: tenant, ID: "FLTR_1", Rules: []*engine.FilterRule{{ - FieldName: "~*req.Account", - Type: utils.MetaString, - Values: []string{"1001"}, + Element: "~*req.Account", + Type: utils.MetaString, + Values: []string{"1001"}, }}, ActivationInterval: &utils.ActivationInterval{ ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -1171,7 +1171,7 @@ func testV1FIdxSetAttributeProfileIndexes(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{"*string:~*req.FL1:In1"}, - FieldName: "FL1", + Path: "FL1", Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), }, }, @@ -1245,9 +1245,9 @@ func testV1FIdxSetSecondAttributeProfileIndexes(t *testing.T) { Tenant: tenant, ID: "FLTR_2", Rules: []*engine.FilterRule{{ - FieldName: "~*req.Account", - Type: utils.MetaString, - Values: []string{"1001"}, + Element: "~*req.Account", + Type: utils.MetaString, + Values: []string{"1001"}, }}, ActivationInterval: &utils.ActivationInterval{ ActivationTime: time.Date(2014, 7, 14, 14, 25, 0, 0, time.UTC), @@ -1279,7 +1279,7 @@ func testV1FIdxSetSecondAttributeProfileIndexes(t *testing.T) { }, Attributes: []*engine.Attribute{{ FilterIDs: []string{"*string:~*req.FL1:In1"}, - FieldName: "FL1", + Path: "FL1", Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), }}, Weight: 20, diff --git a/apier/v1/filterindexecache_it_test.go b/apier/v1/filterindexecache_it_test.go index 0cef72519..c0b01503c 100644 --- a/apier/v1/filterindexecache_it_test.go +++ b/apier/v1/filterindexecache_it_test.go @@ -163,14 +163,14 @@ func testV1FIdxCaSetThresholdProfile(t *testing.T) { ID: "TestFilter", Rules: []*engine.FilterRule{ { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, - Type: "*string", - Values: []string{"1001"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaString, + Values: []string{"1001"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, - Type: "*string", - Values: []string{utils.BalanceUpdate}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, + Type: utils.MetaString, + Values: []string{utils.BalanceUpdate}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -257,14 +257,14 @@ func testV1FIdxCaUpdateThresholdProfile(t *testing.T) { ID: "TestFilter2", Rules: []*engine.FilterRule{ { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, - Type: "*string", - Values: []string{"1002"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaString, + Values: []string{"1002"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, - Type: "*string", - Values: []string{utils.AccountUpdate}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, + Type: utils.MetaString, + Values: []string{utils.AccountUpdate}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -337,14 +337,14 @@ func testV1FIdxCaUpdateThresholdProfileFromTP(t *testing.T) { ID: "TestFilter3", Rules: []*engine.FilterRule{ { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, - Type: "*string", - Values: []string{"1003"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaString, + Values: []string{"1003"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, - Type: "*string", - Values: []string{utils.BalanceUpdate}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, + Type: utils.MetaString, + Values: []string{utils.BalanceUpdate}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -500,14 +500,14 @@ func testV1FIdxCaSetStatQueueProfile(t *testing.T) { ID: "FLTR_1", Rules: []*engine.FilterRule{ { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, - Type: "*string", - Values: []string{"1001"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaString, + Values: []string{"1001"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, - Type: "*string", - Values: []string{utils.AccountUpdate}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, + Type: utils.MetaString, + Values: []string{utils.AccountUpdate}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -654,14 +654,14 @@ func testV1FIdxCaUpdateStatQueueProfile(t *testing.T) { ID: "FLTR_2", Rules: []*engine.FilterRule{ { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, - Type: "*string", - Values: []string{"1003"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaString, + Values: []string{"1003"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, - Type: "*string", - Values: []string{utils.BalanceUpdate}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, + Type: utils.MetaString, + Values: []string{utils.BalanceUpdate}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -729,14 +729,14 @@ func testV1FIdxCaUpdateStatQueueProfileFromTP(t *testing.T) { ID: "FLTR_3", Rules: []*engine.FilterRule{ { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, - Type: "*string", - Values: []string{"1003"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaString, + Values: []string{"1003"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, - Type: "*string", - Values: []string{utils.AccountUpdate}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.EventType, + Type: utils.MetaString, + Values: []string{utils.AccountUpdate}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -890,14 +890,14 @@ func testV1FIdxCaSetAttributeProfile(t *testing.T) { ID: "TestFilter", Rules: []*engine.FilterRule{ { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, - Type: "*string", - Values: []string{"1009"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaString, + Values: []string{"1009"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, - Type: "*string", - Values: []string{"+491511231234"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, + Type: utils.MetaString, + Values: []string{"+491511231234"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -922,12 +922,12 @@ func testV1FIdxCaSetAttributeProfile(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -983,14 +983,14 @@ func testV1FIdxCaUpdateAttributeProfile(t *testing.T) { ID: "TestFilter2", Rules: []*engine.FilterRule{ { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, - Type: "*string", - Values: []string{"2009"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaString, + Values: []string{"2009"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, - Type: "*string", - Values: []string{"+492511231234"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, + Type: utils.MetaString, + Values: []string{"+492511231234"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -1015,12 +1015,12 @@ func testV1FIdxCaUpdateAttributeProfile(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -1056,14 +1056,14 @@ func testV1FIdxCaUpdateAttributeProfileFromTP(t *testing.T) { ID: "TestFilter3", Rules: []*engine.FilterRule{ { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, - Type: "*string", - Values: []string{"3009"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaString, + Values: []string{"3009"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, - Type: "*string", - Values: []string{"+492511231234"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, + Type: utils.MetaString, + Values: []string{"+492511231234"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -1209,19 +1209,19 @@ func testV1FIdxCaSetResourceProfile(t *testing.T) { ID: "FLTR_RES_RCFG1", Rules: []*engine.FilterRule{ { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, - Type: "*string", - Values: []string{"1001"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaString, + Values: []string{"1001"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Subject, - Type: "*string", - Values: []string{"1002"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Subject, + Type: utils.MetaString, + Values: []string{"1002"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, - Type: "*string", - Values: []string{"1001"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, + Type: utils.MetaString, + Values: []string{"1001"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -1338,19 +1338,19 @@ func testV1FIdxCaUpdateResourceProfile(t *testing.T) { ID: "FLTR_RES_RCFG2", Rules: []*engine.FilterRule{ { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, - Type: "*string", - Values: []string{"2002"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaString, + Values: []string{"2002"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Subject, - Type: "*string", - Values: []string{"2001"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Subject, + Type: utils.MetaString, + Values: []string{"2001"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, - Type: "*string", - Values: []string{"2002"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, + Type: utils.MetaString, + Values: []string{"2002"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -1414,19 +1414,19 @@ func testV1FIdxCaUpdateResourceProfileFromTP(t *testing.T) { ID: "FLTR_RES_RCFG3", Rules: []*engine.FilterRule{ { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, - Type: "*string", - Values: []string{"1002"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaString, + Values: []string{"1002"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Subject, - Type: "*string", - Values: []string{"1001"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Subject, + Type: utils.MetaString, + Values: []string{"1001"}, }, { - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, - Type: "*string", - Values: []string{"1002"}, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, + Type: utils.MetaString, + Values: []string{"1002"}, }, }, ActivationInterval: &utils.ActivationInterval{ diff --git a/apier/v1/filters_it_test.go b/apier/v1/filters_it_test.go index 2937499db..c765c4f40 100644 --- a/apier/v1/filters_it_test.go +++ b/apier/v1/filters_it_test.go @@ -125,9 +125,9 @@ func testFilterSetFilter(t *testing.T) { ID: "Filter1", Rules: []*engine.FilterRule{ { - FieldName: "*string", - Type: "~Account", - Values: []string{"1001", "1002"}, + Element: utils.MetaString, + Type: "~Account", + Values: []string{"1001", "1002"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -167,14 +167,14 @@ func testFilterGetFilterAfterSet(t *testing.T) { func testFilterUpdateFilter(t *testing.T) { filter.Rules = []*engine.FilterRule{ { - FieldName: utils.MetaString, - Type: "~Account", - Values: []string{"1001", "1002"}, + Element: utils.MetaString, + Type: "~Account", + Values: []string{"1001", "1002"}, }, { - FieldName: utils.MetaPrefix, - Type: "~Destination", - Values: []string{"10", "20"}, + Element: utils.MetaPrefix, + Type: "~Destination", + Values: []string{"10", "20"}, }, } var result string diff --git a/apier/v1/stats_it_test.go b/apier/v1/stats_it_test.go index 97d410af3..1599df60b 100644 --- a/apier/v1/stats_it_test.go +++ b/apier/v1/stats_it_test.go @@ -340,9 +340,9 @@ func testV1STSSetStatQueueProfile(t *testing.T) { ID: "FLTR_1", Rules: []*engine.FilterRule{ { - FieldName: "~*req.Account", - Type: "*string", - Values: []string{"1001"}, + Element: "~*req.Account", + Type: utils.MetaString, + Values: []string{"1001"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -420,9 +420,9 @@ func testV1STSUpdateStatQueueProfile(t *testing.T) { ID: "FLTR_2", Rules: []*engine.FilterRule{ { - FieldName: "~*req.Account", - Type: "*string", - Values: []string{"1001"}, + Element: "~*req.Account", + Type: utils.MetaString, + Values: []string{"1001"}, }, }, ActivationInterval: &utils.ActivationInterval{ diff --git a/apier/v1/tpattributes_it_test.go b/apier/v1/tpattributes_it_test.go index f3499baa3..1155cd844 100644 --- a/apier/v1/tpattributes_it_test.go +++ b/apier/v1/tpattributes_it_test.go @@ -138,7 +138,7 @@ func testTPAlsPrfSetTPAlsPrf(t *testing.T) { Contexts: []string{"con1"}, Attributes: []*utils.TPAttribute{ &utils.TPAttribute{ - FieldName: utils.MetaReq + utils.NestingSep + "FL1", + Path: utils.MetaReq + utils.NestingSep + "FL1", Value: "Al1", FilterIDs: []string{}, }, @@ -180,12 +180,12 @@ func testTPAlsPrfGetTPAlsPrfIDs(t *testing.T) { func testTPAlsPrfUpdateTPAlsPrf(t *testing.T) { tpAlsPrf.Attributes = []*utils.TPAttribute{ &utils.TPAttribute{ - FieldName: utils.MetaReq + utils.NestingSep + "FL1", + Path: utils.MetaReq + utils.NestingSep + "FL1", Value: "Al1", FilterIDs: []string{}, }, &utils.TPAttribute{ - FieldName: utils.MetaReq + utils.NestingSep + "FL2", + Path: utils.MetaReq + utils.NestingSep + "FL2", Value: "Al2", FilterIDs: []string{}, }, @@ -212,12 +212,12 @@ func testTPAlsPrfGetTPAlsPrfAfterUpdate(t *testing.T) { Contexts: []string{"con1"}, Attributes: []*utils.TPAttribute{ &utils.TPAttribute{ - FieldName: utils.MetaReq + utils.NestingSep + "FL2", + Path: utils.MetaReq + utils.NestingSep + "FL2", Value: "Al2", FilterIDs: []string{}, }, &utils.TPAttribute{ - FieldName: utils.MetaReq + utils.NestingSep + "FL1", + Path: utils.MetaReq + utils.NestingSep + "FL1", Value: "Al1", FilterIDs: []string{}, }, @@ -226,7 +226,7 @@ func testTPAlsPrfGetTPAlsPrfAfterUpdate(t *testing.T) { } sort.Strings(revTPAlsPrf.FilterIDs) sort.Slice(revTPAlsPrf.Attributes, func(i, j int) bool { - return strings.Compare(revTPAlsPrf.Attributes[i].FieldName, revTPAlsPrf.Attributes[j].FieldName) == -1 + return strings.Compare(revTPAlsPrf.Attributes[i].Path, revTPAlsPrf.Attributes[j].Path) == -1 }) if err := tpAlsPrfRPC.Call(utils.ApierV1GetTPAttributeProfile, &utils.TPTntID{TPid: "TP1", Tenant: "cgrates.org", ID: "Attr1"}, &reply); err != nil { @@ -234,7 +234,7 @@ func testTPAlsPrfGetTPAlsPrfAfterUpdate(t *testing.T) { } sort.Strings(reply.FilterIDs) sort.Slice(reply.Attributes, func(i, j int) bool { - return strings.Compare(reply.Attributes[i].FieldName, reply.Attributes[j].FieldName) == -1 + return strings.Compare(reply.Attributes[i].Path, reply.Attributes[j].Path) == -1 }) if !reflect.DeepEqual(tpAlsPrf, reply) && !reflect.DeepEqual(revTPAlsPrf, reply) { t.Errorf("Expecting : %+v, \n received: %+v", utils.ToJSON(tpAlsPrf), utils.ToJSON(reply)) diff --git a/apier/v1/tpfilters_it_test.go b/apier/v1/tpfilters_it_test.go index 2bea05161..69d696913 100644 --- a/apier/v1/tpfilters_it_test.go +++ b/apier/v1/tpfilters_it_test.go @@ -141,9 +141,9 @@ func testTPFilterSetTPFilter(t *testing.T) { ID: "Filter", Filters: []*utils.TPFilter{ &utils.TPFilter{ - Type: utils.MetaString, - FieldName: "Account", - Values: []string{"1001", "1002"}, + Type: utils.MetaString, + Element: "Account", + Values: []string{"1001", "1002"}, }, }, ActivationInterval: &utils.TPActivationInterval{ @@ -187,20 +187,20 @@ func testTPFilterGetFilterIds(t *testing.T) { func testTPFilterUpdateTPFilter(t *testing.T) { tpFilter.Filters = []*utils.TPFilter{ &utils.TPFilter{ - Type: utils.MetaString, - FieldName: "Account", - Values: []string{"1001", "1002"}, + Type: utils.MetaString, + Element: "Account", + Values: []string{"1001", "1002"}, }, &utils.TPFilter{ - Type: utils.MetaPrefix, - FieldName: "Destination", - Values: []string{"10", "20"}, + Type: utils.MetaPrefix, + Element: "Destination", + Values: []string{"10", "20"}, }, } sort.Slice(tpFilter.Filters, func(i, j int) bool { sort.Strings(tpFilter.Filters[i].Values) sort.Strings(tpFilter.Filters[j].Values) - return strings.Compare(tpFilter.Filters[i].FieldName, tpFilter.Filters[j].FieldName) == -1 + return strings.Compare(tpFilter.Filters[i].Element, tpFilter.Filters[j].Element) == -1 }) var result string if err := tpFilterRPC.Call(utils.ApierV1SetTPFilterProfile, tpFilter, &result); err != nil { @@ -219,7 +219,7 @@ func testTPFilterGetTPFilterAfterUpdate(t *testing.T) { sort.Slice(reply.Filters, func(i, j int) bool { sort.Strings(reply.Filters[i].Values) sort.Strings(reply.Filters[j].Values) - return strings.Compare(reply.Filters[i].FieldName, reply.Filters[j].FieldName) == -1 + return strings.Compare(reply.Filters[i].Element, reply.Filters[j].Element) == -1 }) if !reflect.DeepEqual(tpFilter, reply) { t.Errorf("Expecting : %+v, received: %+v", utils.ToJSON(tpFilter), utils.ToJSON(reply)) diff --git a/apier/v2/attributes_it_test.go b/apier/v2/attributes_it_test.go index 90d8ef6d0..e050e1b66 100644 --- a/apier/v2/attributes_it_test.go +++ b/apier/v2/attributes_it_test.go @@ -127,8 +127,8 @@ func testAttributeSSetAlsPrf(t *testing.T) { }, Attributes: []*engine.ExternalAttribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Account", - Value: "1001", + Path: utils.MetaReq + utils.NestingSep + "Account", + Value: "1001", }, }, Weight: 20, @@ -153,8 +153,8 @@ func testAttributeSSetAlsPrf(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Account", - Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Account", + Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -185,12 +185,12 @@ func testAttributeSUpdateAlsPrf(t *testing.T) { }, Attributes: []*engine.ExternalAttribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Account", - Value: "1001", + Path: utils.MetaReq + utils.NestingSep + "Account", + Value: "1001", }, { - FieldName: utils.MetaReq + utils.NestingSep + "Subject", - Value: "~*req.Account", + Path: utils.MetaReq + utils.NestingSep + "Subject", + Value: "~*req.Account", }, }, Weight: 20, @@ -215,12 +215,12 @@ func testAttributeSUpdateAlsPrf(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Account", - Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Account", + Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + "Subject", - Value: config.NewRSRParsersMustCompile("~*req.Account", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Subject", + Value: config.NewRSRParsersMustCompile("~*req.Account", true, utils.INFIELD_SEP), }, }, Weight: 20, diff --git a/apier/v2/cdrs_it_test.go b/apier/v2/cdrs_it_test.go index 4ed8c010b..f8c015af4 100644 --- a/apier/v2/cdrs_it_test.go +++ b/apier/v2/cdrs_it_test.go @@ -408,8 +408,8 @@ func testV2CDRsDifferentTenants(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaTenant, - Type: utils.META_CONSTANT, + Path: utils.MetaTenant, + Type: utils.META_CONSTANT, Value: config.RSRParsers{ &config.RSRParser{ Rules: "CustomTenant", @@ -418,8 +418,8 @@ func testV2CDRsDifferentTenants(t *testing.T) { }, }, { - FieldName: utils.MetaReq + utils.NestingSep + utils.Tenant, - Type: utils.META_CONSTANT, + Path: utils.MetaReq + utils.NestingSep + utils.Tenant, + Type: utils.META_CONSTANT, Value: config.RSRParsers{ &config.RSRParser{ Rules: "CustomTenant", diff --git a/cdrc/csv_it_test.go b/cdrc/csv_it_test.go index 2e040aa41..fc5ff534e 100644 --- a/cdrc/csv_it_test.go +++ b/cdrc/csv_it_test.go @@ -517,9 +517,9 @@ func TestCsvIT5AddFilters(t *testing.T) { ID: "FLTR_CDRC_ACC", Rules: []*engine.FilterRule{ { - Type: "*string", - FieldName: "~*req.3", - Values: []string{"1002"}, + Type: utils.MetaString, + Element: "~*req.3", + Values: []string{"1002"}, }, }, }, @@ -536,9 +536,9 @@ func TestCsvIT5AddFilters(t *testing.T) { ID: "FLTR_CDRC_ACC", Rules: []*engine.FilterRule{ { - Type: "*string", - FieldName: "~*req.3", - Values: []string{"1001"}, + Type: utils.MetaString, + Element: "~*req.3", + Values: []string{"1001"}, }, }, }, diff --git a/cdrc/fwv_it_test.go b/cdrc/fwv_it_test.go index 658278e0f..225c4864d 100644 --- a/cdrc/fwv_it_test.go +++ b/cdrc/fwv_it_test.go @@ -331,9 +331,9 @@ func TestFwvit3AddFilters(t *testing.T) { ID: "FLTR_FWV", Rules: []*engine.FilterRule{ { - Type: "*string", - FieldName: "0-10", - Values: []string{"CDR0000010"}, + Type: utils.MetaString, + Element: "0-10", + Values: []string{"CDR0000010"}, }, }, }, diff --git a/cdrc/xml_it_test.go b/cdrc/xml_it_test.go index 3faa4429f..d2be26e5f 100644 --- a/cdrc/xml_it_test.go +++ b/cdrc/xml_it_test.go @@ -467,14 +467,14 @@ func TestXmlIT5AddFilters(t *testing.T) { ID: "FLTR_XML", Rules: []*engine.FilterRule{ { - Type: "*string", - FieldName: "~*req.broadWorksCDR.cdrData.basicModule.userNumber", - Values: []string{"1002"}, + Type: utils.MetaString, + Element: "~*req.broadWorksCDR.cdrData.basicModule.userNumber", + Values: []string{"1002"}, }, { - Type: "*string", - FieldName: "~*req.broadWorksCDR.cdrData.headerModule.type", - Values: []string{"Normal"}, + Type: utils.MetaString, + Element: "~*req.broadWorksCDR.cdrData.headerModule.type", + Values: []string{"Normal"}, }, }, }, diff --git a/config/config_defaults.go b/config/config_defaults.go index 956ae1073..29aeae6b2 100755 --- a/config/config_defaults.go +++ b/config/config_defaults.go @@ -643,7 +643,7 @@ const CGRATES_CFG_JSON = ` {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*variable", "value": "~3"}, {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*variable", "value": "~4"}, {"tag": "AttributeFilterIDs", "field_id": "AttributeFilterIDs", "type": "*variable", "value": "~5"}, - {"tag": "FieldName", "field_id": "FieldName", "type": "*variable", "value": "~6"}, + {"tag": "Path", "field_id": "Path", "type": "*variable", "value": "~6"}, {"tag": "Type", "field_id": "Type", "type": "*variable", "value": "~7"}, {"tag": "Value", "field_id": "Value", "type": "*variable", "value": "~8"}, {"tag": "Blocker", "field_id": "Blocker", "type": "*variable", "value": "~9"}, @@ -656,9 +656,9 @@ const CGRATES_CFG_JSON = ` "fields": [ {"tag": "Tenant", "field_id": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, {"tag": "ID", "field_id": "ID", "type": "*variable", "value": "~1", "mandatory": true}, - {"tag": "FilterType", "field_id": "FilterType", "type": "*variable", "value": "~2"}, - {"tag": "FilterFieldName", "field_id": "FilterFieldName", "type": "*variable", "value": "~3"}, - {"tag": "FilterFieldValues", "field_id": "FilterFieldValues", "type": "*variable", "value": "~4"}, + {"tag": "Type", "field_id": "Type", "type": "*variable", "value": "~2"}, + {"tag": "Element", "field_id": "Element", "type": "*variable", "value": "~3"}, + {"tag": "Values", "field_id": "Values", "type": "*variable", "value": "~4"}, {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*variable", "value": "~5"}, ], }, diff --git a/config/config_json_test.go b/config/config_json_test.go index 46bdfc90d..155b4d3aa 100755 --- a/config/config_json_test.go +++ b/config/config_json_test.go @@ -1049,8 +1049,8 @@ func TestDfLoaderJsonCfg(t *testing.T) { Field_id: utils.StringPointer("AttributeFilterIDs"), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~5")}, - {Tag: utils.StringPointer("FieldName"), - Field_id: utils.StringPointer(utils.FieldName), + {Tag: utils.StringPointer("Path"), + Field_id: utils.StringPointer(utils.Path), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~6")}, {Tag: utils.StringPointer("Type"), @@ -1085,16 +1085,16 @@ func TestDfLoaderJsonCfg(t *testing.T) { Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~1"), Mandatory: utils.BoolPointer(true)}, - {Tag: utils.StringPointer("FilterType"), - Field_id: utils.StringPointer("FilterType"), + {Tag: utils.StringPointer("Type"), + Field_id: utils.StringPointer("Type"), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~2")}, - {Tag: utils.StringPointer("FilterFieldName"), - Field_id: utils.StringPointer("FilterFieldName"), + {Tag: utils.StringPointer("Element"), + Field_id: utils.StringPointer("Element"), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~3")}, - {Tag: utils.StringPointer("FilterFieldValues"), - Field_id: utils.StringPointer("FilterFieldValues"), + {Tag: utils.StringPointer("Values"), + Field_id: utils.StringPointer("Values"), Type: utils.StringPointer(utils.MetaVariable), Value: utils.StringPointer("~4")}, {Tag: utils.StringPointer("ActivationInterval"), diff --git a/config/config_test.go b/config/config_test.go index 64ecf6832..0eebd2f0e 100755 --- a/config/config_test.go +++ b/config/config_test.go @@ -1082,8 +1082,8 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) { FieldId: "AttributeFilterIDs", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP)}, - {Tag: "FieldName", - FieldId: "FieldName", + {Tag: "Path", + FieldId: "Path", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP)}, {Tag: "Type", @@ -1118,16 +1118,16 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) { Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), Mandatory: true}, - {Tag: "FilterType", - FieldId: "FilterType", + {Tag: "Type", + FieldId: "Type", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP)}, - {Tag: "FilterFieldName", - FieldId: "FilterFieldName", + {Tag: "Element", + FieldId: "Element", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP)}, - {Tag: "FilterFieldValues", - FieldId: "FilterFieldValues", + {Tag: "Values", + FieldId: "Values", Type: utils.MetaVariable, Value: NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP)}, {Tag: "ActivationInterval", diff --git a/data/conf/cgrates/cgrates.json b/data/conf/cgrates/cgrates.json index cd07354e7..d6d88690f 100755 --- a/data/conf/cgrates/cgrates.json +++ b/data/conf/cgrates/cgrates.json @@ -597,7 +597,7 @@ // {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*variable", "value": "~3"}, // {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*variable", "value": "~4"}, // {"tag": "AttributeFilterIDs", "field_id": "AttributeFilterIDs", "type": "*variable", "value": "~5"}, -// {"tag": "FieldName", "field_id": "FieldName", "type": "*variable", "value": "~6"}, +// {"tag": "Path", "field_id": "Path", "type": "*variable", "value": "~6"}, // {"tag": "Type", "field_id": "Type", "type": "*variable", "value": "~7"}, // {"tag": "Value", "field_id": "Value", "type": "*variable", "value": "~8"}, // {"tag": "Blocker", "field_id": "Blocker", "type": "*variable", "value": "~9"}, @@ -610,9 +610,9 @@ // "fields": [ // {"tag": "Tenant", "field_id": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, // {"tag": "ID", "field_id": "ID", "type": "*variable", "value": "~1", "mandatory": true}, -// {"tag": "FilterType", "field_id": "FilterType", "type": "*variable", "value": "~2"}, -// {"tag": "FilterFieldName", "field_id": "FilterFieldName", "type": "*variable", "value": "~3"}, -// {"tag": "FilterFieldValues", "field_id": "FilterFieldValues", "type": "*variable", "value": "~4"}, +// {"tag": "Type", "field_id": "Type", "type": "*variable", "value": "~2"}, +// {"tag": "Element", "field_id": "Element", "type": "*variable", "value": "~3"}, +// {"tag": "Values", "field_id": "Values", "type": "*variable", "value": "~4"}, // {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*variable", "value": "~5"}, // ], // }, diff --git a/data/conf/samples/loaders/tutmongo/cgrates.json b/data/conf/samples/loaders/tutmongo/cgrates.json index 039737224..107343c63 100644 --- a/data/conf/samples/loaders/tutmongo/cgrates.json +++ b/data/conf/samples/loaders/tutmongo/cgrates.json @@ -126,7 +126,7 @@ {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*variable", "value": "~3"}, {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*variable", "value": "~4"}, {"tag": "AttributeFilterIDs", "field_id": "AttributeFilterIDs", "type": "*variable", "value": "~5"}, - {"tag": "FieldName", "field_id": "FieldName", "type": "*variable", "value": "~6"}, + {"tag": "Path", "field_id": "Path", "type": "*variable", "value": "~6"}, {"tag": "Type", "field_id": "Type", "type": "*variable", "value": "~7"}, {"tag": "Value", "field_id": "Value", "type": "*variable", "value": "~8"}, {"tag": "Blocker", "field_id": "Blocker", "type": "*variable", "value": "~9"}, diff --git a/data/conf/samples/loaders/tutmysql/cgrates.json b/data/conf/samples/loaders/tutmysql/cgrates.json index 9e450d7ff..a30852813 100644 --- a/data/conf/samples/loaders/tutmysql/cgrates.json +++ b/data/conf/samples/loaders/tutmysql/cgrates.json @@ -86,7 +86,7 @@ {"tag": "FilterIDs", "field_id": "FilterIDs", "type": "*variable", "value": "~3"}, {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*variable", "value": "~4"}, {"tag": "AttributeFilterIDs", "field_id": "AttributeFilterIDs", "type": "*variable", "value": "~5"}, - {"tag": "FieldName", "field_id": "FieldName", "type": "*variable", "value": "~6"}, + {"tag": "Path", "field_id": "Path", "type": "*variable", "value": "~6"}, {"tag": "Type", "field_id": "Type", "type": "*variable", "value": "~7"}, {"tag": "Value", "field_id": "Value", "type": "*variable", "value": "~8"}, {"tag": "Blocker", "field_id": "Blocker", "type": "*variable", "value": "~9"}, diff --git a/data/conf/samples/tutmysql_internal/cgrates.json b/data/conf/samples/tutmysql_internal/cgrates.json index fb4e6fa8a..afc4fbe6e 100644 --- a/data/conf/samples/tutmysql_internal/cgrates.json +++ b/data/conf/samples/tutmysql_internal/cgrates.json @@ -168,9 +168,9 @@ "fields": [ {"tag": "Tenant", "field_id": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, {"tag": "ID", "field_id": "ID", "type": "*variable", "value": "~1", "mandatory": true}, - {"tag": "FilterType", "field_id": "FilterType", "type": "*variable", "value": "~2"}, - {"tag": "FilterFieldName", "field_id": "FilterFieldName", "type": "*variable", "value": "~3"}, - {"tag": "FilterFieldValues", "field_id": "FilterFieldValues", "type": "*variable", "value": "~4"}, + {"tag": "Type", "field_id": "Type", "type": "*variable", "value": "~2"}, + {"tag": "Element", "field_id": "Element", "type": "*variable", "value": "~3"}, + {"tag": "Values", "field_id": "Values", "type": "*variable", "value": "~4"}, {"tag": "ActivationInterval", "field_id": "ActivationInterval", "type": "*variable", "value": "~5"}, ], }, diff --git a/data/storage/mysql/create_tariffplan_tables.sql b/data/storage/mysql/create_tariffplan_tables.sql index 455c58e47..a203d7090 100644 --- a/data/storage/mysql/create_tariffplan_tables.sql +++ b/data/storage/mysql/create_tariffplan_tables.sql @@ -329,14 +329,14 @@ CREATE TABLE tp_filters ( `tpid` varchar(64) NOT NULL, `tenant` varchar(64) NOT NULL, `id` varchar(64) NOT NULL, - `filter_type` varchar(16) NOT NULL, - `filter_field_name` varchar(64) NOT NULL, - `filter_field_values` varchar(256) NOT NULL, + `type` varchar(16) NOT NULL, + `element` varchar(64) NOT NULL, + `values` varchar(256) NOT NULL, `activation_interval` varchar(64) NOT NULL, `created_at` TIMESTAMP, PRIMARY KEY (`pk`), KEY `tpid` (`tpid`), - UNIQUE KEY `unique_tp_filters` (`tpid`,`tenant`, `id`, `filter_type`, `filter_field_name`) + UNIQUE KEY `unique_tp_filters` (`tpid`,`tenant`, `id`, `type`, `element`) ); -- @@ -386,7 +386,7 @@ CREATE TABLE tp_attributes ( `filter_ids` varchar(64) NOT NULL, `activation_interval` varchar(64) NOT NULL, `attribute_filter_ids` varchar(64) NOT NULL, - `field_name` varchar(64) NOT NULL, + `path` varchar(64) NOT NULL, `type` varchar(64) NOT NULL, `value` varchar(64) NOT NULL, `blocker` BOOLEAN NOT NULL, @@ -395,7 +395,7 @@ CREATE TABLE tp_attributes ( PRIMARY KEY (`pk`), KEY `tpid` (`tpid`), UNIQUE KEY `unique_tp_attributes` (`tpid`,`tenant`, - `id`,`filter_ids`,`field_name`,`value` ) + `id`,`filter_ids`,`path`,`value` ) ); -- diff --git a/data/storage/postgres/create_tariffplan_tables.sql b/data/storage/postgres/create_tariffplan_tables.sql index c6d7d60ad..29a9502df 100644 --- a/data/storage/postgres/create_tariffplan_tables.sql +++ b/data/storage/postgres/create_tariffplan_tables.sql @@ -323,14 +323,14 @@ CREATE TABLE tp_filters ( "tpid" varchar(64) NOT NULL, "tenant" varchar(64) NOT NULL, "id" varchar(64) NOT NULL, - "filter_type" varchar(16) NOT NULL, - "filter_field_name" varchar(64) NOT NULL, - "filter_field_values" varchar(256) NOT NULL, + "type" varchar(16) NOT NULL, + "element" varchar(64) NOT NULL, + "values" varchar(256) NOT NULL, "activation_interval" varchar(64) NOT NULL, "created_at" TIMESTAMP WITH TIME ZONE ); CREATE INDEX tp_filters_idx ON tp_filters (tpid); - CREATE INDEX tp_filters_unique ON tp_filters ("tpid","tenant", "id", "filter_type", "filter_field_name"); + CREATE INDEX tp_filters_unique ON tp_filters ("tpid","tenant", "id", "type", "element"); -- -- Table structure for table `tp_suppliers` @@ -377,7 +377,7 @@ CREATE INDEX tp_suppliers_unique ON tp_suppliers ("tpid", "tenant", "id", "filter_ids" varchar(64) NOT NULL, "activation_interval" varchar(64) NOT NULL, "attribute_filter_ids" varchar(64) NOT NULL, - "field_name" varchar(64) NOT NULL, + "path" varchar(64) NOT NULL, "type" varchar(64) NOT NULL, "value" varchar(64) NOT NULL, "blocker" BOOLEAN NOT NULL, @@ -386,7 +386,7 @@ CREATE INDEX tp_suppliers_unique ON tp_suppliers ("tpid", "tenant", "id", ); CREATE INDEX tp_attributes_ids ON tp_attributes (tpid); CREATE INDEX tp_attributes_unique ON tp_attributes ("tpid", "tenant", "id", - "filter_ids","field_name","value"); + "filter_ids","path","value"); -- -- Table structure for table `tp_chargers` diff --git a/data/tariffplans/cluelrn/Attributes.csv b/data/tariffplans/cluelrn/Attributes.csv index 05a033f5e..cc128ac6e 100644 --- a/data/tariffplans/cluelrn/Attributes.csv +++ b/data/tariffplans/cluelrn/Attributes.csv @@ -1,4 +1,4 @@ -#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,FieldName,Type,Value,Blocker,Weight +#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,Path,Type,Value,Blocker,Weight cgrates.org,LRN_Dst3125650565,lrn,*string:~*req.Destination:3125650565,,,*req.Destination,*constant,13128543000,false,10 cgrates.org,LRN_Dst3125650565,,,,,*req.OriginalDestination,*constant,3125650565,false,10 cgrates.org,LRN_LATA_Dst13128543000,lrn,*string:~*req.Destination:13128543000;*rsr::~*req.OriginalDestination(!^$),,,*req.DestinationLATA,*constant,358,false,20 diff --git a/data/tariffplans/cluelrn/Filters.csv b/data/tariffplans/cluelrn/Filters.csv index 916436222..e85258894 100644 --- a/data/tariffplans/cluelrn/Filters.csv +++ b/data/tariffplans/cluelrn/Filters.csv @@ -1,4 +1,4 @@ -#Tenant[0],ID[1],FilterType[2],FilterFieldName[3],FilterFieldValues[4],ActivationInterval[5] +#Tenant[0],ID[1],Type[2],Path[3],Values[4],ActivationInterval[5] cgrates.org,FLTR_INTRALATA_NEWYORK,*string,~*req.CallerLATA,224;222;220;132, cgrates.org,FLTR_INTRALATA_NEWYORK,*string,~*req.DestinationLATA,224;222;220;132, cgrates.org,FLTR_INTRALATA_ILLINOIS,*string,~*req.CallerLATA,358;359, diff --git a/data/tariffplans/dispatchers/Attributes.csv b/data/tariffplans/dispatchers/Attributes.csv index 5f004a8e6..defe079eb 100644 --- a/data/tariffplans/dispatchers/Attributes.csv +++ b/data/tariffplans/dispatchers/Attributes.csv @@ -1,4 +1,4 @@ -#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,FieldName,Type,Value,Blocker,Weight +#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,Path,Type,Value,Blocker,Weight cgrates.org,ATTR_1001_SIMPLEAUTH,*any,*string:~*req.Account:1001,,,*req.Password,*constant,CGRateS.org,false,20 cgrates.org,ATTR_1001_SIMPLEAUTH,*any,,,,*req.EventName,*constant,*remove,false,20 cgrates.org,ATTR_1003_SIMPLEAUTH,*any,*string:~*req.Account:1003,,,*req.Password,*constant,CGRateS.com,false,20 diff --git a/data/tariffplans/dispatchers_gob/Attributes.csv b/data/tariffplans/dispatchers_gob/Attributes.csv index a07ee0570..610f17c9d 100644 --- a/data/tariffplans/dispatchers_gob/Attributes.csv +++ b/data/tariffplans/dispatchers_gob/Attributes.csv @@ -1,4 +1,4 @@ -#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,FieldName,Type,Value,Blocker,Weight +#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,Path,Type,Value,Blocker,Weight cgrates.org,ATTR_1001_SIMPLEAUTH,*any,*string:~*req.Account:1001,,,*req.Password,*constant,CGRateS.org,false,20 cgrates.org,ATTR_1001_SIMPLEAUTH,*any,,,,EventName,*constant,*remove,false,20 cgrates.org,ATTR_1003_SIMPLEAUTH,*any,*string:~*req.Account:1003,,,*req.Password,*constant,CGRateS.com,false,20 diff --git a/data/tariffplans/dnsagent/Attributes.csv b/data/tariffplans/dnsagent/Attributes.csv index 8ce6b217b..12f1c7d1e 100644 --- a/data/tariffplans/dnsagent/Attributes.csv +++ b/data/tariffplans/dnsagent/Attributes.csv @@ -1,3 +1,3 @@ -#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,FieldName,Type,Value,Blocker,Weight +#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,Path,Type,Value,Blocker,Weight cgrates.org,ATTR_NAPTR_ADDR,*any,*string:~*req.E164Address:4986517174964,,,*req.NAPTRAddress,*constant,sip:\1@172.16.1.1.,false,20 diff --git a/data/tariffplans/oldtutorial/Attributes.csv b/data/tariffplans/oldtutorial/Attributes.csv index 21031d303..b96c5799a 100644 --- a/data/tariffplans/oldtutorial/Attributes.csv +++ b/data/tariffplans/oldtutorial/Attributes.csv @@ -1,3 +1,3 @@ -#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,FieldName,Type,Value,Blocker,Weight +#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,Path,Type,Value,Blocker,Weight cgrates.org,ATTR_1,*sessions;*cdrs,*string:~*req.Account:1007,2014-01-14T00:00:00Z,,*req.Account,*constant,1001,false,10 cgrates.org,ATTR_1,,,,,*req.Subject,*constant,1001,, diff --git a/data/tariffplans/oldtutorial/Filters.csv b/data/tariffplans/oldtutorial/Filters.csv index 78c286f68..8cb901d2e 100644 --- a/data/tariffplans/oldtutorial/Filters.csv +++ b/data/tariffplans/oldtutorial/Filters.csv @@ -1,4 +1,4 @@ -#Tenant[0],ID[1],FilterType[2],FilterFieldName[3],FilterFieldValues[4],ActivationInterval[5] +#Tenant[0],ID[1],Type[2],Path[3],Values[4],ActivationInterval[5] cgrates.org,FLTR_1,*string,~*req.Account,1001;1002,2014-07-29T15:00:00Z cgrates.org,FLTR_1,*prefix,~*req.Destination,10;20, cgrates.org,FLTR_1,*rsr,,~*req.Subject(~^1.*1$);~*req.Destination(1002), diff --git a/data/tariffplans/precache/Attributes.csv b/data/tariffplans/precache/Attributes.csv index 21031d303..b96c5799a 100644 --- a/data/tariffplans/precache/Attributes.csv +++ b/data/tariffplans/precache/Attributes.csv @@ -1,3 +1,3 @@ -#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,FieldName,Type,Value,Blocker,Weight +#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,Path,Type,Value,Blocker,Weight cgrates.org,ATTR_1,*sessions;*cdrs,*string:~*req.Account:1007,2014-01-14T00:00:00Z,,*req.Account,*constant,1001,false,10 cgrates.org,ATTR_1,,,,,*req.Subject,*constant,1001,, diff --git a/data/tariffplans/precache/Filters.csv b/data/tariffplans/precache/Filters.csv index 71490d627..2782f4fe2 100644 --- a/data/tariffplans/precache/Filters.csv +++ b/data/tariffplans/precache/Filters.csv @@ -1,4 +1,4 @@ -#Tenant[0],ID[1],FilterType[2],FilterFieldName[3],FilterFieldValues[4],ActivationInterval[5] +#Tenant[0],ID[1],Type[2],Path[3],Values[4],ActivationInterval[5] cgrates.org,FLTR_1,*string,~*req.Account,1001;1002,2014-07-29T15:00:00Z cgrates.org,FLTR_1,*prefix,~*req.Destination,10;20, cgrates.org,FLTR_1,*rsr,,~*req.Subject(~^1.*1$);~Destination(1002), diff --git a/data/tariffplans/testit/Attributes.csv b/data/tariffplans/testit/Attributes.csv index 53849032f..b93e70ff2 100644 --- a/data/tariffplans/testit/Attributes.csv +++ b/data/tariffplans/testit/Attributes.csv @@ -1,4 +1,4 @@ -#Tenant,ID,Context,FilterIDs,ActivationInterval,AttributeFilterIDs,FieldName,Type,Value,Blocker,Weight +#Tenant,ID,Context,FilterIDs,ActivationInterval,AttributeFilterIDs,Path,Type,Value,Blocker,Weight cgrates.org,ATTR_ACNT_1001,*sessions,FLTR_ACCOUNT_1001,,,*req.OfficeGroup,*constant,Marketing,false,10 cgrates.org,ATTR_SUPPLIER1,*chargers,,,,*req.Subject,*constant,SUPPLIER1,false,10 cgrates.org,ATTR_PAYPAL,*cdrs,*string:~*req.Subject:ANY2CNT,,,*req.PayPalAccount,*constant,paypal@cgrates.org,false,10 diff --git a/data/tariffplans/testit/Filters.csv b/data/tariffplans/testit/Filters.csv index 8b6c7652d..80ed6745e 100644 --- a/data/tariffplans/testit/Filters.csv +++ b/data/tariffplans/testit/Filters.csv @@ -1,4 +1,4 @@ -#Tenant[0],ID[1],FilterType[2],FilterFieldName[3],FilterFieldValues[4],ActivationInterval[5] +#Tenant[0],ID[1],Type[2],Path[3],Values[4],ActivationInterval[5] cgrates.org,FLTR_ACCOUNT_1001,*string,~*req.Account,1001,2014-07-29T15:00:00Z cgrates.org,FLTR_DST_DE,*destinations,~*req.Destination,DST_DE_MOBILE,2014-07-29T15:00:00Z cgrates.org,FLTR_1,*string,~*req.Account,1003;1002,2014-07-29T15:00:00Z diff --git a/data/tariffplans/testtp/Attributes.csv b/data/tariffplans/testtp/Attributes.csv index fa48657eb..c6abdd8c3 100644 --- a/data/tariffplans/testtp/Attributes.csv +++ b/data/tariffplans/testtp/Attributes.csv @@ -1,3 +1,3 @@ -#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,FieldName,Type,Value,Blocker,Weight +#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,Path,Type,Value,Blocker,Weight cgrates.org,ALS1,con1,FLTR_1,2014-07-29T15:00:00Z,*string:~*req.Field1:Initial1,*req.Field1,*constant,Sub1,false,20 cgrates.org,ALS1,,,,*string:~*req.Field1:Initial2,*req.Field2,*constant,Sub2,, diff --git a/data/tariffplans/testtp/Filters.csv b/data/tariffplans/testtp/Filters.csv index 74926470d..3442e65b4 100644 --- a/data/tariffplans/testtp/Filters.csv +++ b/data/tariffplans/testtp/Filters.csv @@ -1,4 +1,4 @@ -#Tenant[0],ID[1],FilterType[2],FilterFieldName[3],FilterFieldValues[4],ActivationInterval[5] +#Tenant[0],ID[1],Type[2],Path[3],Values[4],ActivationInterval[5] cgrates.org,FLTR_1,*string,~*req.Account,1001;1002,2014-07-29T15:00:00Z cgrates.org,FLTR_1,*prefix,~*req.Destination,10;20, cgrates.org,FLTR_1,*rsr,,~*req.Subject(~^1.*1$);~Destination(1002), diff --git a/data/tariffplans/tutorial/Attributes.csv b/data/tariffplans/tutorial/Attributes.csv index 2dabbde2d..2a7a41590 100644 --- a/data/tariffplans/tutorial/Attributes.csv +++ b/data/tariffplans/tutorial/Attributes.csv @@ -1,4 +1,4 @@ -#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,FieldName,Type,Value,Blocker,Weight +#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,Path,Type,Value,Blocker,Weight cgrates.org,ATTR_1001_SIMPLEAUTH,simpleauth,*string:~*req.Account:1001,,,*req.Password,*constant,CGRateS.org,false,20 cgrates.org,ATTR_1002_SIMPLEAUTH,simpleauth,*string:~*req.Account:1002,,,*req.Password,*constant,CGRateS.org,false,20 cgrates.org,ATTR_1003_SIMPLEAUTH,simpleauth,*string:~*req.Account:1003,,,*req.Password,*constant,CGRateS.org,false,20 diff --git a/data/tariffplans/tutorial/Filters.csv b/data/tariffplans/tutorial/Filters.csv index d889e87f1..b5f8c0a21 100644 --- a/data/tariffplans/tutorial/Filters.csv +++ b/data/tariffplans/tutorial/Filters.csv @@ -1,4 +1,4 @@ -#Tenant[0],ID[1],FilterType[2],FilterFieldName[3],FilterFieldValues[4],ActivationInterval[5] +#Tenant[0],ID[1],Type[2],Element[3],Values[4],ActivationInterval[5] cgrates.org,FLTR_RES,*string,~*req.Account,1001;1002;1003,2014-07-29T15:00:00Z cgrates.org,FLTR_DST_FS,*string,~*req.Account,1001,2014-07-29T15:00:00Z cgrates.org,FLTR_DST_FS,*destinations,~*req.Destination,DST_FS, diff --git a/data/tariffplans/tutorial2/Attributes.csv b/data/tariffplans/tutorial2/Attributes.csv index bb9f34e9e..bb841477c 100644 --- a/data/tariffplans/tutorial2/Attributes.csv +++ b/data/tariffplans/tutorial2/Attributes.csv @@ -1,4 +1,4 @@ -# Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,FieldName,Type,Value,Blocker,Weight +# Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,Path,Type,Value,Blocker,Weight # ATTR_CRG_SUPPLIER1 replaces Category->supplier1 and RequestType->*constant for *sessions and *cdrs events cgrates.org,ATTR_CRG_SUPPLIER1,*sessions;*cdrs,,,,*req.Category,*constant,supplier1,false,0 diff --git a/dispatchers/attributes_it_test.go b/dispatchers/attributes_it_test.go index 75fc544e4..77aa96f05 100755 --- a/dispatchers/attributes_it_test.go +++ b/dispatchers/attributes_it_test.go @@ -142,7 +142,7 @@ func testDspAttrGetAttrFailover(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{}, - FieldName: utils.MetaReq + utils.NestingSep + "Password", + Path: utils.MetaReq + utils.NestingSep + "Password", Type: utils.META_CONSTANT, Value: config.NewRSRParsersMustCompile("CGRateS.org", true, utils.INFIELD_SEP), }, @@ -332,7 +332,7 @@ func testDspAttrTestAuthKey2(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{}, - FieldName: utils.MetaReq + utils.NestingSep + "Password", + Path: utils.MetaReq + utils.NestingSep + "Password", Type: utils.META_CONSTANT, Value: config.NewRSRParsersMustCompile("CGRateS.org", true, utils.INFIELD_SEP), }, @@ -423,7 +423,7 @@ func testDspAttrGetAttrRoundRobin(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{}, - FieldName: utils.MetaReq + utils.NestingSep + "Password", + Path: utils.MetaReq + utils.NestingSep + "Password", Type: utils.META_CONSTANT, Value: config.NewRSRParsersMustCompile("CGRateS.org", true, utils.INFIELD_SEP), }, diff --git a/dispatchers/dispatchers_it_test.go b/dispatchers/dispatchers_it_test.go index 8a18ef393..a5c3327ec 100644 --- a/dispatchers/dispatchers_it_test.go +++ b/dispatchers/dispatchers_it_test.go @@ -61,7 +61,7 @@ func testDspApierSetAttributes(t *testing.T) { }, "Attributes": []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, + Path: utils.MetaReq + utils.NestingSep + utils.Subject, Value: config.RSRParsers{ &config.RSRParser{ Rules: "roam", @@ -95,7 +95,7 @@ func testDspApierGetAttributes(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, + Path: utils.MetaReq + utils.NestingSep + utils.Subject, Value: config.RSRParsers{ &config.RSRParser{ Rules: "roam", diff --git a/docs/filters.rst b/docs/filters.rst index 9f6d4d6f4..5d0dc4ffc 100644 --- a/docs/filters.rst +++ b/docs/filters.rst @@ -35,7 +35,7 @@ Definition:: type FilterRule struct { Type string // Filter type - FieldName string // Name of the field providing us the Values to check (used in case of some ) + Element string // Name of the field providing us the Values to check (used in case of some ) Values []string // Filter definition } @@ -44,31 +44,31 @@ The matching logic of each FilterRule is given by it's type. The following types are implemented: -- *\*string* will match in full the *FieldName* with at least one value defined inside *Values*. Any of the values matching will have the FilterRule as *matched*. +- *\*string* will match in full the *Element* with at least one value defined inside *Values*. Any of the values matching will have the FilterRule as *matched*. - *\*notstring* is the negation of *\*string*. -- *\*prefix* will match at beginning of *FieldName* one of the values defined inside *Values*. +- *\*prefix* will match at beginning of *Element* one of the values defined inside *Values*. - *\*notprefix* is the negation of *\*prefix*. -- *\*suffix* will match at end of *FieldName* one of the values defined inside *Values*. +- *\*suffix* will match at end of *Element* one of the values defined inside *Values*. - *\*notsuffix* is the negation of *\*suffix*. -- *\*empty* will make sure that *FieldName* is empty or it does not exist in the event. +- *\*empty* will make sure that *Element* is empty or it does not exist in the event. - *\*notempty* is the negation of *\*empty*. -- *\*exists* will make sure that *FieldName* exists in the event. +- *\*exists* will make sure that *Element* exists in the event. - *\*notexists* is the negation of *\*exists*. -- *\*timings* will compare the time contained in *FieldName* with one of the TimingIDs defined in Values. +- *\*timings* will compare the time contained in *Element* with one of the TimingIDs defined in Values. - *\*nottimings* is the negation of *\*timings*. -- *\*destinations* will make sure that the *FieldName* is a prefix contained inside one of the destination IDs as *Values*. +- *\*destinations* will make sure that the *Element* is a prefix contained inside one of the destination IDs as *Values*. - *\*notdestinations* is the negation of *\*destinations*. @@ -76,7 +76,7 @@ The following types are implemented: - *\*notrsr* is the negation of *\*rsr*. -- *\*lt* (less than), *\*lte* (less than or equal), *\*gt* (greather than), *\*gte* (greather than or equal) are comparison operators and they pass if at least one of the values defined in *Values* are passing for the *FieldName* of event. The operators are able to compare string, float, int, time.Time, time.Duration, however both types need to be the same, otherwise the filter will raise *incomparable* as error. +- *\*lt* (less than), *\*lte* (less than or equal), *\*gt* (greather than), *\*gte* (greather than or equal) are comparison operators and they pass if at least one of the values defined in *Values* are passing for the *Element* of event. The operators are able to compare string, float, int, time.Time, time.Duration, however both types need to be the same, otherwise the filter will raise *incomparable* as error. Inline Filter diff --git a/docs/tariff_plans.rst b/docs/tariff_plans.rst index 9212af832..a4be2f063 100644 --- a/docs/tariff_plans.rst +++ b/docs/tariff_plans.rst @@ -860,13 +860,13 @@ TBD [0] - Tag TBD -[1] - FilterType +[1] - Type TBD -[2] - FilterFieldName +[2] - Element TBD -[3] - FilterFieldValues +[3] - Values TBD [4] - ActivationTime diff --git a/engine/action.go b/engine/action.go index d50b6352d..b509b4501 100644 --- a/engine/action.go +++ b/engine/action.go @@ -1000,7 +1000,7 @@ func removeSessionCosts(_ *Account, action *Action, _ Actions, _ interface{}) er continue } for _, rule := range fltr.Rules { - smcFilter, err = utils.AppendToSMCostFilter(smcFilter, rule.Type, rule.FieldName, rule.Values, config.CgrConfig().GeneralCfg().DefaultTimezone) + smcFilter, err = utils.AppendToSMCostFilter(smcFilter, rule.Type, rule.Element, rule.Values, config.CgrConfig().GeneralCfg().DefaultTimezone) if err != nil { utils.Logger.Warning(fmt.Sprintf("<%s> %s in action: <%s>", utils.Actions, err.Error(), utils.MetaRemoveSessionCosts)) } diff --git a/engine/attributes.go b/engine/attributes.go index 0a4c5cc84..393deb7ed 100644 --- a/engine/attributes.go +++ b/engine/attributes.go @@ -254,11 +254,11 @@ func (alS *AttributeService) processEvent(args *AttrArgsProcessEvent) ( if err != nil { return nil, err } - //add only once the FieldName in AlteredFields - if !utils.IsSliceMember(rply.AlteredFields, attribute.FieldName) { - rply.AlteredFields = append(rply.AlteredFields, attribute.FieldName) + //add only once the Path in AlteredFields + if !utils.IsSliceMember(rply.AlteredFields, attribute.Path) { + rply.AlteredFields = append(rply.AlteredFields, attribute.Path) } - if attribute.FieldName == utils.MetaTenant { + if attribute.Path == utils.MetaTenant { if attribute.Type == utils.META_COMPOSED { rply.CGREvent.Tenant += substitute } else { @@ -267,15 +267,15 @@ func (alS *AttributeService) processEvent(args *AttrArgsProcessEvent) ( continue } if substitute == utils.MetaRemove { - evNm.Remove(strings.Split(attribute.FieldName, utils.NestingSep)) + evNm.Remove(strings.Split(attribute.Path, utils.NestingSep)) continue } if attribute.Type == utils.META_COMPOSED { var val string - val, err = evNm.FieldAsString(strings.Split(attribute.FieldName, utils.NestingSep)) + val, err = evNm.FieldAsString(strings.Split(attribute.Path, utils.NestingSep)) substitute = val + substitute } - evNm.Set(strings.Split(attribute.FieldName, utils.NestingSep), substitute, false, false) + evNm.Set(strings.Split(attribute.Path, utils.NestingSep), substitute, false, false) } return } diff --git a/engine/attributes_test.go b/engine/attributes_test.go index a5b8709ba..ecca46bd2 100644 --- a/engine/attributes_test.go +++ b/engine/attributes_test.go @@ -87,8 +87,8 @@ var ( }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Value: config.NewRSRParsersMustCompile("1010", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Value: config.NewRSRParsersMustCompile("1010", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -104,8 +104,8 @@ var ( }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Value: config.NewRSRParsersMustCompile("1010", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Value: config.NewRSRParsersMustCompile("1010", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -121,8 +121,8 @@ var ( }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Value: config.NewRSRParsersMustCompile("1010", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Value: config.NewRSRParsersMustCompile("1010", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -138,8 +138,8 @@ var ( }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Value: config.NewRSRParsersMustCompile("1010", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Value: config.NewRSRParsersMustCompile("1010", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -167,19 +167,19 @@ func TestAttributeAddFilters(t *testing.T) { ID: "FLTR_ATTR_1", Rules: []*FilterRule{ { - Type: utils.MetaString, - FieldName: "~*req.Attribute", - Values: []string{"AttributeProfile1"}, + Type: utils.MetaString, + Element: "~*req.Attribute", + Values: []string{"AttributeProfile1"}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: "~*req.UsageInterval", - Values: []string{(1 * time.Second).String()}, + Type: utils.MetaGreaterOrEqual, + Element: "~*req.UsageInterval", + Values: []string{(1 * time.Second).String()}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: "~*req." + utils.Weight, - Values: []string{"9.0"}, + Type: utils.MetaGreaterOrEqual, + Element: "~*req." + utils.Weight, + Values: []string{"9.0"}, }, }, } @@ -189,9 +189,9 @@ func TestAttributeAddFilters(t *testing.T) { ID: "FLTR_ATTR_2", Rules: []*FilterRule{ { - Type: utils.MetaString, - FieldName: "~*req.Attribute", - Values: []string{"AttributeProfile2"}, + Type: utils.MetaString, + Element: "~*req.Attribute", + Values: []string{"AttributeProfile2"}, }, }, } @@ -201,9 +201,9 @@ func TestAttributeAddFilters(t *testing.T) { ID: "FLTR_ATTR_3", Rules: []*FilterRule{ { - Type: utils.MetaPrefix, - FieldName: "~*req.Attribute", - Values: []string{"AttributeProfilePrefix"}, + Type: utils.MetaPrefix, + Element: "~*req.Attribute", + Values: []string{"AttributeProfilePrefix"}, }, }, } @@ -213,9 +213,9 @@ func TestAttributeAddFilters(t *testing.T) { ID: "FLTR_ATTR_4", Rules: []*FilterRule{ { - Type: utils.MetaGreaterOrEqual, - FieldName: "~*req." + utils.Weight, - Values: []string{"200.00"}, + Type: utils.MetaGreaterOrEqual, + Element: "~*req." + utils.Weight, + Values: []string{"200.00"}, }, }, } @@ -406,8 +406,8 @@ func TestAttributeIndexer(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Value: config.NewRSRParsersMustCompile("1010", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Value: config.NewRSRParsersMustCompile("1010", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -474,8 +474,8 @@ func TestAttributeProcessWithMultipleRuns1(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Weight: 10, @@ -490,8 +490,8 @@ func TestAttributeProcessWithMultipleRuns1(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -506,8 +506,8 @@ func TestAttributeProcessWithMultipleRuns1(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field3", - Value: config.NewRSRParsersMustCompile("Value3", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field3", + Value: config.NewRSRParsersMustCompile("Value3", true, utils.INFIELD_SEP), }, }, Weight: 30, @@ -586,8 +586,8 @@ func TestAttributeProcessWithMultipleRuns2(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Weight: 10, @@ -602,8 +602,8 @@ func TestAttributeProcessWithMultipleRuns2(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -618,8 +618,8 @@ func TestAttributeProcessWithMultipleRuns2(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field3", - Value: config.NewRSRParsersMustCompile("Value3", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field3", + Value: config.NewRSRParsersMustCompile("Value3", true, utils.INFIELD_SEP), }, }, Weight: 30, @@ -694,8 +694,8 @@ func TestAttributeProcessWithMultipleRuns3(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Weight: 10, @@ -710,8 +710,8 @@ func TestAttributeProcessWithMultipleRuns3(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -726,8 +726,8 @@ func TestAttributeProcessWithMultipleRuns3(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field3", - Value: config.NewRSRParsersMustCompile("Value3", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field3", + Value: config.NewRSRParsersMustCompile("Value3", true, utils.INFIELD_SEP), }, }, Weight: 30, @@ -802,8 +802,8 @@ func TestAttributeProcessWithMultipleRuns4(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Weight: 10, @@ -818,8 +818,8 @@ func TestAttributeProcessWithMultipleRuns4(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -893,8 +893,8 @@ func TestAttributeMultipleProcessWithBlocker(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Weight: 10, @@ -909,8 +909,8 @@ func TestAttributeMultipleProcessWithBlocker(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), }, }, Blocker: true, @@ -926,8 +926,8 @@ func TestAttributeMultipleProcessWithBlocker(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field3", - Value: config.NewRSRParsersMustCompile("Value3", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field3", + Value: config.NewRSRParsersMustCompile("Value3", true, utils.INFIELD_SEP), }, }, Weight: 30, @@ -1003,8 +1003,8 @@ func TestAttributeMultipleProcessWithBlocker2(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field1", - Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field1", + Value: config.NewRSRParsersMustCompile("Value1", true, utils.INFIELD_SEP), }, }, Blocker: true, @@ -1020,8 +1020,8 @@ func TestAttributeMultipleProcessWithBlocker2(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Value: config.NewRSRParsersMustCompile("Value2", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -1036,8 +1036,8 @@ func TestAttributeMultipleProcessWithBlocker2(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field3", - Value: config.NewRSRParsersMustCompile("Value3", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field3", + Value: config.NewRSRParsersMustCompile("Value3", true, utils.INFIELD_SEP), }, }, Weight: 30, @@ -1111,8 +1111,8 @@ func TestAttributeProcessValue(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Value: config.NewRSRParsersMustCompile("~*req.Field1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Value: config.NewRSRParsersMustCompile("~*req.Field1", true, utils.INFIELD_SEP), }, }, Blocker: true, @@ -1181,17 +1181,17 @@ func TestAttributeAttributeFilterIDs(t *testing.T) { Attributes: []*Attribute{ { FilterIDs: []string{"*string:~*req.PassField:Test"}, - FieldName: utils.MetaReq + utils.NestingSep + "PassField", + Path: utils.MetaReq + utils.NestingSep + "PassField", Value: config.NewRSRParsersMustCompile("Pass", true, utils.INFIELD_SEP), }, { FilterIDs: []string{"*string:~*req.PassField:RandomValue"}, - FieldName: utils.MetaReq + utils.NestingSep + "NotPassField", + Path: utils.MetaReq + utils.NestingSep + "NotPassField", Value: config.NewRSRParsersMustCompile("NotPass", true, utils.INFIELD_SEP), }, { FilterIDs: []string{"*notexists:~*req.RandomField:"}, - FieldName: utils.MetaReq + utils.NestingSep + "RandomField", + Path: utils.MetaReq + utils.NestingSep + "RandomField", Value: config.NewRSRParsersMustCompile("RandomValue", true, utils.INFIELD_SEP), }, }, @@ -1261,9 +1261,9 @@ func TestAttributeProcessEventConstant(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Type: utils.META_CONSTANT, - Value: config.NewRSRParsersMustCompile("ConstVal", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Type: utils.META_CONSTANT, + Value: config.NewRSRParsersMustCompile("ConstVal", true, utils.INFIELD_SEP), }, }, Blocker: true, @@ -1332,14 +1332,14 @@ func TestAttributeProcessEventVariable(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("~*req.Field1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("~*req.Field1", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("~*req.TheField", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("~*req.TheField", true, utils.INFIELD_SEP), }, }, Blocker: true, @@ -1410,19 +1410,19 @@ func TestAttributeProcessEventComposed(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~*req.Field1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Type: utils.META_COMPOSED, + Value: config.NewRSRParsersMustCompile("~*req.Field1", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("_", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Type: utils.META_COMPOSED, + Value: config.NewRSRParsersMustCompile("_", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~*req.TheField", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Type: utils.META_COMPOSED, + Value: config.NewRSRParsersMustCompile("~*req.TheField", true, utils.INFIELD_SEP), }, }, Blocker: true, @@ -1493,9 +1493,9 @@ func TestAttributeProcessEventSum(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Type: utils.MetaSum, - Value: config.NewRSRParsersMustCompile("10;~*req.NumField;20", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Type: utils.MetaSum, + Value: config.NewRSRParsersMustCompile("10;~*req.NumField;20", true, utils.INFIELD_SEP), }, }, Blocker: true, @@ -1568,9 +1568,9 @@ func TestAttributeProcessEventUsageDifference(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Type: utils.META_USAGE_DIFFERENCE, - Value: config.NewRSRParsersMustCompile("~*req.UnixTimeStamp;~*req.UnixTimeStamp2", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Type: utils.META_USAGE_DIFFERENCE, + Value: config.NewRSRParsersMustCompile("~*req.UnixTimeStamp;~*req.UnixTimeStamp2", true, utils.INFIELD_SEP), }, }, Blocker: true, @@ -1645,9 +1645,9 @@ func TestAttributeProcessEventValueExponent(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Type: utils.MetaValueExponent, - Value: config.NewRSRParsersMustCompile("~*req.Multiplier;~*req.Pow", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Type: utils.MetaValueExponent, + Value: config.NewRSRParsersMustCompile("~*req.Multiplier;~*req.Pow", true, utils.INFIELD_SEP), }, }, Blocker: true, @@ -1730,9 +1730,9 @@ func BenchmarkAttributeProcessEventConstant(b *testing.B) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Type: utils.META_CONSTANT, - Value: config.NewRSRParsersMustCompile("ConstVal", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Type: utils.META_CONSTANT, + Value: config.NewRSRParsersMustCompile("ConstVal", true, utils.INFIELD_SEP), }, }, Blocker: true, @@ -1791,9 +1791,9 @@ func BenchmarkAttributeProcessEventVariable(b *testing.B) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("~*req.Field1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("~*req.Field1", true, utils.INFIELD_SEP), }, }, Blocker: true, @@ -1840,9 +1840,9 @@ func TestGetAttributeProfileFromInline(t *testing.T) { ID: attrID, Contexts: []string{utils.META_ANY}, Attributes: []*Attribute{&Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Type: utils.MetaSum, - Value: config.NewRSRParsersMustCompile("10;~*req.NumField;20", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Type: utils.MetaSum, + Value: config.NewRSRParsersMustCompile("10;~*req.NumField;20", true, utils.INFIELD_SEP), }}, } attr, err := dm.GetAttributeProfile(config.CgrConfig().GeneralCfg().DefaultTenant, attrID, false, false, "") diff --git a/engine/chargers_test.go b/engine/chargers_test.go index 2056a327b..9a612cd11 100755 --- a/engine/chargers_test.go +++ b/engine/chargers_test.go @@ -117,14 +117,14 @@ func TestChargerAddFilter(t *testing.T) { ID: "FLTR_CP_1", Rules: []*FilterRule{ { - Type: utils.MetaString, - FieldName: "~*req.Charger", - Values: []string{"ChargerProfile1"}, + Type: utils.MetaString, + Element: "~*req.Charger", + Values: []string{"ChargerProfile1"}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: "~*req.UsageInterval", - Values: []string{(1 * time.Second).String()}, + Type: utils.MetaGreaterOrEqual, + Element: "~*req.UsageInterval", + Values: []string{(1 * time.Second).String()}, }, }, } @@ -134,9 +134,9 @@ func TestChargerAddFilter(t *testing.T) { ID: "FLTR_CP_2", Rules: []*FilterRule{ { - Type: utils.MetaString, - FieldName: "~*req.Charger", - Values: []string{"ChargerProfile2"}, + Type: utils.MetaString, + Element: "~*req.Charger", + Values: []string{"ChargerProfile2"}, }, }, } @@ -146,9 +146,9 @@ func TestChargerAddFilter(t *testing.T) { ID: "FLTR_CP_3", Rules: []*FilterRule{ { - Type: utils.MetaPrefix, - FieldName: "~*req.harger", - Values: []string{"Charger"}, + Type: utils.MetaPrefix, + Element: "~*req.harger", + Values: []string{"Charger"}, }, }, } @@ -158,9 +158,9 @@ func TestChargerAddFilter(t *testing.T) { ID: "FLTR_CP_4", Rules: []*FilterRule{ { - Type: utils.MetaGreaterOrEqual, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, - Values: []string{"200.00"}, + Type: utils.MetaGreaterOrEqual, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, + Values: []string{"200.00"}, }, }, } diff --git a/engine/filterindexer.go b/engine/filterindexer.go index 963e4c3c2..c5d7a960f 100644 --- a/engine/filterindexer.go +++ b/engine/filterindexer.go @@ -49,7 +49,7 @@ func (rfi *FilterIndexer) IndexTPFilter(tpFltr *utils.TPFilterProfile, itemID st switch fltr.Type { case utils.MetaString: for _, fldVal := range fltr.Values { - concatKey := utils.ConcatenatedKey(fltr.Type, fltr.FieldName, fldVal) + concatKey := utils.ConcatenatedKey(fltr.Type, fltr.Element, fldVal) if _, hasIt := rfi.indexes[concatKey]; !hasIt { rfi.indexes[concatKey] = make(utils.StringMap) } @@ -58,7 +58,7 @@ func (rfi *FilterIndexer) IndexTPFilter(tpFltr *utils.TPFilterProfile, itemID st } case utils.MetaPrefix: for _, fldVal := range fltr.Values { - concatKey := utils.ConcatenatedKey(fltr.Type, fltr.FieldName, fldVal) + concatKey := utils.ConcatenatedKey(fltr.Type, fltr.Element, fldVal) if _, hasIt := rfi.indexes[concatKey]; !hasIt { rfi.indexes[concatKey] = make(utils.StringMap) } @@ -232,9 +232,9 @@ func (rfi *FilterIndexer) RemoveItemFromIndex(tenant, itemID string, oldFilters ID: itemID, Rules: []*FilterRule{ { - Type: utils.META_NONE, - FieldName: utils.META_ANY, - Values: []string{utils.META_ANY}, + Type: utils.META_NONE, + Element: utils.META_ANY, + Values: []string{utils.META_ANY}, }, }, } @@ -250,7 +250,7 @@ func (rfi *FilterIndexer) RemoveItemFromIndex(tenant, itemID string, oldFilters var fldType, fldName string var fldVals []string if utils.SliceHasMember([]string{utils.META_NONE, utils.MetaPrefix, utils.MetaString}, flt.Type) { - fldType, fldName = flt.Type, flt.FieldName + fldType, fldName = flt.Type, flt.Element fldVals = flt.Values } for _, fldVal := range fldVals { @@ -293,9 +293,9 @@ func createAndIndex(itemPrefix, tenant, context, itemID string, filterIDs []stri ID: itemID, Rules: []*FilterRule{ { - Type: utils.META_NONE, - FieldName: utils.META_ANY, - Values: []string{utils.META_ANY}, + Type: utils.META_NONE, + Element: utils.META_ANY, + Values: []string{utils.META_ANY}, }, }, } @@ -311,7 +311,7 @@ func createAndIndex(itemPrefix, tenant, context, itemID string, filterIDs []stri var fldType, fldName string var fldVals []string if utils.SliceHasMember([]string{utils.META_NONE, utils.MetaPrefix, utils.MetaString}, flt.Type) { - fldType, fldName = flt.Type, flt.FieldName + fldType, fldName = flt.Type, flt.Element fldVals = flt.Values } for _, fldVal := range fldVals { diff --git a/engine/filterindexer_it_test.go b/engine/filterindexer_it_test.go index b732807e6..21ded98f6 100644 --- a/engine/filterindexer_it_test.go +++ b/engine/filterindexer_it_test.go @@ -225,9 +225,9 @@ func testITTestThresholdFilterIndexes(t *testing.T) { ID: "Filter1", Rules: []*FilterRule{ { - FieldName: "EventType", - Type: "*string", - Values: []string{"Event1", "Event2"}, + Element: "EventType", + Type: utils.MetaString, + Values: []string{"Event1", "Event2"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -292,9 +292,9 @@ func testITTestThresholdFilterIndexes(t *testing.T) { ID: "Filter2", Rules: []*FilterRule{ { - FieldName: "Account", - Type: "*string", - Values: []string{"1001", "1002"}, + Element: "Account", + Type: utils.MetaString, + Values: []string{"1001", "1002"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -339,9 +339,9 @@ func testITTestThresholdFilterIndexes(t *testing.T) { ID: "Filter3", Rules: []*FilterRule{ { - FieldName: "Destination", - Type: "*string", - Values: []string{"10", "20"}, + Element: "Destination", + Type: utils.MetaString, + Values: []string{"10", "20"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -405,9 +405,9 @@ func testITTestAttributeProfileFilterIndexes(t *testing.T) { ID: "AttrFilter", Rules: []*FilterRule{ { - FieldName: "EventType", - Type: "*string", - Values: []string{"Event1", "Event2"}, + Element: "EventType", + Type: utils.MetaString, + Values: []string{"Event1", "Event2"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -428,8 +428,8 @@ func testITTestAttributeProfileFilterIndexes(t *testing.T) { Contexts: []string{"con1", "con2"}, Attributes: []*Attribute{ { - FieldName: "FN1", - Value: config.NewRSRParsersMustCompile("Val1", true, utils.INFIELD_SEP), + Path: "FN1", + Value: config.NewRSRParsersMustCompile("Val1", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -505,9 +505,9 @@ func testITTestThresholdInlineFilterIndexing(t *testing.T) { ID: "Filter1", Rules: []*FilterRule{ { - FieldName: "EventType", - Type: "*string", - Values: []string{"Event1", "Event2"}, + Element: "EventType", + Type: utils.MetaString, + Values: []string{"Event1", "Event2"}, }, }, ActivationInterval: &utils.ActivationInterval{ diff --git a/engine/filters.go b/engine/filters.go index 784fba526..ff2fd760b 100644 --- a/engine/filters.go +++ b/engine/filters.go @@ -25,6 +25,7 @@ import ( "github.com/cgrates/cgrates/utils" ) +// NewFilterS initializtes the filter service func NewFilterS(cfg *config.CGRConfig, connMgr *ConnManager, dm *DataManager) (fS *FilterS) { fS = &FilterS{ dm: dm, @@ -67,7 +68,7 @@ func (fS *FilterS) Pass(tenant string, filterIDs []string, continue } for _, fltr := range f.Rules { - fieldNameDP, err = fS.getFieldNameDataProvider(ev, fltr.FieldName, tenant) + fieldNameDP, err = fS.getFieldNameDataProvider(ev, fltr.Element, tenant) if err != nil { return pass, err } @@ -94,9 +95,9 @@ func NewFilterFromInline(tenant, inlnRule string) (f *Filter, err error) { Tenant: tenant, ID: inlnRule, Rules: []*FilterRule{{ - Type: ruleSplt[0], - FieldName: ruleSplt[1], - Values: strings.Split(strings.Join(ruleSplt[2:], utils.InInFieldSep), utils.INFIELD_SEP), + Type: ruleSplt[0], + Element: ruleSplt[1], + Values: strings.Split(strings.Join(ruleSplt[2:], utils.InInFieldSep), utils.INFIELD_SEP), }}, } if err = f.Compile(); err != nil { @@ -105,6 +106,7 @@ func NewFilterFromInline(tenant, inlnRule string) (f *Filter, err error) { return } +// Filter structure to define a basic filter type Filter struct { Tenant string ID string @@ -112,13 +114,14 @@ type Filter struct { ActivationInterval *utils.ActivationInterval } -func (flt *Filter) TenantID() string { - return utils.ConcatenatedKey(flt.Tenant, flt.ID) +// TenantID returns the tenant wit the ID +func (fltr *Filter) TenantID() string { + return utils.ConcatenatedKey(fltr.Tenant, fltr.ID) } // Compile will compile the underlaying request filters where necessary (ie. regexp rules) -func (f *Filter) Compile() (err error) { - for _, rf := range f.Rules { +func (fltr *Filter) Compile() (err error) { + for _, rf := range fltr.Rules { if err = rf.CompileValues(); err != nil { return } @@ -140,6 +143,7 @@ var needsValues *utils.StringSet = utils.NewStringSet([]string{utils.MetaString, utils.MetaLessThan, utils.MetaLessOrEqual, utils.MetaGreaterThan, utils.MetaGreaterOrEqual, utils.MetaEqual, utils.MetaNotEqual}) +// NewFilterRule returns a new filter func NewFilterRule(rfType, fieldName string, vals []string) (*FilterRule, error) { var negative bool rType := rfType @@ -151,16 +155,16 @@ func NewFilterRule(rfType, fieldName string, vals []string) (*FilterRule, error) return nil, fmt.Errorf("Unsupported filter Type: %s", rfType) } if fieldName == "" && needsFieldName.Has(rType) { - return nil, fmt.Errorf("FieldName is mandatory for Type: %s", rfType) + return nil, fmt.Errorf("Element is mandatory for Type: %s", rfType) } if len(vals) == 0 && needsValues.Has(rType) { return nil, fmt.Errorf("Values is mandatory for Type: %s", rfType) } rf := &FilterRule{ - Type: rfType, - FieldName: fieldName, - Values: vals, - negative: utils.BoolPointer(negative), + Type: rfType, + Element: fieldName, + Values: vals, + negative: utils.BoolPointer(negative), } if err := rf.CompileValues(); err != nil { return nil, err @@ -172,17 +176,17 @@ func NewFilterRule(rfType, fieldName string, vals []string) (*FilterRule, error) // Pass rule: default negative, one mathing rule should pass the filter type FilterRule struct { Type string // Filter type (*string, *timing, *rsr_filters, *stats, *lt, *lte, *gt, *gte) - FieldName string // Name of the field providing us the Values to check (used in case of some ) + Element string // Name of the field providing us the Values to check (used in case of some ) Values []string // Filter definition rsrFields config.RSRParsers // Cache here the RSRFilter Values negative *bool } -// Separate method to compile RSR fields -func (rf *FilterRule) CompileValues() (err error) { - switch rf.Type { +// CompileValues compiles RSR fields +func (fltr *FilterRule) CompileValues() (err error) { + switch fltr.Type { case utils.MetaRSR, utils.MetaNotRSR: - if rf.rsrFields, err = config.NewRSRParsersFromSlice(rf.Values, true); err != nil { + if fltr.rsrFields, err = config.NewRSRParsersFromSlice(fltr.Values, true); err != nil { return } } @@ -227,7 +231,7 @@ func (fltr *FilterRule) Pass(fieldNameDP config.DataProvider, } func (fltr *FilterRule) passString(fielNameDP config.DataProvider, fieldValuesDP []config.DataProvider) (bool, error) { - strVal, err := config.DPDynamicString(fltr.FieldName, fielNameDP) + strVal, err := config.DPDynamicString(fltr.Element, fielNameDP) if err != nil { if err == utils.ErrNotFound { return false, nil @@ -247,7 +251,7 @@ func (fltr *FilterRule) passString(fielNameDP config.DataProvider, fieldValuesDP } func (fltr *FilterRule) passExists(fielNameDP config.DataProvider) (bool, error) { - _, err := config.DPDynamicInterface(fltr.FieldName, fielNameDP) + _, err := config.DPDynamicInterface(fltr.Element, fielNameDP) if err != nil { if err == utils.ErrNotFound { return false, nil @@ -258,7 +262,7 @@ func (fltr *FilterRule) passExists(fielNameDP config.DataProvider) (bool, error) } func (fltr *FilterRule) passEmpty(fielNameDP config.DataProvider) (bool, error) { - val, err := config.DPDynamicInterface(fltr.FieldName, fielNameDP) + val, err := config.DPDynamicInterface(fltr.Element, fielNameDP) if err != nil { if err == utils.ErrNotFound { return true, nil @@ -288,7 +292,7 @@ func (fltr *FilterRule) passEmpty(fielNameDP config.DataProvider) (bool, error) } func (fltr *FilterRule) passStringPrefix(fielNameDP config.DataProvider, fieldValuesDP []config.DataProvider) (bool, error) { - strVal, err := config.DPDynamicString(fltr.FieldName, fielNameDP) + strVal, err := config.DPDynamicString(fltr.Element, fielNameDP) if err != nil { if err == utils.ErrNotFound { return false, nil @@ -308,7 +312,7 @@ func (fltr *FilterRule) passStringPrefix(fielNameDP config.DataProvider, fieldVa } func (fltr *FilterRule) passStringSuffix(fielNameDP config.DataProvider, fieldValuesDP []config.DataProvider) (bool, error) { - strVal, err := config.DPDynamicString(fltr.FieldName, fielNameDP) + strVal, err := config.DPDynamicString(fltr.Element, fielNameDP) if err != nil { if err == utils.ErrNotFound { return false, nil @@ -333,7 +337,7 @@ func (fltr *FilterRule) passTimings(fielNameDP config.DataProvider, fieldValuesD } func (fltr *FilterRule) passDestinations(fielNameDP config.DataProvider, fieldValuesDP []config.DataProvider) (bool, error) { - dst, err := config.DPDynamicString(fltr.FieldName, fielNameDP) + dst, err := config.DPDynamicString(fltr.Element, fielNameDP) if err != nil { if err == utils.ErrNotFound { return false, nil @@ -370,7 +374,7 @@ func (fltr *FilterRule) passRSR(fieldValuesDP []config.DataProvider) (bool, erro } func (fltr *FilterRule) passGreaterThan(fielNameDP config.DataProvider, fieldValuesDP []config.DataProvider) (bool, error) { - fldIf, err := config.DPDynamicInterface(fltr.FieldName, fielNameDP) + fldIf, err := config.DPDynamicInterface(fltr.Element, fielNameDP) if err != nil { if err == utils.ErrNotFound { return false, nil @@ -402,7 +406,7 @@ func (fltr *FilterRule) passGreaterThan(fielNameDP config.DataProvider, fieldVal } func (fltr *FilterRule) passEqualTo(fielNameDP config.DataProvider, fieldValuesDP []config.DataProvider) (bool, error) { - fldIf, err := config.DPDynamicInterface(fltr.FieldName, fielNameDP) + fldIf, err := config.DPDynamicInterface(fltr.Element, fielNameDP) if err != nil { if err == utils.ErrNotFound { return false, nil diff --git a/engine/filters_test.go b/engine/filters_test.go index f8f1c0975..806a30393 100644 --- a/engine/filters_test.go +++ b/engine/filters_test.go @@ -35,14 +35,14 @@ func TestFilterPassString(t *testing.T) { ExtraFields: map[string]string{"navigation": "off"}, } rf := &FilterRule{Type: utils.MetaString, - FieldName: "~Category", Values: []string{"call"}} + Element: "~Category", Values: []string{"call"}} if passes, err := rf.passString(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if !passes { t.Error("Not passes filter") } rf = &FilterRule{Type: utils.MetaString, - FieldName: "~Category", Values: []string{"cal"}} + Element: "~Category", Values: []string{"cal"}} if passes, err := rf.passString(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if passes { @@ -50,14 +50,14 @@ func TestFilterPassString(t *testing.T) { } //not rf = &FilterRule{Type: utils.MetaNotString, - FieldName: "~Category", Values: []string{"call"}} + Element: "~Category", Values: []string{"call"}} if passes, err := rf.Pass(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if passes { t.Error("Filter passes") } rf = &FilterRule{Type: utils.MetaNotString, - FieldName: "~Category", Values: []string{"cal"}} + Element: "~Category", Values: []string{"cal"}} if passes, err := rf.Pass(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if !passes { @@ -76,27 +76,27 @@ func TestFilterPassEmpty(t *testing.T) { DurationIndex: 132 * time.Second, ExtraFields: map[string]string{"navigation": "off"}, } - rf := &FilterRule{Type: utils.MetaEmpty, FieldName: "~Category", Values: []string{}} + rf := &FilterRule{Type: utils.MetaEmpty, Element: "~Category", Values: []string{}} if passes, err := rf.passEmpty(cd); err != nil { t.Error(err) } else if !passes { t.Error("Not passes filter") } - rf = &FilterRule{Type: utils.MetaEmpty, FieldName: "~ExtraFields", Values: []string{}} + rf = &FilterRule{Type: utils.MetaEmpty, Element: "~ExtraFields", Values: []string{}} if passes, err := rf.passEmpty(cd); err != nil { t.Error(err) } else if passes { t.Error("Filter passes") } cd.ExtraFields = map[string]string{} - rf = &FilterRule{Type: utils.MetaEmpty, FieldName: "~ExtraFields", Values: []string{}} + rf = &FilterRule{Type: utils.MetaEmpty, Element: "~ExtraFields", Values: []string{}} if passes, err := rf.passEmpty(cd); err != nil { t.Error(err) } else if !passes { t.Error("Not passes filter") } //not - rf = &FilterRule{Type: utils.MetaNotEmpty, FieldName: "~Category", Values: []string{}} + rf = &FilterRule{Type: utils.MetaNotEmpty, Element: "~Category", Values: []string{}} if passes, err := rf.Pass(cd, []config.DataProvider{}); err != nil { t.Error(err) } else if passes { @@ -115,27 +115,27 @@ func TestFilterPassExists(t *testing.T) { DurationIndex: 132 * time.Second, ExtraFields: map[string]string{"navigation": "off"}, } - rf := &FilterRule{Type: utils.MetaExists, FieldName: "~Category", Values: []string{}} + rf := &FilterRule{Type: utils.MetaExists, Element: "~Category", Values: []string{}} if passes, err := rf.passExists(cd); err != nil { t.Error(err) } else if !passes { t.Error("Not passes filter") } - rf = &FilterRule{Type: utils.MetaExists, FieldName: "~ExtraFields1", Values: []string{}} + rf = &FilterRule{Type: utils.MetaExists, Element: "~ExtraFields1", Values: []string{}} if passes, err := rf.passExists(cd); err != nil { t.Error(err) } else if passes { t.Error("Filter passes") } cd.ExtraFields = map[string]string{} - rf = &FilterRule{Type: utils.MetaExists, FieldName: "~ExtraFields", Values: []string{}} + rf = &FilterRule{Type: utils.MetaExists, Element: "~ExtraFields", Values: []string{}} if passes, err := rf.passExists(cd); err != nil { t.Error(err) } else if !passes { t.Error("Not passes filter") } //not - rf = &FilterRule{Type: utils.MetaNotExists, FieldName: "~Category1", Values: []string{}} + rf = &FilterRule{Type: utils.MetaNotExists, Element: "~Category1", Values: []string{}} if passes, err := rf.Pass(cd, []config.DataProvider{}); err != nil { t.Error(err) } else if !passes { @@ -154,44 +154,44 @@ func TestFilterPassStringPrefix(t *testing.T) { DurationIndex: 132 * time.Second, ExtraFields: map[string]string{"navigation": "off"}, } - rf := &FilterRule{Type: utils.MetaPrefix, FieldName: "~Category", Values: []string{"call"}} + rf := &FilterRule{Type: utils.MetaPrefix, Element: "~Category", Values: []string{"call"}} if passes, err := rf.passStringPrefix(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if !passes { t.Error("Not passes filter") } - rf = &FilterRule{Type: utils.MetaPrefix, FieldName: "~Category", Values: []string{"premium"}} + rf = &FilterRule{Type: utils.MetaPrefix, Element: "~Category", Values: []string{"premium"}} if passes, err := rf.passStringPrefix(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if passes { t.Error("Passes filter") } - rf = &FilterRule{Type: utils.MetaPrefix, FieldName: "~Destination", Values: []string{"+49"}} + rf = &FilterRule{Type: utils.MetaPrefix, Element: "~Destination", Values: []string{"+49"}} if passes, err := rf.passStringPrefix(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if !passes { t.Error("Not passes filter") } - rf = &FilterRule{Type: utils.MetaPrefix, FieldName: "~Destination", Values: []string{"+499"}} + rf = &FilterRule{Type: utils.MetaPrefix, Element: "~Destination", Values: []string{"+499"}} if passes, err := rf.passStringPrefix(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if passes { t.Error("Passes filter") } - rf = &FilterRule{Type: utils.MetaPrefix, FieldName: "~navigation", Values: []string{"off"}} + rf = &FilterRule{Type: utils.MetaPrefix, Element: "~navigation", Values: []string{"off"}} if passes, err := rf.passStringPrefix(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if !passes { t.Error("Not passes filter") } - rf = &FilterRule{Type: utils.MetaPrefix, FieldName: "~nonexisting", Values: []string{"off"}} + rf = &FilterRule{Type: utils.MetaPrefix, Element: "~nonexisting", Values: []string{"off"}} if passing, err := rf.passStringPrefix(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if passing { t.Error("Passes filter") } //not - rf = &FilterRule{Type: utils.MetaNotPrefix, FieldName: "~Category", Values: []string{"premium"}} + rf = &FilterRule{Type: utils.MetaNotPrefix, Element: "~Category", Values: []string{"premium"}} if passes, err := rf.Pass(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if !passes { @@ -210,44 +210,44 @@ func TestFilterPassStringSuffix(t *testing.T) { DurationIndex: 132 * time.Second, ExtraFields: map[string]string{"navigation": "off"}, } - rf := &FilterRule{Type: utils.MetaSuffix, FieldName: "~Category", Values: []string{"call"}} + rf := &FilterRule{Type: utils.MetaSuffix, Element: "~Category", Values: []string{"call"}} if passes, err := rf.passStringSuffix(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if !passes { t.Error("Not passes filter") } - rf = &FilterRule{Type: utils.MetaSuffix, FieldName: "~Category", Values: []string{"premium"}} + rf = &FilterRule{Type: utils.MetaSuffix, Element: "~Category", Values: []string{"premium"}} if passes, err := rf.passStringSuffix(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if passes { t.Error("Passes filter") } - rf = &FilterRule{Type: utils.MetaSuffix, FieldName: "~Destination", Values: []string{"963"}} + rf = &FilterRule{Type: utils.MetaSuffix, Element: "~Destination", Values: []string{"963"}} if passes, err := rf.passStringSuffix(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if !passes { t.Error("Not passes filter") } - rf = &FilterRule{Type: utils.MetaSuffix, FieldName: "~Destination", Values: []string{"4966"}} + rf = &FilterRule{Type: utils.MetaSuffix, Element: "~Destination", Values: []string{"4966"}} if passes, err := rf.passStringSuffix(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if passes { t.Error("Passes filter") } - rf = &FilterRule{Type: utils.MetaSuffix, FieldName: "~navigation", Values: []string{"off"}} + rf = &FilterRule{Type: utils.MetaSuffix, Element: "~navigation", Values: []string{"off"}} if passes, err := rf.passStringSuffix(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if !passes { t.Error("Not passes filter") } - rf = &FilterRule{Type: utils.MetaSuffix, FieldName: "~nonexisting", Values: []string{"off"}} + rf = &FilterRule{Type: utils.MetaSuffix, Element: "~nonexisting", Values: []string{"off"}} if passing, err := rf.passStringSuffix(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if passing { t.Error("Passes filter") } //not - rf = &FilterRule{Type: utils.MetaNotSuffix, FieldName: "~Destination", Values: []string{"963"}} + rf = &FilterRule{Type: utils.MetaNotSuffix, Element: "~Destination", Values: []string{"963"}} if passes, err := rf.Pass(cd, []config.DataProvider{cd}); err != nil { t.Error(err) } else if passes { @@ -517,7 +517,7 @@ func TestFilterNewRequestFilter(t *testing.T) { if err != nil { t.Errorf("Error: %+v", err) } - erf := &FilterRule{Type: utils.MetaString, FieldName: "~MetaString", Values: []string{"String"}, negative: utils.BoolPointer(false)} + erf := &FilterRule{Type: utils.MetaString, Element: "~MetaString", Values: []string{"String"}, negative: utils.BoolPointer(false)} if !reflect.DeepEqual(erf, rf) { t.Errorf("Expecting: %+v, received: %+v", erf, rf) } @@ -525,7 +525,7 @@ func TestFilterNewRequestFilter(t *testing.T) { if err != nil { t.Errorf("Error: %+v", err) } - erf = &FilterRule{Type: utils.MetaEmpty, FieldName: "~MetaEmpty", Values: []string{}, negative: utils.BoolPointer(false)} + erf = &FilterRule{Type: utils.MetaEmpty, Element: "~MetaEmpty", Values: []string{}, negative: utils.BoolPointer(false)} if !reflect.DeepEqual(erf, rf) { t.Errorf("Expecting: %+v, received: %+v", erf, rf) } @@ -533,7 +533,7 @@ func TestFilterNewRequestFilter(t *testing.T) { if err != nil { t.Errorf("Error: %+v", err) } - erf = &FilterRule{Type: utils.MetaExists, FieldName: "~MetaExists", Values: []string{}, negative: utils.BoolPointer(false)} + erf = &FilterRule{Type: utils.MetaExists, Element: "~MetaExists", Values: []string{}, negative: utils.BoolPointer(false)} if !reflect.DeepEqual(erf, rf) { t.Errorf("Expecting: %+v, received: %+v", erf, rf) } @@ -541,7 +541,7 @@ func TestFilterNewRequestFilter(t *testing.T) { if err != nil { t.Errorf("Error: %+v", err) } - erf = &FilterRule{Type: utils.MetaPrefix, FieldName: "~MetaPrefix", Values: []string{"stringPrefix"}, negative: utils.BoolPointer(false)} + erf = &FilterRule{Type: utils.MetaPrefix, Element: "~MetaPrefix", Values: []string{"stringPrefix"}, negative: utils.BoolPointer(false)} if !reflect.DeepEqual(erf, rf) { t.Errorf("Expecting: %+v, received: %+v", erf, rf) } @@ -549,7 +549,7 @@ func TestFilterNewRequestFilter(t *testing.T) { if err != nil { t.Errorf("Error: %+v", err) } - erf = &FilterRule{Type: utils.MetaSuffix, FieldName: "~MetaSuffix", Values: []string{"stringSuffix"}, negative: utils.BoolPointer(false)} + erf = &FilterRule{Type: utils.MetaSuffix, Element: "~MetaSuffix", Values: []string{"stringSuffix"}, negative: utils.BoolPointer(false)} if !reflect.DeepEqual(erf, rf) { t.Errorf("Expecting: %+v, received: %+v", erf, rf) } @@ -557,7 +557,7 @@ func TestFilterNewRequestFilter(t *testing.T) { if err != nil { t.Errorf("Error: %+v", err) } - erf = &FilterRule{Type: utils.MetaTimings, FieldName: "~MetaTimings", Values: []string{""}, negative: utils.BoolPointer(false)} + erf = &FilterRule{Type: utils.MetaTimings, Element: "~MetaTimings", Values: []string{""}, negative: utils.BoolPointer(false)} if !reflect.DeepEqual(erf, rf) { t.Errorf("Expecting: %+v, received: %+v", erf, rf) } @@ -565,7 +565,7 @@ func TestFilterNewRequestFilter(t *testing.T) { if err != nil { t.Errorf("Error: %+v", err) } - erf = &FilterRule{Type: utils.MetaDestinations, FieldName: "~MetaDestinations", Values: []string{""}, negative: utils.BoolPointer(false)} + erf = &FilterRule{Type: utils.MetaDestinations, Element: "~MetaDestinations", Values: []string{""}, negative: utils.BoolPointer(false)} if !reflect.DeepEqual(erf, rf) { t.Errorf("Expecting: %+v, received: %+v", erf, rf) } @@ -573,7 +573,7 @@ func TestFilterNewRequestFilter(t *testing.T) { if err != nil { t.Errorf("Error: %+v", err) } - erf = &FilterRule{Type: utils.MetaLessThan, FieldName: "~MetaLessThan", Values: []string{"20"}, negative: utils.BoolPointer(false)} + erf = &FilterRule{Type: utils.MetaLessThan, Element: "~MetaLessThan", Values: []string{"20"}, negative: utils.BoolPointer(false)} if !reflect.DeepEqual(erf, rf) { t.Errorf("Expecting: %+v, received: %+v", erf, rf) } @@ -581,7 +581,7 @@ func TestFilterNewRequestFilter(t *testing.T) { if err != nil { t.Errorf("Error: %+v", err) } - erf = &FilterRule{Type: utils.MetaLessOrEqual, FieldName: "~MetaLessOrEqual", Values: []string{"20"}, negative: utils.BoolPointer(false)} + erf = &FilterRule{Type: utils.MetaLessOrEqual, Element: "~MetaLessOrEqual", Values: []string{"20"}, negative: utils.BoolPointer(false)} if !reflect.DeepEqual(erf, rf) { t.Errorf("Expecting: %+v, received: %+v", erf, rf) } @@ -589,7 +589,7 @@ func TestFilterNewRequestFilter(t *testing.T) { if err != nil { t.Errorf("Error: %+v", err) } - erf = &FilterRule{Type: utils.MetaGreaterThan, FieldName: "~MetaGreaterThan", Values: []string{"20"}, negative: utils.BoolPointer(false)} + erf = &FilterRule{Type: utils.MetaGreaterThan, Element: "~MetaGreaterThan", Values: []string{"20"}, negative: utils.BoolPointer(false)} if !reflect.DeepEqual(erf, rf) { t.Errorf("Expecting: %+v, received: %+v", erf, rf) } @@ -597,7 +597,7 @@ func TestFilterNewRequestFilter(t *testing.T) { if err != nil { t.Errorf("Error: %+v", err) } - erf = &FilterRule{Type: utils.MetaGreaterOrEqual, FieldName: "~MetaGreaterOrEqual", Values: []string{"20"}, negative: utils.BoolPointer(false)} + erf = &FilterRule{Type: utils.MetaGreaterOrEqual, Element: "~MetaGreaterOrEqual", Values: []string{"20"}, negative: utils.BoolPointer(false)} if !reflect.DeepEqual(erf, rf) { t.Errorf("Expecting: %+v, received: %+v", erf, rf) } diff --git a/engine/libattributes.go b/engine/libattributes.go index 3d2a9409c..3587494ac 100644 --- a/engine/libattributes.go +++ b/engine/libattributes.go @@ -27,13 +27,15 @@ import ( "github.com/cgrates/cgrates/utils" ) +// Attribute used by AttributeProfile to describe a single attribute type Attribute struct { FilterIDs []string - FieldName string + Path string Type string Value config.RSRParsers } +// AttributeProfile the profile definition for the attributes type AttributeProfile struct { Tenant string ID string @@ -59,8 +61,9 @@ func (ap *AttributeProfile) Compile() error { return ap.compileSubstitutes() } -func (als *AttributeProfile) TenantID() string { - return utils.ConcatenatedKey(als.Tenant, als.ID) +// TenantID returns the tenant wit the ID +func (ap *AttributeProfile) TenantID() string { + return utils.ConcatenatedKey(ap.Tenant, ap.ID) } // AttributeProfiles is a sortable list of Attribute profiles @@ -71,13 +74,15 @@ func (aps AttributeProfiles) Sort() { sort.Slice(aps, func(i, j int) bool { return aps[i].Weight > aps[j].Weight }) } +// ExternalAttribute the attribute for external profile type ExternalAttribute struct { FilterIDs []string - FieldName string + Path string Type string Value string } +// ExternalAttributeProfile used by APIs type ExternalAttributeProfile struct { Tenant string ID string @@ -89,6 +94,7 @@ type ExternalAttributeProfile struct { Weight float64 } +// AsAttributeProfile converts the external attribute format to the actual AttributeProfile func (ext *ExternalAttributeProfile) AsAttributeProfile() (attr *AttributeProfile, err error) { attr = new(AttributeProfile) if len(ext.Attributes) == 0 { @@ -105,7 +111,7 @@ func (ext *ExternalAttributeProfile) AsAttributeProfile() (attr *AttributeProfil } attr.Attributes[i].Type = extAttr.Type attr.Attributes[i].FilterIDs = extAttr.FilterIDs - attr.Attributes[i].FieldName = extAttr.FieldName + attr.Attributes[i].Path = extAttr.Path } attr.Tenant = ext.Tenant attr.ID = ext.ID @@ -132,9 +138,9 @@ func NewAttributeFromInline(tenant, inlnRule string) (attr *AttributeProfile, er ID: inlnRule, Contexts: []string{utils.META_ANY}, Attributes: []*Attribute{&Attribute{ - FieldName: ruleSplt[1], - Type: ruleSplt[0], - Value: vals, + Path: ruleSplt[1], + Type: ruleSplt[0], + Value: vals, }}, } if err = attr.Compile(); err != nil { diff --git a/engine/libattributes_test.go b/engine/libattributes_test.go index f4c0a012f..a50befebf 100644 --- a/engine/libattributes_test.go +++ b/engine/libattributes_test.go @@ -39,8 +39,8 @@ func TestConvertExternalToProfile(t *testing.T) { }, Attributes: []*ExternalAttribute{ &ExternalAttribute{ - FieldName: utils.MetaReq + utils.NestingSep + "Account", - Value: "1001", + Path: utils.MetaReq + utils.NestingSep + "Account", + Value: "1001", }, }, Weight: 20, @@ -57,8 +57,8 @@ func TestConvertExternalToProfile(t *testing.T) { }, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Account", - Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Account", + Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -108,7 +108,7 @@ func TestConvertExternalToProfileMissing2(t *testing.T) { }, Attributes: []*ExternalAttribute{ &ExternalAttribute{ - FieldName: utils.MetaReq + utils.NestingSep + "Account", + Path: utils.MetaReq + utils.NestingSep + "Account", }, }, Weight: 20, @@ -128,9 +128,9 @@ func TestNewAttributeFromInline(t *testing.T) { ID: attrID, Contexts: []string{utils.META_ANY}, Attributes: []*Attribute{&Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + "Field2", - Type: utils.MetaSum, - Value: config.NewRSRParsersMustCompile("10;~*req.NumField;20", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Field2", + Type: utils.MetaSum, + Value: config.NewRSRParsersMustCompile("10;~*req.NumField;20", true, utils.INFIELD_SEP), }}, } attr, err := NewAttributeFromInline(config.CgrConfig().GeneralCfg().DefaultTenant, attrID) diff --git a/engine/libtest.go b/engine/libtest.go index e49a0791f..de35b29ee 100644 --- a/engine/libtest.go +++ b/engine/libtest.go @@ -246,7 +246,7 @@ cgrates.org,Threshold1,*string:~*req.Account:1001;*string:~*req.RunID:*default,2 ` FiltersCSVContent = ` -#Tenant[0],ID[1],FilterType[2],FilterFieldName[3],FilterFieldValues[4],ActivationInterval[5] +#Tenant[0],ID[1],Type[2],Element[3],Values[4],ActivationInterval[5] cgrates.org,FLTR_1,*string,~*req.Account,1001;1002,2014-07-29T15:00:00Z cgrates.org,FLTR_1,*prefix,~*req.Destination,10;20,2014-07-29T15:00:00Z cgrates.org,FLTR_1,*rsr,,~*req.Subject(~^1.*1$);~*req.Destination(1002), @@ -262,7 +262,7 @@ cgrates.org,SPP_1,,,,,supplier1,FLTR_DST_DE,Account2,RPL_3,ResGroup3,Stat2,10,,, cgrates.org,SPP_1,,,,,supplier1,,,,ResGroup4,Stat3,10,,, ` AttributesCSVContent = ` -#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,FieldName,Type,Value,Blocker,Weight +#Tenant,ID,Contexts,FilterIDs,ActivationInterval,AttributeFilterIDs,Path,Type,Value,Blocker,Weight cgrates.org,ALS1,con1,*string:~*req.Account:1001,2014-07-29T15:00:00Z,*string:~*req.Field1:Initial,*req.Field1,*variable,Sub1,true,20 cgrates.org,ALS1,con2;con3,,,,*req.Field2,*variable,Sub2,true,20 ` diff --git a/engine/loader_csv_test.go b/engine/loader_csv_test.go index ed5e887bc..221fd5ebf 100644 --- a/engine/loader_csv_test.go +++ b/engine/loader_csv_test.go @@ -1151,19 +1151,19 @@ func TestLoadFilters(t *testing.T) { ID: "FLTR_1", Filters: []*utils.TPFilter{ &utils.TPFilter{ - FieldName: "~*req.Account", - Type: utils.MetaString, - Values: []string{"1001", "1002"}, + Element: "~*req.Account", + Type: utils.MetaString, + Values: []string{"1001", "1002"}, }, &utils.TPFilter{ - FieldName: "~*req.Destination", - Type: utils.MetaPrefix, - Values: []string{"10", "20"}, + Element: "~*req.Destination", + Type: utils.MetaPrefix, + Values: []string{"10", "20"}, }, &utils.TPFilter{ - FieldName: "", - Type: utils.MetaRSR, - Values: []string{"~*req.Subject(~^1.*1$)", "~*req.Destination(1002)"}, + Element: "", + Type: utils.MetaRSR, + Values: []string{"~*req.Subject(~^1.*1$)", "~*req.Destination(1002)"}, }, }, ActivationInterval: &utils.TPActivationInterval{ @@ -1176,9 +1176,9 @@ func TestLoadFilters(t *testing.T) { ID: "FLTR_ACNT_dan", Filters: []*utils.TPFilter{ &utils.TPFilter{ - FieldName: "~*req.Account", - Type: utils.MetaString, - Values: []string{"dan"}, + Element: "~*req.Account", + Type: utils.MetaString, + Values: []string{"dan"}, }, }, ActivationInterval: &utils.TPActivationInterval{ @@ -1191,9 +1191,9 @@ func TestLoadFilters(t *testing.T) { ID: "FLTR_DST_DE", Filters: []*utils.TPFilter{ &utils.TPFilter{ - FieldName: "~*req.Destination", - Type: utils.MetaDestinations, - Values: []string{"DST_DE"}, + Element: "~*req.Destination", + Type: utils.MetaDestinations, + Values: []string{"DST_DE"}, }, }, ActivationInterval: &utils.TPActivationInterval{ @@ -1206,9 +1206,9 @@ func TestLoadFilters(t *testing.T) { ID: "FLTR_DST_NL", Filters: []*utils.TPFilter{ &utils.TPFilter{ - FieldName: "~*req.Destination", - Type: utils.MetaDestinations, - Values: []string{"DST_NL"}, + Element: "~*req.Destination", + Type: utils.MetaDestinations, + Values: []string{"DST_NL"}, }, }, ActivationInterval: &utils.TPActivationInterval{ @@ -1274,13 +1274,13 @@ func TestLoadAttributeProfiles(t *testing.T) { Attributes: []*utils.TPAttribute{ &utils.TPAttribute{ FilterIDs: []string{"*string:~*req.Field1:Initial"}, - FieldName: utils.MetaReq + utils.NestingSep + "Field1", + Path: utils.MetaReq + utils.NestingSep + "Field1", Type: utils.MetaVariable, Value: "Sub1", }, &utils.TPAttribute{ FilterIDs: []string{}, - FieldName: utils.MetaReq + utils.NestingSep + "Field2", + Path: utils.MetaReq + utils.NestingSep + "Field2", Type: utils.MetaVariable, Value: "Sub2", }, diff --git a/engine/model_helpers.go b/engine/model_helpers.go index c7e428e27..6bd3d3f50 100644 --- a/engine/model_helpers.go +++ b/engine/model_helpers.go @@ -1692,11 +1692,11 @@ func (tps TpFilterS) AsTPFilter() (result []*utils.TPFilterProfile) { th.ActivationInterval.ActivationTime = aiSplt[0] } } - if tp.FilterType != "" { + if tp.Type != "" { th.Filters = append(th.Filters, &utils.TPFilter{ - Type: tp.FilterType, - FieldName: tp.FilterFieldName, - Values: strings.Split(tp.FilterFieldValues, utils.INFIELD_SEP)}) + Type: tp.Type, + Element: tp.Element, + Values: strings.Split(tp.Values, utils.INFIELD_SEP)}) } mst[(&utils.TenantID{Tenant: tp.Tenant, ID: tp.ID}).TenantID()] = th } @@ -1719,8 +1719,8 @@ func APItoModelTPFilter(th *utils.TPFilterProfile) (mdls TpFilterS) { Tenant: th.Tenant, ID: th.ID, } - mdl.FilterType = fltr.Type - mdl.FilterFieldName = fltr.FieldName + mdl.Type = fltr.Type + mdl.Element = fltr.Element if th.ActivationInterval != nil { if th.ActivationInterval.ActivationTime != "" { mdl.ActivationInterval = th.ActivationInterval.ActivationTime @@ -1731,9 +1731,9 @@ func APItoModelTPFilter(th *utils.TPFilterProfile) (mdls TpFilterS) { } for i, val := range fltr.Values { if i != 0 { - mdl.FilterFieldValues += utils.INFIELD_SEP + mdl.Values += utils.INFIELD_SEP } - mdl.FilterFieldValues += val + mdl.Values += val } mdls = append(mdls, mdl) } @@ -1747,7 +1747,7 @@ func APItoFilter(tpTH *utils.TPFilterProfile, timezone string) (th *Filter, err Rules: make([]*FilterRule, len(tpTH.Filters)), } for i, f := range tpTH.Filters { - rf := &FilterRule{Type: f.Type, FieldName: f.FieldName, Values: f.Values} + rf := &FilterRule{Type: f.Type, Element: f.Element, Values: f.Values} if err := rf.CompileValues(); err != nil { return nil, err } @@ -1769,9 +1769,9 @@ func FilterToTPFilter(f *Filter) (tpFltr *utils.TPFilterProfile) { } for i, reqFltr := range f.Rules { tpFltr.Filters[i] = &utils.TPFilter{ - Type: reqFltr.Type, - FieldName: reqFltr.FieldName, - Values: make([]string, len(reqFltr.Values)), + Type: reqFltr.Type, + Element: reqFltr.Element, + Values: make([]string, len(reqFltr.Values)), } for j, val := range reqFltr.Values { tpFltr.Filters[i].Values[j] = val @@ -2051,7 +2051,7 @@ func (tps TPAttributes) AsTPAttributes() (result []*utils.TPAttributeProfile) { contextMap[key.TenantID()][context] = true } } - if tp.FieldName != "" { + if tp.Path != "" { filterIDs := make([]string, 0) if tp.AttributeFilterIDs != "" { filterAttrSplit := strings.Split(tp.AttributeFilterIDs, utils.INFIELD_SEP) @@ -2062,7 +2062,7 @@ func (tps TPAttributes) AsTPAttributes() (result []*utils.TPAttributeProfile) { th.Attributes = append(th.Attributes, &utils.TPAttribute{ FilterIDs: filterIDs, Type: tp.Type, - FieldName: tp.FieldName, + Path: tp.Path, Value: tp.Value, }) } @@ -2125,7 +2125,7 @@ func APItoModelTPAttribute(th *utils.TPAttributeProfile) (mdls TPAttributes) { mdl.AttributeFilterIDs += val } } - mdl.FieldName = reqAttribute.FieldName + mdl.Path = reqAttribute.Path mdl.Value = reqAttribute.Value mdl.Type = reqAttribute.Type mdls = append(mdls, mdl) @@ -2156,7 +2156,7 @@ func APItoAttributeProfile(tpAttr *utils.TPAttributeProfile, timezone string) (a } attrPrf.Attributes[i] = &Attribute{ FilterIDs: reqAttr.FilterIDs, - FieldName: reqAttr.FieldName, + Path: reqAttr.Path, Type: reqAttr.Type, Value: sbstPrsr, } diff --git a/engine/model_helpers_test.go b/engine/model_helpers_test.go index 6a5deb3f1..9cc573868 100644 --- a/engine/model_helpers_test.go +++ b/engine/model_helpers_test.go @@ -1050,11 +1050,11 @@ func TestAPItoTPThreshold(t *testing.T) { func TestTPFilterAsTPFilter(t *testing.T) { tps := []*TpFilter{ &TpFilter{ - Tpid: "TEST_TPID", - ID: "Filter1", - FilterType: utils.MetaPrefix, - FilterFieldName: "Account", - FilterFieldValues: "1001;1002", + Tpid: "TEST_TPID", + ID: "Filter1", + Type: utils.MetaPrefix, + Element: "Account", + Values: "1001;1002", }, } eTPs := []*utils.TPFilterProfile{ @@ -1063,9 +1063,9 @@ func TestTPFilterAsTPFilter(t *testing.T) { ID: tps[0].ID, Filters: []*utils.TPFilter{ &utils.TPFilter{ - Type: utils.MetaPrefix, - FieldName: "Account", - Values: []string{"1001", "1002"}, + Type: utils.MetaPrefix, + Element: "Account", + Values: []string{"1001", "1002"}, }, }, }, @@ -1080,20 +1080,20 @@ func TestTPFilterAsTPFilter(t *testing.T) { func TestTPFilterAsTPFilter2(t *testing.T) { tps := []*TpFilter{ &TpFilter{ - Tpid: "TEST_TPID", - Tenant: "cgrates.org", - ID: "Filter1", - FilterType: utils.MetaPrefix, - FilterFieldName: "Account", - FilterFieldValues: "1001;1002", + Tpid: "TEST_TPID", + Tenant: "cgrates.org", + ID: "Filter1", + Type: utils.MetaPrefix, + Element: "Account", + Values: "1001;1002", }, &TpFilter{ - Tpid: "TEST_TPID", - Tenant: "anotherTenant", - ID: "Filter1", - FilterType: utils.MetaPrefix, - FilterFieldName: "Account", - FilterFieldValues: "1010", + Tpid: "TEST_TPID", + Tenant: "anotherTenant", + ID: "Filter1", + Type: utils.MetaPrefix, + Element: "Account", + Values: "1010", }, } eTPs := []*utils.TPFilterProfile{ @@ -1103,9 +1103,9 @@ func TestTPFilterAsTPFilter2(t *testing.T) { ID: tps[0].ID, Filters: []*utils.TPFilter{ &utils.TPFilter{ - Type: utils.MetaPrefix, - FieldName: "Account", - Values: []string{"1001", "1002"}, + Type: utils.MetaPrefix, + Element: "Account", + Values: []string{"1001", "1002"}, }, }, }, @@ -1115,9 +1115,9 @@ func TestTPFilterAsTPFilter2(t *testing.T) { ID: tps[1].ID, Filters: []*utils.TPFilter{ &utils.TPFilter{ - Type: utils.MetaPrefix, - FieldName: "Account", - Values: []string{"1010"}, + Type: utils.MetaPrefix, + Element: "Account", + Values: []string{"1010"}, }, }, }, @@ -1136,9 +1136,9 @@ func TestAPItoTPFilter(t *testing.T) { ID: "Filter1", Filters: []*utils.TPFilter{ &utils.TPFilter{ - FieldName: "Account", - Type: utils.MetaString, - Values: []string{"1001", "1002"}, + Element: "Account", + Type: utils.MetaString, + Values: []string{"1001", "1002"}, }, }, } @@ -1148,9 +1148,9 @@ func TestAPItoTPFilter(t *testing.T) { ID: tps.ID, Rules: []*FilterRule{ &FilterRule{ - FieldName: "Account", - Type: utils.MetaString, - Values: []string{"1001", "1002"}, + Element: "Account", + Type: utils.MetaString, + Values: []string{"1001", "1002"}, }, }, } @@ -1171,9 +1171,9 @@ func TestFilterToTPFilter(t *testing.T) { }, Rules: []*FilterRule{ &FilterRule{ - FieldName: "Account", - Type: utils.MetaString, - Values: []string{"1001", "1002"}, + Element: "Account", + Type: utils.MetaString, + Values: []string{"1001", "1002"}, }, }, } @@ -1186,9 +1186,9 @@ func TestFilterToTPFilter(t *testing.T) { }, Filters: []*utils.TPFilter{ &utils.TPFilter{ - FieldName: "Account", - Type: utils.MetaString, - Values: []string{"1001", "1002"}, + Element: "Account", + Type: utils.MetaString, + Values: []string{"1001", "1002"}, }, }, } @@ -1211,8 +1211,8 @@ func TestAPItoAttributeProfile(t *testing.T) { }, Attributes: []*utils.TPAttribute{ &utils.TPAttribute{ - FieldName: utils.MetaReq + utils.NestingSep + "FL1", - Value: "Al1", + Path: utils.MetaReq + utils.NestingSep + "FL1", + Value: "Al1", }, }, Weight: 20, @@ -1227,8 +1227,8 @@ func TestAPItoAttributeProfile(t *testing.T) { }, Attributes: []*Attribute{ &Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + "FL1", - Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "FL1", + Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -1253,8 +1253,8 @@ func TestAPItoModelTPAttribute(t *testing.T) { }, Attributes: []*utils.TPAttribute{ &utils.TPAttribute{ - FieldName: utils.MetaReq + utils.NestingSep + "FL1", - Value: "Al1", + Path: utils.MetaReq + utils.NestingSep + "FL1", + Value: "Al1", }, }, Weight: 20, @@ -1266,7 +1266,7 @@ func TestAPItoModelTPAttribute(t *testing.T) { ID: "ALS1", Contexts: "con1", FilterIDs: "FLTR_ACNT_dan;FLTR_DST_DE", - FieldName: utils.MetaReq + utils.NestingSep + "FL1", + Path: utils.MetaReq + utils.NestingSep + "FL1", Value: "Al1", ActivationInterval: "2014-07-14T14:35:00Z", Weight: 20, @@ -1286,7 +1286,7 @@ func TestModelAsTPAttribute(t *testing.T) { ID: "ALS1", Contexts: "con1", FilterIDs: "FLTR_ACNT_dan;FLTR_DST_DE", - FieldName: utils.MetaReq + utils.NestingSep + "FL1", + Path: utils.MetaReq + utils.NestingSep + "FL1", Value: "Al1", ActivationInterval: "2014-07-14T14:35:00Z", Weight: 20, @@ -1305,7 +1305,7 @@ func TestModelAsTPAttribute(t *testing.T) { Attributes: []*utils.TPAttribute{ &utils.TPAttribute{ FilterIDs: []string{}, - FieldName: utils.MetaReq + utils.NestingSep + "FL1", + Path: utils.MetaReq + utils.NestingSep + "FL1", Value: "Al1", }, }, @@ -1324,7 +1324,7 @@ func TestModelAsTPAttribute(t *testing.T) { Attributes: []*utils.TPAttribute{ &utils.TPAttribute{ FilterIDs: []string{}, - FieldName: utils.MetaReq + utils.NestingSep + "FL1", + Path: utils.MetaReq + utils.NestingSep + "FL1", Value: "Al1", }, }, diff --git a/engine/models.go b/engine/models.go index 3cf37f3a5..49befba33 100644 --- a/engine/models.go +++ b/engine/models.go @@ -270,9 +270,9 @@ type TpFilter struct { Tpid string Tenant string `index:"0" re:""` ID string `index:"1" re:""` - FilterType string `index:"2" re:"^\*[A-Za-z].*"` - FilterFieldName string `index:"3" re:""` - FilterFieldValues string `index:"4" re:""` + Type string `index:"2" re:"^\*[A-Za-z].*"` + Element string `index:"3" re:""` + Values string `index:"4" re:""` ActivationInterval string `index:"5" re:""` CreatedAt time.Time } @@ -396,7 +396,7 @@ type TPAttribute struct { FilterIDs string `index:"3" re:""` ActivationInterval string `index:"4" re:""` AttributeFilterIDs string `index:"5" re:""` - FieldName string `index:"6" re:""` + Path string `index:"6" re:""` Type string `index:"7" re:""` Value string `index:"8" re:""` Blocker bool `index:"9" re:""` diff --git a/engine/onstor_it_test.go b/engine/onstor_it_test.go index b39a81292..1b1424afe 100644 --- a/engine/onstor_it_test.go +++ b/engine/onstor_it_test.go @@ -1536,9 +1536,9 @@ func testOnStorITThresholdProfile(t *testing.T) { ID: "TestFilter2", Rules: []*FilterRule{ { - FieldName: "Account", - Type: "*string", - Values: []string{"1001", "1002"}, + Element: "Account", + Type: utils.MetaString, + Values: []string{"1001", "1002"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -1660,9 +1660,9 @@ func testOnStorITFilter(t *testing.T) { ID: "Filter1", Rules: []*FilterRule{ { - FieldName: "Account", - Type: "*string", - Values: []string{"1001", "1002"}, + Element: "Account", + Type: utils.MetaString, + Values: []string{"1001", "1002"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -1700,14 +1700,14 @@ func testOnStorITFilter(t *testing.T) { //update fp.Rules = []*FilterRule{ { - FieldName: "Account", - Type: "*string", - Values: []string{"1001", "1002"}, + Element: "Account", + Type: utils.MetaString, + Values: []string{"1001", "1002"}, }, { - FieldName: "Destination", - Type: "*string", - Values: []string{"10", "20"}, + Element: "Destination", + Type: utils.MetaString, + Values: []string{"10", "20"}, }, } if err := onStor.SetFilter(fp); err != nil { @@ -1862,8 +1862,8 @@ func testOnStorITAttributeProfile(t *testing.T) { Contexts: []string{"con1"}, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "FN1", - Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "FN1", + Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -1942,8 +1942,8 @@ func testOnStorITTestAttributeSubstituteIface(t *testing.T) { Contexts: []string{"con1"}, Attributes: []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "FN1", - Value: config.NewRSRParsersMustCompile("Val1", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "FN1", + Value: config.NewRSRParsersMustCompile("Val1", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -1964,8 +1964,8 @@ func testOnStorITTestAttributeSubstituteIface(t *testing.T) { } attrProfile.Attributes = []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "FN1", - Value: config.NewRSRParsersMustCompile("123.123", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "FN1", + Value: config.NewRSRParsersMustCompile("123.123", true, utils.INFIELD_SEP), }, } if err := onStor.SetAttributeProfile(attrProfile, false); err != nil { @@ -1980,8 +1980,8 @@ func testOnStorITTestAttributeSubstituteIface(t *testing.T) { } attrProfile.Attributes = []*Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "FN1", - Value: config.NewRSRParsersMustCompile("true", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "FN1", + Value: config.NewRSRParsersMustCompile("true", true, utils.INFIELD_SEP), }, } if err := onStor.SetAttributeProfile(attrProfile, false); err != nil { diff --git a/engine/resources_test.go b/engine/resources_test.go index f827f3485..a3fc0dd1d 100644 --- a/engine/resources_test.go +++ b/engine/resources_test.go @@ -408,24 +408,24 @@ func TestResourceAddFilters(t *testing.T) { ID: "FLTR_RES_1", Rules: []*FilterRule{ { - Type: utils.MetaString, - FieldName: "~*req.Resources", - Values: []string{"ResourceProfile1"}, + Type: utils.MetaString, + Element: "~*req.Resources", + Values: []string{"ResourceProfile1"}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: "~*req.UsageInterval", - Values: []string{(1 * time.Second).String()}, + Type: utils.MetaGreaterOrEqual, + Element: "~*req.UsageInterval", + Values: []string{(1 * time.Second).String()}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Usage, - Values: []string{(1 * time.Second).String()}, + Type: utils.MetaGreaterOrEqual, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Usage, + Values: []string{(1 * time.Second).String()}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, - Values: []string{"9.0"}, + Type: utils.MetaGreaterOrEqual, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, + Values: []string{"9.0"}, }, }, } @@ -435,24 +435,24 @@ func TestResourceAddFilters(t *testing.T) { ID: "FLTR_RES_2", Rules: []*FilterRule{ { - Type: utils.MetaString, - FieldName: "~*req.Resources", - Values: []string{"ResourceProfile2"}, + Type: utils.MetaString, + Element: "~*req.Resources", + Values: []string{"ResourceProfile2"}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: "~*req.PddInterval", - Values: []string{(1 * time.Second).String()}, + Type: utils.MetaGreaterOrEqual, + Element: "~*req.PddInterval", + Values: []string{(1 * time.Second).String()}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Usage, - Values: []string{(1 * time.Second).String()}, + Type: utils.MetaGreaterOrEqual, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Usage, + Values: []string{(1 * time.Second).String()}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, - Values: []string{"15.0"}, + Type: utils.MetaGreaterOrEqual, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, + Values: []string{"15.0"}, }, }, } @@ -462,9 +462,9 @@ func TestResourceAddFilters(t *testing.T) { ID: "FLTR_RES_3", Rules: []*FilterRule{ { - Type: utils.MetaPrefix, - FieldName: "~*req.Resources", - Values: []string{"ResourceProfilePrefix"}, + Type: utils.MetaPrefix, + Element: "~*req.Resources", + Values: []string{"ResourceProfilePrefix"}, }, }, } diff --git a/engine/stats_test.go b/engine/stats_test.go index d8973be42..7730f7143 100644 --- a/engine/stats_test.go +++ b/engine/stats_test.go @@ -162,24 +162,24 @@ func TestStatQueuesAddFilters(t *testing.T) { ID: "FLTR_STATS_1", Rules: []*FilterRule{ { - Type: utils.MetaString, - FieldName: "~*req.Stats", - Values: []string{"StatQueueProfile1"}, + Type: utils.MetaString, + Element: "~*req.Stats", + Values: []string{"StatQueueProfile1"}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: "~*req.UsageInterval", - Values: []string{(1 * time.Second).String()}, + Type: utils.MetaGreaterOrEqual, + Element: "~*req.UsageInterval", + Values: []string{(1 * time.Second).String()}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Usage, - Values: []string{(1 * time.Second).String()}, + Type: utils.MetaGreaterOrEqual, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Usage, + Values: []string{(1 * time.Second).String()}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, - Values: []string{"9.0"}, + Type: utils.MetaGreaterOrEqual, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, + Values: []string{"9.0"}, }, }, } @@ -189,24 +189,24 @@ func TestStatQueuesAddFilters(t *testing.T) { ID: "FLTR_STATS_2", Rules: []*FilterRule{ { - Type: utils.MetaString, - FieldName: "~*req.Stats", - Values: []string{"StatQueueProfile2"}, + Type: utils.MetaString, + Element: "~*req.Stats", + Values: []string{"StatQueueProfile2"}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: "~*req.PddInterval", - Values: []string{(1 * time.Second).String()}, + Type: utils.MetaGreaterOrEqual, + Element: "~*req.PddInterval", + Values: []string{(1 * time.Second).String()}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Usage, - Values: []string{(1 * time.Second).String()}, + Type: utils.MetaGreaterOrEqual, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Usage, + Values: []string{(1 * time.Second).String()}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, - Values: []string{"15.0"}, + Type: utils.MetaGreaterOrEqual, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, + Values: []string{"15.0"}, }, }, } @@ -216,9 +216,9 @@ func TestStatQueuesAddFilters(t *testing.T) { ID: "FLTR_STATS_3", Rules: []*FilterRule{ { - Type: utils.MetaPrefix, - FieldName: "~*req.Stats", - Values: []string{"StatQueueProfilePrefix"}, + Type: utils.MetaPrefix, + Element: "~*req.Stats", + Values: []string{"StatQueueProfilePrefix"}, }, }, } diff --git a/engine/suppliers_test.go b/engine/suppliers_test.go index 4f2bcac96..b6c27a6ab 100644 --- a/engine/suppliers_test.go +++ b/engine/suppliers_test.go @@ -306,19 +306,19 @@ func TestSuppliersAddFilters(t *testing.T) { ID: "FLTR_SUPP_1", Rules: []*FilterRule{ { - Type: utils.MetaString, - FieldName: "~*req.Supplier", - Values: []string{"SupplierProfile1"}, + Type: utils.MetaString, + Element: "~*req.Supplier", + Values: []string{"SupplierProfile1"}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: "~*req.UsageInterval", - Values: []string{(1 * time.Second).String()}, + Type: utils.MetaGreaterOrEqual, + Element: "~*req.UsageInterval", + Values: []string{(1 * time.Second).String()}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, - Values: []string{"9.0"}, + Type: utils.MetaGreaterOrEqual, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, + Values: []string{"9.0"}, }, }, } @@ -328,19 +328,19 @@ func TestSuppliersAddFilters(t *testing.T) { ID: "FLTR_SUPP_2", Rules: []*FilterRule{ { - Type: utils.MetaString, - FieldName: "~*req.Supplier", - Values: []string{"SupplierProfile2"}, + Type: utils.MetaString, + Element: "~*req.Supplier", + Values: []string{"SupplierProfile2"}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: "~*req.PddInterval", - Values: []string{(1 * time.Second).String()}, + Type: utils.MetaGreaterOrEqual, + Element: "~*req.PddInterval", + Values: []string{(1 * time.Second).String()}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, - Values: []string{"15.0"}, + Type: utils.MetaGreaterOrEqual, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, + Values: []string{"15.0"}, }, }, } @@ -350,9 +350,9 @@ func TestSuppliersAddFilters(t *testing.T) { ID: "FLTR_SUPP_3", Rules: []*FilterRule{ { - Type: utils.MetaPrefix, - FieldName: "~*req.Supplier", - Values: []string{"SupplierProfilePrefix"}, + Type: utils.MetaPrefix, + Element: "~*req.Supplier", + Values: []string{"SupplierProfilePrefix"}, }, }, } diff --git a/engine/thresholds_test.go b/engine/thresholds_test.go index 0bae470b0..b92cd8a80 100644 --- a/engine/thresholds_test.go +++ b/engine/thresholds_test.go @@ -160,14 +160,14 @@ func TestThresholdsAddFilters(t *testing.T) { ID: "FLTR_TH_1", Rules: []*FilterRule{ { - Type: utils.MetaString, - FieldName: "~*req.Threshold", - Values: []string{"TH_1"}, + Type: utils.MetaString, + Element: "~*req.Threshold", + Values: []string{"TH_1"}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, - Values: []string{"9.0"}, + Type: utils.MetaGreaterOrEqual, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, + Values: []string{"9.0"}, }, }, } @@ -177,14 +177,14 @@ func TestThresholdsAddFilters(t *testing.T) { ID: "FLTR_TH_2", Rules: []*FilterRule{ { - Type: utils.MetaString, - FieldName: "~*req.Threshold", - Values: []string{"TH_2"}, + Type: utils.MetaString, + Element: "~*req.Threshold", + Values: []string{"TH_2"}, }, { - Type: utils.MetaGreaterOrEqual, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, - Values: []string{"15.0"}, + Type: utils.MetaGreaterOrEqual, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Weight, + Values: []string{"15.0"}, }, }, } @@ -194,9 +194,9 @@ func TestThresholdsAddFilters(t *testing.T) { ID: "FLTR_TH_3", Rules: []*FilterRule{ { - Type: utils.MetaPrefix, - FieldName: "~*req.Threshold", - Values: []string{"ThresholdPrefix"}, + Type: utils.MetaPrefix, + Element: "~*req.Threshold", + Values: []string{"ThresholdPrefix"}, }, }, } diff --git a/general_tests/cdrs_processevent_it_test.go b/general_tests/cdrs_processevent_it_test.go index e881ee4cb..b97d3c6f6 100644 --- a/general_tests/cdrs_processevent_it_test.go +++ b/general_tests/cdrs_processevent_it_test.go @@ -178,8 +178,8 @@ func testV1CDRsProcessEventAttrS(t *testing.T) { FilterIDs: []string{"*string:~*req.Account:1001"}, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Value: config.NewRSRParsersMustCompile("1011", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Value: config.NewRSRParsersMustCompile("1011", true, utils.INFIELD_SEP), }, }, Weight: 20, diff --git a/general_tests/filters_it_test.go b/general_tests/filters_it_test.go index 45b0bf3b2..fdb2875e8 100644 --- a/general_tests/filters_it_test.go +++ b/general_tests/filters_it_test.go @@ -261,9 +261,9 @@ func testV1FltrPupulateThreshold(t *testing.T) { ID: "FLTR_TH_Stats1", Rules: []*engine.FilterRule{ { - Type: "*gt", - FieldName: "~*stats.Stat_1.*acd", - Values: []string{"10.0"}, + Type: "*gt", + Element: "~*stats.Stat_1.*acd", + Values: []string{"10.0"}, }, }, }, @@ -346,9 +346,9 @@ func testV1FltrGetThresholdForEvent2(t *testing.T) { ID: "FLTR_TH_Stats1", Rules: []*engine.FilterRule{ { - Type: "*lt", - FieldName: "~*stats.Stat_1.*acd", - Values: []string{"10.0"}, + Type: "*lt", + Element: "~*stats.Stat_1.*acd", + Values: []string{"10.0"}, }, }, }, @@ -451,9 +451,9 @@ func testV1FltrPopulateResources(t *testing.T) { ID: "FLTR_TH_Resource", Rules: []*engine.FilterRule{ { - Type: "*gt", - FieldName: "~*resources.ResTest.TotalUsage", - Values: []string{"2.0"}, + Type: "*gt", + Element: "~*resources.ResTest.TotalUsage", + Values: []string{"2.0"}, }, }, }, @@ -515,9 +515,9 @@ func testV1FltrPopulateResources(t *testing.T) { ID: "FLTR_TH_Resource", Rules: []*engine.FilterRule{ { - Type: "*lt", - FieldName: "~*resources.ResTest.TotalUsage", - Values: []string{"2.0"}, + Type: "*lt", + Element: "~*resources.ResTest.TotalUsage", + Values: []string{"2.0"}, }, }, } @@ -559,9 +559,9 @@ func testV1FltrAccounts(t *testing.T) { ID: "FLTR_TH_Accounts", Rules: []*engine.FilterRule{ { - Type: "*gt", - FieldName: "~*accounts.1001.BalanceMap.*monetary[0].Value", - Values: []string{"9"}, + Type: "*gt", + Element: "~*accounts.1001.BalanceMap.*monetary[0].Value", + Values: []string{"9"}, }, }, }, @@ -633,9 +633,9 @@ func testV1FltrAccounts(t *testing.T) { ID: "FLTR_TH_Accounts", Rules: []*engine.FilterRule{ { - Type: "*gt", - FieldName: "~*accounts.1001.BalanceMap.*monetary[0].Value", - Values: []string{"11"}, + Type: "*gt", + Element: "~*accounts.1001.BalanceMap.*monetary[0].Value", + Values: []string{"11"}, }, }, } diff --git a/general_tests/sentinel_it_test.go b/general_tests/sentinel_it_test.go index 1933575e5..e414ce7b1 100755 --- a/general_tests/sentinel_it_test.go +++ b/general_tests/sentinel_it_test.go @@ -129,8 +129,8 @@ func testRedisSentinelSetGetAttribute(t *testing.T) { FilterIDs: []string{"*string:~*req.Account:1001"}, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -163,8 +163,8 @@ func testRedisSentinelInsertion(t *testing.T) { FilterIDs: []string{"*string:~*reqAccount:1001"}, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -247,8 +247,8 @@ func testRedisSentinelGetAttrAfterFailover(t *testing.T) { FilterIDs: []string{"*string:~*req.Account:1001"}, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }, }, Weight: 20, diff --git a/general_tests/sessions_concur_test.go b/general_tests/sessions_concur_test.go index 51b7c7f9b..5462cf55b 100644 --- a/general_tests/sessions_concur_test.go +++ b/general_tests/sessions_concur_test.go @@ -132,8 +132,8 @@ func testSCncrLoadTP(t *testing.T) { Contexts: []string{utils.ANY}, Attributes: []*engine.ExternalAttribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "TestType", - Value: "ConcurrentSessions", + Path: utils.MetaReq + utils.NestingSep + "TestType", + Value: "ConcurrentSessions", }, }, Weight: 20, diff --git a/loaders/libloader_test.go b/loaders/libloader_test.go index 168aabf0f..f0ec4c68e 100644 --- a/loaders/libloader_test.go +++ b/loaders/libloader_test.go @@ -50,8 +50,8 @@ func TestDataUpdateFromCSVOneFile(t *testing.T) { FieldId: "ActivationInterval", Type: utils.META_COMPOSED, Value: config.NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP)}, - &config.FCTemplate{Tag: "FieldName", - FieldId: "FieldName", + &config.FCTemplate{Tag: "Path", + FieldId: "Path", Type: utils.META_COMPOSED, Value: config.NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Initial", @@ -86,7 +86,7 @@ func TestDataUpdateFromCSVOneFile(t *testing.T) { "Contexts": "*sessions;*cdrs", "FilterIDs": "*string:Account:1007", "ActivationInterval": "2014-01-14T00:00:00Z", - "FieldName": "Account", + "Path": "Account", "Initial": "*any", "Substitute": "1001", "Append": "false", @@ -105,7 +105,7 @@ func TestDataUpdateFromCSVOneFile(t *testing.T) { "Contexts": "", "FilterIDs": "", "ActivationInterval": "", - "FieldName": "Subject", + "Path": "Subject", "Initial": "*any", "Substitute": "1001", "Append": "true", @@ -140,8 +140,8 @@ func TestDataUpdateFromCSVOneFile2(t *testing.T) { FieldId: "ActivationInterval", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP)}, - &config.FCTemplate{Tag: "FieldName", - FieldId: "FieldName", + &config.FCTemplate{Tag: "Path", + FieldId: "Path", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Initial", @@ -176,7 +176,7 @@ func TestDataUpdateFromCSVOneFile2(t *testing.T) { "Contexts": "*sessions;*cdrs", "FilterIDs": "*string:Account:1007", "ActivationInterval": "2014-01-14T00:00:00Z", - "FieldName": "Account", + "Path": "Account", "Initial": "*any", "Substitute": "1001", "Append": "false", @@ -195,7 +195,7 @@ func TestDataUpdateFromCSVOneFile2(t *testing.T) { "Contexts": "", "FilterIDs": "", "ActivationInterval": "", - "FieldName": "Subject", + "Path": "Subject", "Initial": "*any", "Substitute": "1001", "Append": "true", @@ -222,8 +222,8 @@ func TestDataUpdateFromCSVMultiFiles(t *testing.T) { FieldId: "Contexts", Type: utils.MetaString, Value: config.NewRSRParsersMustCompile("*any", true, utils.INFIELD_SEP)}, - &config.FCTemplate{Tag: "FieldName", - FieldId: "FieldName", + &config.FCTemplate{Tag: "Path", + FieldId: "Path", Type: utils.META_COMPOSED, Value: config.NewRSRParsersMustCompile("~File1.csv:5", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Initial", @@ -259,7 +259,7 @@ func TestDataUpdateFromCSVMultiFiles(t *testing.T) { eLData := LoaderData{"Tenant": "cgrates.org", "ID": "ATTR_1", "Contexts": "*any", - "FieldName": "Subject", + "Path": "Subject", "Initial": "*any", "Substitute": "1001", "Append": "true", diff --git a/loaders/loader_it_test.go b/loaders/loader_it_test.go index d998ed85c..31f61087e 100644 --- a/loaders/loader_it_test.go +++ b/loaders/loader_it_test.go @@ -163,13 +163,13 @@ func testLoaderCheckAttributes(t *testing.T) { Attributes: []*engine.Attribute{ &engine.Attribute{ FilterIDs: []string{"*string:~*req.Field1:Initial"}, - FieldName: utils.MetaReq + utils.NestingSep + "Field1", + Path: utils.MetaReq + utils.NestingSep + "Field1", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("Sub1", true, utils.INFIELD_SEP), }, &engine.Attribute{ FilterIDs: []string{}, - FieldName: utils.MetaReq + utils.NestingSep + "Field2", + Path: utils.MetaReq + utils.NestingSep + "Field2", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("Sub2", true, utils.INFIELD_SEP), }}, diff --git a/loaders/loader_test.go b/loaders/loader_test.go index cb171f2ad..8496c6e12 100644 --- a/loaders/loader_test.go +++ b/loaders/loader_test.go @@ -68,8 +68,8 @@ func TestLoaderProcessContentSingleFile(t *testing.T) { FieldId: "AttributeFilterIDs", Type: utils.META_COMPOSED, Value: config.NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP)}, - &config.FCTemplate{Tag: "FieldName", - FieldId: "FieldName", + &config.FCTemplate{Tag: "Path", + FieldId: "Path", Type: utils.META_COMPOSED, Value: config.NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Type", @@ -111,13 +111,13 @@ func TestLoaderProcessContentSingleFile(t *testing.T) { Attributes: []*engine.Attribute{ &engine.Attribute{ FilterIDs: []string{"*string:~*req.Field1:Initial"}, - FieldName: utils.MetaReq + utils.NestingSep + "Field1", + Path: utils.MetaReq + utils.NestingSep + "Field1", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("Sub1", true, utils.INFIELD_SEP), }, &engine.Attribute{ FilterIDs: []string{}, - FieldName: utils.MetaReq + utils.NestingSep + "Field2", + Path: utils.MetaReq + utils.NestingSep + "Field2", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("Sub2", true, utils.INFIELD_SEP), }}, @@ -162,8 +162,8 @@ func TestLoaderProcessContentMultiFiles(t *testing.T) { FieldId: "Contexts", Type: utils.MetaString, Value: config.NewRSRParsersMustCompile("*any", true, utils.INFIELD_SEP)}, - &config.FCTemplate{Tag: "FieldName", - FieldId: "FieldName", + &config.FCTemplate{Tag: "Path", + FieldId: "Path", Type: utils.META_COMPOSED, Value: config.NewRSRParsersMustCompile("~File1.csv:6", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Value", @@ -198,7 +198,7 @@ func TestLoaderProcessContentMultiFiles(t *testing.T) { Contexts: []string{utils.ANY}, Attributes: []*engine.Attribute{ &engine.Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + "Subject", + Path: utils.MetaReq + utils.NestingSep + "Subject", FilterIDs: []string{}, Value: config.NewRSRParsersMustCompile("1001", true, utils.INFIELD_SEP), }}, @@ -354,16 +354,16 @@ func TestLoaderProcessFilters(t *testing.T) { Type: utils.META_COMPOSED, Value: config.NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), Mandatory: true}, - &config.FCTemplate{Tag: "FilterType", - FieldId: "FilterType", + &config.FCTemplate{Tag: "Type", + FieldId: "Type", Type: utils.META_COMPOSED, Value: config.NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP)}, - &config.FCTemplate{Tag: "FilterFieldName", - FieldId: "FilterFieldName", + &config.FCTemplate{Tag: "Element", + FieldId: "Element", Type: utils.META_COMPOSED, Value: config.NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP)}, - &config.FCTemplate{Tag: "FilterFieldValues", - FieldId: "FilterFieldValues", + &config.FCTemplate{Tag: "Values", + FieldId: "Values", Type: utils.META_COMPOSED, Value: config.NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "ActivationInterval", @@ -388,19 +388,19 @@ func TestLoaderProcessFilters(t *testing.T) { ID: "FLTR_1", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaString, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, - Values: []string{"1001", "1002"}, + Type: utils.MetaString, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Account, + Values: []string{"1001", "1002"}, }, &engine.FilterRule{ - Type: "*prefix", - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, - Values: []string{"10", "20"}, + Type: "*prefix", + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, + Values: []string{"10", "20"}, }, &engine.FilterRule{ - Type: "*rsr", - FieldName: "", - Values: []string{"~*req.Subject(~^1.*1$)", "~*req.Destination(1002)"}, + Type: "*rsr", + Element: "", + Values: []string{"~*req.Subject(~^1.*1$)", "~*req.Destination(1002)"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -416,9 +416,9 @@ func TestLoaderProcessFilters(t *testing.T) { ID: "FLTR_DST_DE", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: "*destinations", - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, - Values: []string{"DST_DE"}, + Type: "*destinations", + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.Destination, + Values: []string{"DST_DE"}, }, }, ActivationInterval: &utils.ActivationInterval{ @@ -1151,13 +1151,13 @@ func TestLoaderRemoveContentSingleFile(t *testing.T) { Attributes: []*engine.Attribute{ &engine.Attribute{ FilterIDs: []string{"*string:~*req.Field1:Initial"}, - FieldName: utils.MetaReq + utils.NestingSep + "Field1", + Path: utils.MetaReq + utils.NestingSep + "Field1", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("Sub1", true, utils.INFIELD_SEP), }, &engine.Attribute{ FilterIDs: []string{}, - FieldName: utils.MetaReq + utils.NestingSep + "Field2", + Path: utils.MetaReq + utils.NestingSep + "Field2", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("Sub2", true, utils.INFIELD_SEP), }}, diff --git a/migrator/alias.go b/migrator/alias.go index 256355723..3393e101e 100644 --- a/migrator/alias.go +++ b/migrator/alias.go @@ -113,9 +113,9 @@ func alias2AtttributeProfile(alias *v1Alias, defaultTenant string) *engine.Attri fld = utils.MetaReq + utils.NestingSep + fieldName } attr := &engine.Attribute{ - FieldName: fld, - Type: utils.MetaVariable, //default type for Attribute - Value: config.NewRSRParsersMustCompile(substitute, true, utils.INFIELD_SEP), + Path: fld, + Type: utils.MetaVariable, //default type for Attribute + Value: config.NewRSRParsersMustCompile(substitute, true, utils.INFIELD_SEP), } out.Attributes = append(out.Attributes, attr) // Add attribute filters if needed diff --git a/migrator/alias_it_test.go b/migrator/alias_it_test.go index ab483952c..e9fd07795 100644 --- a/migrator/alias_it_test.go +++ b/migrator/alias_it_test.go @@ -144,13 +144,13 @@ func testAlsITMigrateAndMove(t *testing.T) { ActivationInterval: nil, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Account", - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("1002", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Account", + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("1002", true, utils.INFIELD_SEP), }, { FilterIDs: []string{"*string:~*req.Category:call_1001"}, - FieldName: utils.MetaReq + utils.NestingSep + "Category", + Path: utils.MetaReq + utils.NestingSep + "Category", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("call_1002", true, utils.INFIELD_SEP), }, @@ -193,10 +193,10 @@ func testAlsITMigrateAndMove(t *testing.T) { } result.Compile() sort.Slice(result.Attributes, func(i, j int) bool { - if result.Attributes[i].FieldName == result.Attributes[j].FieldName { + if result.Attributes[i].Path == result.Attributes[j].Path { return result.Attributes[i].FilterIDs[0] < result.Attributes[j].FilterIDs[0] } - return result.Attributes[i].FieldName < result.Attributes[j].FieldName + return result.Attributes[i].Path < result.Attributes[j].Path }) // only for test; map returns random keys if !reflect.DeepEqual(*attrProf, *result) { t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(attrProf), utils.ToJSON(result)) diff --git a/migrator/alias_test.go b/migrator/alias_test.go index 9e33e247d..885399bd6 100644 --- a/migrator/alias_test.go +++ b/migrator/alias_test.go @@ -181,7 +181,7 @@ func TestAlias2AtttributeProfile(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{"*string:~*req.Account:1001"}, - FieldName: utils.MetaReq + utils.NestingSep + "Account", + Path: utils.MetaReq + utils.NestingSep + "Account", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("1002", true, utils.INFIELD_SEP), }, @@ -198,13 +198,13 @@ func TestAlias2AtttributeProfile(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{"*string:~*req.Account:1001"}, - FieldName: utils.MetaReq + utils.NestingSep + "Account", + Path: utils.MetaReq + utils.NestingSep + "Account", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("1002", true, utils.INFIELD_SEP), }, { FilterIDs: []string{"*string:~*req.Account:1003"}, - FieldName: utils.MetaReq + utils.NestingSep + "Account", + Path: utils.MetaReq + utils.NestingSep + "Account", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("1004", true, utils.INFIELD_SEP), }, @@ -221,13 +221,13 @@ func TestAlias2AtttributeProfile(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{"*string:~*req.Account:1001"}, - FieldName: utils.MetaReq + utils.NestingSep + "Account", + Path: utils.MetaReq + utils.NestingSep + "Account", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("1002", true, utils.INFIELD_SEP), }, { FilterIDs: []string{"*string:~*req.Account:1003"}, - FieldName: utils.MetaReq + utils.NestingSep + "Account", + Path: utils.MetaReq + utils.NestingSep + "Account", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("1004", true, utils.INFIELD_SEP), }, @@ -247,14 +247,14 @@ func TestAlias2AtttributeProfile(t *testing.T) { ActivationInterval: nil, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Account", - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("1002", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Account", + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("1002", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + "Subject", - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("call_1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Subject", + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("call_1001", true, utils.INFIELD_SEP), }, }, Blocker: false, @@ -272,12 +272,12 @@ func TestAlias2AtttributeProfile(t *testing.T) { ActivationInterval: nil, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Account", - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("1002", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Account", + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("1002", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + "Category", + Path: utils.MetaReq + utils.NestingSep + "Category", Type: utils.MetaVariable, FilterIDs: []string{"*string:~*req.Category:call_1001"}, Value: config.NewRSRParsersMustCompile("call_1002", true, utils.INFIELD_SEP), @@ -295,9 +295,9 @@ func TestAlias2AtttributeProfile(t *testing.T) { }, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Category, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("somecateg_roam_fromz4", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Category, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("somecateg_roam_fromz4", true, utils.INFIELD_SEP), }, }, Weight: 20, @@ -306,10 +306,10 @@ func TestAlias2AtttributeProfile(t *testing.T) { for i := range expected { rply := alias2AtttributeProfile(aliases[i], defaultTenant) sort.Slice(rply.Attributes, func(i, j int) bool { - if rply.Attributes[i].FieldName == rply.Attributes[j].FieldName { + if rply.Attributes[i].Path == rply.Attributes[j].Path { return rply.Attributes[i].FilterIDs[0] < rply.Attributes[j].FilterIDs[0] } - return rply.Attributes[i].FieldName < rply.Attributes[j].FieldName + return rply.Attributes[i].Path < rply.Attributes[j].Path }) // only for test; map returns random keys if !reflect.DeepEqual(expected[i], rply) { t.Errorf("For %v expected: %s ,recived: %s ", i, utils.ToJSON(expected[i]), utils.ToJSON(rply)) diff --git a/migrator/attributes.go b/migrator/attributes.go index d0a32be4e..01908de90 100644 --- a/migrator/attributes.go +++ b/migrator/attributes.go @@ -257,7 +257,7 @@ func (v1AttrPrf v1AttributeProfile) AsAttributeProfile() (attrPrf *engine.Attrib } attrPrf.Attributes = append(attrPrf.Attributes, &engine.Attribute{ FilterIDs: filterIDs, - FieldName: attr.FieldName, + Path: attr.FieldName, Value: sbstPrsr, Type: utils.MetaVariable, }) @@ -308,7 +308,7 @@ func (v2AttrPrf v2AttributeProfile) AsAttributeProfile() (attrPrf *engine.Attrib } attrPrf.Attributes = append(attrPrf.Attributes, &engine.Attribute{ FilterIDs: filterIDs, - FieldName: attr.FieldName, + Path: attr.FieldName, Value: attr.Substitute, Type: utils.MetaVariable, }) @@ -344,7 +344,7 @@ func (v3AttrPrf v3AttributeProfile) AsAttributeProfile() (attrPrf *engine.Attrib for _, attr := range v3AttrPrf.Attributes { attrPrf.Attributes = append(attrPrf.Attributes, &engine.Attribute{ FilterIDs: attr.FilterIDs, - FieldName: attr.FieldName, + Path: attr.FieldName, Value: attr.Substitute, Type: utils.MetaVariable, //default value for type }) diff --git a/migrator/attributes_it_test.go b/migrator/attributes_it_test.go index 8f812ab9f..961a360d2 100755 --- a/migrator/attributes_it_test.go +++ b/migrator/attributes_it_test.go @@ -292,7 +292,7 @@ func testAttrITMigrateAndMove(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{"*string:FL1:In1"}, - FieldName: "FL1", + Path: "FL1", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), }, @@ -412,7 +412,7 @@ func testAttrITMigrateV2(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{"*string:FL1:In1"}, - FieldName: "FL1", + Path: "FL1", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), }, @@ -494,7 +494,7 @@ func testAttrITMigrateV3(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{"*string:FL1:In1"}, - FieldName: "FL1", + Path: "FL1", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), }, diff --git a/migrator/attributes_test.go b/migrator/attributes_test.go index 0417ee26d..70a560e97 100644 --- a/migrator/attributes_test.go +++ b/migrator/attributes_test.go @@ -61,7 +61,7 @@ func TestV1AttributeProfileAsAttributeProfile(t *testing.T) { Attributes: []*engine.Attribute{ &engine.Attribute{ FilterIDs: []string{"*string:FL1:In1"}, - FieldName: "FL1", + Path: "FL1", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), }, @@ -108,7 +108,7 @@ func TestV2AttributeProfileAsAttributeProfile(t *testing.T) { Attributes: []*engine.Attribute{ &engine.Attribute{ FilterIDs: []string{"*string:FL1:In1"}, - FieldName: "FL1", + Path: "FL1", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), }, @@ -155,7 +155,7 @@ func TestV2AttributeProfileAsAttributeProfile2(t *testing.T) { Attributes: []*engine.Attribute{ &engine.Attribute{ FilterIDs: []string{}, - FieldName: "FL1", + Path: "FL1", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), }, @@ -201,7 +201,7 @@ func TestV3AttributeProfileAsAttributeProfile(t *testing.T) { Attributes: []*engine.Attribute{ &engine.Attribute{ FilterIDs: []string{"*string:FL1:In1"}, - FieldName: "FL1", + Path: "FL1", Type: utils.MetaVariable, Value: config.NewRSRParsersMustCompile("Al1", true, utils.INFIELD_SEP), }, diff --git a/migrator/derived_chargers.go b/migrator/derived_chargers.go index 0204cb054..29399148d 100644 --- a/migrator/derived_chargers.go +++ b/migrator/derived_chargers.go @@ -83,9 +83,9 @@ func fieldinfo2Attribute(attr []*engine.Attribute, fieldName, fieldInfo string) return attr } return append(attr, &engine.Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + fieldName, - Value: rp, - Type: utils.MetaVariable, + Path: utils.MetaReq + utils.NestingSep + fieldName, + Value: rp, + Type: utils.MetaVariable, }) } diff --git a/migrator/derived_chargers_it_test.go b/migrator/derived_chargers_it_test.go index 7683e9a49..631ceaae2 100644 --- a/migrator/derived_chargers_it_test.go +++ b/migrator/derived_chargers_it_test.go @@ -149,14 +149,14 @@ func testDCITMigrateAndMove(t *testing.T) { ActivationInterval: nil, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("1004", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("1004", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("call_1003", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("call_1003", true, utils.INFIELD_SEP), }, }, Blocker: false, @@ -210,7 +210,7 @@ func testDCITMigrateAndMove(t *testing.T) { } result.Compile() sort.Slice(result.Attributes, func(i, j int) bool { - return result.Attributes[i].FieldName < result.Attributes[j].FieldName + return result.Attributes[i].Path < result.Attributes[j].Path }) // only for test; map returns random keys if !reflect.DeepEqual(*attrProf, *result) { t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(attrProf), utils.ToJSON(result)) diff --git a/migrator/derived_chargers_test.go b/migrator/derived_chargers_test.go index ec5ed4e09..ff3854039 100644 --- a/migrator/derived_chargers_test.go +++ b/migrator/derived_chargers_test.go @@ -29,74 +29,74 @@ import ( func TestFieldinfo2Attribute(t *testing.T) { type testA struct { - FieldName string + Path string FieldInfo string Initial []*engine.Attribute Expected []*engine.Attribute } tests := []testA{ testA{ - FieldName: utils.Account, + Path: utils.Account, FieldInfo: utils.MetaDefault, Initial: make([]*engine.Attribute, 0), Expected: make([]*engine.Attribute, 0), }, testA{ - FieldName: utils.Account, + Path: utils.Account, FieldInfo: "", Initial: make([]*engine.Attribute, 0), Expected: make([]*engine.Attribute, 0), }, testA{ - FieldName: utils.Account, + Path: utils.Account, FieldInfo: "^1003", Initial: make([]*engine.Attribute, 0), Expected: []*engine.Attribute{ &engine.Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("1003", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("1003", true, utils.INFIELD_SEP), }, }, }, testA{ - FieldName: utils.Subject, + Path: utils.Subject, FieldInfo: `~effective_caller_id_number:s/(\d+)/+$1/`, Initial: make([]*engine.Attribute, 0), Expected: []*engine.Attribute{ &engine.Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile(`~effective_caller_id_number:s/(\d+)/+$1/`, true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile(`~effective_caller_id_number:s/(\d+)/+$1/`, true, utils.INFIELD_SEP), }, }, }, testA{ - FieldName: utils.Subject, + Path: utils.Subject, FieldInfo: "^call_1003", Initial: []*engine.Attribute{ &engine.Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("1003", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("1003", true, utils.INFIELD_SEP), }, }, Expected: []*engine.Attribute{ &engine.Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("1003", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("1003", true, utils.INFIELD_SEP), }, &engine.Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("call_1003", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("call_1003", true, utils.INFIELD_SEP), }, }, }, } for i, v := range tests { - if rply := fieldinfo2Attribute(v.Initial, v.FieldName, v.FieldInfo); !reflect.DeepEqual(v.Expected, rply) { + if rply := fieldinfo2Attribute(v.Initial, v.Path, v.FieldInfo); !reflect.DeepEqual(v.Expected, rply) { t.Errorf("For %v expected: %s ,recieved: %s", i, utils.ToJSON(v.Expected), utils.ToJSON(rply)) } } @@ -128,14 +128,14 @@ func TestDerivedChargers2AttributeProfile(t *testing.T) { ActivationInterval: nil, Attributes: []*engine.Attribute{ &engine.Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + utils.Category, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("*voice", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Category, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("*voice", true, utils.INFIELD_SEP), }, &engine.Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("1003", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("1003", true, utils.INFIELD_SEP), }, }, Blocker: false, @@ -161,24 +161,24 @@ func TestDerivedChargers2AttributeProfile(t *testing.T) { ActivationInterval: nil, Attributes: []*engine.Attribute{ &engine.Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + utils.Category, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("*voice", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Category, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("*voice", true, utils.INFIELD_SEP), }, &engine.Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + utils.Account, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("1003", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Account, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("1003", true, utils.INFIELD_SEP), }, &engine.Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("call_1003_to_1004", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("call_1003_to_1004", true, utils.INFIELD_SEP), }, &engine.Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + utils.Destination, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("1004", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Destination, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("1004", true, utils.INFIELD_SEP), }, }, Blocker: false, diff --git a/migrator/filters.go b/migrator/filters.go index 5ea4505bc..9466152e2 100644 --- a/migrator/filters.go +++ b/migrator/filters.go @@ -49,7 +49,7 @@ func (m *Migrator) migrateCurrentRequestFilter() (err error) { if err := m.dmOut.DataManager().SetFilter(fl); err != nil { return err } - m.stats[utils.RQF] += 1 + m.stats[utils.RQF]++ } return } @@ -59,34 +59,34 @@ var filterTypes = utils.NewStringSet([]string{utils.MetaRSR, utils.MetaStatS, ut func migrateFilterV1(fl *engine.Filter) *engine.Filter { for i, rule := range fl.Rules { - if rule.FieldName == "" || - strings.HasPrefix(rule.FieldName, utils.DynamicDataPrefix) || + if rule.Element == "" || + strings.HasPrefix(rule.Element, utils.DynamicDataPrefix) || filterTypes.Has(rule.Type) { continue } - fl.Rules[i].FieldName = utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + rule.FieldName + fl.Rules[i].Element = utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + rule.Element } return fl } func migrateFilterV2(fl *engine.Filter) *engine.Filter { for i, rule := range fl.Rules { - if (rule.FieldName == "" && rule.Type != utils.MetaRSR) || - strings.HasPrefix(rule.FieldName, utils.DynamicDataPrefix+utils.MetaReq) || - strings.HasPrefix(rule.FieldName, utils.DynamicDataPrefix+utils.MetaVars) || - strings.HasPrefix(rule.FieldName, utils.DynamicDataPrefix+utils.MetaCgreq) || - strings.HasPrefix(rule.FieldName, utils.DynamicDataPrefix+utils.MetaCgrep) || - strings.HasPrefix(rule.FieldName, utils.DynamicDataPrefix+utils.MetaRep) || - strings.HasPrefix(rule.FieldName, utils.DynamicDataPrefix+utils.MetaCGRAReq) || - strings.HasPrefix(rule.FieldName, utils.DynamicDataPrefix+utils.MetaAct) { + if (rule.Element == "" && rule.Type != utils.MetaRSR) || + strings.HasPrefix(rule.Element, utils.DynamicDataPrefix+utils.MetaReq) || + strings.HasPrefix(rule.Element, utils.DynamicDataPrefix+utils.MetaVars) || + strings.HasPrefix(rule.Element, utils.DynamicDataPrefix+utils.MetaCgreq) || + strings.HasPrefix(rule.Element, utils.DynamicDataPrefix+utils.MetaCgrep) || + strings.HasPrefix(rule.Element, utils.DynamicDataPrefix+utils.MetaRep) || + strings.HasPrefix(rule.Element, utils.DynamicDataPrefix+utils.MetaCGRAReq) || + strings.HasPrefix(rule.Element, utils.DynamicDataPrefix+utils.MetaAct) { continue } if rule.Type != utils.MetaRSR { // in case we found dynamic data prefix we remove it - if strings.HasPrefix(rule.FieldName, utils.DynamicDataPrefix) { - fl.Rules[i].FieldName = fl.Rules[i].FieldName[1:] + if strings.HasPrefix(rule.Element, utils.DynamicDataPrefix) { + fl.Rules[i].Element = fl.Rules[i].Element[1:] } - fl.Rules[i].FieldName = utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + rule.FieldName + fl.Rules[i].Element = utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + rule.Element } else { for idx, val := range rule.Values { if strings.HasPrefix(val, utils.DynamicDataPrefix) { diff --git a/migrator/filters_it_test.go b/migrator/filters_it_test.go index a90d0fbe8..0ebc7eb78 100644 --- a/migrator/filters_it_test.go +++ b/migrator/filters_it_test.go @@ -135,9 +135,9 @@ func testFltrITMigrateAndMove(t *testing.T) { ID: "FLTR_2", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaPrefix, - FieldName: "Account", - Values: []string{"1001"}, + Type: utils.MetaPrefix, + Element: "Account", + Values: []string{"1001"}, }, }, } @@ -146,9 +146,9 @@ func testFltrITMigrateAndMove(t *testing.T) { ID: "FLTR_2", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaPrefix, - FieldName: "~*req.Account", - Values: []string{"1001"}, + Type: utils.MetaPrefix, + Element: "~*req.Account", + Values: []string{"1001"}, }, }, } @@ -162,7 +162,7 @@ func testFltrITMigrateAndMove(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{"*string:Account:1001"}, - FieldName: utils.MetaReq + utils.NestingSep + "Account", + Path: utils.MetaReq + utils.NestingSep + "Account", Value: config.NewRSRParsersMustCompile("1002", true, utils.INFIELD_SEP), }, }, @@ -177,7 +177,7 @@ func testFltrITMigrateAndMove(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{"*string:~*req.Account:1001"}, - FieldName: utils.MetaReq + utils.NestingSep + "Account", + Path: utils.MetaReq + utils.NestingSep + "Account", Value: config.NewRSRParsersMustCompile("1002", true, utils.INFIELD_SEP), }, }, @@ -282,19 +282,19 @@ func testFltrITMigratev2(t *testing.T) { ID: "FLTR_2", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaString, - FieldName: "~Account", - Values: []string{"1001"}, + Type: utils.MetaString, + Element: "~Account", + Values: []string{"1001"}, }, &engine.FilterRule{ - Type: utils.MetaString, - FieldName: "~*req.Subject", - Values: []string{"1001"}, + Type: utils.MetaString, + Element: "~*req.Subject", + Values: []string{"1001"}, }, &engine.FilterRule{ - Type: utils.MetaRSR, - FieldName: utils.EmptyString, - Values: []string{"~Tenant(~^cgr.*\\.org$)"}, + Type: utils.MetaRSR, + Element: utils.EmptyString, + Values: []string{"~Tenant(~^cgr.*\\.org$)"}, }, }, } @@ -303,19 +303,19 @@ func testFltrITMigratev2(t *testing.T) { ID: "FLTR_2", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaString, - FieldName: "~*req.Account", - Values: []string{"1001"}, + Type: utils.MetaString, + Element: "~*req.Account", + Values: []string{"1001"}, }, &engine.FilterRule{ - Type: utils.MetaString, - FieldName: "~*req.Subject", - Values: []string{"1001"}, + Type: utils.MetaString, + Element: "~*req.Subject", + Values: []string{"1001"}, }, &engine.FilterRule{ - Type: utils.MetaRSR, - FieldName: utils.EmptyString, - Values: []string{"~*req.Tenant(~^cgr.*\\.org$)"}, + Type: utils.MetaRSR, + Element: utils.EmptyString, + Values: []string{"~*req.Tenant(~^cgr.*\\.org$)"}, }, }, } @@ -329,7 +329,7 @@ func testFltrITMigratev2(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{"*string:~Account:1001"}, - FieldName: utils.MetaReq + utils.NestingSep + "Account", + Path: utils.MetaReq + utils.NestingSep + "Account", Value: config.NewRSRParsersMustCompile("1002", true, utils.INFIELD_SEP), }, }, @@ -344,7 +344,7 @@ func testFltrITMigratev2(t *testing.T) { Attributes: []*engine.Attribute{ { FilterIDs: []string{"*string:~*req.Account:1001"}, - FieldName: utils.MetaReq + utils.NestingSep + "Account", + Path: utils.MetaReq + utils.NestingSep + "Account", Value: config.NewRSRParsersMustCompile("1002", true, utils.INFIELD_SEP), }, }, diff --git a/migrator/filters_test.go b/migrator/filters_test.go index 4807987cc..1ec92613a 100644 --- a/migrator/filters_test.go +++ b/migrator/filters_test.go @@ -65,9 +65,9 @@ func TestFiltersMigrate(t *testing.T) { ID: "FLTR_1", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaString, - FieldName: "Account", - Values: []string{}, + Type: utils.MetaString, + Element: "Account", + Values: []string{}, }, }, }, @@ -76,9 +76,9 @@ func TestFiltersMigrate(t *testing.T) { ID: "FLTR_1", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaString, - FieldName: "~*req.Account", - Values: []string{}, + Type: utils.MetaString, + Element: "~*req.Account", + Values: []string{}, }, }, }, @@ -89,9 +89,9 @@ func TestFiltersMigrate(t *testing.T) { ID: "FLTR_2", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaPrefix, - FieldName: "~Account", - Values: []string{}, + Type: utils.MetaPrefix, + Element: "~Account", + Values: []string{}, }, }, }, @@ -100,9 +100,9 @@ func TestFiltersMigrate(t *testing.T) { ID: "FLTR_2", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaPrefix, - FieldName: "~Account", - Values: []string{}, + Type: utils.MetaPrefix, + Element: "~Account", + Values: []string{}, }, }, }, @@ -123,9 +123,9 @@ func TestFiltersMigrateV2(t *testing.T) { ID: "FLTR_1", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaString, - FieldName: "~Account", - Values: []string{}, + Type: utils.MetaString, + Element: "~Account", + Values: []string{}, }, }, }, @@ -134,9 +134,9 @@ func TestFiltersMigrateV2(t *testing.T) { ID: "FLTR_1", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaString, - FieldName: "~*req.Account", - Values: []string{}, + Type: utils.MetaString, + Element: "~*req.Account", + Values: []string{}, }, }, }, @@ -147,9 +147,9 @@ func TestFiltersMigrateV2(t *testing.T) { ID: "FLTR_2", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaPrefix, - FieldName: "~*req.Account", - Values: []string{}, + Type: utils.MetaPrefix, + Element: "~*req.Account", + Values: []string{}, }, }, }, @@ -158,9 +158,9 @@ func TestFiltersMigrateV2(t *testing.T) { ID: "FLTR_2", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaPrefix, - FieldName: "~*req.Account", - Values: []string{}, + Type: utils.MetaPrefix, + Element: "~*req.Account", + Values: []string{}, }, }, }, @@ -171,9 +171,9 @@ func TestFiltersMigrateV2(t *testing.T) { ID: "FLTR_3", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaPrefix, - FieldName: "~*act.Account", - Values: []string{}, + Type: utils.MetaPrefix, + Element: "~*act.Account", + Values: []string{}, }, }, }, @@ -182,9 +182,9 @@ func TestFiltersMigrateV2(t *testing.T) { ID: "FLTR_3", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaPrefix, - FieldName: "~*act.Account", - Values: []string{}, + Type: utils.MetaPrefix, + Element: "~*act.Account", + Values: []string{}, }, }, }, @@ -195,9 +195,9 @@ func TestFiltersMigrateV2(t *testing.T) { ID: "FLTR_4", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaPrefix, - FieldName: "~*act.Account", - Values: []string{}, + Type: utils.MetaPrefix, + Element: "~*act.Account", + Values: []string{}, }, }, }, @@ -206,9 +206,9 @@ func TestFiltersMigrateV2(t *testing.T) { ID: "FLTR_4", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaPrefix, - FieldName: "~*act.Account", - Values: []string{}, + Type: utils.MetaPrefix, + Element: "~*act.Account", + Values: []string{}, }, }, }, @@ -219,9 +219,9 @@ func TestFiltersMigrateV2(t *testing.T) { ID: "FLTR_5", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaPrefix, - FieldName: "~*vars.Account", - Values: []string{}, + Type: utils.MetaPrefix, + Element: "~*vars.Account", + Values: []string{}, }, }, }, @@ -230,9 +230,9 @@ func TestFiltersMigrateV2(t *testing.T) { ID: "FLTR_5", Rules: []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaPrefix, - FieldName: "~*vars.Account", - Values: []string{}, + Type: utils.MetaPrefix, + Element: "~*vars.Account", + Values: []string{}, }, }, }, diff --git a/migrator/tp_filters_it_test.go b/migrator/tp_filters_it_test.go index cea1259a2..d7b2d0b0a 100755 --- a/migrator/tp_filters_it_test.go +++ b/migrator/tp_filters_it_test.go @@ -113,9 +113,9 @@ func testTpFltrITPopulate(t *testing.T) { ID: "Filter", Filters: []*utils.TPFilter{ { - Type: "*string", - FieldName: "Account", - Values: []string{"1001", "1002"}, + Type: utils.MetaString, + Element: "Account", + Values: []string{"1001", "1002"}, }, }, ActivationInterval: &utils.TPActivationInterval{ diff --git a/migrator/user.go b/migrator/user.go index 5a35e965a..96b584582 100644 --- a/migrator/user.go +++ b/migrator/user.go @@ -63,9 +63,9 @@ func userProfile2attributeProfile(user *v1UserProfile) (attr *engine.AttributePr } if user.Tenant != attr.Tenant { attr.Attributes = append(attr.Attributes, &engine.Attribute{ - FieldName: utils.MetaTenant, - Value: config.NewRSRParsersMustCompile(user.Tenant, true, utils.INFIELD_SEP), - Type: utils.META_CONSTANT, + Path: utils.MetaTenant, + Value: config.NewRSRParsersMustCompile(user.Tenant, true, utils.INFIELD_SEP), + Type: utils.META_CONSTANT, }) } for fieldName, substitute := range user.Profile { @@ -77,9 +77,9 @@ func userProfile2attributeProfile(user *v1UserProfile) (attr *engine.AttributePr continue } attr.Attributes = append(attr.Attributes, &engine.Attribute{ - FieldName: utils.MetaReq + utils.NestingSep + fieldName, - Value: config.NewRSRParsersMustCompile(substitute, true, utils.INFIELD_SEP), - Type: utils.MetaVariable, + Path: utils.MetaReq + utils.NestingSep + fieldName, + Value: config.NewRSRParsersMustCompile(substitute, true, utils.INFIELD_SEP), + Type: utils.MetaVariable, }) } return diff --git a/migrator/user_it_test.go b/migrator/user_it_test.go index 25bd50fdc..beacb6703 100644 --- a/migrator/user_it_test.go +++ b/migrator/user_it_test.go @@ -130,19 +130,19 @@ func testUsrITMigrateAndMove(t *testing.T) { ActivationInterval: nil, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.RequestType, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("*prepaid", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.RequestType, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("*prepaid", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + "msisdn", - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("123423534646752", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "msisdn", + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("123423534646752", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaTenant, - Type: utils.META_CONSTANT, - Value: config.NewRSRParsersMustCompile("cgrates.com", true, utils.INFIELD_SEP), + Path: utils.MetaTenant, + Type: utils.META_CONSTANT, + Value: config.NewRSRParsersMustCompile("cgrates.com", true, utils.INFIELD_SEP), }, }, Blocker: false, @@ -183,7 +183,7 @@ func testUsrITMigrateAndMove(t *testing.T) { } result.Compile() sort.Slice(result.Attributes, func(i, j int) bool { - return result.Attributes[i].FieldName < result.Attributes[j].FieldName + return result.Attributes[i].Path < result.Attributes[j].Path }) // only for test; map returns random keys if !reflect.DeepEqual(*attrProf, *result) { t.Errorf("Expecting: %+v, received: %+v", utils.ToJSON(attrProf), utils.ToJSON(result)) diff --git a/migrator/user_test.go b/migrator/user_test.go index 3ef631086..6d2f58e27 100644 --- a/migrator/user_test.go +++ b/migrator/user_test.go @@ -104,14 +104,14 @@ func TestUserProfile2attributeProfile(t *testing.T) { ActivationInterval: nil, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + "Subject", - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("call_1001", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "Subject", + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("call_1001", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaTenant, - Type: utils.META_CONSTANT, - Value: config.NewRSRParsersMustCompile(usrTenant, true, utils.INFIELD_SEP), + Path: utils.MetaTenant, + Type: utils.META_CONSTANT, + Value: config.NewRSRParsersMustCompile(usrTenant, true, utils.INFIELD_SEP), }, }, Blocker: false, @@ -127,14 +127,14 @@ func TestUserProfile2attributeProfile(t *testing.T) { ActivationInterval: nil, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.RequestType, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("*prepaid", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.RequestType, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("*prepaid", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + "msisdn", - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("123423534646752", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "msisdn", + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("123423534646752", true, utils.INFIELD_SEP), }, }, Blocker: false, @@ -148,14 +148,14 @@ func TestUserProfile2attributeProfile(t *testing.T) { ActivationInterval: nil, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.RequestType, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("*prepaid", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.RequestType, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("*prepaid", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaTenant, - Type: utils.META_CONSTANT, - Value: config.NewRSRParsersMustCompile(usrTenant, true, utils.INFIELD_SEP), + Path: utils.MetaTenant, + Type: utils.META_CONSTANT, + Value: config.NewRSRParsersMustCompile(usrTenant, true, utils.INFIELD_SEP), }, }, Blocker: false, @@ -171,29 +171,29 @@ func TestUserProfile2attributeProfile(t *testing.T) { ActivationInterval: nil, Attributes: []*engine.Attribute{ { - FieldName: utils.MetaReq + utils.NestingSep + utils.RequestType, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("*prepaid", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.RequestType, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("*prepaid", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + utils.Subject, - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("acnt63", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + utils.Subject, + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("acnt63", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + "imsi", - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("12345", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "imsi", + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("12345", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaReq + utils.NestingSep + "msisdn", - Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("12345", true, utils.INFIELD_SEP), + Path: utils.MetaReq + utils.NestingSep + "msisdn", + Type: utils.MetaVariable, + Value: config.NewRSRParsersMustCompile("12345", true, utils.INFIELD_SEP), }, { - FieldName: utils.MetaTenant, - Type: utils.META_CONSTANT, - Value: config.NewRSRParsersMustCompile(usrTenant, true, utils.INFIELD_SEP), + Path: utils.MetaTenant, + Type: utils.META_CONSTANT, + Value: config.NewRSRParsersMustCompile(usrTenant, true, utils.INFIELD_SEP), }, }, Blocker: false, @@ -203,10 +203,10 @@ func TestUserProfile2attributeProfile(t *testing.T) { for i := range expected { rply := userProfile2attributeProfile(users[i]) sort.Slice(rply.Attributes, func(i, j int) bool { - if rply.Attributes[i].FieldName == rply.Attributes[j].FieldName { + if rply.Attributes[i].Path == rply.Attributes[j].Path { return rply.Attributes[i].FilterIDs[0] < rply.Attributes[j].FilterIDs[0] } - return rply.Attributes[i].FieldName < rply.Attributes[j].FieldName + return rply.Attributes[i].Path < rply.Attributes[j].Path }) // only for test; map returns random keys if !reflect.DeepEqual(expected[i], rply) { t.Errorf("For %v expected: %s ,\nreceived: %s ", i, utils.ToJSON(expected[i]), utils.ToJSON(rply)) diff --git a/sessions/sessions.go b/sessions/sessions.go index 597302937..8fc3c4bb3 100644 --- a/sessions/sessions.go +++ b/sessions/sessions.go @@ -811,7 +811,7 @@ func (sS *SessionS) getIndexedFilters(tenant string, fltrs []string) ( continue } for _, fltr := range f.Rules { - fldName := strings.TrimPrefix(fltr.FieldName, utils.DynamicDataPrefix+utils.MetaReq+utils.NestingSep) // remove ~req. prefix + fldName := strings.TrimPrefix(fltr.Element, utils.DynamicDataPrefix+utils.MetaReq+utils.NestingSep) // remove ~req. prefix if fltr.Type != utils.MetaString || !sS.cgrCfg.SessionSCfg().SessionIndexes.HasKey(fldName) { unindexedFltr = append(unindexedFltr, fltr) diff --git a/sessions/sessions_test.go b/sessions/sessions_test.go index ea77b8399..0f9201710 100644 --- a/sessions/sessions_test.go +++ b/sessions/sessions_test.go @@ -1574,9 +1574,9 @@ func TestSessionSGetIndexedFilters(t *testing.T) { expIndx := map[string][]string{} expUindx := []*engine.FilterRule{ &engine.FilterRule{ - Type: utils.MetaString, - FieldName: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.ToR, - Values: []string{utils.VOICE}, + Type: utils.MetaString, + Element: utils.DynamicDataPrefix + utils.MetaReq + utils.NestingSep + utils.ToR, + Values: []string{utils.VOICE}, }, } fltrs := []string{"*string:~*req.ToR:*voice"} diff --git a/utils/apitpdata.go b/utils/apitpdata.go index b9e681fae..4d0b1e1ee 100755 --- a/utils/apitpdata.go +++ b/utils/apitpdata.go @@ -1077,11 +1077,11 @@ type TPFilterProfile struct { ActivationInterval *TPActivationInterval // Time when this limit becomes active and expires } -// TPFilterProfile is used in TPFilterProfile +// TPFilter is used in TPFilterProfile type TPFilter struct { - Type string // Filter type (*string, *timing, *rsr_filters, *cdr_stats) - FieldName string // Name of the field providing us the Values to check (used in case of some ) - Values []string // Filter definition + Type string // Filter type (*string, *timing, *rsr_filters, *cdr_stats) + Element string // Name of the field providing us the Values to check (used in case of some ) + Values []string // Filter definition } // TPSupplier is used in TPSupplierProfile @@ -1113,7 +1113,7 @@ type TPSupplierProfile struct { // TPAttribute is used in TPAttributeProfile type TPAttribute struct { FilterIDs []string - FieldName string + Path string Type string Value string } diff --git a/utils/apitpdata_test.go b/utils/apitpdata_test.go index 28621d0a0..a80b6fd6b 100644 --- a/utils/apitpdata_test.go +++ b/utils/apitpdata_test.go @@ -797,7 +797,7 @@ func TestAppendToSMCostFilter(t *testing.T) { expected := &SMCostFilter{ CGRIDs: []string{"CGRID1", "CGRID2"}, } - if smfltr, err = AppendToSMCostFilter(smfltr, "*string", DynamicDataPrefix+CGRID, []string{"CGRID1", "CGRID2"}, ""); err != nil { + if smfltr, err = AppendToSMCostFilter(smfltr, MetaString, DynamicDataPrefix+CGRID, []string{"CGRID1", "CGRID2"}, ""); err != nil { t.Error(err) } else if !reflect.DeepEqual(smfltr, expected) { t.Errorf("Expected: %s ,received: %s ", ToJSON(expected), ToJSON(smfltr)) @@ -810,7 +810,7 @@ func TestAppendToSMCostFilter(t *testing.T) { } expected.RunIDs = []string{"RunID1", "RunID2"} - if smfltr, err = AppendToSMCostFilter(smfltr, "*string", DynamicDataPrefix+RunID, []string{"RunID1", "RunID2"}, ""); err != nil { + if smfltr, err = AppendToSMCostFilter(smfltr, MetaString, DynamicDataPrefix+RunID, []string{"RunID1", "RunID2"}, ""); err != nil { t.Error(err) } else if !reflect.DeepEqual(smfltr, expected) { t.Errorf("Expected: %s ,received: %s ", ToJSON(expected), ToJSON(smfltr)) @@ -823,7 +823,7 @@ func TestAppendToSMCostFilter(t *testing.T) { } expected.OriginHosts = []string{"OriginHost1", "OriginHost2"} - if smfltr, err = AppendToSMCostFilter(smfltr, "*string", DynamicDataPrefix+OriginHost, []string{"OriginHost1", "OriginHost2"}, ""); err != nil { + if smfltr, err = AppendToSMCostFilter(smfltr, MetaString, DynamicDataPrefix+OriginHost, []string{"OriginHost1", "OriginHost2"}, ""); err != nil { t.Error(err) } else if !reflect.DeepEqual(smfltr, expected) { t.Errorf("Expected: %s ,received: %s ", ToJSON(expected), ToJSON(smfltr)) @@ -836,7 +836,7 @@ func TestAppendToSMCostFilter(t *testing.T) { } expected.OriginIDs = []string{"OriginID1", "OriginID2"} - if smfltr, err = AppendToSMCostFilter(smfltr, "*string", DynamicDataPrefix+OriginID, []string{"OriginID1", "OriginID2"}, ""); err != nil { + if smfltr, err = AppendToSMCostFilter(smfltr, MetaString, DynamicDataPrefix+OriginID, []string{"OriginID1", "OriginID2"}, ""); err != nil { t.Error(err) } else if !reflect.DeepEqual(smfltr, expected) { t.Errorf("Expected: %s ,received: %s ", ToJSON(expected), ToJSON(smfltr)) @@ -849,7 +849,7 @@ func TestAppendToSMCostFilter(t *testing.T) { } expected.CostSources = []string{"CostSource1", "CostSource2"} - if smfltr, err = AppendToSMCostFilter(smfltr, "*string", DynamicDataPrefix+CostSource, []string{"CostSource1", "CostSource2"}, ""); err != nil { + if smfltr, err = AppendToSMCostFilter(smfltr, MetaString, DynamicDataPrefix+CostSource, []string{"CostSource1", "CostSource2"}, ""); err != nil { t.Error(err) } else if !reflect.DeepEqual(smfltr, expected) { t.Errorf("Expected: %s ,received: %s ", ToJSON(expected), ToJSON(smfltr)) @@ -891,7 +891,7 @@ func TestAppendToSMCostFilter(t *testing.T) { if !reflect.DeepEqual(smfltr, expected) { t.Errorf("Expected: %s ,received: %s ", ToJSON(expected), ToJSON(smfltr)) } - if smfltr, err = AppendToSMCostFilter(smfltr, "*string", CGRID, []string{"CGRID1", "CGRID2"}, ""); err == nil || err.Error() != "FieldName: \"CGRID\" not supported" { + if smfltr, err = AppendToSMCostFilter(smfltr, MetaString, CGRID, []string{"CGRID1", "CGRID2"}, ""); err == nil || err.Error() != "FieldName: \"CGRID\" not supported" { t.Errorf("Expected error: FieldName: \"CGRID\" not supported ,received %v", err) } if !reflect.DeepEqual(smfltr, expected) { diff --git a/utils/consts.go b/utils/consts.go index f6523d2a3..28897e51e 100755 --- a/utils/consts.go +++ b/utils/consts.go @@ -499,6 +499,7 @@ const ( CGR_ACD = "cgr_acd" FilterIDs = "FilterIDs" FieldName = "FieldName" + Path = "Path" MetaRound = "*round" Pong = "Pong" MetaEventCost = "*event_cost"