Loading go-apps/meep-ctrl-engine/go.mod +2 −2 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ module github.com/InterDigitalInc/AdvantEDGE/go-apps/meep-ctrl-engine go 1.12 require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-couch v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-ctrl-engine-model v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store v0.0.0 Loading @@ -16,12 +17,11 @@ require ( github.com/gopherjs/gopherjs v0.0.0-20190411002643-bd77b112433e // indirect github.com/gorilla/handlers v1.4.0 github.com/gorilla/mux v1.7.3 github.com/imdario/mergo v0.3.8 // indirect github.com/pkg/errors v0.8.1 // indirect gopkg.in/yaml.v2 v2.2.2 // indirect ) replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-couch => ../../go-packages/meep-couch github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-ctrl-engine-model => ../../go-packages/meep-ctrl-engine-model github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger => ../../go-packages/meep-logger github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store => ../../go-packages/meep-metric-store Loading go-apps/meep-ctrl-engine/go.sum +9 −0 Original line number Diff line number Diff line github.com/InterDigitalInc/AdvantEDGE v1.3.0 h1:c7rr1cwOWXsTYyYLQ0+DFUAWqxarqMFMrPGoi1AU84o= github.com/KromDaniel/jonson v0.0.0-20180630143114-d2f9c3c389db h1:Zkf5kwhxdW0xV7WM/crqIcOP5LCFGnAmumWSFAewJ74= 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= Loading @@ -22,6 +23,7 @@ github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/go-kivik/couchdb v1.8.1 h1:2yjmysS48JYpyWTkx2E3c7ASZP8Kh0eABWnkKlV8bbw= github.com/go-kivik/couchdb v1.8.1/go.mod h1:5XJRkAMpBlEVA4q0ktIZjUPYBjoBmRoiWvwUBzP3BOQ= github.com/go-kivik/kivik v1.8.1/go.mod h1:nIuJ8z4ikBrVUSk3Ua8NoDqYKULPNjuddjqRvlSUyyQ= 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 Loading @@ -49,6 +51,8 @@ github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.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 @@ -56,13 +60,18 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd h1:nTDtHvHSdCn1m6ITfMRqtOd/9+7a3s8RBNOZ3eYZzJA= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa h1:F+8P+gmewFQYRk6JoLQLwjBCTu3mcIURZfNkVweuRKA= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e h1:o3PsSEY8E4eXWkXrIP9YJALUkVZqzHJT5DOasTyn8Vs= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= Loading go-apps/meep-ctrl-engine/server/ctrl-engine.go +12 −12 Original line number Diff line number Diff line Loading @@ -26,9 +26,9 @@ import ( "strings" "time" "github.com/flimzy/kivik" "github.com/gorilla/mux" couch "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-couch" ceModel "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-ctrl-engine-model" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" ms "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store" Loading @@ -46,7 +46,7 @@ const activeScenarioName = "active" const moduleName string = "meep-ctrl-engine" const moduleMonEngine string = "mon-engine" var db *kivik.DB var scenarioStore *couch.Connector var virtWatchdog *watchdog.Watchdog var rc *redis.Connector var activeModel *mod.Model Loading Loading @@ -78,7 +78,7 @@ func CtrlEngineInit() (err error) { log.Debug("CtrlEngineInit") // Make Scenario DB connection db, err = connectDb(scenarioDBName) scenarioStore, err = couch.NewConnector(couchDBAddr, scenarioDBName) if err != nil { log.Error("Failed connection to Scenario DB. Error: ", err) return err Loading @@ -86,7 +86,7 @@ func CtrlEngineInit() (err error) { log.Info("Connected to Scenario DB") // Retrieve scenario list from DB scenarioList, err := getScenarioList(db) scenarioList, err := scenarioStore.GetDocList() if err != nil { log.Error(err.Error()) return err Loading @@ -104,7 +104,7 @@ func CtrlEngineInit() (err error) { } // Update scenario in DB rev, err := setScenario(db, s.Name, validScenario) rev, err := scenarioStore.UpdateDoc(s.Name, validScenario) if err != nil { return errors.New("Failed to update scenario with error: " + err.Error()) } Loading Loading @@ -181,7 +181,7 @@ func ceCreateScenario(w http.ResponseWriter, r *http.Request) { } // Add new scenario to DB rev, err := addScenario(db, scenarioName, validScenario) rev, err := scenarioStore.AddDoc(scenarioName, validScenario) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusConflict) Loading @@ -205,7 +205,7 @@ func ceDeleteScenario(w http.ResponseWriter, r *http.Request) { log.Debug("Scenario name: ", scenarioName) // Remove scenario from DB err := removeScenario(db, scenarioName) err := scenarioStore.DeleteDoc(scenarioName) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusNotFound) Loading @@ -223,7 +223,7 @@ func ceDeleteScenarioList(w http.ResponseWriter, r *http.Request) { log.Debug("ceDeleteScenarioList") // Remove all scenario from DB err := removeAllScenarios(db) err := scenarioStore.DeleteAllDocs() if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusNotFound) Loading Loading @@ -253,7 +253,7 @@ func ceGetScenario(w http.ResponseWriter, r *http.Request) { // Retrieve scenario from DB var scenario []byte scenario, err := getScenario(false, db, scenarioName) scenario, err := scenarioStore.GetDoc(false, scenarioName) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusNotFound) Loading @@ -279,7 +279,7 @@ func ceGetScenarioList(w http.ResponseWriter, r *http.Request) { log.Debug("ceGetScenarioList") // Retrieve scenario list from DB scenarioList, err := getScenarioList(db) scenarioList, err := scenarioStore.GetDocList() if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusNotFound) Loading Loading @@ -331,7 +331,7 @@ func ceSetScenario(w http.ResponseWriter, r *http.Request) { } // Update scenario in DB rev, err := setScenario(db, scenarioName, validScenario) rev, err := scenarioStore.UpdateDoc(scenarioName, validScenario) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusNotFound) Loading Loading @@ -373,7 +373,7 @@ func ceActivateScenario(w http.ResponseWriter, r *http.Request) { // Retrieve scenario to activate from DB var scenario []byte scenario, err := getScenario(false, db, scenarioName) scenario, err := scenarioStore.GetDoc(false, scenarioName) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusNotFound) Loading go-apps/meep-ctrl-engine/server/scenario-store.godeleted 100644 → 0 +0 −174 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 ( "context" "github.com/flimzy/kivik" _ "github.com/go-kivik/couchdb" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" ) // Establish DB connections func connectDb(dbName string) (*kivik.DB, error) { // Connect to Couch DB log.Debug("Establish new couchDB connection") dbClient, err := kivik.New(context.TODO(), "couch", couchDBAddr) if err != nil { return nil, err } // Create Scenario DB if id does not exist log.Debug("Check if scenario DB exists: " + dbName) debExists, err := dbClient.DBExists(context.TODO(), dbName) if err != nil { return nil, err } if !debExists { log.Debug("Create new DB: " + dbName) err = dbClient.CreateDB(context.TODO(), dbName) if err != nil { return nil, err } } // Open scenario DB log.Debug("Open scenario DB: " + dbName) db, err := dbClient.DB(context.TODO(), dbName) if err != nil { return nil, err } return db, nil } // Get scenario from DB func getScenario(returnNilOnNotFound bool, db *kivik.DB, scenarioName string) (scenario []byte, err error) { // Get scenario from DB log.Debug("Get scenario from DB: " + scenarioName) row, err := db.Get(context.TODO(), scenarioName) if err != nil { //that's a call to the couch DB.. in order not to return nil, we override it if returnNilOnNotFound { //specifically for the case where there is nothing.. so the scenario object will be empty return nil, nil } return nil, err } // Decode JSON-encoded document err = row.ScanDoc(&scenario) return scenario, err } // Get scenario list from DB func getScenarioList(db *kivik.DB) (scenarioList [][]byte, err error) { // Retrieve all scenarios from DB log.Debug("Get all scenarios from DB") rows, err := db.AllDocs(context.TODO()) if err != nil { return nil, err } // Loop through scenarios and populate scenario list to return log.Debug("Loop through scenarios") for rows.Next() { var scenario []byte if rows.ID() != activeScenarioName { scenario, err = getScenario(false, db, rows.ID()) if err == nil { // Append scenario to list scenarioList = append(scenarioList, scenario) } } } return scenarioList, nil } // Add scenario to DB func addScenario(db *kivik.DB, scenarioName string, scenario []byte) (string, error) { // Add scenario to couch DB log.Debug("Add new scenario to DB: " + scenarioName) rev, err := db.Put(context.TODO(), scenarioName, scenario) if err != nil { return "", err } return rev, nil } // Update scenario in DB func setScenario(db *kivik.DB, scenarioName string, scenario []byte) (string, error) { // Remove previous version err := removeScenario(db, scenarioName) if err != nil { return "", err } // Add updated version rev, err := addScenario(db, scenarioName, scenario) if err != nil { return "", err } return rev, nil } // Remove scenario from DB func removeScenario(db *kivik.DB, scenarioName string) error { // Get latest Rev of stored scenario from couchDB rev, err := db.Rev(context.TODO(), scenarioName) if err != nil { return err } // Remove scenario from couchDB log.Debug("Remove scenario from DB: " + scenarioName) _, err = db.Delete(context.TODO(), scenarioName, rev) if err != nil { return err } return nil } // Remove all scenarios from DB func removeAllScenarios(db *kivik.DB) error { // Retrieve all scenarios from DB log.Debug("Get all scenarios from DB") rows, err := db.AllDocs(context.TODO()) if err != nil { return err } // Loop through scenarios and remove each one log.Debug("Loop through scenarios") for rows.Next() { _ = removeScenario(db, rows.ID()) } return nil } go-packages/meep-couch/db.go +10 −10 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ func NewConnector(addr string, dbName string) (rc *Connector, err error) { } // getDocument - Get document from DB func (dbCon *Connector) getDoc(returnNilOnNotFound bool, docName string) (doc []byte, err error) { func (dbCon *Connector) GetDoc(returnNilOnNotFound bool, docName string) (doc []byte, err error) { log.Debug("Get document from DB: " + docName) row, err := dbCon.dbHandle.Get(context.TODO(), docName) if err != nil { Loading @@ -95,7 +95,7 @@ func (dbCon *Connector) getDoc(returnNilOnNotFound bool, docName string) (doc [] } // getDocList - Get document list from DB func (dbCon *Connector) getDocList() (docList [][]byte, err error) { func (dbCon *Connector) GetDocList() (docList [][]byte, err error) { log.Debug("Get all docs from DB") rows, err := dbCon.dbHandle.AllDocs(context.TODO()) if err != nil { Loading @@ -106,7 +106,7 @@ func (dbCon *Connector) getDocList() (docList [][]byte, err error) { log.Debug("Loop through docs") for rows.Next() { var doc []byte doc, err = dbCon.getDoc(false, rows.ID()) doc, err = dbCon.GetDoc(false, rows.ID()) if err == nil { // Append to list docList = append(docList, doc) Loading @@ -117,7 +117,7 @@ func (dbCon *Connector) getDocList() (docList [][]byte, err error) { } // addDoc - Add scenario to DB func (dbCon *Connector) addDoc(docName string, doc []byte) (string, error) { func (dbCon *Connector) AddDoc(docName string, doc []byte) (string, error) { log.Debug("Add new doc to DB: " + docName) rev, err := dbCon.dbHandle.Put(context.TODO(), docName, doc) if err != nil { Loading @@ -128,16 +128,16 @@ func (dbCon *Connector) addDoc(docName string, doc []byte) (string, error) { } // updateDoc - Update a document in DB func (dbCon *Connector) updateDoc(docName string, doc []byte) (string, error) { func (dbCon *Connector) UpdateDoc(docName string, doc []byte) (string, error) { log.Debug("Update doc from DB: " + docName) // Remove previous version err := dbCon.deleteDoc(docName) err := dbCon.DeleteDoc(docName) if err != nil { return "", err } // Add updated version rev, err := dbCon.addDoc(docName, doc) rev, err := dbCon.AddDoc(docName, doc) if err != nil { return "", err } Loading @@ -146,7 +146,7 @@ func (dbCon *Connector) updateDoc(docName string, doc []byte) (string, error) { } // deleteDoc - Remove a document from DB func (dbCon *Connector) deleteDoc(docName string) error { func (dbCon *Connector) DeleteDoc(docName string) error { log.Debug("Delete doc from DB: " + docName) // Get latest Rev of stored document rev, err := dbCon.dbHandle.Rev(context.TODO(), docName) Loading @@ -164,7 +164,7 @@ func (dbCon *Connector) deleteDoc(docName string) error { } // deleteAllDocs - Remove all documents from DB func (dbCon *Connector) deleteAllDocs() error { func (dbCon *Connector) DeleteAllDocs() error { log.Debug("Delete all docs from DB") // Retrieve all scenarios from DB rows, err := dbCon.dbHandle.AllDocs(context.TODO()) Loading @@ -174,7 +174,7 @@ func (dbCon *Connector) deleteAllDocs() error { // Loop through docs and remove each one for rows.Next() { _ = dbCon.deleteDoc(rows.ID()) _ = dbCon.DeleteDoc(rows.ID()) } return nil Loading Loading
go-apps/meep-ctrl-engine/go.mod +2 −2 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ module github.com/InterDigitalInc/AdvantEDGE/go-apps/meep-ctrl-engine go 1.12 require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-couch v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-ctrl-engine-model v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store v0.0.0 Loading @@ -16,12 +17,11 @@ require ( github.com/gopherjs/gopherjs v0.0.0-20190411002643-bd77b112433e // indirect github.com/gorilla/handlers v1.4.0 github.com/gorilla/mux v1.7.3 github.com/imdario/mergo v0.3.8 // indirect github.com/pkg/errors v0.8.1 // indirect gopkg.in/yaml.v2 v2.2.2 // indirect ) replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-couch => ../../go-packages/meep-couch github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-ctrl-engine-model => ../../go-packages/meep-ctrl-engine-model github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger => ../../go-packages/meep-logger github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store => ../../go-packages/meep-metric-store Loading
go-apps/meep-ctrl-engine/go.sum +9 −0 Original line number Diff line number Diff line github.com/InterDigitalInc/AdvantEDGE v1.3.0 h1:c7rr1cwOWXsTYyYLQ0+DFUAWqxarqMFMrPGoi1AU84o= github.com/KromDaniel/jonson v0.0.0-20180630143114-d2f9c3c389db h1:Zkf5kwhxdW0xV7WM/crqIcOP5LCFGnAmumWSFAewJ74= 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= Loading @@ -22,6 +23,7 @@ github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/go-kivik/couchdb v1.8.1 h1:2yjmysS48JYpyWTkx2E3c7ASZP8Kh0eABWnkKlV8bbw= github.com/go-kivik/couchdb v1.8.1/go.mod h1:5XJRkAMpBlEVA4q0ktIZjUPYBjoBmRoiWvwUBzP3BOQ= github.com/go-kivik/kivik v1.8.1/go.mod h1:nIuJ8z4ikBrVUSk3Ua8NoDqYKULPNjuddjqRvlSUyyQ= 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 Loading @@ -49,6 +51,8 @@ github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.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 @@ -56,13 +60,18 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd h1:nTDtHvHSdCn1m6ITfMRqtOd/9+7a3s8RBNOZ3eYZzJA= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa h1:F+8P+gmewFQYRk6JoLQLwjBCTu3mcIURZfNkVweuRKA= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e h1:o3PsSEY8E4eXWkXrIP9YJALUkVZqzHJT5DOasTyn8Vs= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= Loading
go-apps/meep-ctrl-engine/server/ctrl-engine.go +12 −12 Original line number Diff line number Diff line Loading @@ -26,9 +26,9 @@ import ( "strings" "time" "github.com/flimzy/kivik" "github.com/gorilla/mux" couch "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-couch" ceModel "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-ctrl-engine-model" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" ms "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store" Loading @@ -46,7 +46,7 @@ const activeScenarioName = "active" const moduleName string = "meep-ctrl-engine" const moduleMonEngine string = "mon-engine" var db *kivik.DB var scenarioStore *couch.Connector var virtWatchdog *watchdog.Watchdog var rc *redis.Connector var activeModel *mod.Model Loading Loading @@ -78,7 +78,7 @@ func CtrlEngineInit() (err error) { log.Debug("CtrlEngineInit") // Make Scenario DB connection db, err = connectDb(scenarioDBName) scenarioStore, err = couch.NewConnector(couchDBAddr, scenarioDBName) if err != nil { log.Error("Failed connection to Scenario DB. Error: ", err) return err Loading @@ -86,7 +86,7 @@ func CtrlEngineInit() (err error) { log.Info("Connected to Scenario DB") // Retrieve scenario list from DB scenarioList, err := getScenarioList(db) scenarioList, err := scenarioStore.GetDocList() if err != nil { log.Error(err.Error()) return err Loading @@ -104,7 +104,7 @@ func CtrlEngineInit() (err error) { } // Update scenario in DB rev, err := setScenario(db, s.Name, validScenario) rev, err := scenarioStore.UpdateDoc(s.Name, validScenario) if err != nil { return errors.New("Failed to update scenario with error: " + err.Error()) } Loading Loading @@ -181,7 +181,7 @@ func ceCreateScenario(w http.ResponseWriter, r *http.Request) { } // Add new scenario to DB rev, err := addScenario(db, scenarioName, validScenario) rev, err := scenarioStore.AddDoc(scenarioName, validScenario) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusConflict) Loading @@ -205,7 +205,7 @@ func ceDeleteScenario(w http.ResponseWriter, r *http.Request) { log.Debug("Scenario name: ", scenarioName) // Remove scenario from DB err := removeScenario(db, scenarioName) err := scenarioStore.DeleteDoc(scenarioName) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusNotFound) Loading @@ -223,7 +223,7 @@ func ceDeleteScenarioList(w http.ResponseWriter, r *http.Request) { log.Debug("ceDeleteScenarioList") // Remove all scenario from DB err := removeAllScenarios(db) err := scenarioStore.DeleteAllDocs() if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusNotFound) Loading Loading @@ -253,7 +253,7 @@ func ceGetScenario(w http.ResponseWriter, r *http.Request) { // Retrieve scenario from DB var scenario []byte scenario, err := getScenario(false, db, scenarioName) scenario, err := scenarioStore.GetDoc(false, scenarioName) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusNotFound) Loading @@ -279,7 +279,7 @@ func ceGetScenarioList(w http.ResponseWriter, r *http.Request) { log.Debug("ceGetScenarioList") // Retrieve scenario list from DB scenarioList, err := getScenarioList(db) scenarioList, err := scenarioStore.GetDocList() if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusNotFound) Loading Loading @@ -331,7 +331,7 @@ func ceSetScenario(w http.ResponseWriter, r *http.Request) { } // Update scenario in DB rev, err := setScenario(db, scenarioName, validScenario) rev, err := scenarioStore.UpdateDoc(scenarioName, validScenario) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusNotFound) Loading Loading @@ -373,7 +373,7 @@ func ceActivateScenario(w http.ResponseWriter, r *http.Request) { // Retrieve scenario to activate from DB var scenario []byte scenario, err := getScenario(false, db, scenarioName) scenario, err := scenarioStore.GetDoc(false, scenarioName) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusNotFound) Loading
go-apps/meep-ctrl-engine/server/scenario-store.godeleted 100644 → 0 +0 −174 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 ( "context" "github.com/flimzy/kivik" _ "github.com/go-kivik/couchdb" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" ) // Establish DB connections func connectDb(dbName string) (*kivik.DB, error) { // Connect to Couch DB log.Debug("Establish new couchDB connection") dbClient, err := kivik.New(context.TODO(), "couch", couchDBAddr) if err != nil { return nil, err } // Create Scenario DB if id does not exist log.Debug("Check if scenario DB exists: " + dbName) debExists, err := dbClient.DBExists(context.TODO(), dbName) if err != nil { return nil, err } if !debExists { log.Debug("Create new DB: " + dbName) err = dbClient.CreateDB(context.TODO(), dbName) if err != nil { return nil, err } } // Open scenario DB log.Debug("Open scenario DB: " + dbName) db, err := dbClient.DB(context.TODO(), dbName) if err != nil { return nil, err } return db, nil } // Get scenario from DB func getScenario(returnNilOnNotFound bool, db *kivik.DB, scenarioName string) (scenario []byte, err error) { // Get scenario from DB log.Debug("Get scenario from DB: " + scenarioName) row, err := db.Get(context.TODO(), scenarioName) if err != nil { //that's a call to the couch DB.. in order not to return nil, we override it if returnNilOnNotFound { //specifically for the case where there is nothing.. so the scenario object will be empty return nil, nil } return nil, err } // Decode JSON-encoded document err = row.ScanDoc(&scenario) return scenario, err } // Get scenario list from DB func getScenarioList(db *kivik.DB) (scenarioList [][]byte, err error) { // Retrieve all scenarios from DB log.Debug("Get all scenarios from DB") rows, err := db.AllDocs(context.TODO()) if err != nil { return nil, err } // Loop through scenarios and populate scenario list to return log.Debug("Loop through scenarios") for rows.Next() { var scenario []byte if rows.ID() != activeScenarioName { scenario, err = getScenario(false, db, rows.ID()) if err == nil { // Append scenario to list scenarioList = append(scenarioList, scenario) } } } return scenarioList, nil } // Add scenario to DB func addScenario(db *kivik.DB, scenarioName string, scenario []byte) (string, error) { // Add scenario to couch DB log.Debug("Add new scenario to DB: " + scenarioName) rev, err := db.Put(context.TODO(), scenarioName, scenario) if err != nil { return "", err } return rev, nil } // Update scenario in DB func setScenario(db *kivik.DB, scenarioName string, scenario []byte) (string, error) { // Remove previous version err := removeScenario(db, scenarioName) if err != nil { return "", err } // Add updated version rev, err := addScenario(db, scenarioName, scenario) if err != nil { return "", err } return rev, nil } // Remove scenario from DB func removeScenario(db *kivik.DB, scenarioName string) error { // Get latest Rev of stored scenario from couchDB rev, err := db.Rev(context.TODO(), scenarioName) if err != nil { return err } // Remove scenario from couchDB log.Debug("Remove scenario from DB: " + scenarioName) _, err = db.Delete(context.TODO(), scenarioName, rev) if err != nil { return err } return nil } // Remove all scenarios from DB func removeAllScenarios(db *kivik.DB) error { // Retrieve all scenarios from DB log.Debug("Get all scenarios from DB") rows, err := db.AllDocs(context.TODO()) if err != nil { return err } // Loop through scenarios and remove each one log.Debug("Loop through scenarios") for rows.Next() { _ = removeScenario(db, rows.ID()) } return nil }
go-packages/meep-couch/db.go +10 −10 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ func NewConnector(addr string, dbName string) (rc *Connector, err error) { } // getDocument - Get document from DB func (dbCon *Connector) getDoc(returnNilOnNotFound bool, docName string) (doc []byte, err error) { func (dbCon *Connector) GetDoc(returnNilOnNotFound bool, docName string) (doc []byte, err error) { log.Debug("Get document from DB: " + docName) row, err := dbCon.dbHandle.Get(context.TODO(), docName) if err != nil { Loading @@ -95,7 +95,7 @@ func (dbCon *Connector) getDoc(returnNilOnNotFound bool, docName string) (doc [] } // getDocList - Get document list from DB func (dbCon *Connector) getDocList() (docList [][]byte, err error) { func (dbCon *Connector) GetDocList() (docList [][]byte, err error) { log.Debug("Get all docs from DB") rows, err := dbCon.dbHandle.AllDocs(context.TODO()) if err != nil { Loading @@ -106,7 +106,7 @@ func (dbCon *Connector) getDocList() (docList [][]byte, err error) { log.Debug("Loop through docs") for rows.Next() { var doc []byte doc, err = dbCon.getDoc(false, rows.ID()) doc, err = dbCon.GetDoc(false, rows.ID()) if err == nil { // Append to list docList = append(docList, doc) Loading @@ -117,7 +117,7 @@ func (dbCon *Connector) getDocList() (docList [][]byte, err error) { } // addDoc - Add scenario to DB func (dbCon *Connector) addDoc(docName string, doc []byte) (string, error) { func (dbCon *Connector) AddDoc(docName string, doc []byte) (string, error) { log.Debug("Add new doc to DB: " + docName) rev, err := dbCon.dbHandle.Put(context.TODO(), docName, doc) if err != nil { Loading @@ -128,16 +128,16 @@ func (dbCon *Connector) addDoc(docName string, doc []byte) (string, error) { } // updateDoc - Update a document in DB func (dbCon *Connector) updateDoc(docName string, doc []byte) (string, error) { func (dbCon *Connector) UpdateDoc(docName string, doc []byte) (string, error) { log.Debug("Update doc from DB: " + docName) // Remove previous version err := dbCon.deleteDoc(docName) err := dbCon.DeleteDoc(docName) if err != nil { return "", err } // Add updated version rev, err := dbCon.addDoc(docName, doc) rev, err := dbCon.AddDoc(docName, doc) if err != nil { return "", err } Loading @@ -146,7 +146,7 @@ func (dbCon *Connector) updateDoc(docName string, doc []byte) (string, error) { } // deleteDoc - Remove a document from DB func (dbCon *Connector) deleteDoc(docName string) error { func (dbCon *Connector) DeleteDoc(docName string) error { log.Debug("Delete doc from DB: " + docName) // Get latest Rev of stored document rev, err := dbCon.dbHandle.Rev(context.TODO(), docName) Loading @@ -164,7 +164,7 @@ func (dbCon *Connector) deleteDoc(docName string) error { } // deleteAllDocs - Remove all documents from DB func (dbCon *Connector) deleteAllDocs() error { func (dbCon *Connector) DeleteAllDocs() error { log.Debug("Delete all docs from DB") // Retrieve all scenarios from DB rows, err := dbCon.dbHandle.AllDocs(context.TODO()) Loading @@ -174,7 +174,7 @@ func (dbCon *Connector) deleteAllDocs() error { // Loop through docs and remove each one for rows.Next() { _ = dbCon.deleteDoc(rows.ID()) _ = dbCon.DeleteDoc(rows.ID()) } return nil Loading