v1alpha1

package
v0.14.0 Latest Latest
Warning

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

Go to latest
Published: Oct 2, 2023 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Overview

Package v1alpha1 contains the API Schema definitions for Timoni API. +kubebuilder:object:generate=true

Index

Constants

View Source
const (
	EnabledValue  = "enabled"
	DisabledValue = "disabled"
)
View Source
const (
	// ArtifactPrefix is the prefix used for OpenContainers artifact address.
	ArtifactPrefix = "oci://"

	// UserAgent is the agent name used for OpenContainers artifact operations.
	UserAgent = "timoni/v1"

	// ConfigMediaType is the OpenContainers artifact media type for the config layer.
	ConfigMediaType = "application/vnd.timoni.config.v1+json"

	// ContentMediaType is the OpenContainers artifact media type for the content layer.
	ContentMediaType = "application/vnd.timoni.content.v1.tar+gzip"

	// ContentTypeAnnotation is the annotation key used on OpenContainers artifact
	// layers for specified the type of content included in the tarball.
	ContentTypeAnnotation = "sh.timoni.content.type"

	// AnyContentType is the default value of ContentTypeAnnotation.
	AnyContentType = ""

	// TimoniModContentType is the value of ContentTypeAnnotation for setting the
	// layer type to Timoni module content.
	TimoniModContentType = "module"

	// TimoniModVendorContentType is the value of ContentTypeAnnotation for setting the
	// layer type to Timoni module vendored CUE schemas.
	TimoniModVendorContentType = "module/vendor"

	// CueModGenContentType is the value of ContentTypeAnnotation for setting the
	// content to CUE generated schemas.
	CueModGenContentType = "cue.mod/gen"

	// CueModPkgContentType is the value of ContentTypeAnnotation for setting the
	// content to CUE schemas.
	CueModPkgContentType = "cue.mod/pkg"

	// SourceAnnotation is the OpenContainers annotation for specifying
	// the upstream source URL of an artifact.
	SourceAnnotation = "org.opencontainers.image.source"

	// RevisionAnnotation is the OpenContainers annotation for specifying
	// the upstream source revision of an artifact.
	RevisionAnnotation = "org.opencontainers.image.revision"

	// VersionAnnotation is the OpenContainers annotation for specifying
	// the semantic version of an artifact.
	VersionAnnotation = "org.opencontainers.image.version"

	// CreatedAnnotation is the OpenContainers annotation for specifying
	// the build date and time on an artifact (RFC 3339).
	CreatedAnnotation = "org.opencontainers.image.created"
)
View Source
const (
	IgnoreFile            = "timoni.ignore"
	DefaultIgnorePatterns = `# VCS
.git/
.gitignore
.gitmodules
.gitattributes

# Go
vendor/
go.mod
go.sum

# CUE
*_tool.cue
debug_values.cue
`
)
View Source
const (
	// RuntimeKind is the name of the Timoni runtime CUE attributes.
	RuntimeKind string = "runtime"

	// RuntimeDelimiter is the delimiter used in Timoni runtime CUE attributes.
	RuntimeDelimiter string = ":"

	// RuntimePIVersionSelector is the CUE path for the Timoni's runtime API version.
	RuntimePIVersionSelector Selector = "runtime.apiVersion"

	// RuntimeName is the CUE path for the Timoni's bundle name.
	RuntimeName Selector = "runtime.name"

	// RuntimeValuesSelector is the CUE path for the Timoni's runtime values.
	RuntimeValuesSelector Selector = "runtime.values"
)
View Source
const BundleSchema = `` /* 569-byte string literal not displayed */

BundleSchema defines the v1alpha1 CUE schema for Timoni's bundle API. TODO: switch to go:embed when this is available https://github.com/cue-lang/cue/issues/607

View Source
const InstanceSchema = `` /* 133-byte string literal not displayed */

InstanceSchema defines the v1alpha1 CUE schema for Timoni's instance API.

View Source
const LatestVersion = "latest"

LatestVersion is the tag name that denotes the latest stable version of a module.

View Source
const RuntimeSchema = `` /* 395-byte string literal not displayed */

RuntimeSchema defines the v1alpha1 CUE schema for Timoni's runtime API.

Variables

View Source
var (
	// PruneAction is the annotation that defines if a Kubernetes resource should be garbage collected.
	PruneAction = fmt.Sprintf("action.%s/prune", GroupVersion.Group)

	// ForceAction is the annotation that defines if a Kubernetes resource should be recreated.
	ForceAction = fmt.Sprintf("action.%s/force", GroupVersion.Group)

	// IfNotPresentAction is the annotation that defines if a Kubernetes resource
	// should be applied only if it doesn't exist on the cluster.
	IfNotPresentAction = fmt.Sprintf("action.%s/one-off", GroupVersion.Group)
)
View Source
var (
	// GroupVersion is the group version of Timoni's APIs.
	GroupVersion = schema.GroupVersion{Group: "timoni.sh", Version: "v1alpha1"}

	// InstanceKind is the kind name of the Instance type.
	InstanceKind = "Instance"

	// FieldManager is the name of the manager performing Kubernetes patch operations.
	FieldManager = "timoni"
)

Functions

func IsRuntimeAttribute added in v0.13.0

func IsRuntimeAttribute(key, body string) bool

IsRuntimeAttribute returns true if the given CUE attribute matches the expected format.

Types

type ArtifactReference added in v0.14.0

type ArtifactReference struct {
	// Repository is the OpenContainers artifact repo name in the format
	// 'oci://<reg.host>/<org>/<repo>'.
	Repository string `json:"repository"`

	// Tag is the OpenContainers artifact tag name.
	Tag string `json:"tag"`

	// Digest of the OpenContainers artifact in the format '<sha-type>:<hex>'.
	Digest string `json:"digest"`
}

ArtifactReference contains the information necessary to locate an artifact in the container registry.

func (*ArtifactReference) DeepCopy added in v0.14.0

func (in *ArtifactReference) DeepCopy() *ArtifactReference

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArtifactReference.

func (*ArtifactReference) DeepCopyInto added in v0.14.0

func (in *ArtifactReference) DeepCopyInto(out *ArtifactReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Instance

type Instance struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// Module is a reference to the module's artifact in the registry.
	Module ModuleReference `json:"module"`

	// Values is the module configuration.
	// +optional
	Values string `json:"values,omitempty"`

	// LastTransitionTime is the timestamp (UTC RFC3339) of the last inventory change.
	// +optional
	LastTransitionTime string `json:"lastTransitionTime,omitempty"`

	// Inventory contains the list of Kubernetes resource object references.
	// +optional
	Inventory *ResourceInventory `json:"inventory,omitempty"`
}

Instance holds the information about the module, values and the list of the managed Kubernetes resources.

func (*Instance) DeepCopy

func (in *Instance) DeepCopy() *Instance

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Instance.

func (*Instance) DeepCopyInto

func (in *Instance) DeepCopyInto(out *Instance)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ModuleReference

type ModuleReference struct {
	// Name of the module.
	Name string `json:"name"`

	// Repository is the OCI artifact repo name in the format
	// 'oci://<reg.host>/<org>/<repo>'.
	Repository string `json:"repository"`

	// Version is the OCI artifact tag in strict semver format.
	Version string `json:"version"`

	// Digest of the OCI artifact in the format '<sha-type>:<hex>'.
	Digest string `json:"digest"`
}

ModuleReference contains the information necessary to locate a module's OCI artifact in the registry.

func (*ModuleReference) DeepCopy

func (in *ModuleReference) DeepCopy() *ModuleReference

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModuleReference.

func (*ModuleReference) DeepCopyInto

func (in *ModuleReference) DeepCopyInto(out *ModuleReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceInventory

type ResourceInventory struct {
	// Entries of Kubernetes resource object references.
	Entries []ResourceRef `json:"entries"`
}

ResourceInventory contains a list of Kubernetes resource object references managed by an Instance.

func (*ResourceInventory) DeepCopy

func (in *ResourceInventory) DeepCopy() *ResourceInventory

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceInventory.

func (*ResourceInventory) DeepCopyInto

func (in *ResourceInventory) DeepCopyInto(out *ResourceInventory)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceRef

type ResourceRef struct {
	// ID is the string representation of the Kubernetes resource object's metadata,
	// in the format '<namespace>_<name>_<group>_<kind>'.
	ID string `json:"id"`

	// Version is the API version of the Kubernetes resource object's kind.
	Version string `json:"v"`
}

ResourceRef contains the information necessary to locate a Kubernetes resource object within a cluster.

func (*ResourceRef) DeepCopy

func (in *ResourceRef) DeepCopy() *ResourceRef

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceRef.

func (*ResourceRef) DeepCopyInto

func (in *ResourceRef) DeepCopyInto(out *ResourceRef)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Runtime added in v0.13.0

type Runtime struct {
	// Name of the runtime.
	Name string `json:"name"`

	// Refs is the list of in-cluster resource references.
	Refs []RuntimeResourceRef `json:"refs"`
}

Runtime holds the list of in-cluster resources and the CUE expressions for extracting specific fields values.

func (*Runtime) DeepCopy added in v0.13.0

func (in *Runtime) DeepCopy() *Runtime

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Runtime.

func (*Runtime) DeepCopyInto added in v0.13.0

func (in *Runtime) DeepCopyInto(out *Runtime)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimeAttribute added in v0.13.0

type RuntimeAttribute struct {
	Name string
	Type string
}

RuntimeAttribute holds the runtime var name and type.

func NewRuntimeAttribute added in v0.13.0

func NewRuntimeAttribute(key, body string) (*RuntimeAttribute, error)

NewRuntimeAttribute returns a RuntimeAttribute from the given CUE attribute. If the CUE attribute doesn't match the expected format '@timoni(runtime:[TYPE]:[NAME])', an error is returned.

func (*RuntimeAttribute) DeepCopy added in v0.13.0

func (in *RuntimeAttribute) DeepCopy() *RuntimeAttribute

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeAttribute.

func (*RuntimeAttribute) DeepCopyInto added in v0.13.0

func (in *RuntimeAttribute) DeepCopyInto(out *RuntimeAttribute)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimeResourceRef added in v0.13.0

type RuntimeResourceRef struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata"`

	Expressions map[string]string `json:"selector"`
	Optional    bool              `json:"optional"`
}

RuntimeResourceRef holds the data needed to query the fields of a Kubernetes resource using CUE expressions.

func (*RuntimeResourceRef) DeepCopy added in v0.13.0

func (in *RuntimeResourceRef) DeepCopy() *RuntimeResourceRef

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeResourceRef.

func (*RuntimeResourceRef) DeepCopyInto added in v0.13.0

func (in *RuntimeResourceRef) DeepCopyInto(out *RuntimeResourceRef)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimeValue added in v0.13.0

type RuntimeValue struct {
	// Query in the format 'k8s:<apiVersion>:<kind>:<namespace>:<name>'.
	Query string `json:"query"`

	// For is a map with key values in the format '<name>: <CUE expression>'.
	For map[string]string `json:"for"`

	// Optional is a flag for ignoring not found resources.
	Optional bool `json:"optional"`
}

RuntimeValue holds the query information for in-cluster values.

func (*RuntimeValue) DeepCopy added in v0.13.0

func (in *RuntimeValue) DeepCopy() *RuntimeValue

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeValue.

func (*RuntimeValue) DeepCopyInto added in v0.13.0

func (in *RuntimeValue) DeepCopyInto(out *RuntimeValue)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RuntimeValue) ToResourceRef added in v0.13.0

func (rv *RuntimeValue) ToResourceRef() (*RuntimeResourceRef, error)

ToResourceRef converts the RuntimeValue to a RuntimeResourceRef by parsing the query data.

type Selector added in v0.0.6

type Selector string

Selector is an enumeration of the supported CUE paths known to Timoni.

const (
	// BundleAPIVersionSelector is the CUE path for the Timoni's bundle API version.
	BundleAPIVersionSelector Selector = "bundle.apiVersion"

	// BundleName is the CUE path for the Timoni's bundle name.
	BundleName Selector = "bundle.name"

	// BundleInstancesSelector is the CUE path for the Timoni's bundle instances.
	BundleInstancesSelector Selector = "bundle.instances"

	// BundleModuleURLSelector is the CUE path for the Timoni's bundle module url.
	BundleModuleURLSelector Selector = "module.url"

	// BundleModuleVersionSelector is the CUE path for the Timoni's bundle module version.
	BundleModuleVersionSelector Selector = "module.version"

	// BundleModuleDigestSelector is the CUE path for the Timoni's bundle module digest.
	BundleModuleDigestSelector Selector = "module.digest"

	// BundleNamespaceSelector is the CUE path for the Timoni's bundle instance namespace.
	BundleNamespaceSelector Selector = "namespace"

	// BundleValuesSelector is the CUE path for the Timoni's bundle instance values.
	BundleValuesSelector Selector = "values"

	// BundleNameLabelKey is the Kubernetes label key for tracking Timoni's bundle by name.
	BundleNameLabelKey = "bundle.timoni.sh/name"
)
const (
	// APIVersionSelector is the CUE path for the Timoni's API version.
	APIVersionSelector Selector = "timoni.apiVersion"

	// ApplySelector is the CUE path for the Timoni's apply resource sets.
	ApplySelector Selector = "timoni.apply"

	// ValuesSelector is the CUE path for the Timoni's module values.
	ValuesSelector Selector = "values"
)

func (Selector) String added in v0.0.6

func (s Selector) String() string

String returns the string representation of the Selector.

Jump to

Keyboard shortcuts

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