Documentation
¶
Overview ¶
Package openslosdk provides utilities for working with openslo.Object.
Index ¶
- func Decode(r io.Reader, format ObjectFormat) ([]openslo.Object, error)
- func Encode(out io.Writer, format ObjectFormat, objects ...openslo.Object) error
- func FilterByType[T openslo.Object](objects []openslo.Object) []T
- func Validate(objects ...openslo.Object) error
- type ObjectFormat
- type ReferenceConfig
- type ReferenceConfigV1
- type ReferenceConfigV1AlertPolicy
- type ReferenceConfigV1SLO
- type ReferenceExporter
- type ReferenceInliner
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Decode ¶
Decode reads objects from io.Reader and decodes them, according to the provided ObjectFormat, into a slice of openslo.Object.
func Encode ¶
Encode writes the provided openslo.Object to io.Writer, according to the provided ObjectFormat.
func FilterByType ¶ added in v0.6.0
FilterByType filters openslo.Object slice and returns its subset matching the type constraint. You can use it to filter:
Types ¶
type ObjectFormat ¶
type ObjectFormat int
ObjectFormat represents the serialization format of openslo.Object.
const ( FormatYAML ObjectFormat = iota + 1 FormatJSON )
func (ObjectFormat) String ¶
func (f ObjectFormat) String() string
String implements the fmt.Stringer interface.
func (ObjectFormat) Validate ¶
func (f ObjectFormat) Validate() error
Validate checks if ObjectFormat is supported.
type ReferenceConfig ¶ added in v0.5.0
type ReferenceConfig struct {
V1 ReferenceConfigV1
}
ReferenceConfig configures openslo.Object references resolution. It is used both by ReferenceInliner and ReferenceExporter. By default, all references are resolved.
type ReferenceConfigV1 ¶ added in v0.5.0
type ReferenceConfigV1 struct {
SLO ReferenceConfigV1SLO
AlertPolicy ReferenceConfigV1AlertPolicy
}
ReferenceConfigV1 configures openslo.VersionV1 references resolution.
type ReferenceConfigV1AlertPolicy ¶ added in v0.5.0
type ReferenceConfigV1AlertPolicy struct {
// AlertPolicy controls whether [openslo.KindAlertCondition] references should be resolved.
AlertCondition bool
// AlertPolicy controls whether [openslo.KindAlertNotificationTarget] references should be resolved.
AlertNotificationTarget bool
}
ReferenceConfigV1AlertPolicy configures v1.AlertPolicy references resolution.
type ReferenceConfigV1SLO ¶ added in v0.5.0
type ReferenceConfigV1SLO struct {
// AlertPolicy controls whether [openslo.KindAlertPolicy] references should be resolved.
AlertPolicy bool
// SLI controls whether [openslo.KindSLI] references should be resolved.
SLI bool
}
ReferenceConfigV1SLO configures v1.SLO references resolution.
type ReferenceExporter ¶ added in v0.4.0
type ReferenceExporter struct {
// contains filtered or unexported fields
}
func NewReferenceExporter ¶ added in v0.4.0
func NewReferenceExporter(objects ...openslo.Object) *ReferenceExporter
func (*ReferenceExporter) Export ¶ added in v0.4.0
func (r *ReferenceExporter) Export() []openslo.Object
Export replaces all the inlined objects with references and returns the original objects along with the exported, previously inlined, objects.
func (*ReferenceExporter) WithConfig ¶ added in v0.5.0
func (r *ReferenceExporter) WithConfig(config ReferenceConfig) *ReferenceExporter
WithConfig allows providing a custom ReferenceConfig which can help limit the exported definitions to a desired subset. Example:
// only export [v1.SLI] reference for [v1.SLO]
ReferenceConfig{
V1: ReferenceConfigV1{
SLO: &ReferenceConfigV1SLO{
SLI: true,
},
},
}
type ReferenceInliner ¶ added in v0.4.0
type ReferenceInliner struct {
// contains filtered or unexported fields
}
ReferenceInliner is a utility to inline referenced openslo.Object in referencing object(s).
func NewReferenceInliner ¶ added in v0.4.0
func NewReferenceInliner(objects ...openslo.Object) *ReferenceInliner
func (*ReferenceInliner) Inline ¶ added in v0.4.0
func (r *ReferenceInliner) Inline() ([]openslo.Object, error)
Inline finds all referenced objects in the provided slice of openslo.Object and replaces the references with an inlined version of the referenced openslo.Object. If the referenced object is not found in the provided openslo.Object slice, an error will be returned.
By default, it will not remove referenced objects from the result. If you want to remove referenced objects, you can use the ReferenceInliner.RemoveReferencedObjects option.
func (*ReferenceInliner) RemoveReferencedObjects ¶ added in v0.4.0
func (r *ReferenceInliner) RemoveReferencedObjects() *ReferenceInliner
RemoveReferencedObjects instructs ReferenceInliner to remove referenced objects from the result of ReferenceInliner.Inline.
func (*ReferenceInliner) WithConfig ¶ added in v0.5.0
func (r *ReferenceInliner) WithConfig(config ReferenceConfig) *ReferenceInliner
WithConfig allows providing a custom ReferenceConfig which can help limit the inlined references to a desired subset. Example:
// only inline [v1.SLI] reference for [v1.SLO]
ReferenceConfig{
V1: ReferenceConfigV1{
SLO: &ReferenceConfigV1SLO{
SLI: true,
},
},
}