forked from libopenstorage/stork
/
applicationbackup.go
121 lines (104 loc) · 5.53 KB
/
applicationbackup.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
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
const (
// ApplicationBackupResourceName is name for "applicationbackup" resource
ApplicationBackupResourceName = "applicationbackup"
// ApplicationBackupResourcePlural is plural for "applicationbackup" resource
ApplicationBackupResourcePlural = "applicationbackups"
)
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ApplicationBackup represents applicationbackup object
type ApplicationBackup struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ApplicationBackupSpec `json:"spec"`
Status ApplicationBackupStatus `json:"status"`
}
// ApplicationBackupSpec is the spec used to backup applications
type ApplicationBackupSpec struct {
Namespaces []string `json:"namespaces"`
BackupLocation string `json:"backupLocation"`
Selectors map[string]string `json:"selectors"`
PreExecRule string `json:"preExecRule"`
PostExecRule string `json:"postExecRule"`
ReclaimPolicy ApplicationBackupReclaimPolicyType `json:"reclaimPolicy"`
}
// ApplicationBackupReclaimPolicyType is the reclaim policy for the application backup
type ApplicationBackupReclaimPolicyType string
const (
// ApplicationBackupReclaimPolicyDelete is to specify that the backup should
// be deleted when the object is deleted
ApplicationBackupReclaimPolicyDelete ApplicationBackupReclaimPolicyType = "Delete"
// ApplicationBackupReclaimPolicyRetain is to specify that the backup should
// be retained when the object is deleted
ApplicationBackupReclaimPolicyRetain ApplicationBackupReclaimPolicyType = "Retain"
)
// ApplicationBackupStatus is the status of a application backup operation
type ApplicationBackupStatus struct {
Stage ApplicationBackupStageType `json:"stage"`
Status ApplicationBackupStatusType `json:"status"`
Resources []*ApplicationBackupResourceInfo `json:"resources"`
Volumes []*ApplicationBackupVolumeInfo `json:"volumes"`
BackupPath string `json:"backupPath"`
TriggerTimestamp metav1.Time `json:"triggerTimestamp"`
FinishTimestamp metav1.Time `json:"finishTimestamp"`
}
// ApplicationBackupResourceInfo is the info for the backup of a resource
type ApplicationBackupResourceInfo struct {
Name string `json:"name"`
Namespace string `json:"namespace"`
metav1.GroupVersionKind `json:",inline"`
}
// ApplicationBackupVolumeInfo is the info for the backup of a volume
type ApplicationBackupVolumeInfo struct {
PersistentVolumeClaim string `json:"persistentVolumeClaim"`
Namespace string `json:"namespace"`
Volume string `json:"volume"`
BackupID string `json:"backupID"`
Status ApplicationBackupStatusType `json:"status"`
Reason string `json:"reason"`
}
// ApplicationBackupStatusType is the status of the application backup
type ApplicationBackupStatusType string
const (
// ApplicationBackupStatusInitial is the initial state when backup is created
ApplicationBackupStatusInitial ApplicationBackupStatusType = ""
// ApplicationBackupStatusPending for when backup is still pending
ApplicationBackupStatusPending ApplicationBackupStatusType = "Pending"
// ApplicationBackupStatusCaptured for when backup specs have been captured
ApplicationBackupStatusCaptured ApplicationBackupStatusType = "Captured"
// ApplicationBackupStatusInProgress for when backup is in progress
ApplicationBackupStatusInProgress ApplicationBackupStatusType = "InProgress"
// ApplicationBackupStatusFailed for when backup has failed
ApplicationBackupStatusFailed ApplicationBackupStatusType = "Failed"
// ApplicationBackupStatusPartialSuccess for when backup was partially successful
ApplicationBackupStatusPartialSuccess ApplicationBackupStatusType = "PartialSuccess"
// ApplicationBackupStatusSuccessful for when backup has completed successfully
ApplicationBackupStatusSuccessful ApplicationBackupStatusType = "Successful"
)
// ApplicationBackupStageType is the stage of the backup
type ApplicationBackupStageType string
const (
// ApplicationBackupStageInitial for when backup is created
ApplicationBackupStageInitial ApplicationBackupStageType = ""
// ApplicationBackupStagePreExecRule for when the PreExecRule is being executed
ApplicationBackupStagePreExecRule ApplicationBackupStageType = "PreExecRule"
// ApplicationBackupStagePostExecRule for when the PostExecRule is being executed
ApplicationBackupStagePostExecRule ApplicationBackupStageType = "PostExecRule"
// ApplicationBackupStageVolumes for when volumes are being backed up
ApplicationBackupStageVolumes ApplicationBackupStageType = "Volumes"
// ApplicationBackupStageApplications for when applications are being backed up
ApplicationBackupStageApplications ApplicationBackupStageType = "Applications"
// ApplicationBackupStageFinal is the final stage for backup
ApplicationBackupStageFinal ApplicationBackupStageType = "Final"
)
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// ApplicationBackupList is a list of ApplicationBackups
type ApplicationBackupList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []ApplicationBackup `json:"items"`
}