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 ¶
- Variables
- type AvailableUpdate
- type BackupRecord
- type BackupRetention
- type BackupSpec
- type BackupStatus
- type BlockedByInfo
- type CompatibilityOverride
- type DeletionProgressEntry
- type GatewayConfig
- type GatewayParentRef
- type GracefulShutdown
- type MaintenanceWindow
- type MatchedInstance
- type NetworkConfig
- type NetworkPolicyDestination
- type NetworkPolicySource
- type PaperMCServer
- type PaperMCServerList
- type PaperMCServerSpec
- type PaperMCServerStatus
- type PaperMCServerValidator
- func (in *PaperMCServerValidator) DeepCopy() *PaperMCServerValidator
- func (in *PaperMCServerValidator) DeepCopyInto(out *PaperMCServerValidator)
- func (v *PaperMCServerValidator) ValidateCreate(_ context.Context, obj *PaperMCServer) (admission.Warnings, error)
- func (v *PaperMCServerValidator) ValidateDelete(_ context.Context, _ *PaperMCServer) (admission.Warnings, error)
- func (v *PaperMCServerValidator) ValidateUpdate(_ context.Context, _, newObj *PaperMCServer) (admission.Warnings, error)
- type Plugin
- type PluginList
- type PluginRef
- type PluginSource
- type PluginSpec
- type PluginStatus
- type PluginValidator
- func (in *PluginValidator) DeepCopy() *PluginValidator
- func (in *PluginValidator) DeepCopyInto(out *PluginValidator)
- func (v *PluginValidator) ValidateCreate(_ context.Context, obj *Plugin) (admission.Warnings, error)
- func (v *PluginValidator) ValidateDelete(_ context.Context, _ *Plugin) (admission.Warnings, error)
- func (v *PluginValidator) ValidateUpdate(_ context.Context, _, newObj *Plugin) (admission.Warnings, error)
- type PluginVersionInfo
- type PluginVersionPair
- type RCONConfig
- type RouteConfig
- type SecretKeyRef
- type ServerNetworkPolicy
- type ServerPluginStatus
- type ServiceConfig
- type UpdateBlockedStatus
- type UpdateHistory
- type UpdateSchedule
Constants ¶
This section is empty.
Variables ¶
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 ¶
func (in *CompatibilityOverride) DeepCopy() *CompatibilityOverride
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 ¶
func (in *DeletionProgressEntry) DeepCopy() *DeletionProgressEntry
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 ¶
func (in *NetworkPolicyDestination) DeepCopy() *NetworkPolicyDestination
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 ¶
func (in *PaperMCServerValidator) DeepCopy() *PaperMCServerValidator
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 ¶
func (v *PaperMCServerValidator) ValidateCreate(_ context.Context, obj *PaperMCServer) (admission.Warnings, error)
ValidateCreate validates a PaperMCServer on creation.
func (*PaperMCServerValidator) ValidateDelete ¶
func (v *PaperMCServerValidator) ValidateDelete(_ context.Context, _ *PaperMCServer) (admission.Warnings, error)
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Plugin.
func (*Plugin) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Plugin) DeepCopyObject ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PluginRef.
func (*PluginRef) DeepCopyInto ¶
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 ¶
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.