Loading charts/influxdb/values.yaml +7 −1 Original line number Diff line number Diff line Loading @@ -132,7 +132,13 @@ nodeSelector: {} ## Affinity for pod assignment ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity ## affinity: {} affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/master operator: Exists ## Tolerations for pod assignment ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ Loading go-apps/meep-ctrl-engine/go.mod +9 −9 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ go 1.12 require ( 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 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-watchdog v0.0.0 Loading @@ -20,12 +21,11 @@ require ( gopkg.in/yaml.v2 v2.2.2 // indirect ) replace github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-ctrl-engine-model => ../../go-packages/meep-ctrl-engine-model replace github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger => ../../go-packages/meep-logger replace github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis replace github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-watchdog => ../../go-packages/meep-watchdog replace github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model => ../../go-packages/meep-model replace ( 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 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model => ../../go-packages/meep-model github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-watchdog => ../../go-packages/meep-watchdog ) go-apps/meep-ctrl-engine/go.sum +2 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,8 @@ 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.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e h1:txQltCyjXAqVVSZDArPEhUTg35hKwVIuXwtQo7eAMNQ= github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= 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 go-apps/meep-ctrl-engine/server/ctrl-engine.go +61 −25 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import ( 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" mod "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model" redis "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis" watchdog "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-watchdog" Loading @@ -49,9 +50,11 @@ var db *kivik.DB var virtWatchdog *watchdog.Watchdog var rc *redis.Connector var activeModel *mod.Model var metricStore *ms.MetricStore var couchDBAddr = "http://meep-couchdb-svc-couchdb:5984/" var redisDBAddr = "meep-redis-master:6379" var couchDBAddr string = "http://meep-couchdb-svc-couchdb:5984/" var redisDBAddr string = "meep-redis-master:6379" var influxDBAddr string = "http://meep-influxdb:8086" func getCorePodsList() map[string]bool { Loading Loading @@ -135,6 +138,13 @@ func CtrlEngineInit() (err error) { return err } // Connect to Metric Store metricStore, err = ms.NewMetricStore("", influxDBAddr) if err != nil { log.Error("Failed connection to Redis: ", err) return err } return nil } Loading Loading @@ -360,6 +370,15 @@ func ceActivateScenario(w http.ResponseWriter, r *http.Request) { return } // Set Metrics Store & Flush entries err = metricStore.SetStore(scenarioName) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusInternalServerError) return } metricStore.Flush() // Activate scenario & publish err = activeModel.SetScenario(scenario) if err != nil { Loading Loading @@ -512,6 +531,12 @@ func ceTerminateScenario(w http.ResponseWriter, r *http.Request) { return } // Set Metrics Store err = metricStore.SetStore("") if err != nil { log.Error(err.Error()) } // Send response w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) Loading Loading @@ -550,25 +575,33 @@ func ceSendEvent(w http.ResponseWriter, r *http.Request) { // Process Event var httpStatus int var error string switch eventType { case "MOBILITY": error, httpStatus = sendEventMobility(event) err, httpStatus = sendEventMobility(event) case "NETWORK-CHARACTERISTICS-UPDATE": error, httpStatus = sendEventNetworkCharacteristics(event) err, httpStatus = sendEventNetworkCharacteristics(event) case "POAS-IN-RANGE": error, httpStatus = sendEventPoasInRange(event) err, httpStatus = sendEventPoasInRange(event) default: error = "Unsupported event type" err = errors.New("Unsupported event type") httpStatus = http.StatusBadRequest } if error != "" { log.Error(error) http.Error(w, error, httpStatus) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), httpStatus) return } // Log successful event in metric store eventStr, err := json.Marshal(event) if err == nil { err = metricStore.SetEventMetric(eventType, string(eventStr)) } if err != nil { log.Error("Failed to set event metric") } // Send response w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) Loading Loading @@ -669,9 +702,10 @@ func ceGetStates(w http.ResponseWriter, r *http.Request) { // ------------------ func sendEventNetworkCharacteristics(event ceModel.Event) (string, int) { func sendEventNetworkCharacteristics(event ceModel.Event) (error, int) { if event.EventNetworkCharacteristicsUpdate == nil { return "Malformed request: missing EventNetworkCharacteristicsUpdate", http.StatusBadRequest err := errors.New("Malformed request: missing EventNetworkCharacteristicsUpdate") return err, http.StatusBadRequest } // elementFound := false Loading @@ -679,14 +713,15 @@ func sendEventNetworkCharacteristics(event ceModel.Event) (string, int) { err := activeModel.UpdateNetChar(netChar) if err != nil { return err.Error(), http.StatusInternalServerError return err, http.StatusInternalServerError } return "", -1 return nil, -1 } func sendEventMobility(event ceModel.Event) (string, int) { func sendEventMobility(event ceModel.Event) (error, int) { if event.EventMobility == nil { return "Malformed request: missing EventMobility", http.StatusBadRequest err := errors.New("Malformed request: missing EventMobility") return err, http.StatusBadRequest } // Retrieve target name (src) and destination parent name elemName := event.EventMobility.ElementName Loading @@ -694,7 +729,7 @@ func sendEventMobility(event ceModel.Event) (string, int) { oldNL, newNL, err := activeModel.MoveNode(elemName, destName) if err != nil { return err.Error(), http.StatusInternalServerError return err, http.StatusInternalServerError } log.WithFields(log.Fields{ "meep.log.component": "ctrl-engine", Loading @@ -704,14 +739,14 @@ func sendEventMobility(event ceModel.Event) (string, int) { "meep.log.src": elemName, "meep.log.dest": elemName, }).Info("Measurements log") return "", -1 return nil, -1 } func sendEventPoasInRange(event ceModel.Event) (string, int) { func sendEventPoasInRange(event ceModel.Event) (error, int) { if event.EventPoasInRange == nil { return "Malformed request: missing EventPoasInRange", http.StatusBadRequest err := errors.New("Malformed request: missing EventPoasInRange") return err, http.StatusBadRequest } var ue *ceModel.PhysicalLocation // Retrieve UE name Loading @@ -725,7 +760,8 @@ func sendEventPoasInRange(event ceModel.Event) (string, int) { log.Debug("Searching for UE in active scenario") n := activeModel.GetNode(ueName) if n == nil { return ("Node not found " + ueName), http.StatusNotFound err := errors.New("Node not found " + ueName) return err, http.StatusNotFound } ue, ok := n.(*ceModel.PhysicalLocation) if !ok { Loading @@ -746,7 +782,7 @@ func sendEventPoasInRange(event ceModel.Event) (string, int) { //Publish updated scenario err := activeModel.Activate() if err != nil { return err.Error(), http.StatusInternalServerError return err, http.StatusInternalServerError } log.Debug("Active scenario updated") Loading @@ -754,10 +790,10 @@ func sendEventPoasInRange(event ceModel.Event) (string, int) { log.Debug("POA list unchanged. Ignoring.") } } else { err := "Failed to find UE" err := errors.New("Failed to find UE") return err, http.StatusNotFound } return "", -1 return nil, -1 } func getPodDetails(key string, fields map[string]string, userData interface{}) error { Loading go-apps/meep-ctrl-engine/server/ctrl-engine_test.go +1 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ func TestCtrlEngine(t *testing.T) { fmt.Println("CtrlEngineInit()") couchDBAddr = "http://localhost:30985/" influxDBAddr = "http://localhost:30986" redisDBAddr = "localhost:30380" mod.DbAddress = redisDBAddr err := CtrlEngineInit() Loading Loading
charts/influxdb/values.yaml +7 −1 Original line number Diff line number Diff line Loading @@ -132,7 +132,13 @@ nodeSelector: {} ## Affinity for pod assignment ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity ## affinity: {} affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/master operator: Exists ## Tolerations for pod assignment ## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ Loading
go-apps/meep-ctrl-engine/go.mod +9 −9 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ go 1.12 require ( 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 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-watchdog v0.0.0 Loading @@ -20,12 +21,11 @@ require ( gopkg.in/yaml.v2 v2.2.2 // indirect ) replace github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-ctrl-engine-model => ../../go-packages/meep-ctrl-engine-model replace github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger => ../../go-packages/meep-logger replace github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis replace github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-watchdog => ../../go-packages/meep-watchdog replace github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model => ../../go-packages/meep-model replace ( 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 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model => ../../go-packages/meep-model github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-watchdog => ../../go-packages/meep-watchdog )
go-apps/meep-ctrl-engine/go.sum +2 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,8 @@ 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.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e h1:txQltCyjXAqVVSZDArPEhUTg35hKwVIuXwtQo7eAMNQ= github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= 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
go-apps/meep-ctrl-engine/server/ctrl-engine.go +61 −25 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import ( 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" mod "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model" redis "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis" watchdog "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-watchdog" Loading @@ -49,9 +50,11 @@ var db *kivik.DB var virtWatchdog *watchdog.Watchdog var rc *redis.Connector var activeModel *mod.Model var metricStore *ms.MetricStore var couchDBAddr = "http://meep-couchdb-svc-couchdb:5984/" var redisDBAddr = "meep-redis-master:6379" var couchDBAddr string = "http://meep-couchdb-svc-couchdb:5984/" var redisDBAddr string = "meep-redis-master:6379" var influxDBAddr string = "http://meep-influxdb:8086" func getCorePodsList() map[string]bool { Loading Loading @@ -135,6 +138,13 @@ func CtrlEngineInit() (err error) { return err } // Connect to Metric Store metricStore, err = ms.NewMetricStore("", influxDBAddr) if err != nil { log.Error("Failed connection to Redis: ", err) return err } return nil } Loading Loading @@ -360,6 +370,15 @@ func ceActivateScenario(w http.ResponseWriter, r *http.Request) { return } // Set Metrics Store & Flush entries err = metricStore.SetStore(scenarioName) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), http.StatusInternalServerError) return } metricStore.Flush() // Activate scenario & publish err = activeModel.SetScenario(scenario) if err != nil { Loading Loading @@ -512,6 +531,12 @@ func ceTerminateScenario(w http.ResponseWriter, r *http.Request) { return } // Set Metrics Store err = metricStore.SetStore("") if err != nil { log.Error(err.Error()) } // Send response w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) Loading Loading @@ -550,25 +575,33 @@ func ceSendEvent(w http.ResponseWriter, r *http.Request) { // Process Event var httpStatus int var error string switch eventType { case "MOBILITY": error, httpStatus = sendEventMobility(event) err, httpStatus = sendEventMobility(event) case "NETWORK-CHARACTERISTICS-UPDATE": error, httpStatus = sendEventNetworkCharacteristics(event) err, httpStatus = sendEventNetworkCharacteristics(event) case "POAS-IN-RANGE": error, httpStatus = sendEventPoasInRange(event) err, httpStatus = sendEventPoasInRange(event) default: error = "Unsupported event type" err = errors.New("Unsupported event type") httpStatus = http.StatusBadRequest } if error != "" { log.Error(error) http.Error(w, error, httpStatus) if err != nil { log.Error(err.Error()) http.Error(w, err.Error(), httpStatus) return } // Log successful event in metric store eventStr, err := json.Marshal(event) if err == nil { err = metricStore.SetEventMetric(eventType, string(eventStr)) } if err != nil { log.Error("Failed to set event metric") } // Send response w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) Loading Loading @@ -669,9 +702,10 @@ func ceGetStates(w http.ResponseWriter, r *http.Request) { // ------------------ func sendEventNetworkCharacteristics(event ceModel.Event) (string, int) { func sendEventNetworkCharacteristics(event ceModel.Event) (error, int) { if event.EventNetworkCharacteristicsUpdate == nil { return "Malformed request: missing EventNetworkCharacteristicsUpdate", http.StatusBadRequest err := errors.New("Malformed request: missing EventNetworkCharacteristicsUpdate") return err, http.StatusBadRequest } // elementFound := false Loading @@ -679,14 +713,15 @@ func sendEventNetworkCharacteristics(event ceModel.Event) (string, int) { err := activeModel.UpdateNetChar(netChar) if err != nil { return err.Error(), http.StatusInternalServerError return err, http.StatusInternalServerError } return "", -1 return nil, -1 } func sendEventMobility(event ceModel.Event) (string, int) { func sendEventMobility(event ceModel.Event) (error, int) { if event.EventMobility == nil { return "Malformed request: missing EventMobility", http.StatusBadRequest err := errors.New("Malformed request: missing EventMobility") return err, http.StatusBadRequest } // Retrieve target name (src) and destination parent name elemName := event.EventMobility.ElementName Loading @@ -694,7 +729,7 @@ func sendEventMobility(event ceModel.Event) (string, int) { oldNL, newNL, err := activeModel.MoveNode(elemName, destName) if err != nil { return err.Error(), http.StatusInternalServerError return err, http.StatusInternalServerError } log.WithFields(log.Fields{ "meep.log.component": "ctrl-engine", Loading @@ -704,14 +739,14 @@ func sendEventMobility(event ceModel.Event) (string, int) { "meep.log.src": elemName, "meep.log.dest": elemName, }).Info("Measurements log") return "", -1 return nil, -1 } func sendEventPoasInRange(event ceModel.Event) (string, int) { func sendEventPoasInRange(event ceModel.Event) (error, int) { if event.EventPoasInRange == nil { return "Malformed request: missing EventPoasInRange", http.StatusBadRequest err := errors.New("Malformed request: missing EventPoasInRange") return err, http.StatusBadRequest } var ue *ceModel.PhysicalLocation // Retrieve UE name Loading @@ -725,7 +760,8 @@ func sendEventPoasInRange(event ceModel.Event) (string, int) { log.Debug("Searching for UE in active scenario") n := activeModel.GetNode(ueName) if n == nil { return ("Node not found " + ueName), http.StatusNotFound err := errors.New("Node not found " + ueName) return err, http.StatusNotFound } ue, ok := n.(*ceModel.PhysicalLocation) if !ok { Loading @@ -746,7 +782,7 @@ func sendEventPoasInRange(event ceModel.Event) (string, int) { //Publish updated scenario err := activeModel.Activate() if err != nil { return err.Error(), http.StatusInternalServerError return err, http.StatusInternalServerError } log.Debug("Active scenario updated") Loading @@ -754,10 +790,10 @@ func sendEventPoasInRange(event ceModel.Event) (string, int) { log.Debug("POA list unchanged. Ignoring.") } } else { err := "Failed to find UE" err := errors.New("Failed to find UE") return err, http.StatusNotFound } return "", -1 return nil, -1 } func getPodDetails(key string, fields map[string]string, userData interface{}) error { Loading
go-apps/meep-ctrl-engine/server/ctrl-engine_test.go +1 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ func TestCtrlEngine(t *testing.T) { fmt.Println("CtrlEngineInit()") couchDBAddr = "http://localhost:30985/" influxDBAddr = "http://localhost:30986" redisDBAddr = "localhost:30380" mod.DbAddress = redisDBAddr err := CtrlEngineInit() Loading