v1beta1

package
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Mar 13, 2026 License: BSD-3-Clause Imports: 13 Imported by: 0

Documentation

Overview

Package v1beta1 contains API Schema definitions for the mc.k8s.lex.la v1beta1 API group. +kubebuilder:object:generate=true +groupName=mc.k8s.lex.la

Index

Constants

This section is empty.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects.
	GroupVersion = schema.GroupVersion{Group: "mc.k8s.lex.la", Version: "v1beta1"}

	// 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
)

Functions

This section is empty.

Types

type AvailableUpdate

type AvailableUpdate struct {
	// Version is the available Paper version.
	Version string `json:"version"`

	// Build is the available Paper build number.
	Build int `json:"build"`

	// ReleasedAt is when this Paper version was released.
	ReleasedAt metav1.Time `json:"releasedAt"`

	// Plugins lists plugin versions for this update.
	Plugins []PluginVersionPair `json:"plugins"`

	// FoundAt is when this update was discovered.
	FoundAt metav1.Time `json:"foundAt"`
}

AvailableUpdate represents an available server update.

func (*AvailableUpdate) DeepCopy

func (in *AvailableUpdate) DeepCopy() *AvailableUpdate

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

func (*AvailableUpdate) DeepCopyInto

func (in *AvailableUpdate) DeepCopyInto(out *AvailableUpdate)

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

type BackupRecord

type BackupRecord struct {
	// SnapshotName is the name of the VolumeSnapshot resource.
	// Empty when the backup failed before snapshot creation.
	// +optional
	SnapshotName string `json:"snapshotName,omitempty"`

	// StartedAt is when the backup process started.
	StartedAt metav1.Time `json:"startedAt"`

	// CompletedAt is when the backup process completed.
	// +optional
	CompletedAt *metav1.Time `json:"completedAt,omitempty"`

	// Successful indicates if the backup completed successfully.
	Successful bool `json:"successful"`

	// Trigger describes what triggered the backup (scheduled, before-update, manual).
	Trigger string `json:"trigger"`
}

BackupRecord records information about a single backup.

func (*BackupRecord) DeepCopy

func (in *BackupRecord) DeepCopy() *BackupRecord

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

func (*BackupRecord) DeepCopyInto

func (in *BackupRecord) DeepCopyInto(out *BackupRecord)

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

type BackupRetention

type BackupRetention struct {
	// MaxCount is the maximum number of VolumeSnapshots to retain per server.
	// Oldest snapshots are deleted first when the limit is exceeded.
	// +optional
	// +kubebuilder:default=10
	// +kubebuilder:validation:Minimum=1
	MaxCount int32 `json:"maxCount,omitempty"`
}

BackupRetention defines backup retention policy.

func (*BackupRetention) DeepCopy

func (in *BackupRetention) DeepCopy() *BackupRetention

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

func (*BackupRetention) DeepCopyInto

func (in *BackupRetention) DeepCopyInto(out *BackupRetention)

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

type BackupSpec

type BackupSpec struct {
	// Enabled determines if backups are enabled.
	Enabled bool `json:"enabled"`

	// Schedule is the cron schedule for periodic backups (e.g., "0 */6 * * *").
	// +optional
	Schedule string `json:"schedule,omitempty"`

	// BeforeUpdate creates a backup before any server update is applied.
	// +optional
	// +kubebuilder:default=true
	BeforeUpdate *bool `json:"beforeUpdate,omitempty"`

	// VolumeSnapshotClassName is the VolumeSnapshotClass to use for creating snapshots.
	// If empty, the cluster default VolumeSnapshotClass is used.
	// +optional
	VolumeSnapshotClassName string `json:"volumeSnapshotClassName,omitempty"`

	// Retention defines how many backup snapshots to keep.
	// +optional
	Retention BackupRetention `json:"retention,omitempty"`
}

BackupSpec configures VolumeSnapshot-based backups for the Minecraft server.

func (*BackupSpec) DeepCopy

func (in *BackupSpec) DeepCopy() *BackupSpec

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

func (*BackupSpec) DeepCopyInto

func (in *BackupSpec) DeepCopyInto(out *BackupSpec)

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

type BackupStatus

type BackupStatus struct {
	// LastBackup records the most recent backup attempt.
	// +optional
	LastBackup *BackupRecord `json:"lastBackup,omitempty"`

	// BackupCount is the current number of retained VolumeSnapshots.
	BackupCount int32 `json:"backupCount"`
}

BackupStatus represents the observed backup state for the server.

func (*BackupStatus) DeepCopy

func (in *BackupStatus) DeepCopy() *BackupStatus

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

func (*BackupStatus) DeepCopyInto

func (in *BackupStatus) DeepCopyInto(out *BackupStatus)

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

type BlockedByInfo

type BlockedByInfo struct {
	// Plugin is the name of the Plugin resource blocking the update.
	Plugin string `json:"plugin"`

	// Version is the current/desired version of the blocking plugin.
	Version string `json:"version"`

	// SupportedVersions lists Paper versions this plugin supports.
	// +optional
	SupportedVersions []string `json:"supportedVersions,omitempty"`
}

BlockedByInfo contains details about which plugin is blocking an update.

func (*BlockedByInfo) DeepCopy

func (in *BlockedByInfo) DeepCopy() *BlockedByInfo

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

func (*BlockedByInfo) DeepCopyInto

func (in *BlockedByInfo) DeepCopyInto(out *BlockedByInfo)

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

type CompatibilityOverride

type CompatibilityOverride struct {
	// Enabled determines if the override replaces API metadata.
	Enabled bool `json:"enabled"`

	// MinecraftVersions lists supported Minecraft versions.
	// +optional
	MinecraftVersions []string `json:"minecraftVersions,omitempty"`
}

CompatibilityOverride allows manual compatibility specification.

func (*CompatibilityOverride) DeepCopy

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

func (*CompatibilityOverride) DeepCopyInto

func (in *CompatibilityOverride) DeepCopyInto(out *CompatibilityOverride)

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

type DeletionProgressEntry

type DeletionProgressEntry struct {
	// ServerName is the PaperMCServer name.
	ServerName string `json:"serverName"`

	// Namespace is the PaperMCServer namespace.
	Namespace string `json:"namespace"`

	// JARDeleted indicates the JAR file has been removed from disk.
	JARDeleted bool `json:"jarDeleted"`

	// DeletedAt is when the JAR was actually deleted.
	// +optional
	DeletedAt *metav1.Time `json:"deletedAt,omitempty"`

	// DeletionRequestedAt is when the JAR deletion was first requested.
	// Used for timeout-based forced completion to prevent deadlocks.
	// +optional
	DeletionRequestedAt *metav1.Time `json:"deletionRequestedAt,omitempty"`
}

DeletionProgressEntry tracks JAR cleanup status for one server during plugin deletion.

func (*DeletionProgressEntry) DeepCopy

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

func (*DeletionProgressEntry) DeepCopyInto

func (in *DeletionProgressEntry) DeepCopyInto(out *DeletionProgressEntry)

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

type GatewayConfig

type GatewayConfig struct {
	// Enabled determines if Gateway API routes are created for this server.
	Enabled bool `json:"enabled"`

	// ParentRefs are references to the Gateway(s) that routes should attach to.
	// +optional
	ParentRefs []GatewayParentRef `json:"parentRefs,omitempty"`

	// TCPRoute configures the TCPRoute resource for game traffic.
	// +optional
	TCPRoute *RouteConfig `json:"tcpRoute,omitempty"`

	// UDPRoute configures the UDPRoute resource for game traffic.
	// +optional
	UDPRoute *RouteConfig `json:"udpRoute,omitempty"`
}

GatewayConfig defines optional Gateway API TCPRoute/UDPRoute for game traffic.

func (*GatewayConfig) DeepCopy

func (in *GatewayConfig) DeepCopy() *GatewayConfig

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

func (*GatewayConfig) DeepCopyInto

func (in *GatewayConfig) DeepCopyInto(out *GatewayConfig)

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

type GatewayParentRef

type GatewayParentRef struct {
	// Name is the name of the Gateway.
	Name string `json:"name"`

	// Namespace is the namespace of the Gateway.
	// +optional
	Namespace string `json:"namespace,omitempty"`

	// SectionName is the name of a specific listener on the Gateway to attach to.
	// +optional
	SectionName string `json:"sectionName,omitempty"`
}

GatewayParentRef references a Gateway that routes should attach to.

func (*GatewayParentRef) DeepCopy

func (in *GatewayParentRef) DeepCopy() *GatewayParentRef

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

func (*GatewayParentRef) DeepCopyInto

func (in *GatewayParentRef) DeepCopyInto(out *GatewayParentRef)

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

type GracefulShutdown

type GracefulShutdown struct {
	// Timeout is the shutdown timeout (must match terminationGracePeriodSeconds).
	Timeout metav1.Duration `json:"timeout"`
}

GracefulShutdown defines graceful shutdown configuration.

func (*GracefulShutdown) DeepCopy

func (in *GracefulShutdown) DeepCopy() *GracefulShutdown

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

func (*GracefulShutdown) DeepCopyInto

func (in *GracefulShutdown) DeepCopyInto(out *GracefulShutdown)

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

type MaintenanceWindow

type MaintenanceWindow struct {
	// Cron is the schedule for applying updates (e.g., "0 4 * * 0").
	Cron string `json:"cron"`

	// Enabled determines if the maintenance window is active.
	Enabled bool `json:"enabled"`
}

MaintenanceWindow defines the time window for applying updates.

func (*MaintenanceWindow) DeepCopy

func (in *MaintenanceWindow) DeepCopy() *MaintenanceWindow

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

func (*MaintenanceWindow) DeepCopyInto

func (in *MaintenanceWindow) DeepCopyInto(out *MaintenanceWindow)

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

type MatchedInstance

type MatchedInstance struct {
	// Name is the server name.
	Name string `json:"name"`

	// Namespace is the server namespace.
	Namespace string `json:"namespace"`

	// Version is the server's current Paper version.
	Version string `json:"version"`

	// Compatible indicates whether the plugin has a resolved version compatible with this server.
	// This value is read from PaperMCServer.status.plugins during Plugin reconciliation.
	Compatible bool `json:"compatible"`
}

MatchedInstance represents a PaperMCServer instance matched by the selector.

func (*MatchedInstance) DeepCopy

func (in *MatchedInstance) DeepCopy() *MatchedInstance

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

func (*MatchedInstance) DeepCopyInto

func (in *MatchedInstance) DeepCopyInto(out *MatchedInstance)

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

type NetworkConfig

type NetworkConfig struct {
	// NetworkPolicy configures the NetworkPolicy for this server.
	// +optional
	NetworkPolicy *ServerNetworkPolicy `json:"networkPolicy,omitempty"`
}

NetworkConfig defines network policy configuration for a PaperMCServer.

func (*NetworkConfig) DeepCopy

func (in *NetworkConfig) DeepCopy() *NetworkConfig

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

func (*NetworkConfig) DeepCopyInto

func (in *NetworkConfig) DeepCopyInto(out *NetworkConfig)

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

type NetworkPolicyDestination

type NetworkPolicyDestination struct {
	// CIDR is an IPv4 block in CIDR notation (e.g., "203.0.113.0/24").
	// IPv6 CIDRs are not supported. Semantic validation (valid octets, prefix length)
	// is performed by the Kubernetes NetworkPolicy API at apply time.
	// +optional
	// +kubebuilder:validation:Pattern=`^([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]{1,2}$`
	CIDR string `json:"cidr,omitempty"`

	// Port is the destination port number.
	// +optional
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	Port *int32 `json:"port,omitempty"`

	// Protocol is the protocol (TCP or UDP). Defaults to TCP.
	// +optional
	// +kubebuilder:validation:Enum=TCP;UDP
	Protocol *corev1.Protocol `json:"protocol,omitempty"`
}

NetworkPolicyDestination defines an egress destination (CIDR or port).

func (*NetworkPolicyDestination) DeepCopy

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

func (*NetworkPolicyDestination) DeepCopyInto

func (in *NetworkPolicyDestination) DeepCopyInto(out *NetworkPolicyDestination)

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

type NetworkPolicySource

type NetworkPolicySource struct {
	// CIDR is an IPv4 block in CIDR notation (e.g., "10.0.0.0/8").
	// IPv6 CIDRs are not supported. Semantic validation (valid octets, prefix length)
	// is performed by the Kubernetes NetworkPolicy API at apply time.
	// +optional
	// +kubebuilder:validation:Pattern=`^([0-9]{1,3}\.){3}[0-9]{1,3}/[0-9]{1,2}$`
	CIDR string `json:"cidr,omitempty"`

	// PodSelector matches pods in the same namespace.
	// +optional
	PodSelector *metav1.LabelSelector `json:"podSelector,omitempty"`

	// NamespaceSelector matches pods in selected namespaces.
	// +optional
	NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty"`
}

NetworkPolicySource defines an ingress source (CIDR or pod/namespace selector).

func (*NetworkPolicySource) DeepCopy

func (in *NetworkPolicySource) DeepCopy() *NetworkPolicySource

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

func (*NetworkPolicySource) DeepCopyInto

func (in *NetworkPolicySource) DeepCopyInto(out *NetworkPolicySource)

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

type PaperMCServer

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

	// metadata is a standard object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty,omitzero"`

	// spec defines the desired state of PaperMCServer
	// +required
	Spec PaperMCServerSpec `json:"spec"`

	// status defines the observed state of PaperMCServer
	// +optional
	Status PaperMCServerStatus `json:"status,omitempty,omitzero"`
}

PaperMCServer is the Schema for the papermcservers API.

func (*PaperMCServer) DeepCopy

func (in *PaperMCServer) DeepCopy() *PaperMCServer

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

func (*PaperMCServer) DeepCopyInto

func (in *PaperMCServer) DeepCopyInto(out *PaperMCServer)

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

func (*PaperMCServer) DeepCopyObject

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

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

type PaperMCServerList

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

PaperMCServerList contains a list of PaperMCServer.

func (*PaperMCServerList) DeepCopy

func (in *PaperMCServerList) DeepCopy() *PaperMCServerList

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

func (*PaperMCServerList) DeepCopyInto

func (in *PaperMCServerList) DeepCopyInto(out *PaperMCServerList)

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

func (*PaperMCServerList) DeepCopyObject

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

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

type PaperMCServerSpec

type PaperMCServerSpec struct {
	// UpdateStrategy defines the update strategy for Paper version.
	// Valid values: "latest", "auto", "pin", "build-pin".
	// - latest: always use latest available version from Docker Hub
	// - auto: use constraint solver to find best version compatible with plugins
	// - pin: pin to specific version, auto-update to latest build (requires version field)
	// - build-pin: pin to specific version and build (requires version and build fields)
	// +kubebuilder:validation:Enum=latest;auto;pin;build-pin
	UpdateStrategy string `json:"updateStrategy"`

	// Version specifies the target Paper version (required for pin and build-pin strategies).
	// Example: "1.21.1" for a Minecraft version.
	// +optional
	Version string `json:"version,omitempty"`

	// Build specifies the target Paper build number (required for build-pin strategy, optional for pin).
	// If set with pin strategy, it serves as a minimum build; operator will still auto-update to newer builds.
	// If set with build-pin strategy, operator will pin to this exact build.
	// +optional
	Build *int `json:"build,omitempty"`

	// UpdateDelay is the grace period before applying Paper updates.
	// +optional
	UpdateDelay *metav1.Duration `json:"updateDelay,omitempty"`

	// UpdateSchedule defines when to check and apply updates.
	UpdateSchedule UpdateSchedule `json:"updateSchedule"`

	// GracefulShutdown configures graceful server shutdown.
	GracefulShutdown GracefulShutdown `json:"gracefulShutdown"`

	// RCON configures RCON for graceful shutdown.
	RCON RCONConfig `json:"rcon"`

	// Service configures the Kubernetes Service for this server.
	// +optional
	Service ServiceConfig `json:"service,omitempty"`

	// Gateway configures optional Gateway API TCPRoute/UDPRoute for game traffic.
	// Requires Gateway API CRDs (experimental channel) installed in the cluster.
	// +optional
	Gateway *GatewayConfig `json:"gateway,omitempty"`

	// Backup configures VolumeSnapshot-based backups.
	// +optional
	Backup *BackupSpec `json:"backup,omitempty"`

	// Network configures network policies for this server.
	// +optional
	Network *NetworkConfig `json:"network,omitempty"`

	// PodTemplate is the template for the StatefulSet pod.
	PodTemplate corev1.PodTemplateSpec `json:"podTemplate"`
}

PaperMCServerSpec defines the desired state of PaperMCServer.

func (*PaperMCServerSpec) DeepCopy

func (in *PaperMCServerSpec) DeepCopy() *PaperMCServerSpec

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

func (*PaperMCServerSpec) DeepCopyInto

func (in *PaperMCServerSpec) DeepCopyInto(out *PaperMCServerSpec)

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

type PaperMCServerStatus

type PaperMCServerStatus struct {
	// CurrentVersion is the currently running Paper version.
	// +optional
	CurrentVersion string `json:"currentVersion,omitempty"`

	// CurrentBuild is the currently running Paper build number.
	// +optional
	CurrentBuild int `json:"currentBuild,omitempty"`

	// DesiredVersion is the target Paper version the operator wants to run.
	// +optional
	DesiredVersion string `json:"desiredVersion,omitempty"`

	// DesiredBuild is the target Paper build number the operator wants to run.
	// +optional
	DesiredBuild int `json:"desiredBuild,omitempty"`

	// Plugins lists matched Plugin resources and their versions.
	// +optional
	Plugins []ServerPluginStatus `json:"plugins,omitempty"`

	// AvailableUpdate contains the next available update if any.
	// +optional
	AvailableUpdate *AvailableUpdate `json:"availableUpdate,omitempty"`

	// LastUpdate records the most recent update attempt.
	// +optional
	LastUpdate *UpdateHistory `json:"lastUpdate,omitempty"`

	// UpdateBlocked indicates if updates are blocked due to compatibility issues.
	// +optional
	UpdateBlocked *UpdateBlockedStatus `json:"updateBlocked,omitempty"`

	// Backup represents the observed backup state.
	// +optional
	Backup *BackupStatus `json:"backup,omitempty"`

	// Conditions represent the current state of the PaperMCServer resource.
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

PaperMCServerStatus defines the observed state of PaperMCServer.

func (*PaperMCServerStatus) DeepCopy

func (in *PaperMCServerStatus) DeepCopy() *PaperMCServerStatus

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

func (*PaperMCServerStatus) DeepCopyInto

func (in *PaperMCServerStatus) DeepCopyInto(out *PaperMCServerStatus)

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

type PaperMCServerValidator

type PaperMCServerValidator struct{}

PaperMCServerValidator validates PaperMCServer resources.

func (*PaperMCServerValidator) DeepCopy

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

func (*PaperMCServerValidator) DeepCopyInto

func (in *PaperMCServerValidator) DeepCopyInto(out *PaperMCServerValidator)

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

func (*PaperMCServerValidator) ValidateCreate

ValidateCreate validates a PaperMCServer on creation.

func (*PaperMCServerValidator) ValidateDelete

ValidateDelete validates a PaperMCServer on deletion.

func (*PaperMCServerValidator) ValidateUpdate

func (v *PaperMCServerValidator) ValidateUpdate(
	_ context.Context, _, newObj *PaperMCServer,
) (admission.Warnings, error)

ValidateUpdate validates a PaperMCServer on update.

type Plugin

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

	// metadata is a standard object metadata
	// +optional
	metav1.ObjectMeta `json:"metadata,omitempty,omitzero"`

	// spec defines the desired state of Plugin
	// +required
	Spec PluginSpec `json:"spec"`

	// status defines the observed state of Plugin
	// +optional
	Status PluginStatus `json:"status,omitempty,omitzero"`
}

Plugin is the Schema for the plugins API.

func (*Plugin) DeepCopy

func (in *Plugin) DeepCopy() *Plugin

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

func (*Plugin) DeepCopyInto

func (in *Plugin) DeepCopyInto(out *Plugin)

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

func (*Plugin) DeepCopyObject

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

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

type PluginList

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

PluginList contains a list of Plugin.

func (*PluginList) DeepCopy

func (in *PluginList) DeepCopy() *PluginList

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

func (*PluginList) DeepCopyInto

func (in *PluginList) DeepCopyInto(out *PluginList)

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

func (*PluginList) DeepCopyObject

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

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

type PluginRef

type PluginRef struct {
	// Name is the Plugin name.
	Name string `json:"name"`

	// Namespace is the Plugin namespace.
	Namespace string `json:"namespace"`
}

PluginRef references a Plugin resource.

func (*PluginRef) DeepCopy

func (in *PluginRef) DeepCopy() *PluginRef

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

func (*PluginRef) DeepCopyInto

func (in *PluginRef) DeepCopyInto(out *PluginRef)

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

type PluginSource

type PluginSource struct {
	// Type specifies the plugin repository type.
	// +kubebuilder:validation:Enum=hangar;url
	Type string `json:"type"`

	// Project is the plugin project identifier (for hangar).
	// +optional
	Project string `json:"project,omitempty"`

	// URL is the direct download URL (for type: url).
	// +optional
	URL string `json:"url,omitempty"`

	// Checksum is the expected SHA256 hash of the JAR file (for type: url).
	// If not provided, the operator logs a warning about unverified downloads.
	// +optional
	// +kubebuilder:validation:Pattern=`^[a-fA-F0-9]{64}$`
	Checksum string `json:"checksum,omitempty"`
}

PluginSource defines the source of a plugin.

func (*PluginSource) DeepCopy

func (in *PluginSource) DeepCopy() *PluginSource

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

func (*PluginSource) DeepCopyInto

func (in *PluginSource) DeepCopyInto(out *PluginSource)

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

type PluginSpec

type PluginSpec struct {
	// Source specifies where to fetch the plugin.
	Source PluginSource `json:"source"`

	// UpdateStrategy defines how plugin versions are managed.
	// Valid values: "latest", "auto", "pin", "build-pin".
	// - latest: always use the latest available version from the repository
	// - auto: use constraint solver to find best version compatible with matched servers
	// - pin: pin to specific version (requires version field), auto-update to latest build
	// - build-pin: pin to specific version and build (requires version and build fields)
	// +kubebuilder:validation:Enum=latest;auto;pin;build-pin
	// +kubebuilder:default=latest
	UpdateStrategy string `json:"updateStrategy,omitempty"`

	// Version specifies the target plugin version (required for pin and build-pin strategies).
	// Example: "2.5.0" for a semantic version.
	// +optional
	Version string `json:"version,omitempty"`

	// Build specifies the target plugin build number (optional, only used with build-pin strategy).
	// If set, the operator will pin to this exact build of the specified version.
	// +optional
	Build *int `json:"build,omitempty"`

	// UpdateDelay is the grace period before auto-applying new versions.
	// +optional
	UpdateDelay *metav1.Duration `json:"updateDelay,omitempty"`

	// InstanceSelector selects which PaperMCServer instances to apply this plugin to.
	InstanceSelector metav1.LabelSelector `json:"instanceSelector"`

	// Port is the network port that this plugin exposes (optional).
	// If specified, this port will be added to the Service of all matched servers (TCP+UDP).
	// Example: 8123 for Dynmap web interface.
	// +optional
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	Port *int32 `json:"port,omitempty"`

	// CompatibilityOverride allows manual compatibility specification for edge cases.
	// +optional
	CompatibilityOverride *CompatibilityOverride `json:"compatibilityOverride,omitempty"`
}

PluginSpec defines the desired state of Plugin.

func (*PluginSpec) DeepCopy

func (in *PluginSpec) DeepCopy() *PluginSpec

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

func (*PluginSpec) DeepCopyInto

func (in *PluginSpec) DeepCopyInto(out *PluginSpec)

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

type PluginStatus

type PluginStatus struct {
	// AvailableVersions contains cached metadata from the plugin repository.
	// +optional
	AvailableVersions []PluginVersionInfo `json:"availableVersions,omitempty"`

	// MatchedInstances lists servers this plugin applies to with per-server resolved versions.
	// +optional
	MatchedInstances []MatchedInstance `json:"matchedInstances,omitempty"`

	// RepositoryStatus indicates the plugin repository availability.
	// +optional
	// +kubebuilder:validation:Enum=available;unavailable;orphaned
	RepositoryStatus string `json:"repositoryStatus,omitempty"`

	// LastFetched is the timestamp of the last API fetch.
	// +optional
	LastFetched *metav1.Time `json:"lastFetched,omitempty"`

	// DeletionProgress tracks JAR cleanup per server during plugin deletion.
	// This field is populated when the plugin is being deleted (has DeletionTimestamp).
	// +optional
	DeletionProgress []DeletionProgressEntry `json:"deletionProgress,omitempty"`

	// Conditions represent the current state of the Plugin resource.
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

PluginStatus defines the observed state of Plugin.

func (*PluginStatus) DeepCopy

func (in *PluginStatus) DeepCopy() *PluginStatus

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

func (*PluginStatus) DeepCopyInto

func (in *PluginStatus) DeepCopyInto(out *PluginStatus)

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

type PluginValidator

type PluginValidator struct{}

PluginValidator validates Plugin resources.

func (*PluginValidator) DeepCopy

func (in *PluginValidator) DeepCopy() *PluginValidator

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

func (*PluginValidator) DeepCopyInto

func (in *PluginValidator) DeepCopyInto(out *PluginValidator)

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

func (*PluginValidator) ValidateCreate

func (v *PluginValidator) ValidateCreate(_ context.Context, obj *Plugin) (admission.Warnings, error)

ValidateCreate validates a Plugin on creation.

func (*PluginValidator) ValidateDelete

func (v *PluginValidator) ValidateDelete(_ context.Context, _ *Plugin) (admission.Warnings, error)

ValidateDelete validates a Plugin on deletion.

func (*PluginValidator) ValidateUpdate

func (v *PluginValidator) ValidateUpdate(_ context.Context, _, newObj *Plugin) (admission.Warnings, error)

ValidateUpdate validates a Plugin on update.

type PluginVersionInfo

type PluginVersionInfo struct {
	// Version is the plugin version string.
	Version string `json:"version"`

	// MinecraftVersions lists compatible Minecraft versions.
	MinecraftVersions []string `json:"minecraftVersions"`

	// DownloadURL is the URL to download this version.
	DownloadURL string `json:"downloadURL"`

	// Hash is the SHA256 hash of the plugin JAR.
	Hash string `json:"hash"`

	// CachedAt is when this metadata was cached.
	CachedAt metav1.Time `json:"cachedAt"`

	// ReleasedAt is when this version was released.
	ReleasedAt metav1.Time `json:"releasedAt"`
}

PluginVersionInfo contains metadata about a specific plugin version.

func (*PluginVersionInfo) DeepCopy

func (in *PluginVersionInfo) DeepCopy() *PluginVersionInfo

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

func (*PluginVersionInfo) DeepCopyInto

func (in *PluginVersionInfo) DeepCopyInto(out *PluginVersionInfo)

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

type PluginVersionPair

type PluginVersionPair struct {
	// PluginRef references the Plugin resource.
	PluginRef PluginRef `json:"pluginRef"`

	// Version is the plugin version.
	Version string `json:"version"`
}

PluginVersionPair pairs a plugin with its version.

func (*PluginVersionPair) DeepCopy

func (in *PluginVersionPair) DeepCopy() *PluginVersionPair

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

func (*PluginVersionPair) DeepCopyInto

func (in *PluginVersionPair) DeepCopyInto(out *PluginVersionPair)

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

type RCONConfig

type RCONConfig struct {
	// Enabled determines if RCON is enabled.
	Enabled bool `json:"enabled"`

	// PasswordSecret references the Secret containing the RCON password.
	PasswordSecret SecretKeyRef `json:"passwordSecret"`

	// Port is the RCON port.
	// +optional
	// +kubebuilder:default=25575
	Port int32 `json:"port,omitempty"`
}

RCONConfig defines RCON configuration for the server.

func (*RCONConfig) DeepCopy

func (in *RCONConfig) DeepCopy() *RCONConfig

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

func (*RCONConfig) DeepCopyInto

func (in *RCONConfig) DeepCopyInto(out *RCONConfig)

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

type RouteConfig

type RouteConfig struct {
	// Enabled determines if this route type is created.
	Enabled bool `json:"enabled"`
}

RouteConfig configures an individual Gateway API route.

func (*RouteConfig) DeepCopy

func (in *RouteConfig) DeepCopy() *RouteConfig

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

func (*RouteConfig) DeepCopyInto

func (in *RouteConfig) DeepCopyInto(out *RouteConfig)

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

type SecretKeyRef

type SecretKeyRef struct {
	// Name is the Secret name.
	Name string `json:"name"`

	// Key is the key within the Secret.
	Key string `json:"key"`
}

SecretKeyRef references a key in a Secret.

func (*SecretKeyRef) DeepCopy

func (in *SecretKeyRef) DeepCopy() *SecretKeyRef

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

func (*SecretKeyRef) DeepCopyInto

func (in *SecretKeyRef) DeepCopyInto(out *SecretKeyRef)

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

type ServerNetworkPolicy

type ServerNetworkPolicy struct {
	// Enabled determines if NetworkPolicy is created for this server.
	Enabled bool `json:"enabled"`

	// AllowFrom defines additional ingress sources for the Minecraft port.
	// Each entry is a standard Kubernetes NetworkPolicyPeer.
	// +optional
	AllowFrom []NetworkPolicySource `json:"allowFrom,omitempty"`

	// RestrictEgress restricts outbound traffic to DNS and HTTPS only.
	// +optional
	// +kubebuilder:default=true
	RestrictEgress *bool `json:"restrictEgress,omitempty"`

	// AllowEgressTo defines additional egress destinations when restrictEgress is true.
	// +optional
	AllowEgressTo []NetworkPolicyDestination `json:"allowEgressTo,omitempty"`
}

ServerNetworkPolicy configures a Kubernetes NetworkPolicy for a PaperMCServer.

func (*ServerNetworkPolicy) DeepCopy

func (in *ServerNetworkPolicy) DeepCopy() *ServerNetworkPolicy

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

func (*ServerNetworkPolicy) DeepCopyInto

func (in *ServerNetworkPolicy) DeepCopyInto(out *ServerNetworkPolicy)

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

type ServerPluginStatus

type ServerPluginStatus struct {
	// PluginRef references the Plugin resource.
	PluginRef PluginRef `json:"pluginRef"`

	// ResolvedVersion is the plugin version resolved for this server.
	ResolvedVersion string `json:"resolvedVersion"`

	// CurrentVersion is the currently installed plugin version.
	// +optional
	CurrentVersion string `json:"currentVersion,omitempty"`

	// DesiredVersion is the target plugin version the operator wants to install.
	// +optional
	DesiredVersion string `json:"desiredVersion,omitempty"`

	// Compatible indicates if this version is compatible with the server.
	Compatible bool `json:"compatible"`

	// Source is the plugin repository type.
	Source string `json:"source"`

	// PendingDeletion marks the plugin for removal on next server restart.
	// This is set when the Plugin CRD is deleted but the JAR is still on disk.
	// +optional
	PendingDeletion bool `json:"pendingDeletion,omitempty"`

	// InstalledJARName is the filename of the installed JAR in /data/plugins/.
	// Example: "BlueMap-5.4-paper.jar". Used for targeted deletion.
	// +optional
	InstalledJARName string `json:"installedJarName,omitempty"`
}

ServerPluginStatus represents a plugin's status for this server.

func (*ServerPluginStatus) DeepCopy

func (in *ServerPluginStatus) DeepCopy() *ServerPluginStatus

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

func (*ServerPluginStatus) DeepCopyInto

func (in *ServerPluginStatus) DeepCopyInto(out *ServerPluginStatus)

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

type ServiceConfig

type ServiceConfig struct {
	// Type is the Service type (LoadBalancer, NodePort, or ClusterIP).
	// +optional
	// +kubebuilder:default=LoadBalancer
	// +kubebuilder:validation:Enum=LoadBalancer;NodePort;ClusterIP
	Type corev1.ServiceType `json:"type,omitempty"`

	// Annotations are custom annotations for the Service (e.g., for LoadBalancer configuration).
	// Examples: service.cilium.io/global, metallb.universe.tf/loadBalancerIPs
	// +optional
	Annotations map[string]string `json:"annotations,omitempty"`

	// LoadBalancerIP is the IP address for LoadBalancer type services.
	// +optional
	LoadBalancerIP string `json:"loadBalancerIP,omitempty"`
}

ServiceConfig defines configuration for the Kubernetes Service.

func (*ServiceConfig) DeepCopy

func (in *ServiceConfig) DeepCopy() *ServiceConfig

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

func (*ServiceConfig) DeepCopyInto

func (in *ServiceConfig) DeepCopyInto(out *ServiceConfig)

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

type UpdateBlockedStatus

type UpdateBlockedStatus struct {
	// Blocked indicates if updates are currently blocked.
	Blocked bool `json:"blocked"`

	// Reason provides a human-readable explanation for the block.
	// +optional
	Reason string `json:"reason,omitempty"`

	// BlockedBy contains details about which plugin is blocking the update.
	// +optional
	BlockedBy *BlockedByInfo `json:"blockedBy,omitempty"`
}

UpdateBlockedStatus indicates if updates are blocked due to compatibility issues.

func (*UpdateBlockedStatus) DeepCopy

func (in *UpdateBlockedStatus) DeepCopy() *UpdateBlockedStatus

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

func (*UpdateBlockedStatus) DeepCopyInto

func (in *UpdateBlockedStatus) DeepCopyInto(out *UpdateBlockedStatus)

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

type UpdateHistory

type UpdateHistory struct {
	// AppliedAt is when the update was applied.
	AppliedAt metav1.Time `json:"appliedAt"`

	// PreviousVersion is the Paper version before the update.
	PreviousVersion string `json:"previousVersion"`

	// Successful indicates if the update succeeded.
	Successful bool `json:"successful"`
}

UpdateHistory records the last update attempt.

func (*UpdateHistory) DeepCopy

func (in *UpdateHistory) DeepCopy() *UpdateHistory

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

func (*UpdateHistory) DeepCopyInto

func (in *UpdateHistory) DeepCopyInto(out *UpdateHistory)

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

type UpdateSchedule

type UpdateSchedule struct {
	// CheckCron is the cron schedule for checking updates (e.g., "0 3 * * *").
	CheckCron string `json:"checkCron"`

	// MaintenanceWindow defines when updates can be applied.
	MaintenanceWindow MaintenanceWindow `json:"maintenanceWindow"`
}

UpdateSchedule defines when to check and apply updates.

func (*UpdateSchedule) DeepCopy

func (in *UpdateSchedule) DeepCopy() *UpdateSchedule

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

func (*UpdateSchedule) DeepCopyInto

func (in *UpdateSchedule) DeepCopyInto(out *UpdateSchedule)

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