in api/v2/compat.go [82:117]
func PostableSilenceToProto(s *open_api_models.PostableSilence) (*silencepb.Silence, error) {
sil := &silencepb.Silence{
Id: s.ID,
StartsAt: time.Time(*s.StartsAt),
EndsAt: time.Time(*s.EndsAt),
Comment: *s.Comment,
CreatedBy: *s.CreatedBy,
}
for _, m := range s.Matchers {
matcher := &silencepb.Matcher{
Name: *m.Name,
Pattern: *m.Value,
}
isEqual := true
if m.IsEqual != nil {
isEqual = *m.IsEqual
}
isRegex := false
if m.IsRegex != nil {
isRegex = *m.IsRegex
}
switch {
case isEqual && !isRegex:
matcher.Type = silencepb.Matcher_EQUAL
case !isEqual && !isRegex:
matcher.Type = silencepb.Matcher_NOT_EQUAL
case isEqual && isRegex:
matcher.Type = silencepb.Matcher_REGEXP
case !isEqual && isRegex:
matcher.Type = silencepb.Matcher_NOT_REGEXP
}
sil.Matchers = append(sil.Matchers, matcher)
}
return sil, nil
}