From 99076bb7e4358b61ec95a04ce84e50e778b5ff21 Mon Sep 17 00:00:00 2001 From: DanB Date: Sat, 19 Sep 2015 18:54:07 +0200 Subject: [PATCH] Old aliases compatibility added back in apier, fix create_tariffplan_tables for both mysql and postgres, fix local_tests --- apier/v1/aliases.go | 22 ++++++++++++------- .../mysql/create_tariffplan_tables.sql | 7 ++++-- .../postgres/create_tariffplan_tables.sql | 22 ++++++++++--------- .../tariffplans/prepaid1centpsec/LcrRules.csv | 0 data/tariffplans/tutorial/Actions.csv | 18 +++++++-------- data/tariffplans/tutorial/Aliases.csv | 6 ++--- general_tests/tutorial_local_test.go | 2 +- 7 files changed, 44 insertions(+), 33 deletions(-) create mode 100644 data/tariffplans/prepaid1centpsec/LcrRules.csv diff --git a/apier/v1/aliases.go b/apier/v1/aliases.go index a94bddfff..e17798433 100644 --- a/apier/v1/aliases.go +++ b/apier/v1/aliases.go @@ -18,6 +18,12 @@ along with this program. If not, see package v1 +import ( + "errors" + "github.com/cgrates/cgrates/engine" + "github.com/cgrates/cgrates/utils" +) + type AttrAddRatingSubjectAliases struct { Tenant, Category, Subject string Aliases []string @@ -28,7 +34,6 @@ type AttrAddAccountAliases struct { Aliases []string } -/* // Add aliases configured for a rating profile subject func (self *ApierV1) AddRatingSubjectAliases(attrs AttrAddRatingSubjectAliases, reply *string) error { if missing := utils.MissingStructFields(&attrs, []string{"Tenant", "Subject", "Aliases"}); len(missing) != 0 { @@ -44,8 +49,9 @@ func (self *ApierV1) AddRatingSubjectAliases(attrs AttrAddRatingSubjectAliases, var ignr string for _, alias := range attrs.Aliases { if err := aliases.SetAlias( - engine.Alias{Direction: utils.META_OUT, Tenant: attrs.Tenant, Category: attrs.Category, Account: alias, Subject: alias, Context: utils.ALIAS_GROUP_RP, - Values: engine.AliasValues{&engine.AliasValue{DestinationId: utils.META_ANY, Alias: attrs.Subject, Weight: 10.0}}}, &ignr); err != nil { + engine.Alias{Direction: utils.META_OUT, Tenant: attrs.Tenant, Category: attrs.Category, Account: alias, Subject: alias, Context: utils.ALIAS_CONTEXT_RATING, + Values: engine.AliasValues{&engine.AliasValue{DestinationId: utils.META_ANY, + Pairs: engine.AliasPairs{"Subject": map[string]string{alias: attrs.Subject}}, Weight: 10.0}}}, &ignr); err != nil { return utils.NewErrServerError(err) } } @@ -63,7 +69,7 @@ func (self *ApierV1) RemRatingSubjectAliases(tenantRatingSubject engine.TenantRa return errors.New("ALIASES_NOT_ENABLED") } var reverseAliases map[string][]*engine.Alias - if err := aliases.GetReverseAlias(engine.AttrReverseAlias{Alias: tenantRatingSubject.Subject, Context: utils.ALIAS_GROUP_RP}, &reverseAliases); err != nil { + if err := aliases.GetReverseAlias(engine.AttrReverseAlias{Target: "Subject", Alias: tenantRatingSubject.Subject, Context: utils.ALIAS_CONTEXT_RATING}, &reverseAliases); err != nil { return utils.NewErrServerError(err) } var ignr string @@ -95,8 +101,9 @@ func (self *ApierV1) AddAccountAliases(attrs AttrAddAccountAliases, reply *strin var ignr string for _, alias := range attrs.Aliases { if err := aliases.SetAlias( - engine.Alias{Direction: utils.META_OUT, Tenant: attrs.Tenant, Category: attrs.Category, Account: alias, Subject: utils.META_ANY, Context: utils.ALIAS_GROUP_ACC, - Values: engine.AliasValues{&engine.AliasValue{DestinationId: utils.META_ANY, Alias: attrs.Account, Weight: 10.0}}}, &ignr); err != nil { + engine.Alias{Direction: utils.META_OUT, Tenant: attrs.Tenant, Category: attrs.Category, Account: alias, Subject: alias, Context: utils.ALIAS_CONTEXT_RATING, + Values: engine.AliasValues{&engine.AliasValue{DestinationId: utils.META_ANY, + Pairs: engine.AliasPairs{"Account": map[string]string{alias: attrs.Account}}, Weight: 10.0}}}, &ignr); err != nil { return utils.NewErrServerError(err) } } @@ -114,7 +121,7 @@ func (self *ApierV1) RemAccountAliases(tenantAccount engine.TenantAccount, reply return errors.New("ALIASES_NOT_ENABLED") } var reverseAliases map[string][]*engine.Alias - if err := aliases.GetReverseAlias(engine.AttrReverseAlias{Alias: tenantAccount.Account, Context: utils.ALIAS_GROUP_ACC}, &reverseAliases); err != nil { + if err := aliases.GetReverseAlias(engine.AttrReverseAlias{Target: "Account", Alias: tenantAccount.Account, Context: utils.ALIAS_CONTEXT_RATING}, &reverseAliases); err != nil { return utils.NewErrServerError(err) } var ignr string @@ -131,4 +138,3 @@ func (self *ApierV1) RemAccountAliases(tenantAccount engine.TenantAccount, reply *reply = utils.OK return nil } -*/ diff --git a/data/storage/mysql/create_tariffplan_tables.sql b/data/storage/mysql/create_tariffplan_tables.sql index bfebe9b8a..0678da19a 100644 --- a/data/storage/mysql/create_tariffplan_tables.sql +++ b/data/storage/mysql/create_tariffplan_tables.sql @@ -367,11 +367,14 @@ CREATE TABLE tp_aliases ( `category` varchar(64) NOT NULL, `account` varchar(64) NOT NULL, `subject` varchar(64) NOT NULL, - `group` varchar(64) NOT NULL, `destination_id` varchar(64) NOT NULL, + `context` varchar(64) NOT NULL, + `target` varchar(64) NOT NULL, + `original` varchar(64) NOT NULL, `alias` varchar(64) NOT NULL, `weight` decimal(8,2) NOT NULL, `created_at` TIMESTAMP, PRIMARY KEY (`id`), - KEY `tpid` (`tpid`) + KEY `tpid` (`tpid`), + UNIQUE KEY `unique_tp_aliases` (`tpid`,`direction`,`tenant`,`category`,`account`,`subject`,`context`, `target`) ); diff --git a/data/storage/postgres/create_tariffplan_tables.sql b/data/storage/postgres/create_tariffplan_tables.sql index 33bc64170..004a53e36 100644 --- a/data/storage/postgres/create_tariffplan_tables.sql +++ b/data/storage/postgres/create_tariffplan_tables.sql @@ -357,17 +357,19 @@ CREATE INDEX tpusers_idx ON tp_users (tpid,tenant,user_name); DROP TABLE IF EXISTS tp_aliases; CREATE TABLE tp_aliases ( "id" SERIAL PRIMARY KEY, - "tpid" VARCHAR(64) NOT NULL, - "direction" VARCHAR(8) NOT NULL, - "tenant" VARCHAR(64) NOT NULL, - "category" VARCHAR(32) NOT NULL, - "account" VARCHAR(64) NOT NULL, - "subject" VARCHAR(64) NOT NULL, - "group" VARCHAR(64) NOT NULL, - "destination_id" VARCHAR(64) NOT NULL, - "alias" VARCHAR(64) NOT NULL, + "tpid" varchar(64) NOT NULL, + "direction" varchar(8) NOT NULL, + "tenant" varchar(64) NOT NULL, + "category" varchar(64) NOT NULL, + "account" varchar(64) NOT NULL, + "subject" varchar(64) NOT NULL, + "destination_id" varchar(64) NOT NULL, + "context" varchar(64) NOT NULL, + "target" varchar(64) NOT NULL, + "original" varchar(64) NOT NULL, + "alias" varchar(64) NOT NULL, "weight" NUMERIC(8,2) NOT NULL, "created_at" TIMESTAMP ); CREATE INDEX tpaliases_tpid_idx ON tp_aliases (tpid); -CREATE INDEX tpaliases_idx ON tp_aliases ("tpid","direction","tenant","category","account","subject","group"); +CREATE INDEX tpaliases_idx ON tp_aliases ("tpid","direction","tenant","category","account","subject","context","target"); diff --git a/data/tariffplans/prepaid1centpsec/LcrRules.csv b/data/tariffplans/prepaid1centpsec/LcrRules.csv new file mode 100644 index 000000000..e69de29bb diff --git a/data/tariffplans/tutorial/Actions.csv b/data/tariffplans/tutorial/Actions.csv index cb3537311..a3c6bd659 100644 --- a/data/tariffplans/tutorial/Actions.csv +++ b/data/tariffplans/tutorial/Actions.csv @@ -1,10 +1,10 @@ #ActionsTag[0],Action[1],ExtraParameters[2],BalanceTag[3],BalanceType[4],Direction[5],Category[6],DestinationTag[7],RatingSubject[8],SharedGroup[9],ExpiryTime[10],TimingTags[11],Units[12],BalanceWeight[13],BalanceDisabled[14],Weight[15] -TOPUP_RST_10,*topup_reset,,,*monetary,*out,,*any,,,*unlimited,,10,10,,false,10 -TOPUP_RST_5,*topup_reset,,,*monetary,*out,,*any,,,*unlimited,,5,20,,false,10 -TOPUP_RST_5,*topup_reset,,,*voice,*out,,DST_1002,SPECIAL_1002,,*unlimited,,90,20,,false,10 -TOPUP_120_DST1003,*topup_reset,,,*voice,*out,,DST_1003,,,*unlimited,,120,20,,false,10 -TOPUP_RST_SHARED_5,*topup,,,*monetary,*out,,*any,,SHARED_A,*unlimited,,5,10,,false,10 -SHARED_A_0,*topup_reset,,,*monetary,*out,,*any,,SHARED_A,*unlimited,,0,10,,false,10 -LOG_WARNING,*log,,,,,,,,,,,,,,false,10 -DISABLE_AND_LOG,*log,,,,,,,,,,,,,,false,10 -DISABLE_AND_LOG,*disable_account,,,,,,,,,,,,,,false,10 +TOPUP_RST_10,*topup_reset,,,*monetary,*out,,*any,,,*unlimited,,10,10,false,10 +TOPUP_RST_5,*topup_reset,,,*monetary,*out,,*any,,,*unlimited,,5,20,false,10 +TOPUP_RST_5,*topup_reset,,,*voice,*out,,DST_1002,SPECIAL_1002,,*unlimited,,90,20,false,10 +TOPUP_120_DST1003,*topup_reset,,,*voice,*out,,DST_1003,,,*unlimited,,120,20,false,10 +TOPUP_RST_SHARED_5,*topup,,,*monetary,*out,,*any,,SHARED_A,*unlimited,,5,10,false,10 +SHARED_A_0,*topup_reset,,,*monetary,*out,,*any,,SHARED_A,*unlimited,,0,10,false,10 +LOG_WARNING,*log,,,,,,,,,,,,,false,10 +DISABLE_AND_LOG,*log,,,,,,,,,,,,,false,10 +DISABLE_AND_LOG,*disable_account,,,,,,,,,,,,,false,10 diff --git a/data/tariffplans/tutorial/Aliases.csv b/data/tariffplans/tutorial/Aliases.csv index 411504160..7b966debf 100644 --- a/data/tariffplans/tutorial/Aliases.csv +++ b/data/tariffplans/tutorial/Aliases.csv @@ -1,3 +1,3 @@ -#Direction,Tenant,Category,Account,Subject,DestinationId,Context,Target,Original,Alias,Weight -*out,cgrates.org,call,1006,1006,*any,*rating,Subject,1006,1001,10 -*out,cgrates.org,call,1006,1006,*any,*rating,Account,1006,1002,10 +#Direction,Tenant,Category,Account,Subject,DestinationId,Context,Target,Original,Alias,Weight +*out,cgrates.org,call,1006,1006,*any,*rating,Subject,1006,1001,10 +*out,cgrates.org,call,1006,1006,*any,*rating,Account,1006,1002,10 diff --git a/general_tests/tutorial_local_test.go b/general_tests/tutorial_local_test.go index 59b014f94..27ee9d836 100644 --- a/general_tests/tutorial_local_test.go +++ b/general_tests/tutorial_local_test.go @@ -117,7 +117,7 @@ func TestTutLocalCacheStats(t *testing.T) { } var rcvStats *utils.CacheStats - expectedStats := &utils.CacheStats{Destinations: 4, RatingPlans: 3, RatingProfiles: 8, Actions: 7, SharedGroups: 1, Aliases: 2, + expectedStats := &utils.CacheStats{Destinations: 4, RatingPlans: 3, RatingProfiles: 8, Actions: 7, SharedGroups: 1, Aliases: 1, DerivedChargers: 1, LcrProfiles: 5, CdrStats: 6, Users: 3, LastLoadId: loadInst.LoadId, LastLoadTime: loadInst.LoadTime.Format(time.RFC3339)} var args utils.AttrCacheStats if err := tutLocalRpc.Call("ApierV1.GetCacheStats", args, &rcvStats); err != nil {