api/v1/resourceslice.go (50 lines of code) (raw):
package v1
import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
// +kubebuilder:object:root=true
type ResourceSliceList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []ResourceSlice `json:"items"`
}
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
type ResourceSlice struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ResourceSliceSpec `json:"spec,omitempty"`
Status ResourceSliceStatus `json:"status,omitempty"`
}
type ResourceSliceSpec struct {
SynthesisUUID string `json:"synthesisUUID,omitempty"`
Resources []Manifest `json:"resources,omitempty"`
}
type Manifest struct {
Manifest string `json:"manifest,omitempty"`
// Deleted is true when this manifest represents a "tombstone" - a resource that should no longer exist.
Deleted bool `json:"deleted,omitempty"`
}
type ResourceSliceStatus struct {
// Elements of resources correspond in index to those in spec.resources at the observed generation.
Resources []ResourceState `json:"resources,omitempty"`
}
type ResourceState struct {
Reconciled bool `json:"reconciled,omitempty"`
Ready *metav1.Time `json:"ready,omitempty"`
Deleted bool `json:"deleted,omitempty"`
}
func (r *ResourceState) Equal(rr *ResourceState) bool {
if r == nil {
return rr == nil
}
if rr == nil {
return false
}
if r.Reconciled != rr.Reconciled || r.Deleted != rr.Deleted {
return false
}
if r.Ready == nil {
return rr.Ready == nil
}
if rr.Ready == nil {
return r.Ready == nil
}
return r.Ready.Equal(rr.Ready)
}
type ResourceSliceRef struct {
Name string `json:"name,omitempty"`
}