mirror of
https://github.com/kemko/nomad.git
synced 2026-01-04 17:35:43 +03:00
This PR switches the Nomad repository from using govendor to Go modules for managing dependencies. Aspects of the Nomad workflow remain pretty much the same. The usual Makefile targets should continue to work as they always did. The API submodule simply defers to the parent Nomad version on the repository, keeping the semantics of API versioning that currently exists.
71 lines
2.0 KiB
Go
71 lines
2.0 KiB
Go
package statsd
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
// ServiceCheckStatus support
|
|
type ServiceCheckStatus byte
|
|
|
|
const (
|
|
// Ok is the "ok" ServiceCheck status
|
|
Ok ServiceCheckStatus = 0
|
|
// Warn is the "warning" ServiceCheck status
|
|
Warn ServiceCheckStatus = 1
|
|
// Critical is the "critical" ServiceCheck status
|
|
Critical ServiceCheckStatus = 2
|
|
// Unknown is the "unknown" ServiceCheck status
|
|
Unknown ServiceCheckStatus = 3
|
|
)
|
|
|
|
// A ServiceCheck is an object that contains status of DataDog service check.
|
|
type ServiceCheck struct {
|
|
// Name of the service check. Required.
|
|
Name string
|
|
// Status of service check. Required.
|
|
Status ServiceCheckStatus
|
|
// Timestamp is a timestamp for the serviceCheck. If not provided, the dogstatsd
|
|
// server will set this to the current time.
|
|
Timestamp time.Time
|
|
// Hostname for the serviceCheck.
|
|
Hostname string
|
|
// A message describing the current state of the serviceCheck.
|
|
Message string
|
|
// Tags for the serviceCheck.
|
|
Tags []string
|
|
}
|
|
|
|
// NewServiceCheck creates a new serviceCheck with the given name and status. Error checking
|
|
// against these values is done at send-time, or upon running sc.Check.
|
|
func NewServiceCheck(name string, status ServiceCheckStatus) *ServiceCheck {
|
|
return &ServiceCheck{
|
|
Name: name,
|
|
Status: status,
|
|
}
|
|
}
|
|
|
|
// Check verifies that a service check is valid.
|
|
func (sc ServiceCheck) Check() error {
|
|
if len(sc.Name) == 0 {
|
|
return fmt.Errorf("statsd.ServiceCheck name is required")
|
|
}
|
|
if byte(sc.Status) < 0 || byte(sc.Status) > 3 {
|
|
return fmt.Errorf("statsd.ServiceCheck status has invalid value")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Encode returns the dogstatsd wire protocol representation for a service check.
|
|
// Tags may be passed which will be added to the encoded output but not to
|
|
// the Service Check's list of tags, eg. for default tags.
|
|
func (sc ServiceCheck) Encode(tags ...string) (string, error) {
|
|
err := sc.Check()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
var buffer []byte
|
|
buffer = appendServiceCheck(buffer, sc, tags)
|
|
return string(buffer), nil
|
|
}
|