Files
Reloader/internal/pkg/workload/statefulset.go
T

47 lines
1.3 KiB
Go

package workload
import (
appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// statefulSetAccessor implements PodTemplateAccessor for StatefulSet.
type statefulSetAccessor struct {
statefulset *appsv1.StatefulSet
}
func (a *statefulSetAccessor) GetPodTemplateSpec() *corev1.PodTemplateSpec {
return &a.statefulset.Spec.Template
}
func (a *statefulSetAccessor) GetObjectMeta() *metav1.ObjectMeta {
return &a.statefulset.ObjectMeta
}
// StatefulSetWorkload wraps a Kubernetes StatefulSet.
type StatefulSetWorkload struct {
*BaseWorkload[*appsv1.StatefulSet]
}
// NewStatefulSetWorkload creates a new StatefulSetWorkload.
func NewStatefulSetWorkload(s *appsv1.StatefulSet) *StatefulSetWorkload {
original := s.DeepCopy()
accessor := &statefulSetAccessor{statefulset: s}
return &StatefulSetWorkload{
BaseWorkload: NewBaseWorkload(s, original, accessor, KindStatefulSet),
}
}
// Ensure StatefulSetWorkload implements Workload.
var _ Workload = (*StatefulSetWorkload)(nil)
func (w *StatefulSetWorkload) DeepCopy() Workload {
return NewStatefulSetWorkload(w.Object().DeepCopy())
}
// GetStatefulSet returns the underlying StatefulSet for special handling.
func (w *StatefulSetWorkload) GetStatefulSet() *appsv1.StatefulSet {
return w.Object()
}