MongoDb configurable indexes in cgrates.json, fixes #340

This commit is contained in:
DanB
2016-01-01 16:22:47 +01:00
parent 2e5305725c
commit 140e6f2da8
12 changed files with 56 additions and 40 deletions

View File

@@ -47,11 +47,11 @@ func init() {
ratingStorage, _ = NewMapStorage()
accountingStorage, _ = NewMapStorage()
case "mongo":
ratingStorage, err = NewMongoStorage("127.0.0.1", "27017", "cgrates_rating_test", "", "")
ratingStorage, err = NewMongoStorage("127.0.0.1", "27017", "cgrates_rating_test", "", "", nil)
if err != nil {
log.Fatal(err)
}
accountingStorage, err = NewMongoStorage("127.0.0.1", "27017", "cgrates_accounting_test", "", "")
accountingStorage, err = NewMongoStorage("127.0.0.1", "27017", "cgrates_accounting_test", "", "", nil)
if err != nil {
log.Fatal(err)
}

View File

@@ -53,7 +53,7 @@ func InitDataDb(cfg *config.CGRConfig) error {
func InitStorDb(cfg *config.CGRConfig) error {
storDb, err := ConfigureLoadStorage(cfg.StorDBType, cfg.StorDBHost, cfg.StorDBPort, cfg.StorDBName, cfg.StorDBUser, cfg.StorDBPass, cfg.DBDataEncoding,
cfg.StorDBMaxOpenConns, cfg.StorDBMaxIdleConns)
cfg.StorDBMaxOpenConns, cfg.StorDBMaxIdleConns, cfg.StorDBCDRSIndexes)
if err != nil {
return err
}

View File

@@ -95,7 +95,7 @@ func testSetCDR(cfg *config.CGRConfig) error {
return err
}
cdrStorage, err := ConfigureCdrStorage(cfg.StorDBType, cfg.StorDBHost, cfg.StorDBPort, cfg.StorDBName, cfg.StorDBUser, cfg.StorDBPass,
cfg.StorDBMaxOpenConns, cfg.StorDBMaxIdleConns)
cfg.StorDBMaxOpenConns, cfg.StorDBMaxIdleConns, cfg.StorDBCDRSIndexes)
if err != nil {
return err
}
@@ -205,7 +205,7 @@ func testSMCosts(cfg *config.CGRConfig) error {
return err
}
cdrStorage, err := ConfigureCdrStorage(cfg.StorDBType, cfg.StorDBHost, cfg.StorDBPort, cfg.StorDBName, cfg.StorDBUser, cfg.StorDBPass,
cfg.StorDBMaxOpenConns, cfg.StorDBMaxIdleConns)
cfg.StorDBMaxOpenConns, cfg.StorDBMaxIdleConns, cfg.StorDBCDRSIndexes)
if err != nil {
return err
}
@@ -238,7 +238,7 @@ func testGetCDRs(cfg *config.CGRConfig) error {
return err
}
cdrStorage, err := ConfigureCdrStorage(cfg.StorDBType, cfg.StorDBHost, cfg.StorDBPort, cfg.StorDBName, cfg.StorDBUser, cfg.StorDBPass,
cfg.StorDBMaxOpenConns, cfg.StorDBMaxIdleConns)
cfg.StorDBMaxOpenConns, cfg.StorDBMaxIdleConns, cfg.StorDBCDRSIndexes)
if err != nil {
return err
}

View File

@@ -87,7 +87,7 @@ type MongoStorage struct {
ms Marshaler
}
func NewMongoStorage(host, port, db, user, pass string) (*MongoStorage, error) {
func NewMongoStorage(host, port, db, user, pass string, cdrsIndexes []string) (*MongoStorage, error) {
address := fmt.Sprintf("%s:%s", host, port)
if user != "" && pass != "" {
address = fmt.Sprintf("%s:%s@%s", user, pass, address)
@@ -222,13 +222,21 @@ func NewMongoStorage(host, port, db, user, pass string) (*MongoStorage, error) {
Background: false,
Sparse: false,
}
collections = []string{utils.TBL_CDRS}
for _, col := range collections {
if err = ndb.C(col).EnsureIndex(index); err != nil {
if err = ndb.C(utils.TBL_CDRS).EnsureIndex(index); err != nil {
return nil, err
}
for _, idxKey := range cdrsIndexes {
index = mgo.Index{
Key: []string{idxKey},
Unique: false,
DropDups: false,
Background: false,
Sparse: false,
}
if err = ndb.C(utils.TBL_CDRS).EnsureIndex(index); err != nil {
return nil, err
}
}
return &MongoStorage{db: ndb, session: session, ms: NewCodecMsgpackMarshaler()}, err
}

View File

@@ -42,7 +42,7 @@ func ConfigureRatingStorage(db_type, host, port, name, user, pass, marshaler str
}
d, err = NewRedisStorage(host, db_nb, pass, marshaler, utils.REDIS_MAX_CONNS)
case utils.MONGO:
d, err = NewMongoStorage(host, port, name, user, pass)
d, err = NewMongoStorage(host, port, name, user, pass, nil)
db = d.(RatingStorage)
default:
err = errors.New("unknown db")
@@ -68,7 +68,7 @@ func ConfigureAccountingStorage(db_type, host, port, name, user, pass, marshaler
}
d, err = NewRedisStorage(host, db_nb, pass, marshaler, utils.REDIS_MAX_CONNS)
case utils.MONGO:
d, err = NewMongoStorage(host, port, name, user, pass)
d, err = NewMongoStorage(host, port, name, user, pass, nil)
db = d.(AccountingStorage)
default:
err = errors.New("unknown db")
@@ -79,7 +79,7 @@ func ConfigureAccountingStorage(db_type, host, port, name, user, pass, marshaler
return d, nil
}
func ConfigureLogStorage(db_type, host, port, name, user, pass, marshaler string, maxConn, maxIdleConn int) (db LogStorage, err error) {
func ConfigureLogStorage(db_type, host, port, name, user, pass, marshaler string, maxConn, maxIdleConn int, cdrsIndexes []string) (db LogStorage, err error) {
var d LogStorage
switch db_type {
/*
@@ -96,7 +96,7 @@ func ConfigureLogStorage(db_type, host, port, name, user, pass, marshaler string
d, err = NewRedisStorage(host, db_nb, pass, marshaler)
*/
case utils.MONGO:
d, err = NewMongoStorage(host, port, name, user, pass)
d, err = NewMongoStorage(host, port, name, user, pass, nil)
case utils.POSTGRES:
d, err = NewPostgresStorage(host, port, name, user, pass, maxConn, maxIdleConn)
case utils.MYSQL:
@@ -110,7 +110,7 @@ func ConfigureLogStorage(db_type, host, port, name, user, pass, marshaler string
return d, nil
}
func ConfigureLoadStorage(db_type, host, port, name, user, pass, marshaler string, maxConn, maxIdleConn int) (db LoadStorage, err error) {
func ConfigureLoadStorage(db_type, host, port, name, user, pass, marshaler string, maxConn, maxIdleConn int, cdrsIndexes []string) (db LoadStorage, err error) {
var d LoadStorage
switch db_type {
case utils.POSTGRES:
@@ -118,7 +118,7 @@ func ConfigureLoadStorage(db_type, host, port, name, user, pass, marshaler strin
case utils.MYSQL:
d, err = NewMySQLStorage(host, port, name, user, pass, maxConn, maxIdleConn)
case utils.MONGO:
d, err = NewMongoStorage(host, port, name, user, pass)
d, err = NewMongoStorage(host, port, name, user, pass, cdrsIndexes)
default:
err = errors.New("unknown db")
}
@@ -128,7 +128,7 @@ func ConfigureLoadStorage(db_type, host, port, name, user, pass, marshaler strin
return d, nil
}
func ConfigureCdrStorage(db_type, host, port, name, user, pass string, maxConn, maxIdleConn int) (db CdrStorage, err error) {
func ConfigureCdrStorage(db_type, host, port, name, user, pass string, maxConn, maxIdleConn int, cdrsIndexes []string) (db CdrStorage, err error) {
var d CdrStorage
switch db_type {
case utils.POSTGRES:
@@ -136,7 +136,7 @@ func ConfigureCdrStorage(db_type, host, port, name, user, pass string, maxConn,
case utils.MYSQL:
d, err = NewMySQLStorage(host, port, name, user, pass, maxConn, maxIdleConn)
case utils.MONGO:
d, err = NewMongoStorage(host, port, name, user, pass)
d, err = NewMongoStorage(host, port, name, user, pass, cdrsIndexes)
default:
err = errors.New("unknown db")
}