Documentation
¶
Index ¶
Constants ¶
const ( KindSLO = "SLO" KindService = "Service" )
Possible values of field kind for valid Objects.
const (
APIVersion = "openslo/v1alpha"
)
APIVersion is a value of valid apiVersions.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Calendar ¶
type Calendar struct {
StartTime string `yaml:"startTime" validate:"required,dateWithTime" example:"2020-01-21 12:30:00"`
TimeZone string `yaml:"timeZone" validate:"required,timeZone" example:"America/New_York"`
}
Calendar struct represents calendar time window.
type Indicator ¶
type Indicator struct {
ThresholdMetric MetricSourceSpec `yaml:"thresholdMetric" validate:"required"`
}
Indicator represents integration with metric source.
type MetricSourceSpec ¶
type MetricSourceSpec struct {
Source string `yaml:"source" validate:"required,alpha"`
QueryType string `yaml:"queryType" validate:"required,alpha"`
Query string `yaml:"query" validate:"required"`
}
MetricSourceSpec represents the metric source.
type Objective ¶
type Objective struct {
ObjectiveBase `yaml:",inline"`
RatioMetrics *RatioMetrics `yaml:"ratioMetrics"`
BudgetTarget *float64 `yaml:"target" validate:"required,numeric,gte=0,lt=1" example:"0.9"`
TimeSliceTarget *float64 `yaml:"timeSliceTarget,omitempty" example:"0.9"`
Operator *string `yaml:"op,omitempty" example:"lte"`
}
Objective represents single threshold for SLO, for internal usage.
type ObjectiveBase ¶
type ObjectiveBase struct {
DisplayName string `yaml:"displayName" validate:"max=1050" example:"Good"`
Value float64 `yaml:"value" validate:"numeric" example:"100"`
}
ObjectiveBase base structure representing a threshold.
type OpenSLOKind ¶
type OpenSLOKind interface {
Kind() string
}
OpenSLOKind represents a type of object described by OpenSLO.
func Parse ¶
func Parse(fileContent []byte, m manifest.ObjectGeneric, filename string) (OpenSLOKind, error)
Parse is responsible for parsing all structs in this apiVersion.
type RatioMetrics ¶ added in v0.3.0
type RatioMetrics struct {
Good MetricSourceSpec `yaml:"good" validate:"required"`
Total MetricSourceSpec `yaml:"total" validate:"required"`
Incremental bool `yaml:"incremental" example:"true"`
}
type SLO ¶
type SLO struct {
manifest.ObjectHeader `yaml:",inline"`
Spec SLOSpec `yaml:"spec"`
}
SLO struct which mapped one to one with kind: slo yaml definition, external usage.
type SLOSpec ¶
type SLOSpec struct {
TimeWindows []TimeWindow `yaml:"timeWindows" validate:"required,len=1,dive"`
BudgetingMethod string `yaml:"budgetingMethod" validate:"required,oneof=Occurrences Timeslices" example:"Occurrences"` //nolint: lll
Description string `yaml:"description" validate:"max=1050" example:"Total count of server requests"`
Indicator *Indicator `yaml:"indicator"`
Service string `yaml:"service" validate:"required" example:"webapp-service"`
Objectives []Objective `json:"objectives" validate:"required,dive"`
}
SLOSpec represents content of Spec typical for SLO Object.
type Service ¶
type Service struct {
manifest.ObjectHeader `yaml:",inline"`
Spec ServiceSpec `yaml:"spec"`
}
Service struct which mapped one to one with kind: service yaml definition.
type ServiceSpec ¶
type ServiceSpec struct {
Description string `yaml:"description" validate:"max=1050" example:"Bleeding edge web app"`
}
ServiceSpec represents content of Spec typical for Service Object.
type TimeWindow ¶
type TimeWindow struct {
Unit string `yaml:"unit" validate:"required,oneof=Second Quarter Month Week Day" example:"Week"`
Count int `yaml:"count" validate:"required,gt=0" example:"1"`
IsRolling bool `yaml:"isRolling" example:"true"`
Calendar *Calendar `yaml:"calendar,omitempty"`
}
TimeWindow represents content of time window.