// Copyright 2015 The Prometheus Authors// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at//// http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.package modelimport ()// Matcher describes a matches the value of a given label.typeMatcherstruct { Name LabelName`json:"name"` Value string`json:"value"` IsRegex bool`json:"isRegex"`}func ( *Matcher) ( []byte) error {typeMatcherif := json.Unmarshal(, (*)()); != nil {return }iflen(.Name) == 0 {returnerrors.New("label name in matcher must not be empty") }if .IsRegex {if , := regexp.Compile(.Value); != nil {return } }returnnil}// Validate returns true iff all fields of the matcher have valid values.func ( *Matcher) () error {if !.Name.IsValid() {returnfmt.Errorf("invalid name %q", .Name) }if .IsRegex {if , := regexp.Compile(.Value); != nil {returnfmt.Errorf("invalid regular expression %q", .Value) } } elseif !LabelValue(.Value).IsValid() || len(.Value) == 0 {returnfmt.Errorf("invalid value %q", .Value) }returnnil}// Silence defines the representation of a silence definition in the Prometheus// eco-system.typeSilencestruct { ID uint64`json:"id,omitempty"` Matchers []*Matcher`json:"matchers"` StartsAt time.Time`json:"startsAt"` EndsAt time.Time`json:"endsAt"` CreatedAt time.Time`json:"createdAt,omitempty"` CreatedBy string`json:"createdBy"` Comment string`json:"comment,omitempty"`}// Validate returns true iff all fields of the silence have valid values.func ( *Silence) () error {iflen(.Matchers) == 0 {returnerrors.New("at least one matcher required") }for , := range .Matchers {if := .Validate(); != nil {returnfmt.Errorf("invalid matcher: %w", ) } }if .StartsAt.IsZero() {returnerrors.New("start time missing") }if .EndsAt.IsZero() {returnerrors.New("end time missing") }if .EndsAt.Before(.StartsAt) {returnerrors.New("start time must be before end time") }if .CreatedBy == "" {returnerrors.New("creator information missing") }if .Comment == "" {returnerrors.New("comment missing") }if .CreatedAt.IsZero() {returnerrors.New("creation timestamp missing") }returnnil}
The pages are generated with Goldsv0.8.2. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds.