forked from argoproj/gitops-engine
-
Notifications
You must be signed in to change notification settings - Fork 0
/
types.go
131 lines (108 loc) · 3.65 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
package common
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"github.com/argoproj/gitops-engine/pkg/utils/kube"
)
const (
// AnnotationSyncOptions is a comma-separated list of options for syncing
AnnotationSyncOptions = "argocd.argoproj.io/sync-options"
// AnnotationSyncWave indicates which wave of the sync the resource or hook should be in
AnnotationSyncWave = "argocd.argoproj.io/sync-wave"
// AnnotationKeyHook contains the hook type of a resource
AnnotationKeyHook = "argocd.argoproj.io/hook"
// AnnotationKeyHookDeletePolicy is the policy of deleting a hook
AnnotationKeyHookDeletePolicy = "argocd.argoproj.io/hook-delete-policy"
// Sync option that disables dry run in resource is missing in the cluster
SyncOptionSkipDryRunOnMissingResource = "SkipDryRunOnMissingResource=true"
// Sync option that disables resource pruning
SyncOptionDisablePrune = "Prune=false"
// Sync option that disables resource validation
SyncOptionsDisableValidation = "Validate=false"
)
type PermissionValidator func(un *unstructured.Unstructured, res *metav1.APIResource) error
type SyncPhase string
const (
SyncPhasePreSync = "PreSync"
SyncPhaseSync = "Sync"
SyncPhasePostSync = "PostSync"
SyncPhaseSyncFail = "SyncFail"
)
type OperationPhase string
const (
OperationRunning OperationPhase = "Running"
OperationTerminating OperationPhase = "Terminating"
OperationFailed OperationPhase = "Failed"
OperationError OperationPhase = "Error"
OperationSucceeded OperationPhase = "Succeeded"
)
func (os OperationPhase) Completed() bool {
switch os {
case OperationFailed, OperationError, OperationSucceeded:
return true
}
return false
}
func (os OperationPhase) Running() bool {
return os == OperationRunning
}
func (os OperationPhase) Successful() bool {
return os == OperationSucceeded
}
func (os OperationPhase) Failed() bool {
return os == OperationFailed
}
type ResultCode string
const (
ResultCodeSynced ResultCode = "Synced"
ResultCodeSyncFailed ResultCode = "SyncFailed"
ResultCodePruned ResultCode = "Pruned"
ResultCodePruneSkipped ResultCode = "PruneSkipped"
)
type HookType string
const (
HookTypePreSync HookType = "PreSync"
HookTypeSync HookType = "Sync"
HookTypePostSync HookType = "PostSync"
HookTypeSkip HookType = "Skip"
HookTypeSyncFail HookType = "SyncFail"
)
func NewHookType(t string) (HookType, bool) {
return HookType(t),
t == string(HookTypePreSync) ||
t == string(HookTypeSync) ||
t == string(HookTypePostSync) ||
t == string(HookTypeSyncFail) ||
t == string(HookTypeSkip)
}
type HookDeletePolicy string
const (
HookDeletePolicyHookSucceeded HookDeletePolicy = "HookSucceeded"
HookDeletePolicyHookFailed HookDeletePolicy = "HookFailed"
HookDeletePolicyBeforeHookCreation HookDeletePolicy = "BeforeHookCreation"
)
func NewHookDeletePolicy(p string) (HookDeletePolicy, bool) {
return HookDeletePolicy(p),
p == string(HookDeletePolicyHookSucceeded) ||
p == string(HookDeletePolicyHookFailed) ||
p == string(HookDeletePolicyBeforeHookCreation)
}
type ResourceSyncResult struct {
// holds associated resource key
ResourceKey kube.ResourceKey
// holds resource version
Version string
// holds the execution order
Order int
// result code
Status ResultCode
// message for the last sync OR operation
Message string
// the type of the hook, empty for non-hook resources
HookType HookType
// the state of any operation associated with this resource OR hook
// note: can contain values for non-hook resources
HookPhase OperationPhase
// indicates the particular phase of the sync that this is for
SyncPhase SyncPhase
}