feat(telemetry): add user telemetry computation

This commit is contained in:
Anthony Lapenna
2020-04-29 17:03:36 +12:00
parent 1826398c9c
commit 7d78786fa4

View File

@@ -53,6 +53,7 @@ type (
Stack StackTelemetryData `json:"Stack"`
Tag TagTelemetryData `json:"Tag"`
Team TeamTelemetryData `json:"Team"`
User UserTelemetryData `json:"User"`
}
DockerHubTelemetryData struct {
@@ -157,6 +158,12 @@ type (
Count int `json:"Count"`
TeamLeaderCount int `json:"TeamLeaderCount"`
}
UserTelemetryData struct {
Count int `json:"Count"`
AdminUserCount int `json:"AdminUserCount"`
StandardUserCount int `json:"StandardUserCount"`
}
)
const AuthenticationMethodInternal = "internal"
@@ -240,22 +247,15 @@ func (runner *TelemetryJobRunner) Run() {
log.Printf("background schedule error (telemetry). Unable to compute team telemetry (err=%s)\n", err)
return
}
err = computeUserTelemetry(telemetryData, runner.context.dataStore)
if err != nil {
log.Printf("background schedule error (telemetry). Unable to compute user telemetry (err=%s)\n", err)
return
}
}()
}
func computeTagTelemetry(telemetryData *TelemetryData, dataStore portainer.DataStore) error {
tags, err := dataStore.Tag().Tags()
if err != nil {
return err
}
telemetryData.Tag = TagTelemetryData{
Count: len(tags),
}
return nil
}
func initTelemetryData(dataStore portainer.DataStore) (*TelemetryData, error) {
telemetryData := &TelemetryData{}
@@ -528,6 +528,19 @@ func computeStackTelemetry(telemetryData *TelemetryData, dataStore portainer.Dat
return nil
}
func computeTagTelemetry(telemetryData *TelemetryData, dataStore portainer.DataStore) error {
tags, err := dataStore.Tag().Tags()
if err != nil {
return err
}
telemetryData.Tag = TagTelemetryData{
Count: len(tags),
}
return nil
}
func computeTeamTelemetry(telemetryData *TelemetryData, dataStore portainer.DataStore) error {
teams, err := dataStore.Team().Teams()
if err != nil {
@@ -552,3 +565,26 @@ func computeTeamTelemetry(telemetryData *TelemetryData, dataStore portainer.Data
return nil
}
func computeUserTelemetry(telemetryData *TelemetryData, dataStore portainer.DataStore) error {
users, err := dataStore.User().Users()
if err != nil {
return err
}
telemetryData.User = UserTelemetryData{
Count: len(users),
AdminUserCount: 0,
StandardUserCount: 0,
}
for _, user := range users {
if user.Role == portainer.AdministratorRole {
telemetryData.User.AdminUserCount++
} else {
telemetryData.User.StandardUserCount++
}
}
return nil
}