v1beta1

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Apr 2, 2026 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Overview

Package v1beta1 contains API Schema definitions for the slinky v1beta1 API group +kubebuilder:object:generate=true +groupName=slinky.slurm.net

Index

Constants

View Source
const (
	SlinkyPrefix = "slinky.slurm.net/"

	NodeSetPrefix  = "nodeset." + SlinkyPrefix
	LoginSetPrefix = "loginset." + SlinkyPrefix
	TopologyPrefix = "topology." + SlinkyPrefix
)

Prefixes

View Source
const (
	// AnnotationPodCordon indicates NodeSet Pods that should be DRAIN[ING|ED] in Slurm.
	AnnotationPodCordon = NodeSetPrefix + "pod-cordon"

	// LabelPodDeletionCost can be used to set to an int32 that represent the cost of deleting a pod compared to other
	// pods belonging to the same ReplicaSet. Pods with lower deletion cost are preferred to be deleted before pods
	// with higher deletion cost.
	// NOTE: this is honored on a best-effort basis, and does not offer guarantees on pod deletion order.
	// The implicit deletion cost for pods that don't set the annotation is 0, negative values are permitted.
	AnnotationPodDeletionCost = NodeSetPrefix + "pod-deletion-cost"

	// AnnotationPodDeadline stores a time.RFC3339 timestamp, indicating when the Slurm node should complete its running
	// workload by. Pods with an earlier deadline are preferred to be deleted before pods with a later deadline.
	// NOTE: this is honored on a best-effort basis, and does not offer guarantees on pod deletion order.
	AnnotationPodDeadline = NodeSetPrefix + "pod-deadline"
)

Well Known Annotations

View Source
const (
	// AnnotationNodeCordonReason indicates a custom reason for the Slurm DRAIN action taken when the Kube node on which
	// a NodeSet pod is scheduled is cordoned
	AnnotationNodeCordonReason = NodeSetPrefix + "node-cordon-reason"

	// AnnotationNodeTopologySpec indicates the Slurm dynamic topology line (e.g. "topo-switch:s2,topo-block:b2").
	// Ref: https://slurm.schedmd.com/topology.html#dynamic_topo
	AnnotationNodeTopologySpec = TopologyPrefix + "spec"
)

Well Known Annotations for Objects of type corev1.Node

View Source
const (
	// LabelNodeSetPodName indicates the pod name.
	// NOTE: Set by the NodeSet controller.
	LabelNodeSetPodName = NodeSetPrefix + "pod-name"

	// LabelNodeSetPodIndex indicates the pod's ordinal.
	// NOTE: Set by the NodeSet controller.
	LabelNodeSetPodIndex = NodeSetPrefix + "pod-index"

	// LabelNodeSetPodHostname indicates the pod hostname (used as Slurm node name).
	// NOTE: Set by the NodeSet controller.
	LabelNodeSetPodHostname = NodeSetPrefix + "pod-hostname"

	// LabelNodeSetPodProtect indicates whether the pod is protected against eviction using a PodDisruptionBudget
	// NOTE: Set by the NodeSet controller
	LabelNodeSetPodProtect = NodeSetPrefix + "pod-protect"

	// LabelNodeSetScalingMode indicates the scaling mode (DaemonSet or StatefulSet).
	// NOTE: Set by the NodeSet controller.
	LabelNodeSetScalingMode = NodeSetPrefix + "scaling-mode"
)

Well Known Labels

View Source
const (
	AccountingKind = "Accounting"
)
View Source
const (
	ControllerKind = "Controller"
)
View Source
const (
	LoginSetKind = "LoginSet"
)
View Source
const (
	NodeSetKind = "NodeSet"
)
View Source
const (
	RestApiKind = "RestApi"
)
View Source
const (
	TokenKind = "Token"
)

Variables

View Source
var (
	AccountingGVK        = GroupVersion.WithKind(AccountingKind)
	AccountingAPIVersion = GroupVersion.String()
)
View Source
var (
	ControllerGVK        = GroupVersion.WithKind(ControllerKind)
	ControllerAPIVersion = GroupVersion.String()
)
View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "slinky.slurm.net", Version: "v1beta1"}

	SchemeGroupVersion = GroupVersion

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)
View Source
var (
	LoginSetGVK        = GroupVersion.WithKind(LoginSetKind)
	LoginSetAPIVersion = GroupVersion.String()
)
View Source
var (
	NodeSetGVK        = GroupVersion.WithKind(NodeSetKind)
	NodeSetAPIVersion = GroupVersion.String()
)
View Source
var (
	RestApiGVK        = GroupVersion.WithKind(RestApiKind)
	RestApiAPIVersion = GroupVersion.String()
)
View Source
var (
	TokenGVK        = GroupVersion.WithKind(TokenKind)
	TokenAPIVersion = GroupVersion.String()
)

Functions

func Resource

func Resource(resource string) schema.GroupResource

Resource is required by pkg/client/listers/...

Types

type Accounting

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

	Spec   AccountingSpec   `json:"spec,omitempty"`
	Status AccountingStatus `json:"status,omitempty"`
}

Accounting is the Schema for the accountings API

func (*Accounting) AuthJwksKey

func (o *Accounting) AuthJwksKey() types.NamespacedName

func (*Accounting) AuthJwksRef

func (o *Accounting) AuthJwksRef() *corev1.ConfigMapKeySelector

func (*Accounting) AuthJwtHs256Key deprecated

func (o *Accounting) AuthJwtHs256Key() types.NamespacedName

Deprecated: use AuthJwtKey() instead.

func (*Accounting) AuthJwtHs256Ref deprecated

func (o *Accounting) AuthJwtHs256Ref() corev1.SecretKeySelector

Deprecated: use AuthJwtRef() instead.

func (*Accounting) AuthJwtKey

func (o *Accounting) AuthJwtKey() types.NamespacedName

func (*Accounting) AuthJwtRef

func (o *Accounting) AuthJwtRef() corev1.SecretKeySelector

NOTE: Return non-nil because this field is effectively required.

func (*Accounting) AuthSlurmKey

func (o *Accounting) AuthSlurmKey() types.NamespacedName

func (*Accounting) AuthSlurmRef

func (o *Accounting) AuthSlurmRef() corev1.SecretKeySelector

func (*Accounting) AuthStorageKey

func (o *Accounting) AuthStorageKey() types.NamespacedName

func (*Accounting) AuthStorageRef

func (o *Accounting) AuthStorageRef() corev1.SecretKeySelector

func (*Accounting) ConfigKey

func (o *Accounting) ConfigKey() types.NamespacedName

func (*Accounting) DeepCopy

func (in *Accounting) DeepCopy() *Accounting

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

func (*Accounting) DeepCopyInto

func (in *Accounting) DeepCopyInto(out *Accounting)

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

func (*Accounting) DeepCopyObject

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

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

func (*Accounting) Hub

func (src *Accounting) Hub()

Hub implements conversion.Hub interface.

NOTE: `conversion.Hub` must be implemented on the `+kubebuilder:storageversion`.

func (*Accounting) Key

func (o *Accounting) Key() types.NamespacedName

func (*Accounting) PrimaryName

func (o *Accounting) PrimaryName() string

func (*Accounting) ServiceFQDN

func (o *Accounting) ServiceFQDN() string

func (*Accounting) ServiceFQDNShort

func (o *Accounting) ServiceFQDNShort() string

func (*Accounting) ServiceKey

func (o *Accounting) ServiceKey() types.NamespacedName

type AccountingList

type AccountingList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Accounting `json:"items"`
}

AccountingList contains a list of Accounting

func (*AccountingList) DeepCopy

func (in *AccountingList) DeepCopy() *AccountingList

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

func (*AccountingList) DeepCopyInto

func (in *AccountingList) DeepCopyInto(out *AccountingList)

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

func (*AccountingList) DeepCopyObject

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

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

type AccountingSpec

type AccountingSpec struct {
	// Slurm `auth/slurm` key authentication.
	// +optional
	SlurmKeyRef corev1.SecretKeySelector `json:"slurmKeyRef,omitzero"`

	// Slurm `auth/jwt` JWT HS256 key authentication.
	// +optional
	//
	// Deprecated: use JwtKeyRef instead.
	JwtHs256KeyRef *corev1.SecretKeySelector `json:"jwtHs256KeyRef,omitzero"`

	// Slurm `auth/jwt` JWT key authentication.
	// +optional
	JwtKeyRef *corev1.SecretKeySelector `json:"jwtKeyRef,omitzero"`

	// Slurm `auth/jwt` JWKS key authentication.
	// +optional
	JwksKeyRef *corev1.ConfigMapKeySelector `json:"jwksKeyRef,omitempty"`

	// external indicates if this component is external to Kubernetes or not.
	// If true, then externalConfig is used and other fields are ignored.
	// +optional
	// +default:=false
	External bool `json:"external,omitzero"`

	// ExternalConfig describes how to communicate with this external component.
	// +optional
	ExternalConfig ExternalConfig `json:"externalConfig,omitzero"`

	// The slurmdbd container configuration.
	// See corev1.Container spec.
	// Ref: https://github.com/kubernetes/api/blob/master/core/v1/types.go#L2885
	// +optional
	Slurmdbd ContainerWrapper `json:"slurmdbd,omitempty"`

	// Template is the object that describes the pod that will be created if
	// insufficient replicas are detected.
	// More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
	// +optional
	Template PodTemplate `json:"template,omitempty"`

	// StorageConfig is the configuration for mysql/mariadb access.
	// +optional
	StorageConfig StorageConfig `json:"storageConfig,omitzero"`

	// ExtraConf is appended onto the end of the `slurmdbd.conf` file.
	// Ref: https://slurm.schedmd.com/slurmdbd.conf.html
	// +optional
	ExtraConf string `json:"extraConf,omitzero"`

	// Service defines a template for a Kubernetes Service object.
	// +optional
	Service ServiceSpec `json:"service,omitzero"`
}

AccountingSpec defines the desired state of Accounting +kubebuilder:validation:XValidation:rule="!self.external ? has(self.slurmKeyRef) : true", message="slurmKeyRef must be set when external is false" +kubebuilder:validation:XValidation:rule="!self.external ? has(self.jwtKeyRef) || has(self.jwtHs256KeyRef) : true", message="jwtKeyRef or jwtHs256KeyRef must be set when external is false" +kubebuilder:validation:XValidation:rule="self.external ? has(self.externalConfig) : true", message="externalConfig must be set when external is true"

func (*AccountingSpec) DeepCopy

func (in *AccountingSpec) DeepCopy() *AccountingSpec

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

func (*AccountingSpec) DeepCopyInto

func (in *AccountingSpec) DeepCopyInto(out *AccountingSpec)

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

type AccountingStatus

type AccountingStatus struct {
	// Represents the latest available observations of a Accounting's current state.
	// +optional
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
}

AccountingStatus defines the observed state of Accounting

func (*AccountingStatus) DeepCopy

func (in *AccountingStatus) DeepCopy() *AccountingStatus

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

func (*AccountingStatus) DeepCopyInto

func (in *AccountingStatus) DeepCopyInto(out *AccountingStatus)

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

type ContainerWrapper

type ContainerWrapper struct {
	corev1.Container `json:"-"`
}

ContainerWrapper is a wrapper around corev1.Container with a custom implementation of MarshalJSON and UnmarshalJSON which delegate to the underlying Spec to avoid CRD pollution. +kubebuilder:pruning:PreserveUnknownFields

func (*ContainerWrapper) DeepCopy

func (o *ContainerWrapper) DeepCopy() *ContainerWrapper

func (*ContainerWrapper) DeepCopyInto

func (in *ContainerWrapper) DeepCopyInto(out *ContainerWrapper)

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

func (*ContainerWrapper) MarshalJSON

func (o *ContainerWrapper) MarshalJSON() ([]byte, error)

MarshalJSON defers JSON encoding data from the wrapper.

func (*ContainerWrapper) UnmarshalJSON

func (o *ContainerWrapper) UnmarshalJSON(data []byte) error

UnmarshalJSON will decode the data into the wrapper.

type Controller

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

	Spec   ControllerSpec   `json:"spec,omitempty"`
	Status ControllerStatus `json:"status,omitempty"`
}

Controller is the Schema for the controllers API

func (*Controller) AuthJwksKey

func (o *Controller) AuthJwksKey() types.NamespacedName

func (*Controller) AuthJwksRef

func (o *Controller) AuthJwksRef() *corev1.ConfigMapKeySelector

func (*Controller) AuthJwtHs256Key deprecated

func (o *Controller) AuthJwtHs256Key() types.NamespacedName

Deprecated: use AuthJwtKey() instead.

func (*Controller) AuthJwtHs256Ref deprecated

func (o *Controller) AuthJwtHs256Ref() corev1.SecretKeySelector

Deprecated: use AuthJwtRef() instead.

func (*Controller) AuthJwtKey

func (o *Controller) AuthJwtKey() types.NamespacedName

func (*Controller) AuthJwtRef

func (o *Controller) AuthJwtRef() corev1.SecretKeySelector

NOTE: Return non-nil because this field is effectively required.

func (*Controller) AuthSlurmKey

func (o *Controller) AuthSlurmKey() types.NamespacedName

func (*Controller) AuthSlurmRef

func (o *Controller) AuthSlurmRef() corev1.SecretKeySelector

func (*Controller) ClusterName

func (o *Controller) ClusterName() string

func (*Controller) ConfigKey

func (o *Controller) ConfigKey() types.NamespacedName

func (*Controller) DeepCopy

func (in *Controller) DeepCopy() *Controller

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

func (*Controller) DeepCopyInto

func (in *Controller) DeepCopyInto(out *Controller)

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

func (*Controller) DeepCopyObject

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

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

func (*Controller) Hub

func (src *Controller) Hub()

Hub implements conversion.Hub interface.

NOTE: `conversion.Hub` must be implemented on the `+kubebuilder:storageversion`.

func (*Controller) Key

func (o *Controller) Key() types.NamespacedName

func (*Controller) PrimaryFQDN

func (o *Controller) PrimaryFQDN() string

func (*Controller) PrimaryName

func (o *Controller) PrimaryName() string

func (*Controller) ServiceFQDN

func (o *Controller) ServiceFQDN() string

func (*Controller) ServiceFQDNShort

func (o *Controller) ServiceFQDNShort() string

func (*Controller) ServiceKey

func (o *Controller) ServiceKey() types.NamespacedName

type ControllerList

type ControllerList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Controller `json:"items"`
}

ControllerList contains a list of Controller

func (*ControllerList) DeepCopy

func (in *ControllerList) DeepCopy() *ControllerList

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

func (*ControllerList) DeepCopyInto

func (in *ControllerList) DeepCopyInto(out *ControllerList)

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

func (*ControllerList) DeepCopyObject

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

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

type ControllerPersistence

type ControllerPersistence struct {
	// Enabled controls if the optional accounting subsystem is enabled.
	// +default:=true
	Enabled *bool `json:"enabled"`

	// ExistingClaim is the name of an existing `PersistentVolumeClaim` to use instead.
	// If this is not empty, then certain other fields will be ignored.
	// +optional
	ExistingClaim string `json:"existingClaim,omitempty"`

	// +optional
	corev1.PersistentVolumeClaimSpec `json:",inline"`
}

func (*ControllerPersistence) DeepCopy

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

func (*ControllerPersistence) DeepCopyInto

func (in *ControllerPersistence) DeepCopyInto(out *ControllerPersistence)

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

type ControllerSpec

type ControllerSpec struct {
	// The Slurm ClusterName, which uniquely identifies the Slurm Cluster to
	// itself and accounting.
	// Ref: https://slurm.schedmd.com/slurm.conf.html#OPT_ClusterName
	// +optional
	ClusterName string `json:"clusterName,omitzero"`

	// Slurm `auth/slurm` key authentication.
	// +optional
	SlurmKeyRef corev1.SecretKeySelector `json:"slurmKeyRef,omitzero"`

	// Slurm `auth/jwt` JWT HS256 key authentication.
	// +optional
	//
	// Deprecated: use JwtKeyRef instead.
	JwtHs256KeyRef *corev1.SecretKeySelector `json:"jwtHs256KeyRef,omitzero"`

	// Slurm `auth/jwt` JWT key authentication.
	// +optional
	JwtKeyRef *corev1.SecretKeySelector `json:"jwtKeyRef,omitzero"`

	// Slurm `auth/jwt` JWKS key authentication.
	// +optional
	JwksKeyRef *corev1.ConfigMapKeySelector `json:"jwksKeyRef,omitempty"`

	// accountingRef is a reference to the Accounting CR to which this has membership.
	// +optional
	AccountingRef *ObjectReference `json:"accountingRef,omitempty"`

	// external indicates if this component is external to Kubernetes or not.
	// If true, then externalConfig is used and other fields are ignored.
	// +optional
	// +default:=false
	External bool `json:"external,omitzero"`

	// ExternalConfig describes how to communicate with this external component.
	// +optional
	ExternalConfig ExternalConfig `json:"externalConfig,omitzero"`

	// The slurmctld container configuration.
	// See corev1.Container spec.
	// Ref: https://github.com/kubernetes/api/blob/master/core/v1/types.go#L2885
	// +optional
	Slurmctld ContainerWrapper `json:"slurmctld,omitempty"`

	// The reconfigure container configuration.
	// +optional
	Reconfigure ContainerWrapper `json:"reconfigure,omitzero"`

	// The logfile sidecar configuration.
	// +optional
	LogFile ContainerWrapper `json:"logfile,omitzero"`

	// Template is the object that describes the pod that will be created if
	// insufficient replicas are detected.
	// More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
	// +optional
	Template PodTemplate `json:"template,omitempty"`

	// ExtraConf is appended onto the end of the `slurm.conf` file.
	// Ref: https://slurm.schedmd.com/slurm.conf.html
	// +optional
	ExtraConf string `json:"extraConf,omitempty"`

	// ConfigFileRefs is a list of ConfigMap references containing files to be mounted in `/etc/slurm`.
	// Ref: https://slurm.schedmd.com/slurm.conf.html
	// +nullable
	// +optional
	ConfigFileRefs []ObjectReference `json:"configFileRefs,omitzero"`

	// PrologScriptRefs is a list of prolog scripts to be mounted in `/etc/slurm`.
	// Ref: https://slurm.schedmd.com/prolog_epilog.html
	// +nullable
	// +optional
	PrologScriptRefs []ObjectReference `json:"prologScriptRefs,omitzero"`

	// EpilogScriptRefs is a list of epilog scripts to be mounted in `/etc/slurm`.
	// Ref: https://slurm.schedmd.com/prolog_epilog.html
	// +nullable
	// +optional
	EpilogScriptRefs []ObjectReference `json:"epilogScriptRefs,omitzero"`

	// PrologSlurmctldScriptRefs is a list of PrologSlurmctld scripts to be mounted in `/etc/slurm`.
	// Ref: https://slurm.schedmd.com/slurm.conf.html#OPT_PrologSlurmctld
	// +nullable
	// +optional
	PrologSlurmctldScriptRefs []ObjectReference `json:"prologSlurmctldScriptRefs,omitzero"`

	// EpilogSlurmctldScriptRefs is a list of EpilogSlurmctld scripts to be mounted in `/etc/slurm`.
	// Ref: https://slurm.schedmd.com/slurm.conf.html#OPT_EpilogSlurmctld
	// +nullable
	// +optional
	EpilogSlurmctldScriptRefs []ObjectReference `json:"epilogSlurmctldScriptRefs,omitzero"`

	// Persistence defines a persistent volume for the slurm controller to store its save-state.
	// Used to recover from system failures or from pod upgrades.
	// +optional
	Persistence ControllerPersistence `json:"persistence,omitzero"`

	// Service defines a template for a Kubernetes Service object.
	// +optional
	Service ServiceSpec `json:"service,omitzero"`

	// Metrics defines the metric collection configuration.
	// +optional
	Metrics Metrics `json:"metrics,omitzero"`
}

ControllerSpec defines the desired state of Controller +kubebuilder:validation:XValidation:rule="!self.external ? has(self.slurmKeyRef) : true", message="slurmKeyRef must be set when external is false" +kubebuilder:validation:XValidation:rule="!self.external ? has(self.jwtKeyRef) || has(self.jwtHs256KeyRef) : true", message="jwtKeyRef or jwtHs256KeyRef must be set when external is false" +kubebuilder:validation:XValidation:rule="self.external ? has(self.externalConfig) : true", message="externalConfig must be set when external is true"

func (*ControllerSpec) DeepCopy

func (in *ControllerSpec) DeepCopy() *ControllerSpec

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

func (*ControllerSpec) DeepCopyInto

func (in *ControllerSpec) DeepCopyInto(out *ControllerSpec)

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

type ControllerStatus

type ControllerStatus struct {
	// Represents the latest available observations of a Controller's current state.
	// +optional
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
}

ControllerStatus defines the observed state of Controller

func (*ControllerStatus) DeepCopy

func (in *ControllerStatus) DeepCopy() *ControllerStatus

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

func (*ControllerStatus) DeepCopyInto

func (in *ControllerStatus) DeepCopyInto(out *ControllerStatus)

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

type ExternalConfig

type ExternalConfig struct {
	// Host defines the hostname or IP address to communicate with.
	// +required
	Host string `json:"host,omitzero"`

	// Port defines the port to communicate over.
	// +required
	Port int `json:"port,omitzero"`
}

ExternalConfig describes how to communicate with an external service.

func (*ExternalConfig) DeepCopy

func (in *ExternalConfig) DeepCopy() *ExternalConfig

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

func (*ExternalConfig) DeepCopyInto

func (in *ExternalConfig) DeepCopyInto(out *ExternalConfig)

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

type JwtSecretKeySelector

type JwtSecretKeySelector struct {
	// SecretKeySelector selects a key of a Secret.
	// +structType=atomic
	corev1.SecretKeySelector `json:",inline"`

	// The namespace of the Slurm `auth/jwt` JWT key.
	// +optional
	Namespace string `json:"namespace,omitempty"`
}

func (*JwtSecretKeySelector) DeepCopy

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

func (*JwtSecretKeySelector) DeepCopyInto

func (in *JwtSecretKeySelector) DeepCopyInto(out *JwtSecretKeySelector)

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

type LoginSet

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

	Spec   LoginSetSpec   `json:"spec,omitempty"`
	Status LoginSetStatus `json:"status,omitempty"`
}

LoginSet is the Schema for the loginsets API

func (*LoginSet) DeepCopy

func (in *LoginSet) DeepCopy() *LoginSet

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

func (*LoginSet) DeepCopyInto

func (in *LoginSet) DeepCopyInto(out *LoginSet)

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

func (*LoginSet) DeepCopyObject

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

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

func (*LoginSet) Hub

func (src *LoginSet) Hub()

Hub implements conversion.Hub interface.

NOTE: `conversion.Hub` must be implemented on the `+kubebuilder:storageversion`.

func (*LoginSet) Key

func (o *LoginSet) Key() types.NamespacedName

func (*LoginSet) ServiceFQDN

func (o *LoginSet) ServiceFQDN() string

func (*LoginSet) ServiceFQDNShort

func (o *LoginSet) ServiceFQDNShort() string

func (*LoginSet) ServiceKey

func (o *LoginSet) ServiceKey() types.NamespacedName

func (*LoginSet) SshConfigKey

func (o *LoginSet) SshConfigKey() types.NamespacedName

func (*LoginSet) SshHostKeys

func (o *LoginSet) SshHostKeys() types.NamespacedName

func (*LoginSet) SssdSecretKey

func (o *LoginSet) SssdSecretKey() types.NamespacedName

func (*LoginSet) SssdSecretRef

func (o *LoginSet) SssdSecretRef() corev1.SecretKeySelector

type LoginSetList

type LoginSetList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []LoginSet `json:"items"`
}

LoginSetList contains a list of LoginSet

func (*LoginSetList) DeepCopy

func (in *LoginSetList) DeepCopy() *LoginSetList

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

func (*LoginSetList) DeepCopyInto

func (in *LoginSetList) DeepCopyInto(out *LoginSetList)

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

func (*LoginSetList) DeepCopyObject

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

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

type LoginSetSpec

type LoginSetSpec struct {
	// controllerRef is a reference to the Controller CR to which this has membership.
	// +required
	ControllerRef ObjectReference `json:"controllerRef"`

	// replicas is the desired number of replicas of the given Template.
	// These are replicas in the sense that they are instantiations of the
	// same Template, but individual replicas also have a consistent identity.
	// If unspecified, defaults to 1.
	// +optional
	// +default:=1
	Replicas *int32 `json:"replicas,omitempty"`

	// The login container configuration.
	// See corev1.Container spec.
	// Ref: https://github.com/kubernetes/api/blob/master/core/v1/types.go#L2885
	// +optional
	Login ContainerWrapper `json:"login,omitempty"`

	// The initconf container configuration.
	// See corev1.Container spec.
	// Ref: https://github.com/kubernetes/api/blob/master/core/v1/types.go#L2885
	// +optional
	InitConf ContainerWrapper `json:"initconf,omitzero"`

	// Template is the object that describes the pod that will be created if
	// insufficient replicas are detected.
	// More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
	// +optional
	Template PodTemplate `json:"template,omitempty"`

	// RootSshAuthorizedKeys is `root/.ssh/authorized_keys`.
	// +optional
	RootSshAuthorizedKeys string `json:"rootSshAuthorizedKeys,omitzero"`

	// ExtraSshdConfig is added to the end of `sshd_config`.
	// Ref: https://man7.org/linux/man-pages/man5/sshd_config.5.html
	// +optional
	ExtraSshdConfig string `json:"extraSshdConfig,omitzero"`

	// SssdConfRef is a reference to a secret containing the `sssd.conf`.
	// +required
	SssdConfRef corev1.SecretKeySelector `json:"sssdConfRef,omitzero"`

	// Strategy is the deployment strategy to use to replace existing pods with new ones.
	// Ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy
	// +optional
	Strategy appsv1.DeploymentStrategy `json:"strategy,omitzero"`

	// Service defines a template for a Kubernetes Service object.
	// +optional
	Service ServiceSpec `json:"service,omitzero"`
}

LoginSetSpec defines the desired state of LoginSet

func (*LoginSetSpec) DeepCopy

func (in *LoginSetSpec) DeepCopy() *LoginSetSpec

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

func (*LoginSetSpec) DeepCopyInto

func (in *LoginSetSpec) DeepCopyInto(out *LoginSetSpec)

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

type LoginSetStatus

type LoginSetStatus struct {
	// Total number of non-terminated pods targeted by this LoginSet (their labels match the Selector).
	// +optional
	Replicas int32 `json:"replicas,omitempty"`

	// Represents the latest available observations of a LoginSet's current state.
	// +optional
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`

	// Add Selector to status for HPA support in the scale subresource.
	Selector string `json:"selector"`
}

LoginSetStatus defines the observed state of LoginSet

func (*LoginSetStatus) DeepCopy

func (in *LoginSetStatus) DeepCopy() *LoginSetStatus

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

func (*LoginSetStatus) DeepCopyInto

func (in *LoginSetStatus) DeepCopyInto(out *LoginSetStatus)

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

type Metadata

type Metadata struct {
	// Map of string keys and values that can be used to organize and categorize
	// (scope and select) objects. May match selectors of replication controllers
	// and services.
	// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
	// +nullable
	// +optional
	Labels map[string]string `json:"labels,omitempty"`

	// Annotations is an unstructured key value map stored with a resource that may be
	// set by external tools to store and retrieve arbitrary metadata. They are not
	// queryable and should be preserved when modifying objects.
	// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
	// +nullable
	// +optional
	Annotations map[string]string `json:"annotations,omitempty"`
}

Metadata defines the metadata to added to resources.

func (*Metadata) DeepCopy

func (in *Metadata) DeepCopy() *Metadata

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

func (*Metadata) DeepCopyInto

func (in *Metadata) DeepCopyInto(out *Metadata)

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

type MetricEndpoint

type MetricEndpoint struct {
	// path defines the HTTP path from which to scrape for metrics.
	// +required
	Path string `json:"path,omitempty"`

	// interval at which Prometheus scrapes the metrics from the target.
	//
	// If empty, the local global value will be used.
	// +optional
	Interval monitoringv1.Duration `json:"interval,omitzero"`

	// scrapeTimeout defines the timeout after which Prometheus considers the scrape to be failed.
	//
	// If empty, the local global value will be used.
	// +optional
	ScrapeTimeout monitoringv1.Duration `json:"scrapeTimeout,omitzero"`
}

func (*MetricEndpoint) DeepCopy

func (in *MetricEndpoint) DeepCopy() *MetricEndpoint

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

func (*MetricEndpoint) DeepCopyInto

func (in *MetricEndpoint) DeepCopyInto(out *MetricEndpoint)

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

type Metrics

type Metrics struct {
	// Enabled controls if metrics will be configured.
	// +optional
	// +default:=false
	Enabled bool `json:"enabled"`

	// +optional
	ServiceMonitor ServiceMonitor `json:"serviceMonitor,omitzero"`
}

Metrics defines the metric collection configuration.

func (*Metrics) DeepCopy

func (in *Metrics) DeepCopy() *Metrics

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

func (*Metrics) DeepCopyInto

func (in *Metrics) DeepCopyInto(out *Metrics)

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

type NodeSet

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

	Spec   NodeSetSpec   `json:"spec,omitempty"`
	Status NodeSetStatus `json:"status,omitempty"`
}

NodeSet is the Schema for the nodesets API

func (*NodeSet) DeepCopy

func (in *NodeSet) DeepCopy() *NodeSet

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

func (*NodeSet) DeepCopyInto

func (in *NodeSet) DeepCopyInto(out *NodeSet)

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

func (*NodeSet) DeepCopyObject

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

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

func (*NodeSet) HeadlessServiceKey

func (o *NodeSet) HeadlessServiceKey() types.NamespacedName

func (*NodeSet) Hub

func (src *NodeSet) Hub()

Hub implements conversion.Hub interface.

NOTE: `conversion.Hub` must be implemented on the `+kubebuilder:storageversion`.

func (*NodeSet) Key

func (o *NodeSet) Key() types.NamespacedName

func (*NodeSet) SshConfigKey

func (o *NodeSet) SshConfigKey() types.NamespacedName

func (*NodeSet) SssdSecretKey

func (o *NodeSet) SssdSecretKey() types.NamespacedName

func (*NodeSet) SssdSecretRef

func (o *NodeSet) SssdSecretRef() corev1.SecretKeySelector

type NodeSetList

type NodeSetList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []NodeSet `json:"items"`
}

NodeSetList contains a list of NodeSet

func (*NodeSetList) DeepCopy

func (in *NodeSetList) DeepCopy() *NodeSetList

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

func (*NodeSetList) DeepCopyInto

func (in *NodeSetList) DeepCopyInto(out *NodeSetList)

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

func (*NodeSetList) DeepCopyObject

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

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

type NodeSetPartition

type NodeSetPartition struct {
	// Enabled will create a partition for this NodeSet.
	// +default:=false
	Enabled bool `json:"enabled"`

	// Config is added to the NodeSet's partition line.
	// Ref: https://slurm.schedmd.com/slurm.conf.html#SECTION_PARTITION-CONFIGURATION
	// +optional
	Config string `json:"config,omitzero"`
}

NodeSetPartition defines the Slurm partition configuration for the NodeSet.

func (*NodeSetPartition) DeepCopy

func (in *NodeSetPartition) DeepCopy() *NodeSetPartition

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

func (*NodeSetPartition) DeepCopyInto

func (in *NodeSetPartition) DeepCopyInto(out *NodeSetPartition)

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

type NodeSetPersistentVolumeClaimRetentionPolicy

type NodeSetPersistentVolumeClaimRetentionPolicy struct {
	// WhenDeleted specifies what happens to PVCs created from NodeSet
	// VolumeClaimTemplates when the NodeSet is deleted. The default policy
	// of `Retain` causes PVCs to not be affected by NodeSet deletion. The
	// `Delete` policy causes those PVCs to be deleted.
	// +kubebuilder:validation:Enum=Retain;Delete
	// +kubebuilder:default:=Retain
	WhenDeleted PersistentVolumeClaimRetentionPolicyType `json:"whenDeleted,omitempty"`

	// WhenScaled specifies what happens to PVCs created from NodeSet
	// VolumeClaimTemplates when the NodeSet is scaled down. The default
	// policy of `Retain` causes PVCs to not be affected by a scaledown. The
	// `Delete` policy causes the associated PVCs for any excess pods to be
	// deleted.
	// +kubebuilder:validation:Enum=Retain;Delete
	// +kubebuilder:default:=Retain
	WhenScaled PersistentVolumeClaimRetentionPolicyType `json:"whenScaled,omitempty"`
}

NodeSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the NodeSet VolumeClaimTemplates.

func (*NodeSetPersistentVolumeClaimRetentionPolicy) DeepCopy

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

func (*NodeSetPersistentVolumeClaimRetentionPolicy) DeepCopyInto

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

type NodeSetSpec

type NodeSetSpec struct {
	// controllerRef is a reference to the Controller CR to which this has membership.
	// +required
	ControllerRef ObjectReference `json:"controllerRef"`

	// replicas is the desired number of replicas of the given Template.
	// These are replicas in the sense that they are instantiations of the
	// same Template, but individual replicas also have a consistent identity.
	// If unspecified, defaults to 1.
	// When ScalingMode is daemonset, this field is ignored.
	// +optional
	// +default:=1
	Replicas *int32 `json:"replicas,omitempty"`

	// ScalingMode controls how the NodeSet scales pods.
	// "StatefulSet" uses a fixed replica count; "DaemonSet" schedules one pod per matching node.
	// +optional
	// +kubebuilder:validation:Enum=DaemonSet;StatefulSet
	// +kubebuilder:default:=StatefulSet
	ScalingMode ScalingModeType `json:"scalingMode,omitempty"`

	// The slurmd container configuration.
	// See corev1.Container spec.
	// Ref: https://github.com/kubernetes/api/blob/master/core/v1/types.go#L2885
	// +optional
	Slurmd ContainerWrapper `json:"slurmd,omitempty"`

	// SSH configuration for worker pods.
	// +optional
	Ssh NodeSetSsh `json:"ssh,omitzero"`

	// The logfile sidecar configuration.
	// +optional
	LogFile ContainerWrapper `json:"logfile,omitzero"`

	// Template is the object that describes the pod that will be created if
	// insufficient replicas are detected.
	// More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
	// +optional
	Template PodTemplate `json:"template,omitempty"`

	// ExtraConf is added to the slurmd args as `--conf <extraConf>`.
	// Ref: https://slurm.schedmd.com/slurmd.html#OPT_conf-%3Cnode-parameters%3E
	// +optional
	ExtraConf string `json:"extraConf,omitzero"`

	// Partition defines the Slurm partition configuration for this NodeSet.
	// +optional
	Partition NodeSetPartition `json:"partition,omitzero"`

	// volumeClaimTemplates is a list of claims that pods are allowed to reference.
	// The NodeSet controller is responsible for mapping network identities to
	// claims in a way that maintains the identity of a pod. Every claim in
	// this list must have at least one matching (by name) volumeMount in one
	// container in the template. A claim in this list takes precedence over
	// any volumes in the template, with the same name.
	// +nullable
	// +optional
	// +kubebuilder:pruning:PreserveUnknownFields
	// +kubebuilder:validation:Schemaless
	VolumeClaimTemplates []corev1.PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty"`

	// updateStrategy indicates the NodeSetUpdateStrategy that will be
	// employed to update Pods in the NodeSet when a revision is made to
	// Template.
	UpdateStrategy NodeSetUpdateStrategy `json:"updateStrategy,omitempty"`

	// revisionHistoryLimit is the maximum number of revisions that will
	// be maintained in the NodeSet's revision history. The revision history
	// consists of all revisions not represented by a currently applied
	// NodeSetSpec version. The default value is 0.
	// +optional
	// +default:=0
	RevisionHistoryLimit int32 `json:"revisionHistoryLimit,omitempty"`

	// PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs
	// created from the NodeSet VolumeClaimTemplates. This requires the
	// NodeSetAutoDeletePVC feature gate to be enabled, which is alpha.
	// +optional
	PersistentVolumeClaimRetentionPolicy NodeSetPersistentVolumeClaimRetentionPolicy `json:"persistentVolumeClaimRetentionPolicy,omitempty"`

	// minReadySeconds is the minimum number of seconds for which a newly
	// created NodeSet Pod should be ready without any of its container crashing,
	// for it to be considered available.
	// Defaults to 0 (pod will be considered available as soon as it is ready).
	// +optional
	MinReadySeconds int32 `json:"minReadySeconds,omitempty"`

	// OrdinalPadding indicates how many digit places to pad with zeroes when constructing the pod ordinal.
	// This is used only when `scalingMode=StatefulSet`.
	// +optional
	// +default:=0
	OrdinalPadding uint `json:"ordinalPadding,omitempty"`

	// TaintKubeNodes controls whether or not to apply a NoExecute taint to any nodes which are running a pod from this NodeSet.
	// See https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ for more information.
	// +optional
	// +default:=false
	TaintKubeNodes bool `json:"taintKubeNodes,omitempty"`

	// WorkloadDisruptionProtection controls whether or not pods in this nodeset which are actively running Slurm jobs are protected by
	// a Pod Disruption Budget.
	// See https://kubernetes.io/docs/tasks/run-application/configure-pdb/ for more information.
	// +optional
	// +default:=true
	WorkloadDisruptionProtection *bool `json:"workloadDisruptionProtection,omitempty"`
}

NodeSetSpec defines the desired state of NodeSet

func (*NodeSetSpec) DeepCopy

func (in *NodeSetSpec) DeepCopy() *NodeSetSpec

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

func (*NodeSetSpec) DeepCopyInto

func (in *NodeSetSpec) DeepCopyInto(out *NodeSetSpec)

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

type NodeSetSsh

type NodeSetSsh struct {
	// Enabled controls whether SSH access is enabled for this NodeSet.
	// +default:=false
	Enabled bool `json:"enabled"`

	// ExtraSshdConfig is added to the end of `sshd_config`.
	// Ref: https://man7.org/linux/man-pages/man5/sshd_config.5.html
	// +optional
	ExtraSshdConfig string `json:"extraSshdConfig,omitzero"`

	// SssdConfRef is a reference to a secret containing the `sssd.conf`.
	// +required
	SssdConfRef corev1.SecretKeySelector `json:"sssdConfRef,omitzero"`
}

NodeSetSsh defines SSH configuration for NodeSet worker pods.

func (*NodeSetSsh) DeepCopy

func (in *NodeSetSsh) DeepCopy() *NodeSetSsh

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

func (*NodeSetSsh) DeepCopyInto

func (in *NodeSetSsh) DeepCopyInto(out *NodeSetSsh)

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

type NodeSetStatus

type NodeSetStatus struct {
	// Total number of non-terminated pods targeted by this NodeSet (their labels match the Selector).
	// +optional
	Replicas int32 `json:"replicas,omitempty"`

	// Total number of non-terminated pods targeted by this NodeSet that have the desired template spec.
	// +optional
	UpdatedReplicas int32 `json:"updatedReplicas,omitempty"`

	// readyReplicas is the number of pods targeted by this NodeSet with a Ready Condition.
	// +optional
	ReadyReplicas int32 `json:"readyReplicas,omitempty"`

	// Total number of available pods (ready for at least minReadySeconds) targeted by this NodeSet.
	// +optional
	AvailableReplicas int32 `json:"availableReplicas,omitempty"`

	// Total number of unavailable pods targeted by this NodeSet. This is the total number of
	// pods that are still required for the NodeSet to have 100% available capacity. They may
	// either be pods that are running but not yet available or pods that still have not been created.
	// +optional
	UnavailableReplicas int32 `json:"unavailableReplicas,omitempty"`

	// Desired is the number of nodes that should be running a NodeSet pod.
	// In DaemonSet scaling mode this is the number of nodes matching the node selector and tolerations.
	// In StatefulSet scaling mode this is the number of replicas.
	// +optional
	Desired int32 `json:"desired,omitempty"`

	// The number of NodeSet pods that are running and are in the Slurm IDLE
	// state. IDLE means the Slurm nodes is not ALLOCATED or MIXED, hence is not
	// allocated any Slurm jobs, nor doing work.
	// +optional
	SlurmIdle int32 `json:"slurmIdle,omitempty"`

	// The number of NodeSet pods that are running and are in the Slurm
	// ALLOCATED or MIXED state. ALLOCATED/MIXED means the Slurm node is
	// allocated one or more Slurm jobs and is doing work.
	// +optional
	SlurmAllocated int32 `json:"slurmAllocated,omitempty"`

	// The number of NodeSet pods that are running and are in the Slurm
	// DOWN state. DOWN means the Slurm node is unavailable for use.
	// +optional
	SlurmDown int32 `json:"slurmDown,omitempty"`

	// The number of NodeSet pods that are running and are in the Slurm DRAIN
	// state. DRAIN means the Slurm node becomes unschedulable but allocated
	// Slurm jobs will not be evicted and can continue running until completion.
	// +optional
	SlurmDrain int32 `json:"slurmDrain,omitempty"`

	// observedGeneration is the most recent generation observed for this NodeSet. It corresponds to the
	// NodeSet's generation, which is updated on mutation by the API Server.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// NodeSetHash is the "controller-revision-hash", which represents the
	// latest version of the NodeSet.
	NodeSetHash string `json:"nodeSetHash"`

	// Count of hash collisions for the NodeSet. The NodeSet controller
	// uses this field as a collision avoidance mechanism when it needs to
	// create the name for the newest ControllerRevision.
	// +optional
	CollisionCount *int32 `json:"collisionCount,omitempty"`

	// Represents the latest available observations of a NodeSet's current state.
	// +optional
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`

	// Add Selector to status for HPA support in the scale subresource.
	Selector string `json:"selector"`
}

NodeSetStatus defines the observed state of NodeSet

func (*NodeSetStatus) DeepCopy

func (in *NodeSetStatus) DeepCopy() *NodeSetStatus

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

func (*NodeSetStatus) DeepCopyInto

func (in *NodeSetStatus) DeepCopyInto(out *NodeSetStatus)

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

type NodeSetUpdateStrategy

type NodeSetUpdateStrategy struct {
	// Type indicates the type of the NodeSetUpdateStrategy.
	// One of: RollingUpdate; OnDelete.
	// Default is RollingUpdate.
	// +optional
	// +kubebuilder:validation:Enum=RollingUpdate;OnDelete
	// +kubebuilder:default:=RollingUpdate
	Type NodeSetUpdateStrategyType `json:"type,omitempty"`

	// RollingUpdate is used to communicate parameters when Type is
	// RollingUpdateNodeSetStrategyType.
	// +optional
	RollingUpdate RollingUpdateNodeSetStrategy `json:"rollingUpdate,omitempty"`
}

NodeSetUpdateStrategy indicates the strategy that the NodeSet controller will be used to perform updates. It includes any additional parameters necessary to perform the update for the indicated strategy.

func (*NodeSetUpdateStrategy) DeepCopy

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

func (*NodeSetUpdateStrategy) DeepCopyInto

func (in *NodeSetUpdateStrategy) DeepCopyInto(out *NodeSetUpdateStrategy)

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

type NodeSetUpdateStrategyType

type NodeSetUpdateStrategyType string

NodeSetUpdateStrategyType is a string enumeration type that enumerates all possible update strategies for the NodeSet controller. +enum

const (
	// RollingUpdateNodeSetStrategyType indicates that NodeSet pods will replace
	// the old pods by new ones using a rolling update method
	// (i.e replace pods on each node one after the other).
	RollingUpdateNodeSetStrategyType NodeSetUpdateStrategyType = "RollingUpdate"

	// OnDeleteNodeSetStrategyType indicates that NodeSet pods will only be
	// replaced when the old pod is killed for any reason.
	OnDeleteNodeSetStrategyType NodeSetUpdateStrategyType = "OnDelete"
)

type ObjectReference

type ObjectReference struct {
	// Namespace of the referent.
	// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
	// +optional
	Namespace string `json:"namespace,omitempty"`

	// Name of the referent.
	// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
	// +optional
	Name string `json:"name,omitempty"`
}

ObjectReference is a reference to an object. +structType=atomic

func (*ObjectReference) DeepCopy

func (in *ObjectReference) DeepCopy() *ObjectReference

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

func (*ObjectReference) DeepCopyInto

func (in *ObjectReference) DeepCopyInto(out *ObjectReference)

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

func (*ObjectReference) IsMatch

func (o *ObjectReference) IsMatch(key types.NamespacedName) bool

func (*ObjectReference) NamespacedName

func (o *ObjectReference) NamespacedName() types.NamespacedName

type PersistentVolumeClaimRetentionPolicyType

type PersistentVolumeClaimRetentionPolicyType string

PersistentVolumeClaimRetentionPolicyType is a string enumeration of the policies that will determine when volumes from the VolumeClaimTemplates will be deleted when the controlling NodeSet is deleted or scaled down.

const (
	// RetainPersistentVolumeClaimRetentionPolicyType is the default
	// PersistentVolumeClaimRetentionPolicy and specifies that
	// PersistentVolumeClaims associated with NodeSet VolumeClaimTemplates
	// will not be deleted.
	RetainPersistentVolumeClaimRetentionPolicyType PersistentVolumeClaimRetentionPolicyType = "Retain"

	// DeletePersistentVolumeClaimRetentionPolicyType specifies that
	// PersistentVolumeClaims associated with NodeSet VolumeClaimTemplates
	// will be deleted in the scenario specified in
	// NodeSetPersistentVolumeClaimPolicy.
	DeletePersistentVolumeClaimRetentionPolicyType PersistentVolumeClaimRetentionPolicyType = "Delete"
)

type PodSpecWrapper

type PodSpecWrapper struct {
	corev1.PodSpec `json:"-"`
}

PodSpecWrapper is a wrapper around corev1.PodSpec with a custom implementation of MarshalJSON and UnmarshalJSON which delegate to the underlying Spec to avoid CRD pollution. +kubebuilder:pruning:PreserveUnknownFields

func (*PodSpecWrapper) DeepCopy

func (o *PodSpecWrapper) DeepCopy() *PodSpecWrapper

func (*PodSpecWrapper) DeepCopyInto

func (in *PodSpecWrapper) DeepCopyInto(out *PodSpecWrapper)

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

func (*PodSpecWrapper) MarshalJSON

func (o *PodSpecWrapper) MarshalJSON() ([]byte, error)

MarshalJSON defers JSON encoding data from the wrapper.

func (*PodSpecWrapper) UnmarshalJSON

func (o *PodSpecWrapper) UnmarshalJSON(data []byte) error

UnmarshalJSON will decode the data into the wrapper.

type PodTemplate

type PodTemplate struct {
	// Standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	// +optional
	Metadata Metadata `json:"metadata,omitempty"`

	// PodSpec is a description of a pod.
	// +optional
	PodSpecWrapper PodSpecWrapper `json:"spec,omitempty"`
}

PodTemplate describes a template for creating copies of a predefined pod.

func (*PodTemplate) DeepCopy

func (in *PodTemplate) DeepCopy() *PodTemplate

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

func (*PodTemplate) DeepCopyInto

func (in *PodTemplate) DeepCopyInto(out *PodTemplate)

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

type RestApi

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

	Spec   RestApiSpec   `json:"spec,omitempty"`
	Status RestApiStatus `json:"status,omitempty"`
}

Restapi is the Schema for the restapis API

func (*RestApi) DeepCopy

func (in *RestApi) DeepCopy() *RestApi

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

func (*RestApi) DeepCopyInto

func (in *RestApi) DeepCopyInto(out *RestApi)

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

func (*RestApi) DeepCopyObject

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

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

func (*RestApi) Hub

func (src *RestApi) Hub()

Hub implements conversion.Hub interface.

NOTE: `conversion.Hub` must be implemented on the `+kubebuilder:storageversion`.

func (*RestApi) Key

func (o *RestApi) Key() types.NamespacedName

func (*RestApi) ServiceFQDN

func (o *RestApi) ServiceFQDN() string

func (*RestApi) ServiceFQDNShort

func (o *RestApi) ServiceFQDNShort() string

func (*RestApi) ServiceKey

func (o *RestApi) ServiceKey() types.NamespacedName

type RestApiList

type RestApiList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []RestApi `json:"items"`
}

RestapiList contains a list of Restapi

func (*RestApiList) DeepCopy

func (in *RestApiList) DeepCopy() *RestApiList

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

func (*RestApiList) DeepCopyInto

func (in *RestApiList) DeepCopyInto(out *RestApiList)

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

func (*RestApiList) DeepCopyObject

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

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

type RestApiSpec

type RestApiSpec struct {
	// controllerRef is a reference to the Controller CR to which this has membership.
	// +required
	ControllerRef ObjectReference `json:"controllerRef"`

	// replicas is the desired number of replicas.
	// If unspecified, defaults to 1.
	// +optional
	// +default:=1
	Replicas *int32 `json:"replicas,omitempty"`

	// The slurmrestd container configuration.
	// See corev1.Container spec.
	// Ref: https://github.com/kubernetes/api/blob/master/core/v1/types.go#L2885
	// +optional
	Slurmrestd ContainerWrapper `json:"slurmrestd,omitempty"`

	// Template is the object that describes the pod that will be created if
	// insufficient replicas are detected.
	// More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
	// +optional
	Template PodTemplate `json:"template,omitempty"`

	// Service defines a template for a Kubernetes Service object.
	// +optional
	Service ServiceSpec `json:"service,omitzero"`
}

RestApiSpec defines the desired state of RestApi

func (*RestApiSpec) DeepCopy

func (in *RestApiSpec) DeepCopy() *RestApiSpec

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

func (*RestApiSpec) DeepCopyInto

func (in *RestApiSpec) DeepCopyInto(out *RestApiSpec)

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

type RestApiStatus

type RestApiStatus struct {
	// Represents the latest available observations of a Restapi's current state.
	// +optional
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
}

RestApiStatus defines the observed state of Restapi

func (*RestApiStatus) DeepCopy

func (in *RestApiStatus) DeepCopy() *RestApiStatus

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

func (*RestApiStatus) DeepCopyInto

func (in *RestApiStatus) DeepCopyInto(out *RestApiStatus)

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

type RollingUpdateNodeSetStrategy

type RollingUpdateNodeSetStrategy struct {
	// The maximum number of pods that can be unavailable during the update.
	// Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
	// Absolute number is calculated from percentage by rounding up. This can not be 0.
	// Defaults to 25%.
	// +optional
	// +kubebuilder:default:="25%"
	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty"`
}

RollingUpdateNodeSetStrategy is used to communicate parameters for RollingUpdateNodeSetStrategyType.

func (*RollingUpdateNodeSetStrategy) DeepCopy

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

func (*RollingUpdateNodeSetStrategy) DeepCopyInto

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

type ScalingModeType

type ScalingModeType string

ScalingModeType is a string enumeration of how a NodeSet scales its pods. +enum

const (
	// ScalingModeStatefulset indicates replica-based scaling similar to a StatefulSet.
	ScalingModeStatefulset ScalingModeType = "StatefulSet"

	// ScalingModeDaemonset indicates one pod per matching node similar to a DaemonSet.
	ScalingModeDaemonset ScalingModeType = "DaemonSet"
)

type ServiceMonitor

type ServiceMonitor struct {
	// Enabled controls if metrics will be configured.
	// +optional
	// +default:=false
	Enabled bool `json:"enabled"`

	// +nullable
	// +optional
	Metadata `json:",inline"`

	// interval at which Prometheus scrapes the metrics from the target.
	//
	// If empty, Prometheus uses the global scrape interval.
	// +optional
	Interval monitoringv1.Duration `json:"interval,omitempty"`

	// scrapeTimeout defines the timeout after which Prometheus considers the scrape to be failed.
	//
	// If empty, Prometheus uses the global scrape timeout unless it is less
	// than the target's scrape interval value in which the latter is used.
	// The value cannot be greater than the scrape interval otherwise the operator will reject the resource.
	// +optional
	ScrapeTimeout monitoringv1.Duration `json:"scrapeTimeout,omitempty"`

	// endpoints to scrape.
	// +nullable
	// +optional
	MetricEndpoints []MetricEndpoint `json:"endpoints,omitempty"`
}

ServiceMonitor defines a Prometheus service monitor to metrics discovery.

func (*ServiceMonitor) DeepCopy

func (in *ServiceMonitor) DeepCopy() *ServiceMonitor

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

func (*ServiceMonitor) DeepCopyInto

func (in *ServiceMonitor) DeepCopyInto(out *ServiceMonitor)

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

type ServiceSpec

type ServiceSpec struct {
	// Standard object's metadata.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
	// +optional
	Metadata Metadata `json:"metadata,omitempty"`

	// ServiceSpec describes the attributes that a user creates on a service.
	// +optional
	ServiceSpecWrapper ServiceSpecWrapper `json:"spec,omitempty"`

	// The external service port number.
	// +optional
	Port int `json:"port"`

	// The port on each node on which this service is exposed when type is
	// NodePort or LoadBalancer.  Usually assigned by the system. If a value is
	// specified, in-range, and not in use it will be used, otherwise the
	// operation will fail.  If not specified, a port will be allocated if this
	// Service requires one.  If this field is specified when creating a
	// Service which does not need it, creation will fail.
	// +optional
	NodePort int `json:"nodePort,omitempty"`
}

ServiceSpec defines a template to customize Service objects.

func (*ServiceSpec) DeepCopy

func (in *ServiceSpec) DeepCopy() *ServiceSpec

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

func (*ServiceSpec) DeepCopyInto

func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec)

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

type ServiceSpecWrapper

type ServiceSpecWrapper struct {
	corev1.ServiceSpec `json:"-"`
}

ServiceSpecWrapper is a wrapper around corev1.Container with a custom implementation of MarshalJSON and UnmarshalJSON which delegate to the underlying Spec to avoid CRD pollution. +kubebuilder:pruning:PreserveUnknownFields

func (*ServiceSpecWrapper) DeepCopy

func (o *ServiceSpecWrapper) DeepCopy() *ServiceSpecWrapper

func (*ServiceSpecWrapper) DeepCopyInto

func (in *ServiceSpecWrapper) DeepCopyInto(out *ServiceSpecWrapper)

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

func (*ServiceSpecWrapper) MarshalJSON

func (o *ServiceSpecWrapper) MarshalJSON() ([]byte, error)

MarshalJSON defers JSON encoding data from the wrapper.

func (*ServiceSpecWrapper) UnmarshalJSON

func (o *ServiceSpecWrapper) UnmarshalJSON(data []byte) error

UnmarshalJSON will decode the data into the wrapper.

type StorageConfig

type StorageConfig struct {
	// Define the name of the host the database is running where we are going to
	// store the data.
	// Ref: https://slurm.schedmd.com/slurmdbd.conf.html#OPT_StorageHost
	// +required
	Host string `json:"host,omitzero"`

	// The port number that the Slurm Database Daemon (slurmdbd) communicates
	// with the database.
	// Default is 3306.
	// Ref: https://slurm.schedmd.com/slurmdbd.conf.html#OPT_StoragePort
	// +optional
	// +default:=3306
	Port int `json:"port,omitzero"`

	// Specify the name of the database as the location where accounting records
	// are written.
	// Default is "slurm_acct_db".
	// Ref: https://slurm.schedmd.com/slurmdbd.conf.html#OPT_StorageLoc
	// +optional
	// +default:="slurm_acct_db"
	Database string `json:"database,omitzero"`

	// Define the name of the user we are going to connect to the database with
	// to store the job accounting data.
	// Ref: https://slurm.schedmd.com/slurmdbd.conf.html#OPT_StorageUser
	// +optional
	Username string `json:"username,omitzero"`

	// PasswordKeyRef is a reference to a secret containing the password for the
	// user, specified by username, to access the given database.
	// Ref: https://slurm.schedmd.com/slurmdbd.conf.html#OPT_StoragePass
	// +required
	PasswordKeyRef corev1.SecretKeySelector `json:"passwordKeyRef,omitzero"`
}

StorageConfig defines access to mysql/mariadb.

func (*StorageConfig) DeepCopy

func (in *StorageConfig) DeepCopy() *StorageConfig

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

func (*StorageConfig) DeepCopyInto

func (in *StorageConfig) DeepCopyInto(out *StorageConfig)

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

type Token

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

	Spec   TokenSpec   `json:"spec,omitempty"`
	Status TokenStatus `json:"status,omitempty"`
}

Token is the Schema for the tokens API

func (*Token) DeepCopy

func (in *Token) DeepCopy() *Token

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

func (*Token) DeepCopyInto

func (in *Token) DeepCopyInto(out *Token)

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

func (*Token) DeepCopyObject

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

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

func (*Token) Hub

func (src *Token) Hub()

Hub implements conversion.Hub interface.

NOTE: `conversion.Hub` must be implemented on the `+kubebuilder:storageversion`.

func (*Token) JwtHs256Key deprecated

func (o *Token) JwtHs256Key() types.NamespacedName

Deprecated: use JwtKey() instead.

func (*Token) JwtHs256Ref deprecated

func (o *Token) JwtHs256Ref() JwtSecretKeySelector

Deprecated: use JwtRef() instead.

func (*Token) JwtKey

func (o *Token) JwtKey() types.NamespacedName

func (*Token) JwtRef

func (o *Token) JwtRef() JwtSecretKeySelector

NOTE: Return non-nil because this field is effectively required.

func (*Token) Key

func (o *Token) Key() types.NamespacedName

func (*Token) Lifetime

func (o *Token) Lifetime() time.Duration

func (*Token) SecretKey

func (o *Token) SecretKey() types.NamespacedName

func (*Token) SecretRef

func (o *Token) SecretRef() corev1.SecretKeySelector

func (*Token) Username

func (o *Token) Username() string

type TokenList

type TokenList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Token `json:"items"`
}

TokenList contains a list of Token

func (*TokenList) DeepCopy

func (in *TokenList) DeepCopy() *TokenList

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

func (*TokenList) DeepCopyInto

func (in *TokenList) DeepCopyInto(out *TokenList)

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

func (*TokenList) DeepCopyObject

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

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

type TokenSpec

type TokenSpec struct {
	// Slurm `auth/jwt` JWT HS256 key authentication.
	// +optional
	//
	// Deprecated: use JwtKeyRef instead.
	JwtHs256KeyRef *JwtSecretKeySelector `json:"jwtHs256KeyRef,omitzero"`

	// Slurm `auth/jwt` JWT key authentication.
	// +optional
	JwtKeyRef *JwtSecretKeySelector `json:"jwtKeyRef,omitzero"`

	// The username whom the token is created for.
	// +required
	Username string `json:"username,omitzero"`

	// The lifetime of the JWT before it expires.
	// +optional
	Lifetime *metav1.Duration `json:"lifetime,omitempty"`

	// Controls if the JWT will be rotated.
	// If set to false, then the secret will be created as immutable.
	// +optional
	// +default:=true
	Refresh *bool `json:"refresh,omitzero"`

	// SecretRef describes how to create the secret containing the JWT.
	// +optional
	SecretRef *corev1.SecretKeySelector `json:"secretRef,omitempty"`
}

TokenSpec defines the desired state of Token +kubebuilder:validation:XValidation:rule="has(self.jwtKeyRef) || has(self.jwtHs256KeyRef)", message="jwtKeyRef or jwtHs256KeyRef must be set"

func (*TokenSpec) DeepCopy

func (in *TokenSpec) DeepCopy() *TokenSpec

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

func (*TokenSpec) DeepCopyInto

func (in *TokenSpec) DeepCopyInto(out *TokenSpec)

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

type TokenStatus

type TokenStatus struct {
	// IssuedAt indicates the time when the JWT was issued.
	IssuedAt *metav1.Time `json:"issuedAt,omitempty"`

	// Represents the latest available observations of a Restapi's current state.
	// +optional
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
}

TokenStatus defines the observed state of Token

func (*TokenStatus) DeepCopy

func (in *TokenStatus) DeepCopy() *TokenStatus

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

func (*TokenStatus) DeepCopyInto

func (in *TokenStatus) DeepCopyInto(out *TokenStatus)

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

Jump to

Keyboard shortcuts

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