Loading go-apps/meep-platform-ctrl/go.mod +2 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-key-mgr v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-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-mq v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 Loading @@ -28,6 +29,7 @@ replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-key-mgr => ../../go-packages/meep-data-key-mgr github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model => ../../go-packages/meep-data-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-mq => ../../go-packages/meep-mq github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis Loading go-apps/meep-platform-ctrl/go.sum +2 −0 Original line number Diff line number Diff line Loading @@ -141,6 +141,8 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= 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/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= Loading go-apps/meep-platform-ctrl/server/platform-ctrl.go +7 −9 Original line number Diff line number Diff line Loading @@ -23,8 +23,6 @@ import ( "io/ioutil" "math/rand" "net/http" "os" "strconv" "time" "github.com/gorilla/mux" Loading @@ -35,6 +33,7 @@ import ( dkm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-key-mgr" dataModel "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-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" mq "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq" redis "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis" Loading @@ -58,6 +57,7 @@ type PlatformCtrl struct { sessionMgr *sm.SessionMgr sandboxStore *ss.SandboxStore userStore *users.Connector metricStore *ms.MetricStore mqGlobal *mq.MsgQueue maxSessions int uri string Loading Loading @@ -94,12 +94,6 @@ func Init() (err error) { // Create new Platform Controller pfmCtrl = new(PlatformCtrl) // Retrieve maximum session count from environment variable if maxSessions, err := strconv.ParseInt(os.Getenv("MEEP_MAX_SESSIONS"), 10, 0); err == nil { pfmCtrl.maxSessions = int(maxSessions) } log.Info("MEEP_MAX_SESSIONS: ", pfmCtrl.maxSessions) // Create message queue pfmCtrl.mqGlobal, err = mq.NewMsgQueue(mq.GetGlobalName(), moduleName, moduleNamespace, redisDBAddr) if err != nil { Loading Loading @@ -180,7 +174,11 @@ func Init() (err error) { setPermissions() // Initialize OAuth initOAuth() err = initOAuth() if err != nil { log.Error("Failed OAuth Init: ", err.Error()) return err } log.Info("Platform Controller initialized") return nil Loading go-apps/meep-platform-ctrl/server/user_authentication.go +54 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import ( dataModel "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" ms "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store" sm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions" users "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-users" "github.com/google/go-github/github" Loading @@ -54,8 +55,22 @@ const OAUTH_PROVIDER_LOCAL = "local" var mutex sync.Mutex var gitlabApiUrl = "" var influxDBAddr string = "http://meep-influxdb.default.svc.cluster.local:8086" func initOAuth() { func initOAuth() (err error) { // Connect to Metric Store pfmCtrl.metricStore, err = ms.NewMetricStore("session-metrics", "global", influxDBAddr, ms.MetricsDbDisabled) if err != nil { log.Error("Failed connection to Metric Store: ", err) return err } // Retrieve maximum session count from environment variable if maxSessions, err := strconv.ParseInt(os.Getenv("MEEP_MAX_SESSIONS"), 10, 0); err == nil { pfmCtrl.maxSessions = int(maxSessions) } log.Info("MEEP_MAX_SESSIONS: ", pfmCtrl.maxSessions) // Get default platform URI pfmCtrl.uri = strings.TrimSpace(os.Getenv("MEEP_HOST_URL")) Loading Loading @@ -114,6 +129,8 @@ func initOAuth() { log.Info("GitLab OAuth provider enabled") } } return nil } // Generate a random state string Loading Loading @@ -177,16 +194,20 @@ func getErrUrl(err string) string { func uaLoginOAuth(w http.ResponseWriter, r *http.Request) { log.Info("----- OAUTH LOGIN -----") var metric ms.SessionMetric // Retrieve query parameters query := r.URL.Query() provider := query.Get("provider") metric.Provider = provider // Get provider-specific OAuth config config, found := pfmCtrl.oauthConfigs[provider] if !found { err := errors.New("Provider config not found for: " + provider) log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } Loading @@ -195,6 +216,8 @@ func uaLoginOAuth(w http.ResponseWriter, r *http.Request) { state, err := getUniqueState() if err != nil { log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } Loading @@ -218,6 +241,7 @@ func uaLoginOAuth(w http.ResponseWriter, r *http.Request) { } func uaAuthorize(w http.ResponseWriter, r *http.Request) { var metric ms.SessionMetric // Retrieve query parameters query := r.URL.Query() Loading @@ -229,6 +253,8 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if request == nil { err := errors.New("Invalid OAuth state") log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } Loading @@ -239,9 +265,12 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if !found { err := errors.New("Provider config not found for: " + provider) log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } metric.Provider = provider // Delete login request & timer delLoginRequest(state) Loading @@ -250,6 +279,8 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { token, err := config.Exchange(context.Background(), code) if err != nil { log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } Loading @@ -262,6 +293,8 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if oauthClient == nil { err = errors.New("Failed to create new GitHub oauth client") log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } Loading @@ -269,12 +302,16 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if client == nil { err = errors.New("Failed to create new GitHub client") log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } user, _, err := client.Users.Get(context.Background(), "") if err != nil { log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl("Failed to retrieve GitHub user ID"), http.StatusFound) return } Loading @@ -289,27 +326,37 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if err != nil { err = errors.New("Failed to create new GitLab client") log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } user, _, err := client.Users.CurrentUser() if err != nil { log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl("Failed to retrieve GitLab user ID"), http.StatusFound) return } userId = user.Username default: } metric.User = userId // Start user session sandboxName, err, errCode := startSession(provider, userId, w, r) if err != nil { log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), errCode) return } metric.Sandbox = sandboxName _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeLogin, metric) // Redirect user to sandbox http.Redirect(w, r, pfmCtrl.uri+"?sbox="+sandboxName+"&user="+userId, http.StatusFound) } Loading Loading @@ -418,11 +465,15 @@ func startSession(provider string, username string, w http.ResponseWriter, r *ht func uaLogoutUser(w http.ResponseWriter, r *http.Request) { log.Info("----- LOGOUT -----") var metric ms.SessionMetric // Get existing session sessionStore := pfmCtrl.sessionMgr.GetSessionStore() session, err := sessionStore.Get(r) if err == nil { metric.Provider = session.Provider metric.User = session.Username metric.Sandbox = session.Sandbox // Delete sandbox deleteSandbox(session.Sandbox) } Loading @@ -435,6 +486,8 @@ func uaLogoutUser(w http.ResponseWriter, r *http.Request) { return } _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeLogout, metric) w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } Loading go-packages/meep-metric-store/events_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ import ( const eventStoreName string = "event-store" const eventStoreNamespace string = "event-ns" const eventStoreInfluxAddr string = "http://localhost:30986" const eventStoreRedisAddr string = "localhost:30380" const eventStoreRedisAddr string = MetricsDbDisabled func TestEventsMetricsGetSet(t *testing.T) { fmt.Println("--- ", t.Name()) Loading Loading
go-apps/meep-platform-ctrl/go.mod +2 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ require ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-key-mgr v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-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-mq v0.0.0 github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis v0.0.0 Loading @@ -28,6 +29,7 @@ replace ( github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-key-mgr => ../../go-packages/meep-data-key-mgr github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model => ../../go-packages/meep-data-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-mq => ../../go-packages/meep-mq github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis => ../../go-packages/meep-redis Loading
go-apps/meep-platform-ctrl/go.sum +2 −0 Original line number Diff line number Diff line Loading @@ -141,6 +141,8 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= 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/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= Loading
go-apps/meep-platform-ctrl/server/platform-ctrl.go +7 −9 Original line number Diff line number Diff line Loading @@ -23,8 +23,6 @@ import ( "io/ioutil" "math/rand" "net/http" "os" "strconv" "time" "github.com/gorilla/mux" Loading @@ -35,6 +33,7 @@ import ( dkm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-key-mgr" dataModel "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-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" mq "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-mq" redis "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-redis" Loading @@ -58,6 +57,7 @@ type PlatformCtrl struct { sessionMgr *sm.SessionMgr sandboxStore *ss.SandboxStore userStore *users.Connector metricStore *ms.MetricStore mqGlobal *mq.MsgQueue maxSessions int uri string Loading Loading @@ -94,12 +94,6 @@ func Init() (err error) { // Create new Platform Controller pfmCtrl = new(PlatformCtrl) // Retrieve maximum session count from environment variable if maxSessions, err := strconv.ParseInt(os.Getenv("MEEP_MAX_SESSIONS"), 10, 0); err == nil { pfmCtrl.maxSessions = int(maxSessions) } log.Info("MEEP_MAX_SESSIONS: ", pfmCtrl.maxSessions) // Create message queue pfmCtrl.mqGlobal, err = mq.NewMsgQueue(mq.GetGlobalName(), moduleName, moduleNamespace, redisDBAddr) if err != nil { Loading Loading @@ -180,7 +174,11 @@ func Init() (err error) { setPermissions() // Initialize OAuth initOAuth() err = initOAuth() if err != nil { log.Error("Failed OAuth Init: ", err.Error()) return err } log.Info("Platform Controller initialized") return nil Loading
go-apps/meep-platform-ctrl/server/user_authentication.go +54 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import ( dataModel "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-data-model" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" ms "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metric-store" sm "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-sessions" users "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-users" "github.com/google/go-github/github" Loading @@ -54,8 +55,22 @@ const OAUTH_PROVIDER_LOCAL = "local" var mutex sync.Mutex var gitlabApiUrl = "" var influxDBAddr string = "http://meep-influxdb.default.svc.cluster.local:8086" func initOAuth() { func initOAuth() (err error) { // Connect to Metric Store pfmCtrl.metricStore, err = ms.NewMetricStore("session-metrics", "global", influxDBAddr, ms.MetricsDbDisabled) if err != nil { log.Error("Failed connection to Metric Store: ", err) return err } // Retrieve maximum session count from environment variable if maxSessions, err := strconv.ParseInt(os.Getenv("MEEP_MAX_SESSIONS"), 10, 0); err == nil { pfmCtrl.maxSessions = int(maxSessions) } log.Info("MEEP_MAX_SESSIONS: ", pfmCtrl.maxSessions) // Get default platform URI pfmCtrl.uri = strings.TrimSpace(os.Getenv("MEEP_HOST_URL")) Loading Loading @@ -114,6 +129,8 @@ func initOAuth() { log.Info("GitLab OAuth provider enabled") } } return nil } // Generate a random state string Loading Loading @@ -177,16 +194,20 @@ func getErrUrl(err string) string { func uaLoginOAuth(w http.ResponseWriter, r *http.Request) { log.Info("----- OAUTH LOGIN -----") var metric ms.SessionMetric // Retrieve query parameters query := r.URL.Query() provider := query.Get("provider") metric.Provider = provider // Get provider-specific OAuth config config, found := pfmCtrl.oauthConfigs[provider] if !found { err := errors.New("Provider config not found for: " + provider) log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } Loading @@ -195,6 +216,8 @@ func uaLoginOAuth(w http.ResponseWriter, r *http.Request) { state, err := getUniqueState() if err != nil { log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } Loading @@ -218,6 +241,7 @@ func uaLoginOAuth(w http.ResponseWriter, r *http.Request) { } func uaAuthorize(w http.ResponseWriter, r *http.Request) { var metric ms.SessionMetric // Retrieve query parameters query := r.URL.Query() Loading @@ -229,6 +253,8 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if request == nil { err := errors.New("Invalid OAuth state") log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } Loading @@ -239,9 +265,12 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if !found { err := errors.New("Provider config not found for: " + provider) log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } metric.Provider = provider // Delete login request & timer delLoginRequest(state) Loading @@ -250,6 +279,8 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { token, err := config.Exchange(context.Background(), code) if err != nil { log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } Loading @@ -262,6 +293,8 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if oauthClient == nil { err = errors.New("Failed to create new GitHub oauth client") log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } Loading @@ -269,12 +302,16 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if client == nil { err = errors.New("Failed to create new GitHub client") log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } user, _, err := client.Users.Get(context.Background(), "") if err != nil { log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl("Failed to retrieve GitHub user ID"), http.StatusFound) return } Loading @@ -289,27 +326,37 @@ func uaAuthorize(w http.ResponseWriter, r *http.Request) { if err != nil { err = errors.New("Failed to create new GitLab client") log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), http.StatusFound) return } user, _, err := client.Users.CurrentUser() if err != nil { log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl("Failed to retrieve GitLab user ID"), http.StatusFound) return } userId = user.Username default: } metric.User = userId // Start user session sandboxName, err, errCode := startSession(provider, userId, w, r) if err != nil { log.Error(err.Error()) metric.Description = err.Error() _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeError, metric) http.Redirect(w, r, getErrUrl(err.Error()), errCode) return } metric.Sandbox = sandboxName _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeLogin, metric) // Redirect user to sandbox http.Redirect(w, r, pfmCtrl.uri+"?sbox="+sandboxName+"&user="+userId, http.StatusFound) } Loading Loading @@ -418,11 +465,15 @@ func startSession(provider string, username string, w http.ResponseWriter, r *ht func uaLogoutUser(w http.ResponseWriter, r *http.Request) { log.Info("----- LOGOUT -----") var metric ms.SessionMetric // Get existing session sessionStore := pfmCtrl.sessionMgr.GetSessionStore() session, err := sessionStore.Get(r) if err == nil { metric.Provider = session.Provider metric.User = session.Username metric.Sandbox = session.Sandbox // Delete sandbox deleteSandbox(session.Sandbox) } Loading @@ -435,6 +486,8 @@ func uaLogoutUser(w http.ResponseWriter, r *http.Request) { return } _ = pfmCtrl.metricStore.SetSessionMetric(ms.SesMetTypeLogout, metric) w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) } Loading
go-packages/meep-metric-store/events_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ import ( const eventStoreName string = "event-store" const eventStoreNamespace string = "event-ns" const eventStoreInfluxAddr string = "http://localhost:30986" const eventStoreRedisAddr string = "localhost:30380" const eventStoreRedisAddr string = MetricsDbDisabled func TestEventsMetricsGetSet(t *testing.T) { fmt.Println("--- ", t.Name()) Loading