refs #4
This commit is contained in:
Noah Hilverling 2019-05-15 11:16:31 +02:00
parent 1a10881081
commit 2d8d01fc2b
2 changed files with 114 additions and 0 deletions

102
configobject/user/user.go Normal file
View file

@ -0,0 +1,102 @@
package user
import (
"git.icinga.com/icingadb/icingadb-main/configobject"
"git.icinga.com/icingadb/icingadb-main/connection"
"git.icinga.com/icingadb/icingadb-main/utils"
)
var (
BulkInsertStmt *connection.BulkInsertStmt
BulkDeleteStmt *connection.BulkDeleteStmt
BulkUpdateStmt *connection.BulkUpdateStmt
Fields = []string{
"id",
"env_id",
"name_checksum",
"properties_checksum",
"customvars_checksum",
"groups_checksum",
"name",
"name_ci",
"display_name",
"email",
"pager",
"notifications_enabled",
"period_id",
"states",
"types",
"zone_id",
}
)
type User struct {
Id string `json:"id"`
EnvId string `json:"environment_id"`
NameChecksum string `json:"name_checksum"`
PropertiesChecksum string `json:"properties_checksum"`
CustomvarsChecksum string `json:"customvars_checksum"`
GroupsChecksum string `json:"groups_checksum"`
Name string `json:"name"`
NameCi *string `json:"name_ci"`
DisplayName string `json:"display_name"`
EMail string `json:"email"`
Pager string `json:"pager"`
NotificationsEnabled bool `json:"notifications_enabled"`
PeriodId string `json:"period_id"`
States int `json:"states"`
Types int `json:"types"`
ZoneId string `json:"zone_id"`
}
func NewUser() configobject.Row {
u := User{}
u.NameCi = &u.Name
return &u
}
func (u *User) InsertValues() []interface{} {
v := u.UpdateValues()
return append([]interface{}{utils.Checksum(u.Id)}, v...)
}
func (u *User) UpdateValues() []interface{} {
v := make([]interface{}, 0)
v = append(
v,
utils.Checksum(u.EnvId),
utils.Checksum(u.NameChecksum),
utils.Checksum(u.PropertiesChecksum),
utils.Checksum(u.CustomvarsChecksum),
utils.Checksum(u.GroupsChecksum),
u.Name,
u.NameCi,
u.DisplayName,
u.EMail,
u.Pager,
u.NotificationsEnabled,
utils.Checksum(u.PeriodId),
u.States,
u.Types,
utils.Checksum(u.ZoneId),
)
return v
}
func (u *User) GetId() string {
return u.Id
}
func (u *User) SetId(id string) {
u.Id = id
}
func init() {
BulkInsertStmt = connection.NewBulkInsertStmt("user", Fields)
BulkDeleteStmt = connection.NewBulkDeleteStmt("user")
BulkUpdateStmt = connection.NewBulkUpdateStmt("user", Fields)
}

12
main.go
View file

@ -9,6 +9,7 @@ import (
"git.icinga.com/icingadb/icingadb-main/configobject/service"
"git.icinga.com/icingadb/icingadb-main/configobject/servicegroup"
"git.icinga.com/icingadb/icingadb-main/configobject/statesync"
"git.icinga.com/icingadb/icingadb-main/configobject/user"
"git.icinga.com/icingadb/icingadb-main/connection"
"git.icinga.com/icingadb/icingadb-main/ha"
"git.icinga.com/icingadb/icingadb-main/jsondecoder"
@ -104,6 +105,17 @@ func main() {
})
}()
chHAUser := haInstance.RegisterNotificationListener()
go func() {
super.ChErr <- configsync.Operator(&super, chHAUser, &configsync.Context{
ObjectType: "user",
Factory: user.NewUser,
InsertStmt: user.BulkInsertStmt,
DeleteStmt: user.BulkDeleteStmt,
UpdateStmt: user.BulkUpdateStmt,
})
}()
statesync.StartStateSync(&super)
go prometheus.HandleHttp("0.0.0.0:8080", super.ChErr)