141 lines
7.0 KiB
Go
141 lines
7.0 KiB
Go
package v1alpha1
|
|
|
|
import (
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
)
|
|
|
|
type OSUpgradePhase string
|
|
|
|
const (
|
|
OSUpgradePhasePending OSUpgradePhase = "Pending"
|
|
OSUpgradePhaseAccepted OSUpgradePhase = "Accepted"
|
|
OSUpgradePhaseRollingOut OSUpgradePhase = "RollingOut"
|
|
OSUpgradePhaseCompleted OSUpgradePhase = "Completed"
|
|
OSUpgradePhaseRejected OSUpgradePhase = "Rejected"
|
|
)
|
|
|
|
type OSUpgradeProgressPhase string
|
|
|
|
const (
|
|
OSUpgradeProgressPhasePending OSUpgradeProgressPhase = "pending"
|
|
OSUpgradeProgressPhaseDownloading OSUpgradeProgressPhase = "downloading"
|
|
OSUpgradeProgressPhaseWriting OSUpgradeProgressPhase = "writing"
|
|
OSUpgradeProgressPhaseRebooting OSUpgradeProgressPhase = "rebooting"
|
|
OSUpgradeProgressPhaseVerifying OSUpgradeProgressPhase = "verifying"
|
|
OSUpgradeProgressPhaseCompleted OSUpgradeProgressPhase = "completed"
|
|
OSUpgradeProgressPhaseFailed OSUpgradeProgressPhase = "failed"
|
|
OSUpgradeProgressPhaseRejected OSUpgradeProgressPhase = "rejected"
|
|
)
|
|
|
|
// +genclient
|
|
// +kubebuilder:object:root=true
|
|
// +kubebuilder:subresource:status
|
|
// +kubebuilder:resource:scope=Namespaced,shortName=osu
|
|
// +kubebuilder:printcolumn:name="Desired",type=string,JSONPath=`.spec.desiredVersion`
|
|
// +kubebuilder:printcolumn:name="Resolved",type=string,JSONPath=`.status.resolvedVersion`
|
|
// +kubebuilder:printcolumn:name="Phase",type=string,JSONPath=`.status.phase`
|
|
// +kubebuilder:printcolumn:name="Targets",type=integer,JSONPath=`.status.summary.targetedNodes`
|
|
// +kubebuilder:printcolumn:name="OK",type=integer,JSONPath=`.status.summary.succeededNodes`
|
|
// +kubebuilder:printcolumn:name="Fail",type=integer,JSONPath=`.status.summary.failedNodes`
|
|
type OSUpgrade struct {
|
|
metav1.TypeMeta `json:",inline" yaml:",inline"`
|
|
metav1.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
|
|
|
Spec OSUpgradeSpec `json:"spec,omitempty" yaml:"spec,omitempty"`
|
|
Status *OSUpgradeStatus `json:"status,omitempty" yaml:"status,omitempty"`
|
|
}
|
|
|
|
// +kubebuilder:object:root=true
|
|
type OSUpgradeList struct {
|
|
metav1.TypeMeta `json:",inline" yaml:",inline"`
|
|
metav1.ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
|
Items []OSUpgrade `json:"items" yaml:"items"`
|
|
}
|
|
|
|
type OSUpgradeSpec struct {
|
|
// +kubebuilder:validation:MinLength=1
|
|
DesiredVersion string `json:"desiredVersion,omitempty" yaml:"desiredVersion,omitempty"`
|
|
|
|
// +kubebuilder:validation:Enum=fast;balanced;safe
|
|
// +kubebuilder:default=balanced
|
|
FlashProfile string `json:"flashProfile,omitempty" yaml:"flashProfile,omitempty"`
|
|
|
|
Catalog *VersionCatalogSource `json:"catalog,omitempty" yaml:"catalog,omitempty"`
|
|
NodeSelector *metav1.LabelSelector `json:"nodeSelector,omitempty" yaml:"nodeSelector,omitempty"`
|
|
}
|
|
|
|
type VersionCatalogSource struct {
|
|
URL string `json:"url,omitempty" yaml:"url,omitempty"`
|
|
Inline string `json:"inline,omitempty" yaml:"inline,omitempty"`
|
|
ConfigMap string `json:"configMapRef,omitempty" yaml:"configMapRef,omitempty"`
|
|
}
|
|
|
|
type OSUpgradeStatus struct {
|
|
Phase OSUpgradePhase `json:"phase,omitempty" yaml:"phase,omitempty"`
|
|
ResolvedVersion string `json:"resolvedVersion,omitempty" yaml:"resolvedVersion,omitempty"`
|
|
ObservedGeneration int64 `json:"observedGeneration,omitempty" yaml:"observedGeneration,omitempty"`
|
|
Summary OSUpgradeSummary `json:"summary,omitempty" yaml:"summary,omitempty"`
|
|
Conditions []metav1.Condition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
|
|
Reason string `json:"reason,omitempty" yaml:"reason,omitempty"`
|
|
Message string `json:"message,omitempty" yaml:"message,omitempty"`
|
|
}
|
|
|
|
type OSUpgradeSummary struct {
|
|
TargetedNodes int32 `json:"targetedNodes,omitempty" yaml:"targetedNodes,omitempty"`
|
|
PendingNodes int32 `json:"pendingNodes,omitempty" yaml:"pendingNodes,omitempty"`
|
|
RunningNodes int32 `json:"runningNodes,omitempty" yaml:"runningNodes,omitempty"`
|
|
SucceededNodes int32 `json:"succeededNodes,omitempty" yaml:"succeededNodes,omitempty"`
|
|
FailedNodes int32 `json:"failedNodes,omitempty" yaml:"failedNodes,omitempty"`
|
|
}
|
|
|
|
// +genclient
|
|
// +kubebuilder:object:root=true
|
|
// +kubebuilder:subresource:status
|
|
// +kubebuilder:resource:scope=Namespaced,shortName=osup
|
|
// +kubebuilder:printcolumn:name="Node",type=string,JSONPath=`.spec.nodeName`
|
|
// +kubebuilder:printcolumn:name="Source",type=string,JSONPath=`.spec.sourceRef.name`
|
|
// +kubebuilder:printcolumn:name="Current",type=string,JSONPath=`.status.currentVersion`
|
|
// +kubebuilder:printcolumn:name="Target",type=string,JSONPath=`.status.targetVersion`
|
|
// +kubebuilder:printcolumn:name="Status",type=string,JSONPath=`.status.phase`
|
|
type OSUpgradeProgress struct {
|
|
metav1.TypeMeta `json:",inline" yaml:",inline"`
|
|
metav1.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
|
|
|
Spec OSUpgradeProgressSpec `json:"spec,omitempty" yaml:"spec,omitempty"`
|
|
Status *OSUpgradeProgressStatus `json:"status,omitempty" yaml:"status,omitempty"`
|
|
}
|
|
|
|
// +kubebuilder:object:root=true
|
|
type OSUpgradeProgressList struct {
|
|
metav1.TypeMeta `json:",inline" yaml:",inline"`
|
|
metav1.ListMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
|
|
Items []OSUpgradeProgress `json:"items" yaml:"items"`
|
|
}
|
|
|
|
type OSUpgradeProgressSpec struct {
|
|
SourceRef OSUpgradeSourceRef `json:"sourceRef,omitempty" yaml:"sourceRef,omitempty"`
|
|
NodeName string `json:"nodeName,omitempty" yaml:"nodeName,omitempty"`
|
|
}
|
|
|
|
type OSUpgradeSourceRef struct {
|
|
Name string `json:"name,omitempty" yaml:"name,omitempty"`
|
|
Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
|
|
}
|
|
|
|
type OSUpgradeProgressStatus struct {
|
|
CurrentVersion string `json:"currentVersion,omitempty" yaml:"currentVersion,omitempty"`
|
|
TargetVersion string `json:"targetVersion,omitempty" yaml:"targetVersion,omitempty"`
|
|
Phase OSUpgradeProgressPhase `json:"phase,omitempty" yaml:"phase,omitempty"`
|
|
StartedAt *metav1.Time `json:"startedAt,omitempty" yaml:"startedAt,omitempty"`
|
|
CompletedAt *metav1.Time `json:"completedAt,omitempty" yaml:"completedAt,omitempty"`
|
|
LastUpdatedAt *metav1.Time `json:"lastUpdatedAt,omitempty" yaml:"lastUpdatedAt,omitempty"`
|
|
RetryCount int32 `json:"retryCount,omitempty" yaml:"retryCount,omitempty"`
|
|
InactivePartition string `json:"inactivePartition,omitempty" yaml:"inactivePartition,omitempty"`
|
|
FailureReason string `json:"failureReason,omitempty" yaml:"failureReason,omitempty"`
|
|
Message string `json:"message,omitempty" yaml:"message,omitempty"`
|
|
PlannedPath []string `json:"plannedPath,omitempty" yaml:"plannedPath,omitempty"`
|
|
CurrentStep int32 `json:"currentStep,omitempty" yaml:"currentStep,omitempty"`
|
|
CurrentFrom string `json:"currentFrom,omitempty" yaml:"currentFrom,omitempty"`
|
|
CurrentTo string `json:"currentTo,omitempty" yaml:"currentTo,omitempty"`
|
|
}
|