mirror of
https://github.com/Icinga/icingadb.git
synced 2026-05-28 04:35:54 -04:00
Actually insert NULL into NULLable columns
This commit is contained in:
parent
cdd98c4f10
commit
0abfebb66b
19 changed files with 57 additions and 44 deletions
|
|
@ -252,7 +252,7 @@ func downtimeHistoryWorker(super *supervisor.Supervisor) {
|
|||
|
||||
dataFunctions := []func(values map[string]interface{}) []interface{}{
|
||||
func(values map[string]interface{}) []interface{} {
|
||||
var triggeredById []byte
|
||||
var triggeredById interface{}
|
||||
if values["triggered_by_id"] != nil {
|
||||
triggeredById = utils.EncodeChecksum(values["triggered_by_id"].(string))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ func (c *CheckCommand) UpdateValues() []interface{} {
|
|||
utils.EncodeChecksum(c.PropertiesChecksum),
|
||||
c.Name,
|
||||
c.NameCi,
|
||||
utils.EncodeChecksum(c.ZoneId),
|
||||
utils.EncodeChecksumOrNil(c.ZoneId),
|
||||
c.Command,
|
||||
c.Timeout,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ func (c *Comment) UpdateValues() []interface{} {
|
|||
utils.EncodeChecksum(c.EnvId),
|
||||
c.ObjectType,
|
||||
utils.EncodeChecksum(c.HostId),
|
||||
utils.EncodeChecksum(c.ServiceId),
|
||||
utils.EncodeChecksumOrNil(c.ServiceId),
|
||||
utils.EncodeChecksum(c.NameChecksum),
|
||||
utils.EncodeChecksum(c.PropertiesChecksum),
|
||||
c.Name,
|
||||
|
|
@ -81,7 +81,7 @@ func (c *Comment) UpdateValues() []interface{} {
|
|||
utils.Bool[c.IsPersistent],
|
||||
utils.Bool[c.IsSticky],
|
||||
c.ExpireTime,
|
||||
utils.EncodeChecksum(c.ZoneId),
|
||||
utils.EncodeChecksumOrNil(c.ZoneId),
|
||||
)
|
||||
|
||||
return v
|
||||
|
|
|
|||
|
|
@ -75,10 +75,10 @@ func (d *Downtime) UpdateValues() []interface{} {
|
|||
v = append(
|
||||
v,
|
||||
utils.EncodeChecksum(d.EnvId),
|
||||
utils.EncodeChecksum(d.TriggeredById),
|
||||
utils.EncodeChecksumOrNil(d.TriggeredById),
|
||||
d.ObjectType,
|
||||
utils.EncodeChecksum(d.HostId),
|
||||
utils.EncodeChecksum(d.ServiceId),
|
||||
utils.EncodeChecksumOrNil(d.ServiceId),
|
||||
utils.EncodeChecksum(d.NameChecksum),
|
||||
utils.EncodeChecksum(d.PropertiesChecksum),
|
||||
d.Name,
|
||||
|
|
@ -92,7 +92,7 @@ func (d *Downtime) UpdateValues() []interface{} {
|
|||
utils.Bool[d.IsInEffect],
|
||||
d.StartTime,
|
||||
d.EndTime,
|
||||
utils.EncodeChecksum(d.ZoneId),
|
||||
utils.EncodeChecksumOrNil(d.ZoneId),
|
||||
)
|
||||
|
||||
return v
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ func (c *EventCommand) UpdateValues() []interface{} {
|
|||
utils.EncodeChecksum(c.PropertiesChecksum),
|
||||
c.Name,
|
||||
c.NameCi,
|
||||
utils.EncodeChecksum(c.ZoneId),
|
||||
utils.EncodeChecksumOrNil(c.ZoneId),
|
||||
c.Command,
|
||||
c.Timeout,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -107,6 +107,15 @@ func (h *Host) InsertValues() []interface{} {
|
|||
return append([]interface{}{utils.EncodeChecksum(h.Id)}, v...)
|
||||
}
|
||||
|
||||
// ipOrNil converts net.IP(nil) to interface{}(nil) – which are not the same.
|
||||
func ipOrNil(ip net.IP) interface{} {
|
||||
if ip == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return ip
|
||||
}
|
||||
|
||||
func (h *Host) UpdateValues() []interface{} {
|
||||
v := make([]interface{}, 0)
|
||||
|
||||
|
|
@ -120,13 +129,13 @@ func (h *Host) UpdateValues() []interface{} {
|
|||
h.DisplayName,
|
||||
h.Address,
|
||||
h.Address6,
|
||||
net.ParseIP(h.Address).To4(),
|
||||
net.ParseIP(h.Address6).To16(),
|
||||
ipOrNil(net.ParseIP(h.Address).To4()),
|
||||
ipOrNil(net.ParseIP(h.Address6).To16()),
|
||||
h.Checkcommand,
|
||||
utils.EncodeChecksum(h.CheckcommandId),
|
||||
h.MaxCheckAttempts,
|
||||
h.CheckPeriod,
|
||||
utils.EncodeChecksum(h.CheckPeriodId),
|
||||
utils.EncodeChecksumOrNil(h.CheckPeriodId),
|
||||
h.CheckTimeout,
|
||||
h.CheckInterval,
|
||||
h.CheckRetryInterval,
|
||||
|
|
@ -139,17 +148,17 @@ func (h *Host) UpdateValues() []interface{} {
|
|||
h.FlappingThresholdHigh,
|
||||
utils.Bool[h.PerfdataEnabled],
|
||||
h.Eventcommand,
|
||||
utils.EncodeChecksum(h.EventcommandId),
|
||||
utils.EncodeChecksumOrNil(h.EventcommandId),
|
||||
utils.Bool[h.IsVolatile],
|
||||
utils.EncodeChecksum(h.ActionUrlId),
|
||||
utils.EncodeChecksum(h.NotesUrlId),
|
||||
utils.EncodeChecksumOrNil(h.ActionUrlId),
|
||||
utils.EncodeChecksumOrNil(h.NotesUrlId),
|
||||
h.Notes,
|
||||
utils.EncodeChecksum(h.IconImageId),
|
||||
utils.EncodeChecksumOrNil(h.IconImageId),
|
||||
h.IconImageAlt,
|
||||
h.Zone,
|
||||
utils.EncodeChecksum(h.ZoneId),
|
||||
utils.EncodeChecksumOrNil(h.ZoneId),
|
||||
h.CommandEndpoint,
|
||||
utils.EncodeChecksum(h.CommandEndpointId),
|
||||
utils.EncodeChecksumOrNil(h.CommandEndpointId),
|
||||
)
|
||||
|
||||
return v
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ func (h *HostState) UpdateValues() []interface{} {
|
|||
utils.Bool[h.IsFlapping],
|
||||
utils.Bool[time.Now().After(utils.MillisecsToTime(float64(h.NextUpdate)))],
|
||||
utils.IsAcknowledged[h.Acknowledgement],
|
||||
utils.EncodeChecksum(h.AcknowledgementCommentId),
|
||||
utils.EncodeChecksumOrNil(h.AcknowledgementCommentId),
|
||||
utils.Bool[h.InDowntime],
|
||||
h.ExecutionTime,
|
||||
h.Latency,
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ func (h *Hostgroup) UpdateValues() []interface{} {
|
|||
h.Name,
|
||||
h.NameCi,
|
||||
h.DisplayName,
|
||||
utils.EncodeChecksum(h.ZoneId),
|
||||
utils.EncodeChecksumOrNil(h.ZoneId),
|
||||
)
|
||||
|
||||
return v
|
||||
|
|
|
|||
|
|
@ -73,15 +73,15 @@ func (n *Notification) UpdateValues() []interface{} {
|
|||
n.Name,
|
||||
n.NameCi,
|
||||
utils.EncodeChecksum(n.HostId),
|
||||
utils.EncodeChecksum(n.ServiceId),
|
||||
utils.EncodeChecksumOrNil(n.ServiceId),
|
||||
utils.EncodeChecksum(n.CommandId),
|
||||
n.TimesBegin,
|
||||
n.TimesEnd,
|
||||
n.NotificationInterval,
|
||||
utils.EncodeChecksum(n.PeriodId),
|
||||
utils.EncodeChecksumOrNil(n.PeriodId),
|
||||
utils.NotificationStatesToBitMask(n.States),
|
||||
utils.NotificationTypesToBitMask(n.Types),
|
||||
utils.EncodeChecksum(n.ZoneId),
|
||||
utils.EncodeChecksumOrNil(n.ZoneId),
|
||||
)
|
||||
|
||||
return v
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ func (c *NotificationCommand) UpdateValues() []interface{} {
|
|||
utils.EncodeChecksum(c.PropertiesChecksum),
|
||||
c.Name,
|
||||
c.NameCi,
|
||||
utils.EncodeChecksum(c.ZoneId),
|
||||
utils.EncodeChecksumOrNil(c.ZoneId),
|
||||
c.Command,
|
||||
c.Timeout,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ func (s *Service) UpdateValues() []interface{} {
|
|||
utils.EncodeChecksum(s.CheckcommandId),
|
||||
s.MaxCheckAttempts,
|
||||
s.CheckPeriod,
|
||||
utils.EncodeChecksum(s.CheckPeriodId),
|
||||
utils.EncodeChecksumOrNil(s.CheckPeriodId),
|
||||
s.CheckTimeout,
|
||||
s.CheckInterval,
|
||||
s.CheckRetryInterval,
|
||||
|
|
@ -131,17 +131,17 @@ func (s *Service) UpdateValues() []interface{} {
|
|||
s.FlappingThresholdHigh,
|
||||
utils.Bool[s.PerfdataEnabled],
|
||||
s.Eventcommand,
|
||||
utils.EncodeChecksum(s.EventcommandId),
|
||||
utils.EncodeChecksumOrNil(s.EventcommandId),
|
||||
utils.Bool[s.IsVolatile],
|
||||
utils.EncodeChecksum(s.ActionUrlId),
|
||||
utils.EncodeChecksum(s.NotesUrlId),
|
||||
utils.EncodeChecksumOrNil(s.ActionUrlId),
|
||||
utils.EncodeChecksumOrNil(s.NotesUrlId),
|
||||
s.Notes,
|
||||
utils.EncodeChecksum(s.IconImageId),
|
||||
utils.EncodeChecksumOrNil(s.IconImageId),
|
||||
s.IconImageAlt,
|
||||
s.Zone,
|
||||
utils.EncodeChecksum(s.ZoneId),
|
||||
utils.EncodeChecksumOrNil(s.ZoneId),
|
||||
s.CommandEndpoint,
|
||||
utils.EncodeChecksum(s.CommandEndpointId),
|
||||
utils.EncodeChecksumOrNil(s.CommandEndpointId),
|
||||
)
|
||||
|
||||
return v
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ func (s *ServiceState) UpdateValues() []interface{} {
|
|||
utils.Bool[s.IsFlapping],
|
||||
utils.Bool[time.Now().After(utils.MillisecsToTime(float64(s.NextUpdate)))],
|
||||
utils.IsAcknowledged[s.Acknowledgement],
|
||||
utils.EncodeChecksum(s.AcknowledgementCommentId),
|
||||
utils.EncodeChecksumOrNil(s.AcknowledgementCommentId),
|
||||
utils.Bool[s.InDowntime],
|
||||
s.ExecutionTime,
|
||||
s.Latency,
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ func (s *Servicegroup) UpdateValues() []interface{} {
|
|||
s.Name,
|
||||
s.NameCi,
|
||||
s.DisplayName,
|
||||
utils.EncodeChecksum(s.ZoneId),
|
||||
utils.EncodeChecksumOrNil(s.ZoneId),
|
||||
)
|
||||
|
||||
return v
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ func (t *Timeperiod) UpdateValues() []interface{} {
|
|||
t.NameCi,
|
||||
t.DisplayName,
|
||||
utils.Bool[t.PreferIncludes],
|
||||
utils.EncodeChecksum(t.ZoneId),
|
||||
utils.EncodeChecksumOrNil(t.ZoneId),
|
||||
)
|
||||
|
||||
return v
|
||||
|
|
|
|||
|
|
@ -72,10 +72,10 @@ func (u *User) UpdateValues() []interface{} {
|
|||
u.EMail,
|
||||
u.Pager,
|
||||
utils.Bool[u.NotificationsEnabled],
|
||||
utils.EncodeChecksum(u.PeriodId),
|
||||
utils.EncodeChecksumOrNil(u.PeriodId),
|
||||
utils.NotificationStatesToBitMask(u.States),
|
||||
utils.NotificationTypesToBitMask(u.Types),
|
||||
utils.EncodeChecksum(u.ZoneId),
|
||||
utils.EncodeChecksumOrNil(u.ZoneId),
|
||||
)
|
||||
|
||||
return v
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ func (u *Usergroup) UpdateValues() []interface{} {
|
|||
u.Name,
|
||||
u.NameCi,
|
||||
u.DisplayName,
|
||||
utils.EncodeChecksum(u.ZoneId),
|
||||
utils.EncodeChecksumOrNil(u.ZoneId),
|
||||
)
|
||||
|
||||
return v
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ func (z *Zone) UpdateValues() []interface{} {
|
|||
z.Name,
|
||||
z.NameCi,
|
||||
utils.Bool[z.IsGlobal],
|
||||
utils.EncodeChecksum(z.ParentId),
|
||||
utils.EncodeChecksumOrNil(z.ParentId),
|
||||
z.Depth,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ package ha
|
|||
|
||||
import (
|
||||
"crypto/sha1"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/Icinga/icingadb/connection"
|
||||
|
|
@ -24,7 +23,7 @@ type Environment struct {
|
|||
type Icinga2Info struct {
|
||||
Version string
|
||||
ProgramStart float64
|
||||
EndpointId []byte
|
||||
EndpointId interface{}
|
||||
NotificationsEnabled bool
|
||||
ActiveServiceChecksEnabled bool
|
||||
ActiveHostChecksEnabled bool
|
||||
|
|
@ -107,11 +106,7 @@ func IcingaHeartbeatListener(rdb *connection.RDBWrapper, chEnv chan *Environment
|
|||
},
|
||||
}
|
||||
|
||||
if app.EndpointId != "" {
|
||||
if unHex, errHD := hex.DecodeString(app.EndpointId); errHD == nil {
|
||||
env.Icinga2.EndpointId = unHex
|
||||
}
|
||||
}
|
||||
env.Icinga2.EndpointId = utils.EncodeChecksumOrNil(app.EndpointId)
|
||||
|
||||
chEnv <- env
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,6 +73,15 @@ func EncodeChecksum(s string) []byte {
|
|||
return c
|
||||
}
|
||||
|
||||
// EncodeChecksumOrNil converts a hex string to a byte array – or to nil if empty.
|
||||
func EncodeChecksumOrNil(s string) interface{} {
|
||||
if s == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
return EncodeChecksum(s)
|
||||
}
|
||||
|
||||
// DecodeHexIfNotNil converts a hex string to a byte array.
|
||||
func DecodeHexIfNotNil(hexStr interface{}) interface{} {
|
||||
if hexStr == nil {
|
||||
|
|
|
|||
Loading…
Reference in a new issue