diff --git a/config/config_defaults.go b/config/config_defaults.go index 7819643a8..6c05cada1 100755 --- a/config/config_defaults.go +++ b/config/config_defaults.go @@ -660,171 +660,171 @@ const CGRATES_CFG_JSON = ` "type": "*attributes", // data source type "file_name": "Attributes.csv", // file name in the tp_in_dir "fields": [ - {"tag": "TenantID", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, - {"tag": "ProfileID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true}, - {"tag": "Contexts", "path": "Contexts", "type": "*variable", "value": "~2"}, - {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~3"}, - {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~4"}, - {"tag": "AttributeFilterIDs", "path": "AttributeFilterIDs", "type": "*variable", "value": "~5"}, - {"tag": "Path", "path": "Path", "type": "*variable", "value": "~6"}, - {"tag": "Type", "path": "Type", "type": "*variable", "value": "~7"}, - {"tag": "Value", "path": "Value", "type": "*variable", "value": "~8"}, - {"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~9"}, - {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~10"}, + {"tag": "TenantID", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, + {"tag": "ProfileID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, + {"tag": "Contexts", "path": "Contexts", "type": "*variable", "value": "~*req.2"}, + {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.3"}, + {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.4"}, + {"tag": "AttributeFilterIDs", "path": "AttributeFilterIDs", "type": "*variable", "value": "~*req.5"}, + {"tag": "Path", "path": "Path", "type": "*variable", "value": "~*req.6"}, + {"tag": "Type", "path": "Type", "type": "*variable", "value": "~*req.7"}, + {"tag": "Value", "path": "Value", "type": "*variable", "value": "~*req.8"}, + {"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~*req.9"}, + {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.10"}, ], }, { "type": "*filters", // data source type "file_name": "Filters.csv", // file name in the tp_in_dir "fields": [ - {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, - {"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true}, - {"tag": "Type", "path": "Type", "type": "*variable", "value": "~2"}, - {"tag": "Element", "path": "Element", "type": "*variable", "value": "~3"}, - {"tag": "Values", "path": "Values", "type": "*variable", "value": "~4"}, - {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~5"}, + {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, + {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, + {"tag": "Type", "path": "Type", "type": "*variable", "value": "~*req.2"}, + {"tag": "Element", "path": "Element", "type": "*variable", "value": "~*req.3"}, + {"tag": "Values", "path": "Values", "type": "*variable", "value": "~*req.4"}, + {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.5"}, ], }, { "type": "*resources", // data source type "file_name": "Resources.csv", // file name in the tp_in_dir "fields": [ - {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, - {"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true}, - {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~2"}, - {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~3"}, - {"tag": "TTL", "path": "UsageTTL", "type": "*variable", "value": "~4"}, - {"tag": "Limit", "path": "Limit", "type": "*variable", "value": "~5"}, - {"tag": "AllocationMessage", "path": "AllocationMessage", "type": "*variable", "value": "~6"}, - {"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~7"}, - {"tag": "Stored", "path": "Stored", "type": "*variable", "value": "~8"}, - {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~9"}, - {"tag": "ThresholdIDs", "path": "ThresholdIDs", "type": "*variable", "value": "~10"}, + {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, + {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, + {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"}, + {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.3"}, + {"tag": "TTL", "path": "UsageTTL", "type": "*variable", "value": "~*req.4"}, + {"tag": "Limit", "path": "Limit", "type": "*variable", "value": "~*req.5"}, + {"tag": "AllocationMessage", "path": "AllocationMessage", "type": "*variable", "value": "~*req.6"}, + {"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~*req.7"}, + {"tag": "Stored", "path": "Stored", "type": "*variable", "value": "~*req.8"}, + {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.9"}, + {"tag": "ThresholdIDs", "path": "ThresholdIDs", "type": "*variable", "value": "~*req.10"}, ], }, { "type": "*stats", // data source type "file_name": "Stats.csv", // file name in the tp_in_dir "fields": [ - {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, - {"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true}, - {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~2"}, - {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~3"}, - {"tag": "QueueLength", "path": "QueueLength", "type": "*variable", "value": "~4"}, - {"tag": "TTL", "path": "TTL", "type": "*variable", "value": "~5"}, - {"tag": "MinItems", "path": "MinItems", "type": "*variable", "value": "~6"}, - {"tag": "MetricIDs", "path": "MetricIDs", "type": "*variable", "value": "~7"}, - {"tag": "MetricFilterIDs", "path": "MetricFilterIDs", "type": "*variable", "value": "~8"}, - {"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~9"}, - {"tag": "Stored", "path": "Stored", "type": "*variable", "value": "~10"}, - {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~11"}, - {"tag": "ThresholdIDs", "path": "ThresholdIDs", "type": "*variable", "value": "~12"}, + {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, + {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, + {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"}, + {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.3"}, + {"tag": "QueueLength", "path": "QueueLength", "type": "*variable", "value": "~*req.4"}, + {"tag": "TTL", "path": "TTL", "type": "*variable", "value": "~*req.5"}, + {"tag": "MinItems", "path": "MinItems", "type": "*variable", "value": "~*req.6"}, + {"tag": "MetricIDs", "path": "MetricIDs", "type": "*variable", "value": "~*req.7"}, + {"tag": "MetricFilterIDs", "path": "MetricFilterIDs", "type": "*variable", "value": "~*req.8"}, + {"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~*req.9"}, + {"tag": "Stored", "path": "Stored", "type": "*variable", "value": "~*req.10"}, + {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.11"}, + {"tag": "ThresholdIDs", "path": "ThresholdIDs", "type": "*variable", "value": "~*req.12"}, ], }, { "type": "*thresholds", // data source type "file_name": "Thresholds.csv", // file name in the tp_in_dir "fields": [ - {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, - {"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true}, - {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~2"}, - {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~3"}, - {"tag": "MaxHits", "path": "MaxHits", "type": "*variable", "value": "~4"}, - {"tag": "MinHits", "path": "MinHits", "type": "*variable", "value": "~5"}, - {"tag": "MinSleep", "path": "MinSleep", "type": "*variable", "value": "~6"}, - {"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~7"}, - {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~8"}, - {"tag": "ActionIDs", "path": "ActionIDs", "type": "*variable", "value": "~9"}, - {"tag": "Async", "path": "Async", "type": "*variable", "value": "~10"}, + {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, + {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, + {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"}, + {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.3"}, + {"tag": "MaxHits", "path": "MaxHits", "type": "*variable", "value": "~*req.4"}, + {"tag": "MinHits", "path": "MinHits", "type": "*variable", "value": "~*req.5"}, + {"tag": "MinSleep", "path": "MinSleep", "type": "*variable", "value": "~*req.6"}, + {"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~*req.7"}, + {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.8"}, + {"tag": "ActionIDs", "path": "ActionIDs", "type": "*variable", "value": "~*req.9"}, + {"tag": "Async", "path": "Async", "type": "*variable", "value": "~*req.10"}, ], }, { "type": "*routes", // data source type "file_name": "Routes.csv", // file name in the tp_in_dir "fields": [ - {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, - {"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true}, - {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~2"}, - {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~3"}, - {"tag": "Sorting", "path": "Sorting", "type": "*variable", "value": "~4"}, - {"tag": "SortingParameters", "path": "SortingParameters", "type": "*variable", "value": "~5"}, - {"tag": "RouteID", "path": "RouteID", "type": "*variable", "value": "~6"}, - {"tag": "RouteFilterIDs", "path": "RouteFilterIDs", "type": "*variable", "value": "~7"}, - {"tag": "RouteAccountIDs", "path": "RouteAccountIDs", "type": "*variable", "value": "~8"}, - {"tag": "RouteRatingPlanIDs", "path": "RouteRatingPlanIDs", "type": "*variable", "value": "~9"}, - {"tag": "RouteResourceIDs", "path": "RouteResourceIDs", "type": "*variable", "value": "~10"}, - {"tag": "RouteStatIDs", "path": "RouteStatIDs", "type": "*variable", "value": "~11"}, - {"tag": "RouteWeight", "path": "RouteWeight", "type": "*variable", "value": "~12"}, - {"tag": "RouteBlocker", "path": "RouteBlocker", "type": "*variable", "value": "~13"}, - {"tag": "RouteParameters", "path": "RouteParameters", "type": "*variable", "value": "~14"}, - {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~15"}, + {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, + {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, + {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"}, + {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.3"}, + {"tag": "Sorting", "path": "Sorting", "type": "*variable", "value": "~*req.4"}, + {"tag": "SortingParameters", "path": "SortingParameters", "type": "*variable", "value": "~*req.5"}, + {"tag": "RouteID", "path": "RouteID", "type": "*variable", "value": "~*req.6"}, + {"tag": "RouteFilterIDs", "path": "RouteFilterIDs", "type": "*variable", "value": "~*req.7"}, + {"tag": "RouteAccountIDs", "path": "RouteAccountIDs", "type": "*variable", "value": "~*req.8"}, + {"tag": "RouteRatingPlanIDs", "path": "RouteRatingPlanIDs", "type": "*variable", "value": "~*req.9"}, + {"tag": "RouteResourceIDs", "path": "RouteResourceIDs", "type": "*variable", "value": "~*req.10"}, + {"tag": "RouteStatIDs", "path": "RouteStatIDs", "type": "*variable", "value": "~*req.11"}, + {"tag": "RouteWeight", "path": "RouteWeight", "type": "*variable", "value": "~*req.12"}, + {"tag": "RouteBlocker", "path": "RouteBlocker", "type": "*variable", "value": "~*req.13"}, + {"tag": "RouteParameters", "path": "RouteParameters", "type": "*variable", "value": "~*req.14"}, + {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.15"}, ], }, { "type": "*chargers", // data source type "file_name": "Chargers.csv", // file name in the tp_in_dir "fields": [ - {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, - {"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true}, - {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~2"}, - {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~3"}, - {"tag": "RunID", "path": "RunID", "type": "*variable", "value": "~4"}, - {"tag": "AttributeIDs", "path": "AttributeIDs", "type": "*variable", "value": "~5"}, - {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~6"}, + {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, + {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, + {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"}, + {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.3"}, + {"tag": "RunID", "path": "RunID", "type": "*variable", "value": "~*req.4"}, + {"tag": "AttributeIDs", "path": "AttributeIDs", "type": "*variable", "value": "~*req.5"}, + {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.6"}, ], }, { "type": "*dispatchers", // data source type "file_name": "DispatcherProfiles.csv", // file name in the tp_in_dir "fields": [ - {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, - {"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true}, - {"tag": "Contexts", "path": "Contexts", "type": "*variable", "value": "~2"}, - {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~3"}, - {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~4"}, - {"tag": "Strategy", "path": "Strategy", "type": "*variable", "value": "~5"}, - {"tag": "StrategyParameters", "path": "StrategyParameters", "type": "*variable", "value": "~6"}, - {"tag": "ConnID", "path": "ConnID", "type": "*variable", "value": "~7"}, - {"tag": "ConnFilterIDs", "path": "ConnFilterIDs", "type": "*variable", "value": "~8"}, - {"tag": "ConnWeight", "path": "ConnWeight", "type": "*variable", "value": "~9"}, - {"tag": "ConnBlocker", "path": "ConnBlocker", "type": "*variable", "value": "~10"}, - {"tag": "ConnParameters", "path": "ConnParameters", "type": "*variable", "value": "~11"}, - {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~12"}, + {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, + {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, + {"tag": "Contexts", "path": "Contexts", "type": "*variable", "value": "~*req.2"}, + {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.3"}, + {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.4"}, + {"tag": "Strategy", "path": "Strategy", "type": "*variable", "value": "~*req.5"}, + {"tag": "StrategyParameters", "path": "StrategyParameters", "type": "*variable", "value": "~*req.6"}, + {"tag": "ConnID", "path": "ConnID", "type": "*variable", "value": "~*req.7"}, + {"tag": "ConnFilterIDs", "path": "ConnFilterIDs", "type": "*variable", "value": "~*req.8"}, + {"tag": "ConnWeight", "path": "ConnWeight", "type": "*variable", "value": "~*req.9"}, + {"tag": "ConnBlocker", "path": "ConnBlocker", "type": "*variable", "value": "~*req.10"}, + {"tag": "ConnParameters", "path": "ConnParameters", "type": "*variable", "value": "~*req.11"}, + {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.12"}, ], }, { "type": "*dispatcher_hosts", // data source type "file_name": "DispatcherHosts.csv", // file name in the tp_in_dir "fields": [ - {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, - {"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true}, - {"tag": "Address", "path": "Address", "type": "*variable", "value": "~2"}, - {"tag": "Transport", "path": "Transport", "type": "*variable", "value": "~3"}, - {"tag": "TLS", "path": "TLS", "type": "*variable", "value": "~4"}, + {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, + {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, + {"tag": "Address", "path": "Address", "type": "*variable", "value": "~*req.2"}, + {"tag": "Transport", "path": "Transport", "type": "*variable", "value": "~*req.3"}, + {"tag": "TLS", "path": "TLS", "type": "*variable", "value": "~*req.4"}, ], }, { "type": "*rate_profiles", // data source type "file_name": "RateProfiles.csv", // file name in the tp_in_dir "fields": [ - {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, - {"tag": "ID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true}, - {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~2"}, - {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~3"}, - {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~4"}, - {"tag": "ConnectFee", "path": "ConnectFee", "type": "*variable", "value": "~5"}, - {"tag": "RoundingMethod", "path": "RoundingMethod", "type": "*variable", "value": "~6"}, - {"tag": "RoundingDecimals", "path": "RoundingDecimals", "type": "*variable", "value": "~7"}, - {"tag": "MinCost", "path": "MinCost", "type": "*variable", "value": "~8"}, - {"tag": "MaxCost", "path": "MaxCost", "type": "*variable", "value": "~9"}, - {"tag": "MaxCostStrategy", "path": "MaxCostStrategy", "type": "*variable", "value": "~10"}, - {"tag": "RateID", "path": "RateID", "type": "*variable", "value": "~11"}, - {"tag": "RateFilterIDs", "path": "RateFilterIDs", "type": "*variable", "value": "~12"}, - {"tag": "RateWeight", "path": "RateWeight", "type": "*variable", "value": "~13"}, - {"tag": "RateValue", "path": "RateValue", "type": "*variable", "value": "~14"}, - {"tag": "RateUnit", "path": "RateUnit", "type": "*variable", "value": "~15"}, - {"tag": "RateIncrement", "path": "RateIncrement", "type": "*variable", "value": "~16"}, - {"tag": "RateBlocker", "path": "RateBlocker", "type": "*variable", "value": "~17"}, + {"tag": "Tenant", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, + {"tag": "ID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, + {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.2"}, + {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.3"}, + {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.4"}, + {"tag": "ConnectFee", "path": "ConnectFee", "type": "*variable", "value": "~*req.5"}, + {"tag": "RoundingMethod", "path": "RoundingMethod", "type": "*variable", "value": "~*req.6"}, + {"tag": "RoundingDecimals", "path": "RoundingDecimals", "type": "*variable", "value": "~*req.7"}, + {"tag": "MinCost", "path": "MinCost", "type": "*variable", "value": "~*req.8"}, + {"tag": "MaxCost", "path": "MaxCost", "type": "*variable", "value": "~*req.9"}, + {"tag": "MaxCostStrategy", "path": "MaxCostStrategy", "type": "*variable", "value": "~*req.10"}, + {"tag": "RateID", "path": "RateID", "type": "*variable", "value": "~*req.11"}, + {"tag": "RateFilterIDs", "path": "RateFilterIDs", "type": "*variable", "value": "~*req.12"}, + {"tag": "RateWeight", "path": "RateWeight", "type": "*variable", "value": "~*req.13"}, + {"tag": "RateValue", "path": "RateValue", "type": "*variable", "value": "~*req.14"}, + {"tag": "RateUnit", "path": "RateUnit", "type": "*variable", "value": "~*req.15"}, + {"tag": "RateIncrement", "path": "RateIncrement", "type": "*variable", "value": "~*req.16"}, + {"tag": "RateBlocker", "path": "RateBlocker", "type": "*variable", "value": "~*req.17"}, ], }, ], diff --git a/config/config_json_test.go b/config/config_json_test.go index 69fc530b7..701053982 100755 --- a/config/config_json_test.go +++ b/config/config_json_test.go @@ -1162,49 +1162,49 @@ func TestDfLoaderJsonCfg(t *testing.T) { {Tag: utils.StringPointer("TenantID"), Path: utils.StringPointer(utils.Tenant), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~0"), + Value: utils.StringPointer("~*req.0"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("ProfileID"), Path: utils.StringPointer(utils.ID), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~1"), + Value: utils.StringPointer("~*req.1"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("Contexts"), Path: utils.StringPointer(utils.Contexts), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~2")}, + Value: utils.StringPointer("~*req.2")}, {Tag: utils.StringPointer("FilterIDs"), Path: utils.StringPointer(utils.FilterIDs), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~3")}, + Value: utils.StringPointer("~*req.3")}, {Tag: utils.StringPointer("ActivationInterval"), Path: utils.StringPointer("ActivationInterval"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~4")}, + Value: utils.StringPointer("~*req.4")}, {Tag: utils.StringPointer("AttributeFilterIDs"), Path: utils.StringPointer("AttributeFilterIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~5")}, + Value: utils.StringPointer("~*req.5")}, {Tag: utils.StringPointer("Path"), Path: utils.StringPointer(utils.Path), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~6")}, + Value: utils.StringPointer("~*req.6")}, {Tag: utils.StringPointer("Type"), Path: utils.StringPointer("Type"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~7")}, + Value: utils.StringPointer("~*req.7")}, {Tag: utils.StringPointer("Value"), Path: utils.StringPointer("Value"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~8")}, + Value: utils.StringPointer("~*req.8")}, {Tag: utils.StringPointer("Blocker"), Path: utils.StringPointer("Blocker"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~9")}, + Value: utils.StringPointer("~*req.9")}, {Tag: utils.StringPointer("Weight"), Path: utils.StringPointer(utils.Weight), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~10")}, + Value: utils.StringPointer("~*req.10")}, }, }, { @@ -1214,29 +1214,29 @@ func TestDfLoaderJsonCfg(t *testing.T) { {Tag: utils.StringPointer(utils.Tenant), Path: utils.StringPointer(utils.Tenant), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~0"), + Value: utils.StringPointer("~*req.0"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer(utils.ID), Path: utils.StringPointer(utils.ID), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~1"), + Value: utils.StringPointer("~*req.1"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("Type"), Path: utils.StringPointer("Type"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~2")}, + Value: utils.StringPointer("~*req.2")}, {Tag: utils.StringPointer("Element"), Path: utils.StringPointer("Element"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~3")}, + Value: utils.StringPointer("~*req.3")}, {Tag: utils.StringPointer("Values"), Path: utils.StringPointer("Values"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~4")}, + Value: utils.StringPointer("~*req.4")}, {Tag: utils.StringPointer("ActivationInterval"), Path: utils.StringPointer("ActivationInterval"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~5")}, + Value: utils.StringPointer("~*req.5")}, }, }, { @@ -1246,49 +1246,49 @@ func TestDfLoaderJsonCfg(t *testing.T) { {Tag: utils.StringPointer(utils.Tenant), Path: utils.StringPointer(utils.Tenant), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~0"), + Value: utils.StringPointer("~*req.0"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer(utils.ID), Path: utils.StringPointer(utils.ID), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~1"), + Value: utils.StringPointer("~*req.1"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("FilterIDs"), Path: utils.StringPointer("FilterIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~2")}, + Value: utils.StringPointer("~*req.2")}, {Tag: utils.StringPointer("ActivationInterval"), Path: utils.StringPointer("ActivationInterval"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~3")}, + Value: utils.StringPointer("~*req.3")}, {Tag: utils.StringPointer("TTL"), Path: utils.StringPointer("UsageTTL"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~4")}, + Value: utils.StringPointer("~*req.4")}, {Tag: utils.StringPointer("Limit"), Path: utils.StringPointer("Limit"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~5")}, + Value: utils.StringPointer("~*req.5")}, {Tag: utils.StringPointer("AllocationMessage"), Path: utils.StringPointer("AllocationMessage"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~6")}, + Value: utils.StringPointer("~*req.6")}, {Tag: utils.StringPointer("Blocker"), Path: utils.StringPointer("Blocker"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~7")}, + Value: utils.StringPointer("~*req.7")}, {Tag: utils.StringPointer("Stored"), Path: utils.StringPointer("Stored"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~8")}, + Value: utils.StringPointer("~*req.8")}, {Tag: utils.StringPointer("Weight"), Path: utils.StringPointer("Weight"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~9")}, + Value: utils.StringPointer("~*req.9")}, {Tag: utils.StringPointer("ThresholdIDs"), Path: utils.StringPointer("ThresholdIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~10")}, + Value: utils.StringPointer("~*req.10")}, }, }, { @@ -1298,58 +1298,58 @@ func TestDfLoaderJsonCfg(t *testing.T) { {Tag: utils.StringPointer(utils.Tenant), Path: utils.StringPointer(utils.Tenant), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~0"), + Value: utils.StringPointer("~*req.0"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer(utils.ID), Path: utils.StringPointer(utils.ID), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~1"), + Value: utils.StringPointer("~*req.1"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("FilterIDs"), Path: utils.StringPointer("FilterIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~2")}, + Value: utils.StringPointer("~*req.2")}, {Tag: utils.StringPointer("ActivationInterval"), Path: utils.StringPointer("ActivationInterval"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~3")}, + Value: utils.StringPointer("~*req.3")}, {Tag: utils.StringPointer("QueueLength"), Path: utils.StringPointer("QueueLength"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~4")}, + Value: utils.StringPointer("~*req.4")}, {Tag: utils.StringPointer("TTL"), Path: utils.StringPointer("TTL"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~5")}, + Value: utils.StringPointer("~*req.5")}, {Tag: utils.StringPointer("MinItems"), Path: utils.StringPointer("MinItems"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~6")}, + Value: utils.StringPointer("~*req.6")}, {Tag: utils.StringPointer("MetricIDs"), Path: utils.StringPointer("MetricIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~7")}, + Value: utils.StringPointer("~*req.7")}, {Tag: utils.StringPointer("MetricFilterIDs"), Path: utils.StringPointer("MetricFilterIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~8")}, + Value: utils.StringPointer("~*req.8")}, {Tag: utils.StringPointer("Blocker"), Path: utils.StringPointer("Blocker"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~9")}, + Value: utils.StringPointer("~*req.9")}, {Tag: utils.StringPointer("Stored"), Path: utils.StringPointer("Stored"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~10")}, + Value: utils.StringPointer("~*req.10")}, {Tag: utils.StringPointer("Weight"), Path: utils.StringPointer("Weight"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~11")}, + Value: utils.StringPointer("~*req.11")}, {Tag: utils.StringPointer("ThresholdIDs"), Path: utils.StringPointer("ThresholdIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~12")}, + Value: utils.StringPointer("~*req.12")}, }, }, { @@ -1359,49 +1359,49 @@ func TestDfLoaderJsonCfg(t *testing.T) { {Tag: utils.StringPointer(utils.Tenant), Path: utils.StringPointer(utils.Tenant), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~0"), + Value: utils.StringPointer("~*req.0"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer(utils.ID), Path: utils.StringPointer(utils.ID), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~1"), + Value: utils.StringPointer("~*req.1"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("FilterIDs"), Path: utils.StringPointer("FilterIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~2")}, + Value: utils.StringPointer("~*req.2")}, {Tag: utils.StringPointer("ActivationInterval"), Path: utils.StringPointer("ActivationInterval"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~3")}, + Value: utils.StringPointer("~*req.3")}, {Tag: utils.StringPointer("MaxHits"), Path: utils.StringPointer("MaxHits"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~4")}, + Value: utils.StringPointer("~*req.4")}, {Tag: utils.StringPointer("MinHits"), Path: utils.StringPointer("MinHits"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~5")}, + Value: utils.StringPointer("~*req.5")}, {Tag: utils.StringPointer("MinSleep"), Path: utils.StringPointer("MinSleep"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~6")}, + Value: utils.StringPointer("~*req.6")}, {Tag: utils.StringPointer("Blocker"), Path: utils.StringPointer("Blocker"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~7")}, + Value: utils.StringPointer("~*req.7")}, {Tag: utils.StringPointer("Weight"), Path: utils.StringPointer("Weight"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~8")}, + Value: utils.StringPointer("~*req.8")}, {Tag: utils.StringPointer("ActionIDs"), Path: utils.StringPointer("ActionIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~9")}, + Value: utils.StringPointer("~*req.9")}, {Tag: utils.StringPointer("Async"), Path: utils.StringPointer("Async"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~10")}, + Value: utils.StringPointer("~*req.10")}, }, }, { @@ -1411,69 +1411,69 @@ func TestDfLoaderJsonCfg(t *testing.T) { {Tag: utils.StringPointer(utils.Tenant), Path: utils.StringPointer(utils.Tenant), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~0"), + Value: utils.StringPointer("~*req.0"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer(utils.ID), Path: utils.StringPointer(utils.ID), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~1"), + Value: utils.StringPointer("~*req.1"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("FilterIDs"), Path: utils.StringPointer("FilterIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~2")}, + Value: utils.StringPointer("~*req.2")}, {Tag: utils.StringPointer("ActivationInterval"), Path: utils.StringPointer("ActivationInterval"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~3")}, + Value: utils.StringPointer("~*req.3")}, {Tag: utils.StringPointer("Sorting"), Path: utils.StringPointer("Sorting"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~4")}, + Value: utils.StringPointer("~*req.4")}, {Tag: utils.StringPointer("SortingParameters"), Path: utils.StringPointer("SortingParameters"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~5")}, + Value: utils.StringPointer("~*req.5")}, {Tag: utils.StringPointer("RouteID"), Path: utils.StringPointer("RouteID"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~6")}, + Value: utils.StringPointer("~*req.6")}, {Tag: utils.StringPointer("RouteFilterIDs"), Path: utils.StringPointer("RouteFilterIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~7")}, + Value: utils.StringPointer("~*req.7")}, {Tag: utils.StringPointer("RouteAccountIDs"), Path: utils.StringPointer("RouteAccountIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~8")}, + Value: utils.StringPointer("~*req.8")}, {Tag: utils.StringPointer("RouteRatingPlanIDs"), Path: utils.StringPointer("RouteRatingPlanIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~9")}, + Value: utils.StringPointer("~*req.9")}, {Tag: utils.StringPointer("RouteResourceIDs"), Path: utils.StringPointer("RouteResourceIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~10")}, + Value: utils.StringPointer("~*req.10")}, {Tag: utils.StringPointer("RouteStatIDs"), Path: utils.StringPointer("RouteStatIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~11")}, + Value: utils.StringPointer("~*req.11")}, {Tag: utils.StringPointer("RouteWeight"), Path: utils.StringPointer("RouteWeight"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~12")}, + Value: utils.StringPointer("~*req.12")}, {Tag: utils.StringPointer("RouteBlocker"), Path: utils.StringPointer("RouteBlocker"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~13")}, + Value: utils.StringPointer("~*req.13")}, {Tag: utils.StringPointer("RouteParameters"), Path: utils.StringPointer("RouteParameters"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~14")}, + Value: utils.StringPointer("~*req.14")}, {Tag: utils.StringPointer("Weight"), Path: utils.StringPointer("Weight"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~15")}, + Value: utils.StringPointer("~*req.15")}, }, }, { @@ -1483,33 +1483,33 @@ func TestDfLoaderJsonCfg(t *testing.T) { {Tag: utils.StringPointer(utils.Tenant), Path: utils.StringPointer(utils.Tenant), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~0"), + Value: utils.StringPointer("~*req.0"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer(utils.ID), Path: utils.StringPointer(utils.ID), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~1"), + Value: utils.StringPointer("~*req.1"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("FilterIDs"), Path: utils.StringPointer("FilterIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~2")}, + Value: utils.StringPointer("~*req.2")}, {Tag: utils.StringPointer("ActivationInterval"), Path: utils.StringPointer("ActivationInterval"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~3")}, + Value: utils.StringPointer("~*req.3")}, {Tag: utils.StringPointer("RunID"), Path: utils.StringPointer("RunID"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~4")}, + Value: utils.StringPointer("~*req.4")}, {Tag: utils.StringPointer("AttributeIDs"), Path: utils.StringPointer("AttributeIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~5")}, + Value: utils.StringPointer("~*req.5")}, {Tag: utils.StringPointer("Weight"), Path: utils.StringPointer("Weight"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~6")}, + Value: utils.StringPointer("~*req.6")}, }, }, { @@ -1519,57 +1519,57 @@ func TestDfLoaderJsonCfg(t *testing.T) { {Tag: utils.StringPointer(utils.Tenant), Path: utils.StringPointer(utils.Tenant), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~0"), + Value: utils.StringPointer("~*req.0"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer(utils.ID), Path: utils.StringPointer(utils.ID), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~1"), + Value: utils.StringPointer("~*req.1"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("Contexts"), Path: utils.StringPointer("Contexts"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~2")}, + Value: utils.StringPointer("~*req.2")}, {Tag: utils.StringPointer("FilterIDs"), Path: utils.StringPointer("FilterIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~3")}, + Value: utils.StringPointer("~*req.3")}, {Tag: utils.StringPointer("ActivationInterval"), Path: utils.StringPointer("ActivationInterval"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~4")}, + Value: utils.StringPointer("~*req.4")}, {Tag: utils.StringPointer("Strategy"), Path: utils.StringPointer("Strategy"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~5")}, + Value: utils.StringPointer("~*req.5")}, {Tag: utils.StringPointer("StrategyParameters"), Path: utils.StringPointer("StrategyParameters"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~6")}, + Value: utils.StringPointer("~*req.6")}, {Tag: utils.StringPointer("ConnID"), Path: utils.StringPointer("ConnID"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~7")}, + Value: utils.StringPointer("~*req.7")}, {Tag: utils.StringPointer("ConnFilterIDs"), Path: utils.StringPointer("ConnFilterIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~8")}, + Value: utils.StringPointer("~*req.8")}, {Tag: utils.StringPointer("ConnWeight"), Path: utils.StringPointer("ConnWeight"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~9")}, + Value: utils.StringPointer("~*req.9")}, {Tag: utils.StringPointer("ConnBlocker"), Path: utils.StringPointer("ConnBlocker"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~10")}, + Value: utils.StringPointer("~*req.10")}, {Tag: utils.StringPointer("ConnParameters"), Path: utils.StringPointer("ConnParameters"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~11")}, + Value: utils.StringPointer("~*req.11")}, {Tag: utils.StringPointer("Weight"), Path: utils.StringPointer("Weight"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~12")}, + Value: utils.StringPointer("~*req.12")}, }, }, { @@ -1579,25 +1579,25 @@ func TestDfLoaderJsonCfg(t *testing.T) { {Tag: utils.StringPointer(utils.Tenant), Path: utils.StringPointer(utils.Tenant), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~0"), + Value: utils.StringPointer("~*req.0"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer(utils.ID), Path: utils.StringPointer(utils.ID), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~1"), + Value: utils.StringPointer("~*req.1"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("Address"), Path: utils.StringPointer("Address"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~2")}, + Value: utils.StringPointer("~*req.2")}, {Tag: utils.StringPointer("Transport"), Path: utils.StringPointer("Transport"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~3")}, + Value: utils.StringPointer("~*req.3")}, {Tag: utils.StringPointer("TLS"), Path: utils.StringPointer("TLS"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~4")}, + Value: utils.StringPointer("~*req.4")}, }, }, { @@ -1607,77 +1607,77 @@ func TestDfLoaderJsonCfg(t *testing.T) { {Tag: utils.StringPointer(utils.Tenant), Path: utils.StringPointer(utils.Tenant), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~0"), + Value: utils.StringPointer("~*req.0"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer(utils.ID), Path: utils.StringPointer(utils.ID), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~1"), + Value: utils.StringPointer("~*req.1"), Mandatory: utils.BoolPointer(true)}, {Tag: utils.StringPointer("FilterIDs"), Path: utils.StringPointer("FilterIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~2")}, + Value: utils.StringPointer("~*req.2")}, {Tag: utils.StringPointer("ActivationInterval"), Path: utils.StringPointer("ActivationInterval"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~3")}, + Value: utils.StringPointer("~*req.3")}, {Tag: utils.StringPointer("Weight"), Path: utils.StringPointer("Weight"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~4")}, + Value: utils.StringPointer("~*req.4")}, {Tag: utils.StringPointer("ConnectFee"), Path: utils.StringPointer("ConnectFee"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~5")}, + Value: utils.StringPointer("~*req.5")}, {Tag: utils.StringPointer("RoundingMethod"), Path: utils.StringPointer("RoundingMethod"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~6")}, + Value: utils.StringPointer("~*req.6")}, {Tag: utils.StringPointer("RoundingDecimals"), Path: utils.StringPointer("RoundingDecimals"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~7")}, + Value: utils.StringPointer("~*req.7")}, {Tag: utils.StringPointer("MinCost"), Path: utils.StringPointer("MinCost"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~8")}, + Value: utils.StringPointer("~*req.8")}, {Tag: utils.StringPointer("MaxCost"), Path: utils.StringPointer("MaxCost"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~9")}, + Value: utils.StringPointer("~*req.9")}, {Tag: utils.StringPointer("MaxCostStrategy"), Path: utils.StringPointer("MaxCostStrategy"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~10")}, + Value: utils.StringPointer("~*req.10")}, {Tag: utils.StringPointer("RateID"), Path: utils.StringPointer("RateID"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~11")}, + Value: utils.StringPointer("~*req.11")}, {Tag: utils.StringPointer("RateFilterIDs"), Path: utils.StringPointer("RateFilterIDs"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~12")}, + Value: utils.StringPointer("~*req.12")}, {Tag: utils.StringPointer("RateWeight"), Path: utils.StringPointer("RateWeight"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~13")}, + Value: utils.StringPointer("~*req.13")}, {Tag: utils.StringPointer("RateValue"), Path: utils.StringPointer("RateValue"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~14")}, + Value: utils.StringPointer("~*req.14")}, {Tag: utils.StringPointer("RateUnit"), Path: utils.StringPointer("RateUnit"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~15")}, + Value: utils.StringPointer("~*req.15")}, {Tag: utils.StringPointer("RateIncrement"), Path: utils.StringPointer("RateIncrement"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~16")}, + Value: utils.StringPointer("~*req.16")}, {Tag: utils.StringPointer("RateBlocker"), Path: utils.StringPointer("RateBlocker"), Type: utils.StringPointer(utils.MetaVariable), - Value: utils.StringPointer("~17")}, + Value: utils.StringPointer("~*req.17")}, }, }, }, diff --git a/config/config_test.go b/config/config_test.go index a2f560328..2413d9c24 100755 --- a/config/config_test.go +++ b/config/config_test.go @@ -1048,7 +1048,7 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) { {Tag: "TenantID", Path: "Tenant", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339, }, @@ -1056,7 +1056,7 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) { Tag: "ProfileID", Path: "ID", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339, }, @@ -1064,57 +1064,57 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) { Tag: "Contexts", Path: "Contexts", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, { Tag: "FilterIDs", Path: "FilterIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, { Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Layout: time.RFC3339}, { Tag: "AttributeFilterIDs", Path: "AttributeFilterIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP), Layout: time.RFC3339}, { Tag: "Path", Path: "Path", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "Type", Path: "Type", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "Value", Path: "Value", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "Blocker", Path: "Blocker", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "Weight", Path: "Weight", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~10", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, }, @@ -1126,34 +1126,34 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) { {Tag: "Tenant", Path: "Tenant", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "ID", Path: "ID", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "Type", Path: "Type", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Element", Path: "Element", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Values", Path: "Values", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP), Layout: time.RFC3339}, }, }, @@ -1164,59 +1164,59 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) { {Tag: "Tenant", Path: "Tenant", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "ID", Path: "ID", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "FilterIDs", Path: "FilterIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "TTL", Path: "UsageTTL", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Limit", Path: "Limit", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "AllocationMessage", Path: "AllocationMessage", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Blocker", Path: "Blocker", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Stored", Path: "Stored", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Weight", Path: "Weight", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "ThresholdIDs", Path: "ThresholdIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~10", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Layout: time.RFC3339}, }, }, @@ -1227,70 +1227,70 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) { {Tag: "Tenant", Path: "Tenant", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "ID", Path: "ID", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "FilterIDs", Path: "FilterIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "QueueLength", Path: "QueueLength", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "TTL", Path: "TTL", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "MinItems", Path: "MinItems", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "MetricIDs", Path: "MetricIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "MetricFilterIDs", Path: "MetricFilterIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Blocker", Path: "Blocker", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Stored", Path: "Stored", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~10", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Weight", Path: "Weight", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~11", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "ThresholdIDs", Path: "ThresholdIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~12", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP), Layout: time.RFC3339}, }, }, @@ -1301,59 +1301,59 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) { {Tag: "Tenant", Path: "Tenant", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "ID", Path: "ID", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "FilterIDs", Path: "FilterIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "MaxHits", Path: "MaxHits", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "MinHits", Path: "MinHits", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "MinSleep", Path: "MinSleep", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Blocker", Path: "Blocker", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Weight", Path: "Weight", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "ActionIDs", Path: "ActionIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Async", Path: "Async", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~10", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Layout: time.RFC3339}, }, }, @@ -1364,84 +1364,84 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) { {Tag: "Tenant", Path: "Tenant", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "ID", Path: "ID", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "FilterIDs", Path: "FilterIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Sorting", Path: "Sorting", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "SortingParameters", Path: "SortingParameters", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "RouteID", Path: "RouteID", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "RouteFilterIDs", Path: "RouteFilterIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "RouteAccountIDs", Path: "RouteAccountIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "RouteRatingPlanIDs", Path: "RouteRatingPlanIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "RouteResourceIDs", Path: "RouteResourceIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~10", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "RouteStatIDs", Path: "RouteStatIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~11", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "RouteWeight", Path: "RouteWeight", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~12", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "RouteBlocker", Path: "RouteBlocker", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~13", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.13", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "RouteParameters", Path: "RouteParameters", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~14", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.14", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Weight", Path: "Weight", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~15", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.15", true, utils.INFIELD_SEP), Layout: time.RFC3339}, }, }, @@ -1452,39 +1452,39 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) { {Tag: "Tenant", Path: "Tenant", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "ID", Path: "ID", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "FilterIDs", Path: "FilterIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "RunID", Path: "RunID", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "AttributeIDs", Path: "AttributeIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP), Layout: time.RFC3339}, {Tag: "Weight", Path: "Weight", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Layout: time.RFC3339}, }, }, @@ -1495,79 +1495,79 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) { {Tag: "Tenant", Path: "Tenant", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "ID", Path: "ID", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "Contexts", Path: "Contexts", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "FilterIDs", Path: "FilterIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "Strategy", Path: "Strategy", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "StrategyParameters", Path: "StrategyParameters", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "ConnID", Path: "ConnID", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "ConnFilterIDs", Path: "ConnFilterIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "ConnWeight", Path: "ConnWeight", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "ConnBlocker", Path: "ConnBlocker", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~10", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "ConnParameters", Path: "ConnParameters", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~11", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "Weight", Path: "Weight", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~12", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, }, @@ -1579,31 +1579,31 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) { {Tag: "Tenant", Path: "Tenant", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "ID", Path: "ID", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "Address", Path: "Address", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "Transport", Path: "Transport", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "TLS", Path: "TLS", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, }, @@ -1615,109 +1615,109 @@ func TestCgrLoaderCfgITDefaults(t *testing.T) { {Tag: "Tenant", Path: "Tenant", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "ID", Path: "ID", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true, Layout: time.RFC3339}, {Tag: "FilterIDs", Path: "FilterIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "Weight", Path: "Weight", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "ConnectFee", Path: "ConnectFee", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "RoundingMethod", Path: "RoundingMethod", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "RoundingDecimals", Path: "RoundingDecimals", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "MinCost", Path: "MinCost", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "MaxCost", Path: "MaxCost", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "MaxCostStrategy", Path: "MaxCostStrategy", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~10", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "RateID", Path: "RateID", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~11", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "RateFilterIDs", Path: "RateFilterIDs", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~12", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "RateWeight", Path: "RateWeight", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~13", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.13", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "RateValue", Path: "RateValue", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~14", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.14", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "RateUnit", Path: "RateUnit", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~15", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.15", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "RateIncrement", Path: "RateIncrement", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~16", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.16", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, {Tag: "RateBlocker", Path: "RateBlocker", Type: utils.MetaVariable, - Value: NewRSRParsersMustCompile("~17", true, utils.INFIELD_SEP), + Value: NewRSRParsersMustCompile("~*req.17", true, utils.INFIELD_SEP), Layout: time.RFC3339, }, }, diff --git a/config/generalcfg.go b/config/generalcfg.go index 80b49a38d..be80a19b7 100644 --- a/config/generalcfg.go +++ b/config/generalcfg.go @@ -49,7 +49,7 @@ type GeneralCfg struct { LockingTimeout time.Duration // locking mechanism timeout to avoid deadlocks DigestSeparator string // DigestEqual string // - RSRSep string // separator used to split RSRParser (by degault is used ";") + RSRSep string // separator used to split RSRParser (by default is used ";") MaxParralelConns int // the maximum number of connection used by the *parallel strategy } diff --git a/data/conf/samples/loaders/tutmongo/cgrates.json b/data/conf/samples/loaders/tutmongo/cgrates.json index e15e906c4..00c7fe56a 100644 --- a/data/conf/samples/loaders/tutmongo/cgrates.json +++ b/data/conf/samples/loaders/tutmongo/cgrates.json @@ -120,17 +120,17 @@ "type": "*attributes", // data source type "file_name": "Attributes.csv", // file name in the tp_in_dir "fields": [ - {"tag": "TenantID", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, - {"tag": "ProfileID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true}, - {"tag": "Contexts", "path": "Contexts", "type": "*variable", "value": "~2"}, - {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~3"}, - {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~4"}, - {"tag": "AttributeFilterIDs", "path": "AttributeFilterIDs", "type": "*variable", "value": "~5"}, - {"tag": "Path", "path": "Path", "type": "*variable", "value": "~6"}, - {"tag": "Type", "path": "Type", "type": "*variable", "value": "~7"}, - {"tag": "Value", "path": "Value", "type": "*variable", "value": "~8"}, - {"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~9"}, - {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~10"}, + {"tag": "TenantID", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, + {"tag": "ProfileID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, + {"tag": "Contexts", "path": "Contexts", "type": "*variable", "value": "~*req.2"}, + {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.3"}, + {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.4"}, + {"tag": "AttributeFilterIDs", "path": "AttributeFilterIDs", "type": "*variable", "value": "~*req.5"}, + {"tag": "Path", "path": "Path", "type": "*variable", "value": "~*req.6"}, + {"tag": "Type", "path": "Type", "type": "*variable", "value": "~*req.7"}, + {"tag": "Value", "path": "Value", "type": "*variable", "value": "~*req.8"}, + {"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~*req.9"}, + {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.10"}, ], }, ], diff --git a/data/conf/samples/loaders/tutmysql/cgrates.json b/data/conf/samples/loaders/tutmysql/cgrates.json index c74ce0a3b..1d4c9674d 100644 --- a/data/conf/samples/loaders/tutmysql/cgrates.json +++ b/data/conf/samples/loaders/tutmysql/cgrates.json @@ -80,17 +80,17 @@ "type": "*attributes", // data source type "file_name": "Attributes.csv", // file name in the tp_in_dir "fields": [ - {"tag": "TenantID", "path": "Tenant", "type": "*variable", "value": "~0", "mandatory": true}, - {"tag": "ProfileID", "path": "ID", "type": "*variable", "value": "~1", "mandatory": true}, - {"tag": "Contexts", "path": "Contexts", "type": "*variable", "value": "~2"}, - {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~3"}, - {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~4"}, - {"tag": "AttributeFilterIDs", "path": "AttributeFilterIDs", "type": "*variable", "value": "~5"}, - {"tag": "Path", "path": "Path", "type": "*variable", "value": "~6"}, - {"tag": "Type", "path": "Type", "type": "*variable", "value": "~7"}, - {"tag": "Value", "path": "Value", "type": "*variable", "value": "~8"}, - {"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~9"}, - {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~10"}, + {"tag": "TenantID", "path": "Tenant", "type": "*variable", "value": "~*req.0", "mandatory": true}, + {"tag": "ProfileID", "path": "ID", "type": "*variable", "value": "~*req.1", "mandatory": true}, + {"tag": "Contexts", "path": "Contexts", "type": "*variable", "value": "~*req.2"}, + {"tag": "FilterIDs", "path": "FilterIDs", "type": "*variable", "value": "~*req.3"}, + {"tag": "ActivationInterval", "path": "ActivationInterval", "type": "*variable", "value": "~*req.4"}, + {"tag": "AttributeFilterIDs", "path": "AttributeFilterIDs", "type": "*variable", "value": "~*req.5"}, + {"tag": "Path", "path": "Path", "type": "*variable", "value": "~*req.6"}, + {"tag": "Type", "path": "Type", "type": "*variable", "value": "~*req.7"}, + {"tag": "Value", "path": "Value", "type": "*variable", "value": "~*req.8"}, + {"tag": "Blocker", "path": "Blocker", "type": "*variable", "value": "~*req.9"}, + {"tag": "Weight", "path": "Weight", "type": "*variable", "value": "~*req.10"}, ], }, ], diff --git a/loaders/libloader.go b/loaders/libloader.go index 550f023d6..b0995ec0e 100644 --- a/loaders/libloader.go +++ b/loaders/libloader.go @@ -22,6 +22,7 @@ import ( "fmt" "net" "strconv" + "strings" "github.com/cgrates/cgrates/config" "github.com/cgrates/cgrates/engine" @@ -48,13 +49,13 @@ func (ld LoaderData) TenantIDStruct() utils.TenantID { func (ld LoaderData) UpdateFromCSV(fileName string, record []string, cfgTpl []*config.FCTemplate, tnt config.RSRParsers, filterS *engine.FilterS) (err error) { csvProvider := newCsvProvider(record, fileName) + tenant, err := tnt.ParseValue("") + if err != nil { + return err + } for _, cfgFld := range cfgTpl { // Make sure filters are matching if len(cfgFld.Filters) != 0 { - tenant, err := tnt.ParseValue("") - if err != nil { - return err - } if pass, err := filterS.Pass(tenant, cfgFld.Filters, csvProvider); err != nil { return err @@ -62,7 +63,7 @@ func (ld LoaderData) UpdateFromCSV(fileName string, record []string, continue // Not passes filters, ignore this CDR } } - out, err := cfgFld.Value.ParseDataProvider(csvProvider, utils.InInFieldSep) + out, err := cfgFld.Value.ParseDataProvider(csvProvider, utils.NestingSep) if err != nil { return err } @@ -111,17 +112,36 @@ func (cP *csvProvider) FieldAsInterface(fldPath []string) (data interface{}, err return } err = nil // cancel previous err - idx := fldPath[0] - var fileName string - if len(fldPath) == 2 { - fileName = fldPath[0] - idx = fldPath[1] + + if splt := strings.Split(fldPath[0], utils.MatchLessThan); len(splt) != 1 { + var fileName string + // check for *req prefix + if splt[0] != utils.MetaReq { + return nil, fmt.Errorf("invalid prefix for : %s", fldPath) + } + fileName = splt[1] + // find the last > and compute the name of the file + hasGrThan := false + for _, val := range fldPath[1:] { + if grSplt := strings.Split(val, utils.MatchGreaterThan); len(grSplt) == 1 { + fileName = fileName + utils.NestingSep + val + } else { + fileName = fileName + utils.NestingSep + grSplt[0] + hasGrThan = true + break + } + } + if !hasGrThan { + return nil, fmt.Errorf("filter rule <%s> needs to end in >", fldPath) + } + if cP.fileName != fileName { + cP.cache.Set(fldPath, nil) + return + } + } else if fldPath[0] != utils.MetaReq { + return nil, fmt.Errorf("invalid prefix for : %s", fldPath) } - if fileName != "" && cP.fileName != fileName { - cP.cache.Set(fldPath, nil) - return - } - if cfgFieldIdx, err := strconv.Atoi(idx); err != nil || len(cP.req) <= cfgFieldIdx { + if cfgFieldIdx, err := strconv.Atoi(fldPath[len(fldPath)-1]); err != nil || len(cP.req) <= cfgFieldIdx { return nil, fmt.Errorf("Ignoring record: %v with error : %+v", cP.req, err) } else { data = cP.req[cfgFieldIdx] diff --git a/loaders/libloader_test.go b/loaders/libloader_test.go index 0546825d4..c0d5d5223 100644 --- a/loaders/libloader_test.go +++ b/loaders/libloader_test.go @@ -31,45 +31,45 @@ func TestDataUpdateFromCSVOneFile(t *testing.T) { &config.FCTemplate{Tag: "TenantID", Path: "Tenant", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "ProfileID", Path: "ID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "Contexts", Path: "Contexts", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "FilterIDs", Path: "FilterIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Path", Path: "Path", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Initial", Path: "Initial", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Substitute", Path: "Substitute", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Append", Path: "Append", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Weight", Path: "Weight", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP)}, } rows := [][]string{ @@ -121,45 +121,45 @@ func TestDataUpdateFromCSVOneFile2(t *testing.T) { &config.FCTemplate{Tag: "TenantID", Path: "Tenant", Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "ProfileID", Path: "ID", Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "Contexts", Path: "Contexts", Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "FilterIDs", Path: "FilterIDs", Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Path", Path: "Path", Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Initial", Path: "Initial", Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Substitute", Path: "Substitute", Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Append", Path: "Append", Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Weight", Path: "Weight", Type: utils.MetaVariable, - Value: config.NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP)}, } rows := [][]string{ @@ -216,7 +216,7 @@ func TestDataUpdateFromCSVMultiFiles(t *testing.T) { &config.FCTemplate{Tag: "ProfileID", Path: "ID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~File2.csv:1", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "Contexts", Path: "Contexts", @@ -225,15 +225,15 @@ func TestDataUpdateFromCSVMultiFiles(t *testing.T) { &config.FCTemplate{Tag: "Path", Path: "Path", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~File1.csv:5", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Initial", Path: "Initial", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~File1.csv:6", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Substitute", Path: "Substitute", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~File1.csv:7", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Append", Path: "Append", Type: utils.MetaString, diff --git a/loaders/loader_test.go b/loaders/loader_test.go index 46a082286..2b6f09545 100644 --- a/loaders/loader_test.go +++ b/loaders/loader_test.go @@ -45,49 +45,49 @@ func TestLoaderProcessContentSingleFile(t *testing.T) { &config.FCTemplate{Tag: "TenantID", Path: "Tenant", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "ProfileID", Path: "ID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "Contexts", Path: "Contexts", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "FilterIDs", Path: "FilterIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "AttributeFilterIDs", Path: "AttributeFilterIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Path", Path: "Path", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Type", Path: "Type", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Value", Path: "Value", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Blocker", Path: "Blocker", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Weight", Path: "Weight", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~10", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP)}, }, } rdr := ioutil.NopCloser(strings.NewReader(engine.AttributesCSVContent)) @@ -156,7 +156,7 @@ func TestLoaderProcessContentMultiFiles(t *testing.T) { &config.FCTemplate{Tag: "ProfileID", Path: "ID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~File2.csv:1", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "Contexts", Path: "Contexts", @@ -165,11 +165,11 @@ func TestLoaderProcessContentMultiFiles(t *testing.T) { &config.FCTemplate{Tag: "Path", Path: "Path", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~File1.csv:6", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Value", Path: "Value", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~File1.csv:7", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Weight", Path: "Weight", Type: utils.MetaString, @@ -229,49 +229,49 @@ func TestLoaderProcessResource(t *testing.T) { &config.FCTemplate{Tag: "Tenant", Path: "Tenant", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "ID", Path: "ID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "FilterIDs", Path: "FilterIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "TTL", Path: "UsageTTL", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Limit", Path: "Limit", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "AllocationMessage", Path: "AllocationMessage", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Blocker", Path: "Blocker", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Stored", Path: "Stored", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Weight", Path: "Weight", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Thresholds", Path: "Thresholds", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~10", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP)}, }, } rdr := ioutil.NopCloser(strings.NewReader(engine.ResourcesCSVContent)) @@ -347,29 +347,29 @@ func TestLoaderProcessFilters(t *testing.T) { &config.FCTemplate{Tag: "Tenant", Path: "Tenant", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "ID", Path: "ID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "Type", Path: "Type", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Element", Path: "Element", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Values", Path: "Values", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP)}, }, } rdr := ioutil.NopCloser(strings.NewReader(engine.FiltersCSVContent)) @@ -458,49 +458,49 @@ func TestLoaderProcessThresholds(t *testing.T) { &config.FCTemplate{Tag: "TenantID", Path: "Tenant", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "ProfileID", Path: "ID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "FilterIDs", Path: "FilterIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "MaxHits", Path: "MaxHits", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "MinHits", Path: "MinHits", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "MinSleep", Path: "MinSleep", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Blocker", Path: "Blocker", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Weight", Path: "Weight", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "ActionIDs", Path: "ActionIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Async", Path: "Async", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~10", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP)}, }, } rdr := ioutil.NopCloser(strings.NewReader(engine.ThresholdsCSVContent)) @@ -556,58 +556,58 @@ func TestLoaderProcessStats(t *testing.T) { &config.FCTemplate{Tag: "TenantID", Path: "Tenant", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "ProfileID", Path: "ID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "FilterIDs", Path: "FilterIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "QueueLength", Path: "QueueLength", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "TTL", Path: "TTL", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "MinItems", Path: "MinItems", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "MetricIDs", Path: "MetricIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "MetricFilterIDs", Path: "MetricFilterIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Blocker", Path: "Blocker", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Stored", Path: "Stored", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~10", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Weight", Path: "Weight", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~11", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "ThresholdIDs", Path: "ThresholdIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~12", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP)}, }, } rdr := ioutil.NopCloser(strings.NewReader(engine.StatsCSVContent)) @@ -678,69 +678,69 @@ func TestLoaderProcessRoutes(t *testing.T) { &config.FCTemplate{Tag: "TenantID", Path: "Tenant", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "ProfileID", Path: "ID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "FilterIDs", Path: "FilterIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Sorting", Path: "Sorting", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "SortingParameters", Path: "SortingParameters", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "RouteID", Path: "RouteID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "RouteFilterIDs", Path: "RouteFilterIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "RouteAccountIDs", Path: "RouteAccountIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "RouteRatingPlanIDs", Path: "RouteRatingplanIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "RouteResourceIDs", Path: "RouteResourceIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~10", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "RouteStatIDs", Path: "RouteStatIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~11", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "RouteWeight", Path: "RouteWeight", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~12", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "RouteBlocker", Path: "RouteBlocker", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~13", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.13", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "RouteParameters", Path: "RouteParameters", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~14", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.14", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Weight", Path: "Weight", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~15", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.15", true, utils.INFIELD_SEP)}, }, } rdr := ioutil.NopCloser(strings.NewReader(engine.RoutesCSVContent)) @@ -835,33 +835,33 @@ func TestLoaderProcessChargers(t *testing.T) { &config.FCTemplate{Tag: "TenantID", Path: "Tenant", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "ProfileID", Path: "ID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "FilterIDs", Path: "FilterIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "RunID", Path: "RunID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "AttributeIDs", Path: "AttributeIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP)}, &config.FCTemplate{Tag: "Weight", Path: "Weight", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP)}, + Value: config.NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP)}, }, } rdr := ioutil.NopCloser(strings.NewReader(engine.ChargersCSVContent)) @@ -914,81 +914,81 @@ func TestLoaderProcessDispatches(t *testing.T) { Tag: "TenantID", Path: "Tenant", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true, }, &config.FCTemplate{ Tag: "ProfileID", Path: "ID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true, }, &config.FCTemplate{ Tag: "Subsystems", Path: "Subsystems", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), }, &config.FCTemplate{ Tag: "FilterIDs", Path: "FilterIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), }, &config.FCTemplate{ Tag: "ActivationInterval", Path: "ActivationInterval", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), }, &config.FCTemplate{ Tag: "Strategy", Path: "Strategy", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~5", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.5", true, utils.INFIELD_SEP), }, &config.FCTemplate{ Tag: "StrategyParameters", Path: "StrategyParameters", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~6", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.6", true, utils.INFIELD_SEP), }, &config.FCTemplate{ Tag: "ConnID", Path: "ConnID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~7", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.7", true, utils.INFIELD_SEP), }, &config.FCTemplate{ Tag: "ConnFilterIDs", Path: "ConnFilterIDs", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~8", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.8", true, utils.INFIELD_SEP), }, &config.FCTemplate{ Tag: "ConnWeight", Path: "ConnWeight", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~9", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.9", true, utils.INFIELD_SEP), }, &config.FCTemplate{ Tag: "ConnBlocker", Path: "ConnBlocker", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~10", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.10", true, utils.INFIELD_SEP), }, &config.FCTemplate{ Tag: "ConnParameters", Path: "ConnParameters", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~11", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.11", true, utils.INFIELD_SEP), }, &config.FCTemplate{ Tag: "Weight", Path: "Weight", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~12", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.12", true, utils.INFIELD_SEP), }, }, } @@ -1066,33 +1066,33 @@ func TestLoaderProcessDispatcheHosts(t *testing.T) { Tag: "Tenant", Path: "Tenant", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true, }, &config.FCTemplate{ Tag: "ID", Path: "ID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true, }, &config.FCTemplate{ Tag: "Address", Path: "Address", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~2", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.2", true, utils.INFIELD_SEP), }, &config.FCTemplate{ Tag: "Transport", Path: "Transport", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~3", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.3", true, utils.INFIELD_SEP), }, &config.FCTemplate{ Tag: "TLS", Path: "TLS", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~4", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.4", true, utils.INFIELD_SEP), }, }, } @@ -1153,12 +1153,12 @@ func TestLoaderRemoveContentSingleFile(t *testing.T) { &config.FCTemplate{Tag: "TenantID", Path: "Tenant", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~0", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.0", true, utils.INFIELD_SEP), Mandatory: true}, &config.FCTemplate{Tag: "ProfileID", Path: "ID", Type: utils.META_COMPOSED, - Value: config.NewRSRParsersMustCompile("~1", true, utils.INFIELD_SEP), + Value: config.NewRSRParsersMustCompile("~*req.1", true, utils.INFIELD_SEP), Mandatory: true}, }, } diff --git a/packages/debian/changelog b/packages/debian/changelog index 0be0f4e2d..682f044ea 100644 --- a/packages/debian/changelog +++ b/packages/debian/changelog @@ -70,6 +70,7 @@ cgrates (0.11.0~dev) UNRELEASED; urgency=medium * [General] Added *mo+extraDuration time support (e.g. *mo+1h will be time.Now() + 1 month + 1 hour) * [SessionS] Use correctly SessionTTLUsage when calculate end usage in case of terminate session from ttl mechanism * [SessionS] Add SessionTLLLastUsage as option for an extra debit in case of ttl mechanism + * [LoaderS] Add *req as mandatory prefix -- DanB Wed, 19 Feb 2020 13:25:52 +0200