openslosdk

package
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 9, 2025 License: Apache-2.0 Imports: 16 Imported by: 2

Documentation

Overview

Package openslosdk provides utilities for working with openslo.Object.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Decode

func Decode(r io.Reader, format ObjectFormat) ([]openslo.Object, error)

Decode reads objects from io.Reader and decodes them, according to the provided ObjectFormat, into a slice of openslo.Object.

func Encode

func Encode(out io.Writer, format ObjectFormat, objects ...openslo.Object) error

Encode writes the provided openslo.Object to io.Writer, according to the provided ObjectFormat.

func FilterByType added in v0.6.0

func FilterByType[T openslo.Object](objects []openslo.Object) []T

FilterByType filters openslo.Object slice and returns its subset matching the type constraint. You can use it to filter:

func Validate

func Validate(objects ...openslo.Object) error

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,
			},
		},
	}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL