Loading go-apps/meep-ctrl-engine/go.sum +2 −0 Original line number Diff line number Diff line github.com/KromDaniel/jonson v0.0.0-20180630143114-d2f9c3c389db/go.mod h1:RU+6d0CNIRSp6yo1mXLIIrnFa/3LHhvcDVLVJyovptM= github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351 h1:1u1XrfCBnY+GijnyU6O1k4odp5TnqZQTsp5v7+n/E4Y= github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351/go.mod h1:HxwfbuElTuGf+/uKZfjJrCnv0BmmpkPJDI7gBwj1KkM= github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52 h1:trnwuu/Q8T59kgRjXcSDBODnyZP9wes+bnLn0lx4PgM= github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52/go.mod h1:DdR6ymcLl8+sN/XOVNjnYO1NDYfgHskGjreZUDuQCTY= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/flimzy/diff v0.1.5/go.mod h1:lFJtC7SPsK0EroDmGTSrdtWKAxOk3rO+q+e04LL05Hs= github.com/flimzy/kivik v1.8.1 h1:URl7e0OnfSvAu3ZHQ5BkvzRZlCmyYuDyWUCcPWIHlU0= Loading go-apps/meep-mg-manager/go.mod +6 −8 Original line number Diff line number Diff line Loading @@ -7,17 +7,14 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mg-app-client v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mg-manager-model v0.0.0 github.com/KromDaniel/jonson v0.0.0-20180630143114-d2f9c3c389db // indirect github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351 github.com/RyanCarrier/dijkstra v0.0.0-20180928224145-3fe1cac16289 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52 github.com/RyanCarrier/dijkstra-1 v0.0.0-20170512020943-0e5801a26345 // indirect github.com/albertorestifo/dijkstra v0.0.0-20160910063646-aba76f725f72 // indirect github.com/go-redis/redis v6.15.2+incompatible github.com/gorilla/handlers v1.4.0 github.com/gorilla/mux v1.7.1 github.com/gorilla/mux v1.7.3 github.com/mattomatic/dijkstra v0.0.0-20130617153013-6f6d134eb237 // indirect github.com/onsi/ginkgo v1.8.0 // indirect github.com/onsi/gomega v1.5.0 // indirect ) replace ( Loading @@ -25,5 +22,6 @@ replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger => ../../go-packages/meep-logger github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mg-app-client => ../../go-packages/meep-mg-app-client github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mg-manager-model => ../../go-packages/meep-mg-manager-model github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model => ../../go-packages/meep-model github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis ) go-apps/meep-mg-manager/go.sum +10 −0 Original line number Diff line number Diff line Loading @@ -5,14 +5,18 @@ github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351 h1:1u1XrfCBnY+ github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351/go.mod h1:HxwfbuElTuGf+/uKZfjJrCnv0BmmpkPJDI7gBwj1KkM= github.com/RyanCarrier/dijkstra v0.0.0-20180928224145-3fe1cac16289 h1:xAvSALVtCcHbLjLQJhZFLC/XXoXgAywXPBw3+PvCP6g= github.com/RyanCarrier/dijkstra v0.0.0-20180928224145-3fe1cac16289/go.mod h1:DdR6ymcLl8+sN/XOVNjnYO1NDYfgHskGjreZUDuQCTY= github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52 h1:trnwuu/Q8T59kgRjXcSDBODnyZP9wes+bnLn0lx4PgM= github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52/go.mod h1:DdR6ymcLl8+sN/XOVNjnYO1NDYfgHskGjreZUDuQCTY= github.com/RyanCarrier/dijkstra-1 v0.0.0-20170512020943-0e5801a26345 h1:fgSpoKViTSqRb4hjDNj10ig5wUvO0CayCzFdLf6fuRM= github.com/RyanCarrier/dijkstra-1 v0.0.0-20170512020943-0e5801a26345/go.mod h1:OK4EvWJ441LQqGzed5NGB6vKBAE34n3z7iayPcEwr30= github.com/albertorestifo/dijkstra v0.0.0-20160910063646-aba76f725f72 h1:uGeGZl8PxSq8VZGG4QK5njJTFA4/G/x5CYORvQVXtAE= github.com/albertorestifo/dijkstra v0.0.0-20160910063646-aba76f725f72/go.mod h1:o+JdB7VetTHjLhU0N57x18B9voDBQe0paApdEAEoEfw= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/flimzy/kivik v1.8.1/go.mod h1:S2aPycbG0eDFll4wgXt9uacSNkXISPufutnc9sv+mdA= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/go-kivik/couchdb v1.8.1/go.mod h1:5XJRkAMpBlEVA4q0ktIZjUPYBjoBmRoiWvwUBzP3BOQ= github.com/go-redis/redis v6.15.2+incompatible h1:9SpNVG76gr6InJGxoZ6IuuxaCOQwDAhzyXg+Bs+0Sb4= github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= Loading @@ -21,8 +25,11 @@ github.com/gorilla/handlers v1.4.0 h1:XulKRWSQK5uChr4pEgSE4Tc/OcmnU9GJuSwdog/tZs github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.1 h1:Dw4jY2nghMMRsh1ol8dv1axHkDwMQK2DHerMNJsIpJU= github.com/gorilla/mux v1.7.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/mattomatic/dijkstra v0.0.0-20130617153013-6f6d134eb237 h1:acuCHBjzG7MFTugvx3buC4m5rLDLaKC9J8C9jtlraRc= Loading @@ -30,8 +37,11 @@ github.com/mattomatic/dijkstra v0.0.0-20130617153013-6f6d134eb237/go.mod h1:UOnL github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= Loading go-apps/meep-mg-manager/main.go +6 −1 Original line number Diff line number Diff line Loading @@ -58,7 +58,12 @@ func main() { } // Start MG Manager Event Handler thread go server.Run() err = server.Run() if err != nil { log.Error("Failed to start MG Manager") run = false return } // Start MG Manager REST API Server router := server.NewRouter() Loading go-apps/meep-mg-manager/server/db.godeleted 100755 → 0 +0 −240 Original line number Diff line number Diff line /* * Copyright (c) 2019 InterDigital Communications, Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package server import ( "errors" "net" "reflect" "time" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" "github.com/KromDaniel/rejonson" "github.com/go-redis/redis" ) var dbClient *rejonson.Client var dbClientStarted = false var pubsub *redis.PubSub // DBConnect - Establish connection to DB func DBConnect() error { if !dbClientStarted { err := openDB() if err != nil { return err } } return nil } func openDB() error { redisClient := redis.NewClient(&redis.Options{ Addr: "meep-redis-master:6379", Password: "", // no password set DB: 0, // use default DB }) rejonsonClient := rejonson.ExtendClient(redisClient) pong, err := rejonsonClient.Ping().Result() if pong == "" { log.Info("pong is null") return err } if err != nil { log.Info("Redis DB not accessible") return err } dbClientStarted = true dbClient = rejonsonClient log.Info("Redis DB opened and well!") return nil } // DBFlush - Empty DB func DBFlush(module string) error { var cursor uint64 var err error log.Debug("DBFlush module: ", module) // Find all module keys // Process in chunks of 50 matching entries to optimize processing speed & memory keyMatchStr := module + ":*" for { var keys []string keys, cursor, err = dbClient.Scan(cursor, keyMatchStr, 50).Result() if err != nil { log.Debug("ERROR: ", err) break } // Delete all matching entries if len(keys) > 0 { _, err = dbClient.Del(keys...).Result() if err != nil { log.Debug("Failed to retrieve entry fields") break } } // Stop searching if cursor is back at beginning if cursor == 0 { break } } return nil } // DBForEachEntry - Search for matching keys and run handler for each entry func DBForEachEntry(keyMatchStr string, entryHandler func(string, map[string]string, interface{}) error, userData interface{}) error { var cursor uint64 var err error // Process in chunks of 50 matching entries to optimize processing speed & memory for { var keys []string keys, cursor, err = dbClient.Scan(cursor, keyMatchStr, 50).Result() if err != nil { log.Debug("ERROR: ", err) break } if len(keys) > 0 { for i := 0; i < len(keys); i++ { fields, err := dbClient.HGetAll(keys[i]).Result() if err != nil || fields == nil { log.Debug("Failed to retrieve entry fields") break } // Invoke handler to process entry err = entryHandler(keys[i], fields, userData) if err != nil { return err } } } // Stop searching if cursor is back at beginning if cursor == 0 { break } } return nil } // DBSetEntry - Update existing entry or create new entry if it does not exist func DBSetEntry(key string, fields map[string]interface{}) error { // Update existing entry or create new entry if it does not exist _, err := dbClient.HMSet(key, fields).Result() if err != nil { return err } return nil } // DBRemoveEntry - Remove entry from DB func DBRemoveEntry(key string) error { _, err := dbClient.Del(key).Result() if err != nil { return err } return nil } // DBJsonGetEntry - Retrieve entry from DB func DBJsonGetEntry(key string, path string) (string, error) { // Update existing entry or create new entry if it does not exist json, err := dbClient.JsonGet(key, path).Result() if err != nil { return "", err } return json, nil } // DBJsonSetEntry - Update existing entry or create new entry if it does not exist func DBJsonSetEntry(key string, path string, json string) error { // Update existing entry or create new entry if it does not exist _, err := dbClient.JsonSet(key, path, json).Result() if err != nil { return err } return nil } // DBJsonDelEntry - Remove existing entry func DBJsonDelEntry(key string, path string) error { _, err := dbClient.JsonDel(key, path).Result() if err != nil { return err } return nil } // Subscribe - Register as a listener for provided channels func Subscribe(channels ...string) error { pubsub = dbClient.Subscribe(channels...) return nil } // Listen - Wait for subscribed events func Listen(handler func(string, string)) error { // Make sure listener is subscribed to pubsub if pubsub == nil { return errors.New("Not subscribed to pubsub") } // Main listening loop for { // Wait for subscribed channel events, or timeout msg, err := pubsub.ReceiveTimeout(time.Second) if err != nil { if reflect.TypeOf(err) == reflect.TypeOf(&net.OpError{}) && reflect.TypeOf(err.(*net.OpError).Err).String() == "*net.timeoutError" { // Timeout, ignore and wait for next event continue } } // Process published event switch m := msg.(type) { // Process Subscription case *redis.Subscription: log.Info("Subscription Message: ", m.Kind, " to channel ", m.Channel, ". Total subscriptions: ", m.Count) // Process received Message case *redis.Message: log.Info("MSG on ", m.Channel, ": ", m.Payload) handler(m.Channel, m.Payload) } } } // Publish - Publish message to channel func Publish(channel string, message string) error { log.Info("Publish to channel: ", channel, " Message: ", message) _, err := dbClient.Publish(channel, message).Result() return err } Loading
go-apps/meep-ctrl-engine/go.sum +2 −0 Original line number Diff line number Diff line github.com/KromDaniel/jonson v0.0.0-20180630143114-d2f9c3c389db/go.mod h1:RU+6d0CNIRSp6yo1mXLIIrnFa/3LHhvcDVLVJyovptM= github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351 h1:1u1XrfCBnY+GijnyU6O1k4odp5TnqZQTsp5v7+n/E4Y= github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351/go.mod h1:HxwfbuElTuGf+/uKZfjJrCnv0BmmpkPJDI7gBwj1KkM= github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52 h1:trnwuu/Q8T59kgRjXcSDBODnyZP9wes+bnLn0lx4PgM= github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52/go.mod h1:DdR6ymcLl8+sN/XOVNjnYO1NDYfgHskGjreZUDuQCTY= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/flimzy/diff v0.1.5/go.mod h1:lFJtC7SPsK0EroDmGTSrdtWKAxOk3rO+q+e04LL05Hs= github.com/flimzy/kivik v1.8.1 h1:URl7e0OnfSvAu3ZHQ5BkvzRZlCmyYuDyWUCcPWIHlU0= Loading
go-apps/meep-mg-manager/go.mod +6 −8 Original line number Diff line number Diff line Loading @@ -7,17 +7,14 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mg-app-client v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mg-manager-model v0.0.0 github.com/KromDaniel/jonson v0.0.0-20180630143114-d2f9c3c389db // indirect github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351 github.com/RyanCarrier/dijkstra v0.0.0-20180928224145-3fe1cac16289 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52 github.com/RyanCarrier/dijkstra-1 v0.0.0-20170512020943-0e5801a26345 // indirect github.com/albertorestifo/dijkstra v0.0.0-20160910063646-aba76f725f72 // indirect github.com/go-redis/redis v6.15.2+incompatible github.com/gorilla/handlers v1.4.0 github.com/gorilla/mux v1.7.1 github.com/gorilla/mux v1.7.3 github.com/mattomatic/dijkstra v0.0.0-20130617153013-6f6d134eb237 // indirect github.com/onsi/ginkgo v1.8.0 // indirect github.com/onsi/gomega v1.5.0 // indirect ) replace ( Loading @@ -25,5 +22,6 @@ replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger => ../../go-packages/meep-logger github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mg-app-client => ../../go-packages/meep-mg-app-client github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mg-manager-model => ../../go-packages/meep-mg-manager-model github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model => ../../go-packages/meep-model github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis )
go-apps/meep-mg-manager/go.sum +10 −0 Original line number Diff line number Diff line Loading @@ -5,14 +5,18 @@ github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351 h1:1u1XrfCBnY+ github.com/KromDaniel/rejonson v0.0.0-20180822072824-00b5bcf2b351/go.mod h1:HxwfbuElTuGf+/uKZfjJrCnv0BmmpkPJDI7gBwj1KkM= github.com/RyanCarrier/dijkstra v0.0.0-20180928224145-3fe1cac16289 h1:xAvSALVtCcHbLjLQJhZFLC/XXoXgAywXPBw3+PvCP6g= github.com/RyanCarrier/dijkstra v0.0.0-20180928224145-3fe1cac16289/go.mod h1:DdR6ymcLl8+sN/XOVNjnYO1NDYfgHskGjreZUDuQCTY= github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52 h1:trnwuu/Q8T59kgRjXcSDBODnyZP9wes+bnLn0lx4PgM= github.com/RyanCarrier/dijkstra v0.0.0-20190726134004-b51cadb5ae52/go.mod h1:DdR6ymcLl8+sN/XOVNjnYO1NDYfgHskGjreZUDuQCTY= github.com/RyanCarrier/dijkstra-1 v0.0.0-20170512020943-0e5801a26345 h1:fgSpoKViTSqRb4hjDNj10ig5wUvO0CayCzFdLf6fuRM= github.com/RyanCarrier/dijkstra-1 v0.0.0-20170512020943-0e5801a26345/go.mod h1:OK4EvWJ441LQqGzed5NGB6vKBAE34n3z7iayPcEwr30= github.com/albertorestifo/dijkstra v0.0.0-20160910063646-aba76f725f72 h1:uGeGZl8PxSq8VZGG4QK5njJTFA4/G/x5CYORvQVXtAE= github.com/albertorestifo/dijkstra v0.0.0-20160910063646-aba76f725f72/go.mod h1:o+JdB7VetTHjLhU0N57x18B9voDBQe0paApdEAEoEfw= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/flimzy/kivik v1.8.1/go.mod h1:S2aPycbG0eDFll4wgXt9uacSNkXISPufutnc9sv+mdA= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/go-kivik/couchdb v1.8.1/go.mod h1:5XJRkAMpBlEVA4q0ktIZjUPYBjoBmRoiWvwUBzP3BOQ= github.com/go-redis/redis v6.15.2+incompatible h1:9SpNVG76gr6InJGxoZ6IuuxaCOQwDAhzyXg+Bs+0Sb4= github.com/go-redis/redis v6.15.2+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= Loading @@ -21,8 +25,11 @@ github.com/gorilla/handlers v1.4.0 h1:XulKRWSQK5uChr4pEgSE4Tc/OcmnU9GJuSwdog/tZs github.com/gorilla/handlers v1.4.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.1 h1:Dw4jY2nghMMRsh1ol8dv1axHkDwMQK2DHerMNJsIpJU= github.com/gorilla/mux v1.7.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/mattomatic/dijkstra v0.0.0-20130617153013-6f6d134eb237 h1:acuCHBjzG7MFTugvx3buC4m5rLDLaKC9J8C9jtlraRc= Loading @@ -30,8 +37,11 @@ github.com/mattomatic/dijkstra v0.0.0-20130617153013-6f6d134eb237/go.mod h1:UOnL github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= Loading
go-apps/meep-mg-manager/main.go +6 −1 Original line number Diff line number Diff line Loading @@ -58,7 +58,12 @@ func main() { } // Start MG Manager Event Handler thread go server.Run() err = server.Run() if err != nil { log.Error("Failed to start MG Manager") run = false return } // Start MG Manager REST API Server router := server.NewRouter() Loading
go-apps/meep-mg-manager/server/db.godeleted 100755 → 0 +0 −240 Original line number Diff line number Diff line /* * Copyright (c) 2019 InterDigital Communications, Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package server import ( "errors" "net" "reflect" "time" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" "github.com/KromDaniel/rejonson" "github.com/go-redis/redis" ) var dbClient *rejonson.Client var dbClientStarted = false var pubsub *redis.PubSub // DBConnect - Establish connection to DB func DBConnect() error { if !dbClientStarted { err := openDB() if err != nil { return err } } return nil } func openDB() error { redisClient := redis.NewClient(&redis.Options{ Addr: "meep-redis-master:6379", Password: "", // no password set DB: 0, // use default DB }) rejonsonClient := rejonson.ExtendClient(redisClient) pong, err := rejonsonClient.Ping().Result() if pong == "" { log.Info("pong is null") return err } if err != nil { log.Info("Redis DB not accessible") return err } dbClientStarted = true dbClient = rejonsonClient log.Info("Redis DB opened and well!") return nil } // DBFlush - Empty DB func DBFlush(module string) error { var cursor uint64 var err error log.Debug("DBFlush module: ", module) // Find all module keys // Process in chunks of 50 matching entries to optimize processing speed & memory keyMatchStr := module + ":*" for { var keys []string keys, cursor, err = dbClient.Scan(cursor, keyMatchStr, 50).Result() if err != nil { log.Debug("ERROR: ", err) break } // Delete all matching entries if len(keys) > 0 { _, err = dbClient.Del(keys...).Result() if err != nil { log.Debug("Failed to retrieve entry fields") break } } // Stop searching if cursor is back at beginning if cursor == 0 { break } } return nil } // DBForEachEntry - Search for matching keys and run handler for each entry func DBForEachEntry(keyMatchStr string, entryHandler func(string, map[string]string, interface{}) error, userData interface{}) error { var cursor uint64 var err error // Process in chunks of 50 matching entries to optimize processing speed & memory for { var keys []string keys, cursor, err = dbClient.Scan(cursor, keyMatchStr, 50).Result() if err != nil { log.Debug("ERROR: ", err) break } if len(keys) > 0 { for i := 0; i < len(keys); i++ { fields, err := dbClient.HGetAll(keys[i]).Result() if err != nil || fields == nil { log.Debug("Failed to retrieve entry fields") break } // Invoke handler to process entry err = entryHandler(keys[i], fields, userData) if err != nil { return err } } } // Stop searching if cursor is back at beginning if cursor == 0 { break } } return nil } // DBSetEntry - Update existing entry or create new entry if it does not exist func DBSetEntry(key string, fields map[string]interface{}) error { // Update existing entry or create new entry if it does not exist _, err := dbClient.HMSet(key, fields).Result() if err != nil { return err } return nil } // DBRemoveEntry - Remove entry from DB func DBRemoveEntry(key string) error { _, err := dbClient.Del(key).Result() if err != nil { return err } return nil } // DBJsonGetEntry - Retrieve entry from DB func DBJsonGetEntry(key string, path string) (string, error) { // Update existing entry or create new entry if it does not exist json, err := dbClient.JsonGet(key, path).Result() if err != nil { return "", err } return json, nil } // DBJsonSetEntry - Update existing entry or create new entry if it does not exist func DBJsonSetEntry(key string, path string, json string) error { // Update existing entry or create new entry if it does not exist _, err := dbClient.JsonSet(key, path, json).Result() if err != nil { return err } return nil } // DBJsonDelEntry - Remove existing entry func DBJsonDelEntry(key string, path string) error { _, err := dbClient.JsonDel(key, path).Result() if err != nil { return err } return nil } // Subscribe - Register as a listener for provided channels func Subscribe(channels ...string) error { pubsub = dbClient.Subscribe(channels...) return nil } // Listen - Wait for subscribed events func Listen(handler func(string, string)) error { // Make sure listener is subscribed to pubsub if pubsub == nil { return errors.New("Not subscribed to pubsub") } // Main listening loop for { // Wait for subscribed channel events, or timeout msg, err := pubsub.ReceiveTimeout(time.Second) if err != nil { if reflect.TypeOf(err) == reflect.TypeOf(&net.OpError{}) && reflect.TypeOf(err.(*net.OpError).Err).String() == "*net.timeoutError" { // Timeout, ignore and wait for next event continue } } // Process published event switch m := msg.(type) { // Process Subscription case *redis.Subscription: log.Info("Subscription Message: ", m.Kind, " to channel ", m.Channel, ". Total subscriptions: ", m.Count) // Process received Message case *redis.Message: log.Info("MSG on ", m.Channel, ": ", m.Payload) handler(m.Channel, m.Payload) } } } // Publish - Publish message to channel func Publish(channel string, message string) error { log.Info("Publish to channel: ", channel, " Message: ", message) _, err := dbClient.Publish(channel, message).Result() return err }