Documentation ¶
Index ¶
- Constants
- Variables
- func IsInternalStateError(err error) bool
- func IsInvalidStateError(err error) bool
- func IsMissingStateError(err error) bool
- func IsReadStateError(err error) bool
- func IsSynced(obj client.Object, sd StateDisplay, state *SyncState) (bool, error)
- func IsWriteStateError(err error) bool
- type AnnotationStateDisplay
- func (asd *AnnotationStateDisplay) Read(obj client.Object) (*SyncState, StateError)
- func (*AnnotationStateDisplay) Type() string
- func (asd *AnnotationStateDisplay) Verbosity() StateVerbosity
- func (asd *AnnotationStateDisplay) Write(obj client.Object, state *SyncState, fields ...*StateField) (sets.Set[string], error)
- type InternalStateError
- func (e *InternalStateError) IsInternalStateError() bool
- func (e *InternalStateError) IsInvalidStateError() bool
- func (e *InternalStateError) IsMissingStateError() bool
- func (e *InternalStateError) IsReadStateError() bool
- func (e *InternalStateError) IsWriteStateError() bool
- func (e *InternalStateError) Reason() string
- type InvalidStateError
- func (e *InvalidStateError) IsInternalStateError() bool
- func (e *InvalidStateError) IsInvalidStateError() bool
- func (e *InvalidStateError) IsMissingStateError() bool
- func (e *InvalidStateError) IsReadStateError() bool
- func (e *InvalidStateError) IsWriteStateError() bool
- func (e *InvalidStateError) Reason() string
- type MissingStateError
- func (e *MissingStateError) IsInternalStateError() bool
- func (e *MissingStateError) IsInvalidStateError() bool
- func (e *MissingStateError) IsMissingStateError() bool
- func (e *MissingStateError) IsReadStateError() bool
- func (e *MissingStateError) IsWriteStateError() bool
- func (e *MissingStateError) Reason() string
- type Phase
- type ReadStateError
- type StateDisplay
- type StateError
- type StateField
- type StateVerbosity
- type StatusStateDisplay
- func (ssd *StatusStateDisplay) Read(rawObj client.Object) (*SyncState, StateError)
- func (*StatusStateDisplay) Type() string
- func (ssd *StatusStateDisplay) Verbosity() StateVerbosity
- func (ssd *StatusStateDisplay) Write(rawObj client.Object, state *SyncState, fields ...*StateField) (sets.Set[string], error)
- type SyncState
- type WriteStateError
- func (e *WriteStateError) IsInternalStateError() bool
- func (e *WriteStateError) IsInvalidStateError() bool
- func (e *WriteStateError) IsMissingStateError() bool
- func (e *WriteStateError) IsReadStateError() bool
- func (e *WriteStateError) IsWriteStateError() bool
- func (e *WriteStateError) Reason() string
Constants ¶
const ( ERR_REASON_MISSING_STATE = "MissingState" ERR_REASON_INVALID_STATE = "InvalidState" ERR_REASON_INTERNAL = "InternalError" ERR_REASON_READ_FAILED = "ReadFailed" ERR_REASON_WRITE_FAILED = "WriteFailed" )
Variables ¶
var ( STATE_FIELD_LAST_SYNCED_GENERATION = &StateField{ set: func(state *SyncState, value any) { state.LastSyncedGeneration = value.(int64) }, get: func(state *SyncState) any { return state.LastSyncedGeneration }, serialize: func(value any) any { return value }, hasCorrectType: func(value any) bool { _, ok := value.(int64) return ok }, name: "lastSyncedGeneration", includedIn: sets.New[StateVerbosity](STATE_VERBOSITY_GENERATION, STATE_VERBOSITY_PHASE, STATE_VERBOSITY_DETAIL), } STATE_FIELD_PHASE = &StateField{ set: func(state *SyncState, value any) { state.Phase = value.(Phase) }, get: func(state *SyncState) any { return state.Phase }, serialize: func(value any) any { return string(value.(Phase)) }, hasCorrectType: func(value any) bool { _, ok := value.(Phase) return ok }, name: "phase", includedIn: sets.New[StateVerbosity](STATE_VERBOSITY_PHASE, STATE_VERBOSITY_DETAIL), } STATE_FIELD_DETAIL = &StateField{ set: func(state *SyncState, value any) { state.Detail = value.(string) }, get: func(state *SyncState) any { return state.Detail }, serialize: func(value any) any { return value }, hasCorrectType: func(value any) bool { _, ok := value.(string) return ok }, name: "detail", includedIn: sets.New[StateVerbosity](STATE_VERBOSITY_DETAIL), } ALL_STATE_FIELDS = []*StateField{STATE_FIELD_LAST_SYNCED_GENERATION, STATE_FIELD_PHASE, STATE_FIELD_DETAIL} )
Functions ¶
func IsInternalStateError ¶
func IsInvalidStateError ¶
func IsMissingStateError ¶
func IsReadStateError ¶
func IsSynced ¶
IsSynced returns whether the last version of the object has been synced. If the object's state has already been read, it can be passed as argument. Otherwise (if the given SyncState is nil), the given StateDisplay's Read method will be used to read the state from the object. It then returns state.LastSyncedGeneration == obj.Generation().
Either the StateDisplay or the SyncState must be non-nil.
func IsWriteStateError ¶
Types ¶
type AnnotationStateDisplay ¶
type AnnotationStateDisplay struct {
// contains filtered or unexported fields
}
func NewAnnotationStateDisplay ¶
func NewAnnotationStateDisplay(v StateVerbosity) *AnnotationStateDisplay
func (*AnnotationStateDisplay) Read ¶
func (asd *AnnotationStateDisplay) Read(obj client.Object) (*SyncState, StateError)
func (*AnnotationStateDisplay) Type ¶
func (*AnnotationStateDisplay) Type() string
func (*AnnotationStateDisplay) Verbosity ¶
func (asd *AnnotationStateDisplay) Verbosity() StateVerbosity
type InternalStateError ¶
type InternalStateError struct {
// contains filtered or unexported fields
}
InternalStateError is only returned if the developer did something wrong ;-)
func NewInternalStateError ¶
func NewInternalStateError(msg string, values ...any) *InternalStateError
func (*InternalStateError) IsInternalStateError ¶
func (e *InternalStateError) IsInternalStateError() bool
func (*InternalStateError) IsInvalidStateError ¶
func (e *InternalStateError) IsInvalidStateError() bool
func (*InternalStateError) IsMissingStateError ¶
func (e *InternalStateError) IsMissingStateError() bool
func (*InternalStateError) IsReadStateError ¶
func (e *InternalStateError) IsReadStateError() bool
func (*InternalStateError) IsWriteStateError ¶
func (e *InternalStateError) IsWriteStateError() bool
type InvalidStateError ¶
type InvalidStateError struct {
// contains filtered or unexported fields
}
InvalidStateError is returned if a state cannot be read due to an invalid format of one or more state values.
func DefaultInvalidStateError ¶
func DefaultInvalidStateError(field *StateField, fieldValue interface{}, err error) *InvalidStateError
func NewInvalidStateError ¶
func NewInvalidStateError(msg string, values ...any) *InvalidStateError
func (*InvalidStateError) IsInternalStateError ¶
func (e *InvalidStateError) IsInternalStateError() bool
func (*InvalidStateError) IsInvalidStateError ¶
func (e *InvalidStateError) IsInvalidStateError() bool
func (*InvalidStateError) IsMissingStateError ¶
func (e *InvalidStateError) IsMissingStateError() bool
func (*InvalidStateError) IsReadStateError ¶
func (e *InvalidStateError) IsReadStateError() bool
func (*InvalidStateError) IsWriteStateError ¶
func (e *InvalidStateError) IsWriteStateError() bool
type MissingStateError ¶
type MissingStateError struct {
// contains filtered or unexported fields
}
MissingStateError is returned if a part of the state, which is required by its verbosity, is missing.
func DefaultMissingStateError ¶
func DefaultMissingStateError(v StateVerbosity, missingFields ...*StateField) *MissingStateError
func NewMissingStateError ¶
func NewMissingStateError(msg string, values ...any) *MissingStateError
func (*MissingStateError) IsInternalStateError ¶
func (e *MissingStateError) IsInternalStateError() bool
func (*MissingStateError) IsInvalidStateError ¶
func (e *MissingStateError) IsInvalidStateError() bool
func (*MissingStateError) IsMissingStateError ¶
func (e *MissingStateError) IsMissingStateError() bool
func (*MissingStateError) IsReadStateError ¶
func (e *MissingStateError) IsReadStateError() bool
func (*MissingStateError) IsWriteStateError ¶
func (e *MissingStateError) IsWriteStateError() bool
type Phase ¶
type Phase string
const ( // PHASE_UNDEFINED is a dummy phase used as 'invalid' return value. PHASE_UNDEFINED Phase = "Undefined" // PHASE_PROGRESSING means that k8syncer has picked up the change and is working on it. PHASE_PROGRESSING Phase = "Progressing" // PHASE_FINISHED means that the sync is finished and there is nothing to do at the moment. PHASE_FINISHED Phase = "Finished" // PHASE_ERROR means that an error occurred and the resource will be requeued. PHASE_ERROR Phase = "Error" // PHASE_DELETING means that k8syncer has picked up a deletion and is working on it. PHASE_DELETING Phase = "Deleting" // PHASE_ERROR_DELETING is like PHASE_ERROR, but is used for errors which occur during deletion. PHASE_ERROR_DELETING Phase = "ErrorDeleting" )
func PhaseFromString ¶
PhaseFromString parses a given string into the corresponding phase. Returns PHASE_UNDEFINED if no phase matches.
type ReadStateError ¶
type ReadStateError struct {
// contains filtered or unexported fields
}
ReadStateError is returned if reading the state from the resource failed for some other reason than it being missing or invalid.
func DefaultReadStateError ¶
func DefaultReadStateError(err error) *ReadStateError
func NewReadStateError ¶
func NewReadStateError(msg string, values ...any) *ReadStateError
func (*ReadStateError) IsInternalStateError ¶
func (e *ReadStateError) IsInternalStateError() bool
func (*ReadStateError) IsInvalidStateError ¶
func (e *ReadStateError) IsInvalidStateError() bool
func (*ReadStateError) IsMissingStateError ¶
func (e *ReadStateError) IsMissingStateError() bool
func (*ReadStateError) IsReadStateError ¶
func (e *ReadStateError) IsReadStateError() bool
func (*ReadStateError) IsWriteStateError ¶
func (e *ReadStateError) IsWriteStateError() bool
type StateDisplay ¶
type StateDisplay interface { // Type returns the type of the state display. Type() string // Read reads the state from the given object. // Returns a MissingStateError if not enough fields are specified for the verbosity configured at the state display. // Returns an InvalidStateError if one of the state fields has an invalid value. Read(obj client.Object) (*SyncState, StateError) // Write writes the given SyncState into the given resource. // The first return value contains the top-level fields of the resource which actually changed. // e.g. "metadata", "spec", "status" // This is used to determine whether the resource needs to be updated after writing the state. // nil or an empty set means that the resource has not changed. // It will write the state according to its verbosity. // Not defined for STATE_VERBOSITY_ANY and STATE_VERBOSITY_UNDEFINED. // Only the specified fields are written, and only if they are included in the configured verbosity. // Pass the ALL_STATE_FIELDS variable to write the complete state (also filtered by verbosity). Write(obj client.Object, state *SyncState, fields ...*StateField) (sets.Set[string], error) // Verbosity returns the verbosity for which this state display is configured. Verbosity() StateVerbosity }
type StateError ¶
type StateError interface { error Reason() string IsMissingStateError() bool IsInvalidStateError() bool IsInternalStateError() bool IsReadStateError() bool IsWriteStateError() bool }
StateError is the parent error interface for state handling errors.
func ObjectToUnstructured ¶
func ObjectToUnstructured(obj client.Object) (*unstructured.Unstructured, StateError)
ObjectToUnstructured converts a client.Object into an *unstructured.Unstructured.
type StateField ¶
type StateField struct {
// contains filtered or unexported fields
}
func (*StateField) Name ¶
func (sf *StateField) Name() string
type StateVerbosity ¶
type StateVerbosity string
const ( // STATE_VERBOSITY_UNDEFINED is a dummy value for undefined verbosity. STATE_VERBOSITY_UNDEFINED StateVerbosity = "undefined" // STATE_VERBOSITY_ANY can be used to avoid MissingStateErrors. STATE_VERBOSITY_ANY StateVerbosity = "any" // STATE_VERBOSITY_GENERATION means that only the last synced generation is displayed. STATE_VERBOSITY_GENERATION StateVerbosity = StateVerbosity(config.STATE_VERBOSITY_GENERATION) // STATE_VERBOSITY_PHASE means that last synced generation and phase are displayed. STATE_VERBOSITY_PHASE StateVerbosity = StateVerbosity(config.STATE_VERBOSITY_PHASE) // STATE_VERBOSITY_DETAIL means that last synced generation, phase, and details are displayed. STATE_VERBOSITY_DETAIL StateVerbosity = StateVerbosity(config.STATE_VERBOSITY_DETAIL) )
func (StateVerbosity) Includes ¶
func (sv StateVerbosity) Includes(field *StateField) bool
IncludesPhase returns true if the verbosity includes the phase.
type StatusStateDisplay ¶
type StatusStateDisplay struct {
// contains filtered or unexported fields
}
func NewStatusStateDisplay ¶
func NewStatusStateDisplay(lastSyncedGenerationPath, phasePath, detailPath string, v StateVerbosity) *StatusStateDisplay
func (*StatusStateDisplay) Read ¶
func (ssd *StatusStateDisplay) Read(rawObj client.Object) (*SyncState, StateError)
func (*StatusStateDisplay) Type ¶
func (*StatusStateDisplay) Type() string
func (*StatusStateDisplay) Verbosity ¶
func (ssd *StatusStateDisplay) Verbosity() StateVerbosity
type SyncState ¶
type SyncState struct { // Verbosity defines what is contained in the state. Verbosity StateVerbosity // Phase is the current phase. Phase Phase // LastSyncedGeneration is the last generation of the resource which has successfully been synced. LastSyncedGeneration int64 // Detail can contain further details (e.g. error messages) Detail string }
SyncState represents the current state.
func New ¶
func New(v StateVerbosity) *SyncState
New creates a new SyncState with an undefined phase and the specified verbosity.
func (*SyncState) GetField ¶
func (s *SyncState) GetField(field *StateField) any
func (*SyncState) SetField ¶
func (s *SyncState) SetField(field *StateField, value any) StateError
type WriteStateError ¶
type WriteStateError struct {
// contains filtered or unexported fields
}
WriteStateError is returned if writing the state to the resource failed.
func DefaultWriteStateError ¶
func DefaultWriteStateError(err error) *WriteStateError
func NewWriteStateError ¶
func NewWriteStateError(msg string, values ...any) *WriteStateError
func (*WriteStateError) IsInternalStateError ¶
func (e *WriteStateError) IsInternalStateError() bool
func (*WriteStateError) IsInvalidStateError ¶
func (e *WriteStateError) IsInvalidStateError() bool
func (*WriteStateError) IsMissingStateError ¶
func (e *WriteStateError) IsMissingStateError() bool
func (*WriteStateError) IsReadStateError ¶
func (e *WriteStateError) IsReadStateError() bool
func (*WriteStateError) IsWriteStateError ¶
func (e *WriteStateError) IsWriteStateError() bool