Help us shape the future of Go! Take the 2026 Go Developer Survey

v1alpha1

package
v0.0.0-...-9809689 Latest Latest
Warning

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

Go to latest
Published: Oct 23, 2026 License: Apache-2.0 Imports: 3 Imported by: 9

Documentation

Overview

Package v1alpha1 is the v1alpha1 version of the API.

Index

Constants

View Source
const (
	// BGPVIPConfigRendered is set by the machine-config-operator when the
	// per-node peer configuration reflecting the current spec generation
	// has been rendered.
	BGPVIPConfigRendered = "Rendered"
	// BGPVIPConfigSessionsConfigured is set by the cluster-network-operator
	// when the FRR session configuration reflecting the current spec has
	// been rendered for application. It does not assert admission-webhook
	// acceptance or on-node application of the generated FRRConfiguration.
	BGPVIPConfigSessionsConfigured = "SessionsConfigured"
)

Variables

View Source
var (
	GroupName    = "machineconfiguration.openshift.io"
	GroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}

	// Install is a function which adds this version to a scheme
	Install = schemeBuilder.AddToScheme

	// SchemeGroupVersion generated code relies on this name
	// Deprecated
	SchemeGroupVersion = GroupVersion
	// AddToScheme exists solely to keep the old generators creating valid code
	// DEPRECATED
	AddToScheme = schemeBuilder.AddToScheme
)

Functions

func Kind

func Kind(kind string) schema.GroupKind

Kind is used to validate existence of a resource kind in this API group

func Resource

func Resource(resource string) schema.GroupResource

Resource generated code relies on this being here, but it logically belongs to the group DEPRECATED

Types

type BGPCommunity

type BGPCommunity string

BGPCommunity is a BGP community string: colon-separated decimal numbers without leading zeros - "n:n" for a classic community (RFC 1997, 16-bit segments of at least 0 and not exceeding 65535) or "n:n:n" for a large community (RFC 8092, 32-bit segments of at least 0 and not exceeding 4294967295). Must be at least 3 characters in length and must not exceed 32 characters. +kubebuilder:validation:MinLength=3 +kubebuilder:validation:MaxLength=32 +kubebuilder:validation:XValidation:rule="self.matches('^(0|[1-9][0-9]*)(:(0|[1-9][0-9]*)){1,2}$')",message="must be a classic (n:n) or large (n:n:n) BGP community: colon-separated decimal numbers without leading zeros" +kubebuilder:validation:XValidation:rule="!self.matches('^(0|[1-9][0-9]*)(:(0|[1-9][0-9]*)){1,2}$') || (self.split(':').size() == 2 ? self.split(':').all(s, s.size() <= 5 && int(s) <= 65535) : self.split(':').all(s, s.size() <= 10 && int(s) <= 4294967295))",message="classic community (n:n) segments must be between 0 and 65535; large community (n:n:n) segments must be between 0 and 4294967295"

type BGPVIPConfig

type BGPVIPConfig struct {
	metav1.TypeMeta `json:",inline"`

	// metadata is the standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	// +required
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec is the desired BGP VIP peering configuration.
	// +required
	Spec BGPVIPConfigSpec `json:"spec,omitempty,omitzero"`

	// status reports the consumers' progress applying the configuration.
	// +optional
	Status BGPVIPConfigStatus `json:"status,omitempty,omitzero"`
}

BGPVIPConfig carries the BGP peering configuration for BGP-based VIP management (enhancement openshift/enhancements#1982). It is a singleton named "cluster", generated by the installer from platform.baremetal.bgpVIPConfig in the install-config, and may be edited day-2 to reconfigure peering. The configuration is rendered into node-level BGP configuration by its consumers, the machine-config-operator and the cluster-network-operator, which report their progress in status.

Compatibility level 4: No compatibility is provided, the API can change at any point for any reason. These capabilities should not be used by applications needing long term support.

func (*BGPVIPConfig) DeepCopy

func (in *BGPVIPConfig) DeepCopy() *BGPVIPConfig

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

func (*BGPVIPConfig) DeepCopyInto

func (in *BGPVIPConfig) DeepCopyInto(out *BGPVIPConfig)

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

func (*BGPVIPConfig) DeepCopyObject

func (in *BGPVIPConfig) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (BGPVIPConfig) OpenAPIModelName

func (in BGPVIPConfig) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (BGPVIPConfig) SwaggerDoc

func (BGPVIPConfig) SwaggerDoc() map[string]string

type BGPVIPConfigList

type BGPVIPConfigList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata"`
	Items           []BGPVIPConfig `json:"items"`
}

BGPVIPConfigList is a list of BGPVIPConfig resources.

Compatibility level 4: No compatibility is provided, the API can change at any point for any reason. These capabilities should not be used by applications needing long term support.

func (*BGPVIPConfigList) DeepCopy

func (in *BGPVIPConfigList) DeepCopy() *BGPVIPConfigList

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

func (*BGPVIPConfigList) DeepCopyInto

func (in *BGPVIPConfigList) DeepCopyInto(out *BGPVIPConfigList)

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

func (*BGPVIPConfigList) DeepCopyObject

func (in *BGPVIPConfigList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (BGPVIPConfigList) OpenAPIModelName

func (in BGPVIPConfigList) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (BGPVIPConfigList) SwaggerDoc

func (BGPVIPConfigList) SwaggerDoc() map[string]string

type BGPVIPConfigSpec

type BGPVIPConfigSpec struct {
	// localASN is the BGP autonomous system number (ASN) the cluster's BGP
	// speakers present to the configured peers. Use the ASN your network
	// administrator assigned to the cluster - the peer routers must expect
	// it or no session establishes; private-range ASNs (e.g. 64512-65534)
	// are typical for datacenter fabrics. Must be at least 1 and must not
	// exceed 4294967295.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=4294967295
	// +required
	LocalASN int64 `json:"localASN,omitempty"`

	// defaultPeers are the BGP peers every node establishes sessions with,
	// unless the node is named in hostOverrides. Must have at least 1 entry
	// and must not exceed 16 entries, unique by peerAddress.
	// +listType=map
	// +listMapKey=peerAddress
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=16
	// +required
	DefaultPeers []BGPVIPPeer `json:"defaultPeers,omitempty"`

	// communities are BGP community strings attached to the VIP
	// advertisements: "n:n" classic communities (RFC 1997) where each
	// segment is a 16-bit value of at least 0 and not exceeding 65535, or
	// "n:n:n" large communities (RFC 8092) where each segment is a 32-bit
	// value of at least 0 and not exceeding 4294967295. When omitted, no
	// communities are attached. Entries are unique; when set, must have at
	// least 1 entry and must not exceed 8 entries.
	// +listType=set
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=8
	// +optional
	Communities []BGPCommunity `json:"communities,omitempty"`

	// hostOverrides replaces (does not merge with) defaultPeers for the
	// named nodes. Only the per-node peer file rendered by the
	// machine-config-operator consumes overrides; the cluster-wide session
	// configuration rendered by the cluster-network-operator uses
	// defaultPeers. When omitted, all nodes use defaultPeers; when set, must
	// have at least 1 entry and must not exceed 256 entries, unique by
	// hostname.
	// +listType=map
	// +listMapKey=hostname
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=256
	// +optional
	HostOverrides []BGPVIPHostPeers `json:"hostOverrides,omitempty"`
}

BGPVIPConfigSpec describes the BGP peering used to advertise the API and Ingress VIPs.

func (*BGPVIPConfigSpec) DeepCopy

func (in *BGPVIPConfigSpec) DeepCopy() *BGPVIPConfigSpec

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

func (*BGPVIPConfigSpec) DeepCopyInto

func (in *BGPVIPConfigSpec) DeepCopyInto(out *BGPVIPConfigSpec)

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

func (BGPVIPConfigSpec) OpenAPIModelName

func (in BGPVIPConfigSpec) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (BGPVIPConfigSpec) SwaggerDoc

func (BGPVIPConfigSpec) SwaggerDoc() map[string]string

type BGPVIPConfigStatus

type BGPVIPConfigStatus struct {
	// conditions reports the state of processing the configuration; when
	// set, must have at least 1 entry and must not exceed 8 entries. Known
	// condition types are "Rendered" (the machine-config-operator has
	// rendered the per-node peer configuration) and "SessionsConfigured"
	// (the cluster-network-operator has rendered the FRR session
	// configuration for application). SessionsConfigured does not assert
	// that the generated FRRConfiguration was accepted by the frr-k8s
	// admission webhook or applied on the nodes. Each condition's
	// observedGeneration reports the generation of the spec most recently
	// processed by the operator that writes it.
	// +listType=map
	// +listMapKey=type
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=8
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

BGPVIPConfigStatus reports the consumers' progress applying the spec. +kubebuilder:validation:MinProperties=1

func (*BGPVIPConfigStatus) DeepCopy

func (in *BGPVIPConfigStatus) DeepCopy() *BGPVIPConfigStatus

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

func (*BGPVIPConfigStatus) DeepCopyInto

func (in *BGPVIPConfigStatus) DeepCopyInto(out *BGPVIPConfigStatus)

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

func (BGPVIPConfigStatus) OpenAPIModelName

func (in BGPVIPConfigStatus) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (BGPVIPConfigStatus) SwaggerDoc

func (BGPVIPConfigStatus) SwaggerDoc() map[string]string

type BGPVIPHostPeers

type BGPVIPHostPeers struct {
	// hostname of the node this override applies to, as a non-empty RFC
	// 1123 subdomain of at most 253 characters with dot-separated labels of
	// at most 63 characters each. It is compared verbatim against
	// the hostname the node resolves for itself (as rendered into the
	// per-node peer file), so a short name and its fully qualified form are
	// distinct entries and only the exact match applies.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:XValidation:rule="self.matches('^[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])?)*$')",message="hostname must be an RFC 1123 subdomain with labels of at most 63 characters"
	// +required
	Hostname string `json:"hostname,omitempty"`

	// peers replaces defaultPeers for this node. Must have at least 1 entry
	// and must not exceed 16 entries, unique by peerAddress.
	// +listType=map
	// +listMapKey=peerAddress
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=16
	// +required
	Peers []BGPVIPPeer `json:"peers,omitempty"`
}

BGPVIPHostPeers is a per-node replacement peer list.

func (*BGPVIPHostPeers) DeepCopy

func (in *BGPVIPHostPeers) DeepCopy() *BGPVIPHostPeers

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

func (*BGPVIPHostPeers) DeepCopyInto

func (in *BGPVIPHostPeers) DeepCopyInto(out *BGPVIPHostPeers)

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

func (BGPVIPHostPeers) OpenAPIModelName

func (in BGPVIPHostPeers) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (BGPVIPHostPeers) SwaggerDoc

func (BGPVIPHostPeers) SwaggerDoc() map[string]string

type BGPVIPPasswordSecret

type BGPVIPPasswordSecret struct {
	// name is the metadata.name of the referenced Secret in the
	// openshift-config namespace. Must be a non-empty RFC 1123 subdomain of
	// at most 253 characters, matching what Kubernetes accepts as a Secret
	// name.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:XValidation:rule="self.matches('^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$')",message="name must be a lowercase RFC 1123 subdomain"
	// +required
	Name string `json:"name,omitempty"`
}

BGPVIPPasswordSecret references a Secret in the openshift-config namespace by name.

func (*BGPVIPPasswordSecret) DeepCopy

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

func (*BGPVIPPasswordSecret) DeepCopyInto

func (in *BGPVIPPasswordSecret) DeepCopyInto(out *BGPVIPPasswordSecret)

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

func (BGPVIPPasswordSecret) OpenAPIModelName

func (in BGPVIPPasswordSecret) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (BGPVIPPasswordSecret) SwaggerDoc

func (BGPVIPPasswordSecret) SwaggerDoc() map[string]string

type BGPVIPPeer

type BGPVIPPeer struct {
	// peerAddress is the IP address of the BGP peer (IPv4 or IPv6) in
	// canonical form (lowercase, no leading zeros, IPv6 zero-compressed);
	// must be at least 2 characters in length and must not exceed 45
	// characters. The session's address family follows the address family
	// of this value. Canonical form is required so that two
	// spellings of one address cannot form duplicate peers.
	// +kubebuilder:validation:MinLength=2
	// +kubebuilder:validation:MaxLength=45
	// +kubebuilder:validation:XValidation:rule="isIP(self) && ip.isCanonical(self)",message="peerAddress must be a valid IP address in canonical form"
	// +required
	PeerAddress string `json:"peerAddress,omitempty"`

	// peerASN is the autonomous system number of the peer. Must be at
	// least 1 and must not exceed 4294967295.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=4294967295
	// +required
	PeerASN int64 `json:"peerASN,omitempty"`

	// passwordSecret references the Secret carrying the TCP MD5 password
	// (RFC 2385) for the session. The Secret must be of type
	// kubernetes.io/basic-auth, live in the openshift-config namespace, and
	// carry the password in its "password" key (at most 80 bytes, the
	// kernel's TCP MD5 limit). The Secret type, key, and size requirements
	// are not validated by the API server; the consumers validate them when
	// resolving the reference and must never surface the Secret contents in
	// status, events, or logs. Passwords are never stored in this API. When
	// omitted, the session is unauthenticated.
	// +optional
	PasswordSecret BGPVIPPasswordSecret `json:"passwordSecret,omitempty,omitzero"`

	// port is the TCP port of the BGP session; must be at least 1 and must
	// not exceed 65535. When omitted, port 179 is used.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	// +optional
	Port int32 `json:"port,omitempty"`

	// failureDetection determines how a failed peer is detected. When set
	// to "BFD", a BFD session is established with the peer and BGP reacts
	// to BFD failure detection. When set to "HoldTimer", failure detection
	// relies on the BGP hold timer alone. When omitted, failure detection
	// relies on the BGP hold timer.
	// +optional
	FailureDetection FailureDetectionMode `json:"failureDetection,omitempty"`

	// peerReachability describes how the peer is reached. When set to
	// "MultiHop", the session may be established with a peer several
	// router hops away. When set to "DirectlyConnected", the peer must be
	// on a directly connected network. When omitted, the peer must be
	// directly connected.
	// +optional
	PeerReachability PeerReachabilityMode `json:"peerReachability,omitempty"`

	// holdTimeSeconds is the BGP hold time in seconds; must be at least 3
	// (the RFC 4271 minimum for a non-zero hold time) and must not exceed
	// 65535. When omitted, no hold time is configured and the FRR default
	// (180 seconds) applies.
	// When both holdTimeSeconds and keepaliveTimeSeconds are set,
	// holdTimeSeconds must be at least 3 times keepaliveTimeSeconds.
	// +kubebuilder:validation:Minimum=3
	// +kubebuilder:validation:Maximum=65535
	// +optional
	HoldTimeSeconds int32 `json:"holdTimeSeconds,omitempty"`

	// keepaliveTimeSeconds is the BGP keepalive interval in seconds; must
	// be at least 1 and must not exceed 65535. When omitted, no keepalive
	// interval is configured and the FRR default (60 seconds) applies. When both
	// holdTimeSeconds and keepaliveTimeSeconds are set, holdTimeSeconds
	// must be at least 3 times keepaliveTimeSeconds.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	// +optional
	KeepaliveTimeSeconds int32 `json:"keepaliveTimeSeconds,omitempty"`
}

BGPVIPPeer describes one BGP peer. +kubebuilder:validation:XValidation:rule="!(has(self.holdTimeSeconds) && has(self.keepaliveTimeSeconds)) || self.holdTimeSeconds >= 3 * self.keepaliveTimeSeconds",message="holdTimeSeconds must be at least 3 times keepaliveTimeSeconds"

func (*BGPVIPPeer) DeepCopy

func (in *BGPVIPPeer) DeepCopy() *BGPVIPPeer

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

func (*BGPVIPPeer) DeepCopyInto

func (in *BGPVIPPeer) DeepCopyInto(out *BGPVIPPeer)

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

func (BGPVIPPeer) OpenAPIModelName

func (in BGPVIPPeer) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (BGPVIPPeer) SwaggerDoc

func (BGPVIPPeer) SwaggerDoc() map[string]string

type FailureDetectionMode

type FailureDetectionMode string

FailureDetectionMode describes what detects a failed BGP peer. +kubebuilder:validation:Enum:=BFD;HoldTimer

const (
	// FailureDetectionBFD backs the session with a BFD session for fast
	// failure detection.
	FailureDetectionBFD FailureDetectionMode = "BFD"
	// FailureDetectionHoldTimer relies on the BGP hold timer alone.
	FailureDetectionHoldTimer FailureDetectionMode = "HoldTimer"
)

type ImageDigestFormat

type ImageDigestFormat string

ImageDigestFormat is a type that conforms to the format host[:port][/namespace]/name@sha256:<digest>. The digest must be 64 characters long, and consist only of lowercase hexadecimal characters, a-f and 0-9. The length of the field must be between 1 to 447 characters. +kubebuilder:validation:MinLength=1 +kubebuilder:validation:MaxLength=447 +kubebuilder:validation:XValidation:rule=`(self.split('@').size() == 2 && self.split('@')[1].matches('^sha256:[a-f0-9]{64}$'))`,message="the OCI Image reference must end with a valid '@sha256:<digest>' suffix, where '<digest>' is 64 characters long" +kubebuilder:validation:XValidation:rule=`(self.split('@')[0].matches('^([a-zA-Z0-9-]+\\.)+[a-zA-Z0-9-]+(:[0-9]{2,5})?/([a-zA-Z0-9-_]{0,61}/)?[a-zA-Z0-9-_.]*?$'))`,message="the OCI Image name should follow the host[:port][/namespace]/name format, resembling a valid URL without the scheme"

type InternalReleaseImage

type InternalReleaseImage struct {
	metav1.TypeMeta `json:",inline"`

	// metadata is the standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	// +required
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec describes the configuration of this internal release image.
	// +required
	Spec InternalReleaseImageSpec `json:"spec,omitempty,omitzero"`

	// status describes the last observed state of this internal release image.
	// +optional
	Status InternalReleaseImageStatus `json:"status,omitempty,omitzero"`
}

InternalReleaseImage is used to keep track and manage a set of release bundles (OCP and OLM operators images) that are stored into the control planes nodes.

Compatibility level 4: No compatibility is provided, the API can change at any point for any reason. These capabilities should not be used by applications needing long term support. +openshift:compatibility-gen:level=4

func (*InternalReleaseImage) DeepCopy

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

func (*InternalReleaseImage) DeepCopyInto

func (in *InternalReleaseImage) DeepCopyInto(out *InternalReleaseImage)

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

func (*InternalReleaseImage) DeepCopyObject

func (in *InternalReleaseImage) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (InternalReleaseImage) OpenAPIModelName

func (in InternalReleaseImage) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (InternalReleaseImage) SwaggerDoc

func (InternalReleaseImage) SwaggerDoc() map[string]string

type InternalReleaseImageBundleStatus

type InternalReleaseImageBundleStatus struct {
	// conditions represent the observations of an internal release image current state. Valid types are:
	// Mounted, Installing, Available, Removing and Degraded.
	//
	// If Mounted is true, that means that a valid ISO has been discovered and mounted on one of the cluster nodes.
	// If Installing is true, that means that a new release bundle is currently being copied on one (or more) cluster nodes, and not yet completed.
	// If Available is true, it means that the release has been previously installed on all the cluster nodes, and it can be used.
	// If Removing is true, it means that a release deletion is in progress on one (or more) cluster nodes, and not yet completed.
	// If Degraded is true, that means something has gone wrong (possibly on one or more cluster nodes).
	//
	// In general, after installing a new release bundle, it is required to wait for the Conditions "Available" to become "True" (and all
	// the other conditions to be equal to "False") before being able to pull its content.
	//
	// +listType=map
	// +listMapKey=type
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=5
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
	// name indicates the desired release bundle identifier. This field is required and must be between 1 and 64 characters long.
	// The expected name format is ocp-release-bundle-<version>-<arch|stream>.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=64
	// +kubebuilder:validation:XValidation:rule=`self.matches('^ocp-release-bundle-[0-9]+\\.[0-9]+\\.[0-9]+-[A-Za-z0-9._-]+$')`,message="must be ocp-release-bundle-<version>-<arch|stream> and <= 64 chars"
	// +required
	Name string `json:"name,omitempty"`
	// image is an OCP release image referenced by digest.
	// The format of the image pull spec is: host[:port][/namespace]/name@sha256:<digest>,
	// where the digest must be 64 characters long, and consist only of lowercase hexadecimal characters, a-f and 0-9.
	// The length of the whole spec must be between 1 to 447 characters.
	// The field is optional, and it will be provided after a release will be successfully installed.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=447
	// +kubebuilder:validation:XValidation:rule=`(self.split('@').size() == 2 && self.split('@')[1].matches('^sha256:[a-f0-9]{64}$'))`,message="the OCI Image reference must end with a valid '@sha256:<digest>' suffix, where '<digest>' is 64 characters long"
	// +kubebuilder:validation:XValidation:rule=`(self.split('@')[0].matches('^([a-zA-Z0-9-]+\\.)+[a-zA-Z0-9-]+(:[0-9]{2,5})?/([a-zA-Z0-9-_]{0,61}/)?[a-zA-Z0-9-_.]*?$'))`,message="the OCI Image name should follow the host[:port][/namespace]/name format, resembling a valid URL without the scheme"
	// +optional
	Image string `json:"image,omitempty"`
}

func (*InternalReleaseImageBundleStatus) DeepCopy

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

func (*InternalReleaseImageBundleStatus) DeepCopyInto

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

func (InternalReleaseImageBundleStatus) OpenAPIModelName

func (in InternalReleaseImageBundleStatus) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (InternalReleaseImageBundleStatus) SwaggerDoc

type InternalReleaseImageConditionType

type InternalReleaseImageConditionType string

InternalReleaseImageConditionType is each possible state for each possible InternalReleaseImageBundleStatus conditions type. +enum

const (
	// InternalReleaseImageConditionTypeMounted describes a new release, not yet installed, that has been discovered when an ISO has been attached to
	// one of the control plane nodes
	InternalReleaseImageConditionTypeMounted InternalReleaseImageConditionType = "Mounted"
	// InternalReleaseImageConditionTypeInstalling describes a new release that is getting installed in the cluster. Due the size of the data
	// transfered, the operation could take several minutes. The condition will remain in such state until all the control plane nodes will
	// complete the installing operation
	InternalReleaseImageConditionTypeInstalling InternalReleaseImageConditionType = "Installing"
	// InternalReleaseImageConditionTypeAvailable describes a release that has been successfully installed in the cluster, ready to be consumed. This
	// means that the release has been successfully installed on all the control plane nodes
	InternalReleaseImageConditionTypeAvailable InternalReleaseImageConditionType = "Available"
	// InternalReleaseImageConditionTypeRemoving describes an existing release that is getting removed from the cluster. The condition will remain in such
	// state until all the control plane nodes will complete the removal operation
	InternalReleaseImageConditionTypeRemoving InternalReleaseImageConditionType = "Removing"
	// InternalReleaseImageConditionTypeDegraded describes a failure, happened in one or more control plane nodes, for the current release
	InternalReleaseImageConditionTypeDegraded InternalReleaseImageConditionType = "Degraded"
)

type InternalReleaseImageList

type InternalReleaseImageList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata is the standard list's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	metav1.ListMeta `json:"metadata"`

	Items []InternalReleaseImage `json:"items"`
}

InternalReleaseImageList is a list of InternalReleaseImage resources

Compatibility level 4: No compatibility is provided, the API can change at any point for any reason. These capabilities should not be used by applications needing long term support. +openshift:compatibility-gen:level=4

func (*InternalReleaseImageList) DeepCopy

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

func (*InternalReleaseImageList) DeepCopyInto

func (in *InternalReleaseImageList) DeepCopyInto(out *InternalReleaseImageList)

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

func (*InternalReleaseImageList) DeepCopyObject

func (in *InternalReleaseImageList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (InternalReleaseImageList) OpenAPIModelName

func (in InternalReleaseImageList) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (InternalReleaseImageList) SwaggerDoc

func (InternalReleaseImageList) SwaggerDoc() map[string]string

type InternalReleaseImageRef

type InternalReleaseImageRef struct {
	// name indicates the desired release bundle identifier. This field is required and must be between 1 and 64 characters long.
	// The expected name format is ocp-release-bundle-<version>-<arch|stream>.
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=64
	// +kubebuilder:validation:XValidation:rule=`self.matches('^ocp-release-bundle-[0-9]+\\.[0-9]+\\.[0-9]+-[A-Za-z0-9._-]+$')`,message="must be ocp-release-bundle-<version>-<arch|stream> and <= 64 chars"
	Name string `json:"name,omitempty"`
}

InternalReleaseImageRef is used to provide a simple reference for a release bundle. Currently it contains only the name field.

func (*InternalReleaseImageRef) DeepCopy

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

func (*InternalReleaseImageRef) DeepCopyInto

func (in *InternalReleaseImageRef) DeepCopyInto(out *InternalReleaseImageRef)

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

func (InternalReleaseImageRef) OpenAPIModelName

func (in InternalReleaseImageRef) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (InternalReleaseImageRef) SwaggerDoc

func (InternalReleaseImageRef) SwaggerDoc() map[string]string

type InternalReleaseImageSpec

type InternalReleaseImageSpec struct {
	// releases is a list of release bundle identifiers that the user wants to
	// add/remove to/from the control plane nodes.
	// Entries must be unique, keyed on the name field.
	// releases must contain at least one entry and must not exceed 16 entries.
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=16
	// +listType=map
	// +listMapKey=name
	// +required
	Releases []InternalReleaseImageRef `json:"releases,omitempty"`
}

InternalReleaseImageSpec defines the desired state of a InternalReleaseImage.

func (*InternalReleaseImageSpec) DeepCopy

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

func (*InternalReleaseImageSpec) DeepCopyInto

func (in *InternalReleaseImageSpec) DeepCopyInto(out *InternalReleaseImageSpec)

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

func (InternalReleaseImageSpec) OpenAPIModelName

func (in InternalReleaseImageSpec) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (InternalReleaseImageSpec) SwaggerDoc

func (InternalReleaseImageSpec) SwaggerDoc() map[string]string

type InternalReleaseImageStatus

type InternalReleaseImageStatus struct {
	// conditions represent the observations of the InternalReleaseImage controller current state.
	// Valid types are: Degraded.
	// If Degraded is true, that means something has gone wrong in the controller.
	// +listType=map
	// +listMapKey=type
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=20
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
	// releases is a list of the release bundles currently owned and managed by the
	// cluster.
	// A release bundle content could be safely pulled only when its Conditions field
	// contains at least an Available entry set to "True" and Degraded to "False".
	// Entries must be unique, keyed on the name field.
	// releases must contain at least one entry and must not exceed 32 entries.
	// +listType=map
	// +listMapKey=name
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=32
	// +required
	Releases []InternalReleaseImageBundleStatus `json:"releases,omitempty"`
}

InternalReleaseImageStatus describes the current state of a InternalReleaseImage.

func (*InternalReleaseImageStatus) DeepCopy

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

func (*InternalReleaseImageStatus) DeepCopyInto

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

func (InternalReleaseImageStatus) OpenAPIModelName

func (in InternalReleaseImageStatus) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (InternalReleaseImageStatus) SwaggerDoc

func (InternalReleaseImageStatus) SwaggerDoc() map[string]string

type InternalReleaseImageStatusConditionType

type InternalReleaseImageStatusConditionType string

InternalReleaseImageStatusConditionType describes the possible states for InternalReleaseImageStatus. +enum

const (
	// InternalReleaseImageStatusConditionTypeDegraded describes a failure in the controller.
	InternalReleaseImageStatusConditionTypeDegraded InternalReleaseImageStatusConditionType = "Degraded"
)

type OSImageStream

type OSImageStream struct {
	metav1.TypeMeta `json:",inline"`

	// metadata is the standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// spec contains the desired OSImageStream config configuration.
	// +required
	Spec *OSImageStreamSpec `json:"spec,omitempty"`

	// status describes the last observed state of this OSImageStream.
	// Populated by the MachineConfigOperator after reading release metadata.
	// When not present, the controller has not yet reconciled this resource.
	// +optional
	Status OSImageStreamStatus `json:"status,omitempty,omitzero"`
}

OSImageStream describes a set of streams and associated images available for the MachineConfigPools to be used as base OS images.

The resource is a singleton named "cluster".

Compatibility level 4: No compatibility is provided, the API can change at any point for any reason. These capabilities should not be used by applications needing long term support. +openshift:compatibility-gen:level=4 +kubebuilder:object:root=true +kubebuilder:resource:path=osimagestreams,scope=Cluster +kubebuilder:subresource:status +openshift:api-approved.openshift.io=https://github.com/openshift/api/pull/2555 +openshift:file-pattern=cvoRunLevel=0000_80,operatorName=machine-config,operatorOrdering=01 +openshift:enable:FeatureGate=OSStreams +kubebuilder:metadata:labels=openshift.io/operator-managed= +kubebuilder:validation:XValidation:rule="self.metadata.name == 'cluster'",message="osimagestream is a singleton, .metadata.name must be 'cluster'" +kubebuilder:validation:XValidation:rule="self.spec == oldSelf.spec || !has(self.spec.defaultStream) || !has(self.status) || self.spec.defaultStream in self.status.availableStreams.map(s, s.name)",message="spec.defaultStream must reference an existing stream name from status.availableStreams"

func (*OSImageStream) DeepCopy

func (in *OSImageStream) DeepCopy() *OSImageStream

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

func (*OSImageStream) DeepCopyInto

func (in *OSImageStream) DeepCopyInto(out *OSImageStream)

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

func (*OSImageStream) DeepCopyObject

func (in *OSImageStream) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (OSImageStream) OpenAPIModelName

func (in OSImageStream) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (OSImageStream) SwaggerDoc

func (OSImageStream) SwaggerDoc() map[string]string

type OSImageStreamList

type OSImageStreamList struct {
	metav1.TypeMeta `json:",inline"`

	// metadata is the standard list's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	metav1.ListMeta `json:"metadata"`

	Items []OSImageStream `json:"items"`
}

OSImageStreamList is a list of OSImageStream resources

Compatibility level 4: No compatibility is provided, the API can change at any point for any reason. These capabilities should not be used by applications needing long term support. +openshift:compatibility-gen:level=4

func (*OSImageStreamList) DeepCopy

func (in *OSImageStreamList) DeepCopy() *OSImageStreamList

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

func (*OSImageStreamList) DeepCopyInto

func (in *OSImageStreamList) DeepCopyInto(out *OSImageStreamList)

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

func (*OSImageStreamList) DeepCopyObject

func (in *OSImageStreamList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (OSImageStreamList) OpenAPIModelName

func (in OSImageStreamList) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (OSImageStreamList) SwaggerDoc

func (OSImageStreamList) SwaggerDoc() map[string]string

type OSImageStreamSet

type OSImageStreamSet struct {
	// name is the required identifier of the stream.
	//
	// name is determined by the operator based on the OCI label of the
	// discovered OS or Extension Image.
	//
	// Must be a valid RFC 1123 subdomain between 1 and 253 characters in length,
	// consisting of lowercase alphanumeric characters, hyphens ('-'), and periods ('.').
	//
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:XValidation:rule="!format.dns1123Subdomain().validate(self).hasValue()",message="a RFC 1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character."
	Name string `json:"name,omitempty"`

	// osImage is a required OS Image referenced by digest.
	//
	// osImage contains the immutable, fundamental operating system components, including the kernel
	// and base utilities, that define the core environment for the node's host operating system.
	//
	// The format of the image pull spec is: host[:port][/namespace]/name@sha256:<digest>,
	// where the digest must be 64 characters long, and consist only of lowercase hexadecimal characters, a-f and 0-9.
	// The length of the whole spec must be between 1 to 447 characters.
	// +required
	OSImage ImageDigestFormat `json:"osImage,omitempty"`

	// osExtensionsImage is a required OS Extensions Image referenced by digest.
	//
	// osExtensionsImage bundles the extra repositories used to enable extensions, augmenting
	// the base operating system without modifying the underlying immutable osImage.
	//
	// The format of the image pull spec is: host[:port][/namespace]/name@sha256:<digest>,
	// where the digest must be 64 characters long, and consist only of lowercase hexadecimal characters, a-f and 0-9.
	// The length of the whole spec must be between 1 to 447 characters.
	// +required
	OSExtensionsImage ImageDigestFormat `json:"osExtensionsImage,omitempty"`
}

func (*OSImageStreamSet) DeepCopy

func (in *OSImageStreamSet) DeepCopy() *OSImageStreamSet

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

func (*OSImageStreamSet) DeepCopyInto

func (in *OSImageStreamSet) DeepCopyInto(out *OSImageStreamSet)

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

func (OSImageStreamSet) OpenAPIModelName

func (in OSImageStreamSet) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (OSImageStreamSet) SwaggerDoc

func (OSImageStreamSet) SwaggerDoc() map[string]string

type OSImageStreamSpec

type OSImageStreamSpec struct {
	// defaultStream is the desired name of the stream that should be used as the
	// default when no specific stream is requested by a MachineConfigPool.
	//
	// This field is set by the installer during installation. Users may need to
	// update it if the currently selected stream is no longer available, for
	// example when the stream has reached its End of Life.
	// The MachineConfigOperator uses this value to determine which stream from
	// status.availableStreams to apply as the default for MachineConfigPools
	// that do not specify a stream override.
	//
	// When status.availableStreams has been populated by the operator, updating
	// this field requires that the new value references the name of one of the
	// streams in status.availableStreams. Status-only updates by the operator
	// are not subject to this constraint, allowing the operator to update
	// availableStreams independently of this field.
	// During initial creation, before the operator has populated status, any
	// valid value is accepted.
	//
	// When omitted, the operator determines the default stream automatically.
	// Once set, this field cannot be removed.
	//
	// It must be a valid RFC 1123 subdomain between 1 and 253 characters in length,
	// consisting of lowercase alphanumeric characters, hyphens ('-'), and periods ('.').
	//
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:XValidation:rule="!format.dns1123Subdomain().validate(self).hasValue()",message="a RFC 1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character."
	DefaultStream string `json:"defaultStream,omitempty"`
}

OSImageStreamSpec defines the desired state of a OSImageStream. +kubebuilder:validation:XValidation:rule="!has(oldSelf.defaultStream) || has(self.defaultStream)",message="spec.defaultStream cannot be removed once set"

func (*OSImageStreamSpec) DeepCopy

func (in *OSImageStreamSpec) DeepCopy() *OSImageStreamSpec

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

func (*OSImageStreamSpec) DeepCopyInto

func (in *OSImageStreamSpec) DeepCopyInto(out *OSImageStreamSpec)

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

func (OSImageStreamSpec) OpenAPIModelName

func (in OSImageStreamSpec) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (OSImageStreamSpec) SwaggerDoc

func (OSImageStreamSpec) SwaggerDoc() map[string]string

type OSImageStreamStatus

type OSImageStreamStatus struct {

	// availableStreams is a list of the available OS Image Streams that can be
	// used as the base image for MachineConfigPools.
	// availableStreams is required, must have at least one item, must not exceed
	// 100 items, and must have unique entries keyed on the name field.
	//
	// +required
	// +kubebuilder:validation:MinItems=1
	// +kubebuilder:validation:MaxItems=100
	// +listType=map
	// +listMapKey=name
	AvailableStreams []OSImageStreamSet `json:"availableStreams,omitempty"`

	// defaultStream is the name of the stream that should be used as the default
	// when no specific stream is requested by a MachineConfigPool.
	//
	// It must be a valid RFC 1123 subdomain between 1 and 253 characters in length,
	// consisting of lowercase alphanumeric characters, hyphens ('-'), and periods ('.'),
	// and must reference the name of one of the streams in availableStreams.
	//
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:XValidation:rule="!format.dns1123Subdomain().validate(self).hasValue()",message="a RFC 1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character."
	DefaultStream string `json:"defaultStream,omitempty"`
}

OSImageStreamStatus describes the current state of a OSImageStream +kubebuilder:validation:XValidation:rule="self.defaultStream in self.availableStreams.map(s, s.name)",message="defaultStream must reference a stream name from availableStreams"

func (*OSImageStreamStatus) DeepCopy

func (in *OSImageStreamStatus) DeepCopy() *OSImageStreamStatus

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

func (*OSImageStreamStatus) DeepCopyInto

func (in *OSImageStreamStatus) DeepCopyInto(out *OSImageStreamStatus)

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

func (OSImageStreamStatus) OpenAPIModelName

func (in OSImageStreamStatus) OpenAPIModelName() string

OpenAPIModelName returns the OpenAPI model name for this type.

func (OSImageStreamStatus) SwaggerDoc

func (OSImageStreamStatus) SwaggerDoc() map[string]string

type PeerReachabilityMode

type PeerReachabilityMode string

PeerReachabilityMode describes how the BGP peer is reached. +kubebuilder:validation:Enum:=DirectlyConnected;MultiHop

const (
	// PeerReachabilityDirectlyConnected requires the peer to be on a
	// directly connected network.
	PeerReachabilityDirectlyConnected PeerReachabilityMode = "DirectlyConnected"
	// PeerReachabilityMultiHop allows the session to cross multiple
	// router hops.
	PeerReachabilityMultiHop PeerReachabilityMode = "MultiHop"
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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