1
19
20 package v1alpha1
21
22 import (
23 "time"
24
25 corev1 "k8s.io/api/core/v1"
26 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
27 "k8s.io/apimachinery/pkg/types"
28
29 v1 "kubevirt.io/api/core/v1"
30 )
31
32 const DefaultFailureDeadline = 5 * time.Minute
33
34
35
36
37 type VirtualMachineSnapshot struct {
38 metav1.TypeMeta `json:",inline"`
39 metav1.ObjectMeta `json:"metadata,omitempty"`
40
41 Spec VirtualMachineSnapshotSpec `json:"spec"`
42
43
44 Status *VirtualMachineSnapshotStatus `json:"status,omitempty"`
45 }
46
47
48
49 type DeletionPolicy string
50
51 const (
52
53
54 VirtualMachineSnapshotContentDelete DeletionPolicy = "Delete"
55
56
57
58 VirtualMachineSnapshotContentRetain DeletionPolicy = "Retain"
59 )
60
61
62 type VirtualMachineSnapshotSpec struct {
63 Source corev1.TypedLocalObjectReference `json:"source"`
64
65
66 DeletionPolicy *DeletionPolicy `json:"deletionPolicy,omitempty"`
67
68
69
70
71
72
73 FailureDeadline *metav1.Duration `json:"failureDeadline,omitempty"`
74 }
75
76
77 type Indication string
78
79 const (
80 VMSnapshotOnlineSnapshotIndication Indication = "Online"
81 VMSnapshotNoGuestAgentIndication Indication = "NoGuestAgent"
82 VMSnapshotGuestAgentIndication Indication = "GuestAgent"
83 )
84
85
86 type VirtualMachineSnapshotPhase string
87
88 const (
89 PhaseUnset VirtualMachineSnapshotPhase = ""
90 InProgress VirtualMachineSnapshotPhase = "InProgress"
91 Succeeded VirtualMachineSnapshotPhase = "Succeeded"
92 Failed VirtualMachineSnapshotPhase = "Failed"
93 Deleting VirtualMachineSnapshotPhase = "Deleting"
94 Unknown VirtualMachineSnapshotPhase = "Unknown"
95 )
96
97
98 type VirtualMachineSnapshotStatus struct {
99
100 SourceUID *types.UID `json:"sourceUID,omitempty"`
101
102
103 VirtualMachineSnapshotContentName *string `json:"virtualMachineSnapshotContentName,omitempty"`
104
105
106
107 CreationTime *metav1.Time `json:"creationTime,omitempty"`
108
109
110 Phase VirtualMachineSnapshotPhase `json:"phase,omitempty"`
111
112
113 ReadyToUse *bool `json:"readyToUse,omitempty"`
114
115
116 Error *Error `json:"error,omitempty"`
117
118
119 Conditions []Condition `json:"conditions,omitempty"`
120
121
122
123 Indications []Indication `json:"indications,omitempty"`
124
125
126 SnapshotVolumes *SnapshotVolumesLists `json:"snapshotVolumes,omitempty"`
127 }
128
129
130 type SnapshotVolumesLists struct {
131
132
133 IncludedVolumes []string `json:"includedVolumes,omitempty"`
134
135
136
137 ExcludedVolumes []string `json:"excludedVolumes,omitempty"`
138 }
139
140
141 type Error struct {
142
143 Time *metav1.Time `json:"time,omitempty"`
144
145
146 Message *string `json:"message,omitempty"`
147 }
148
149
150 type ConditionType string
151
152 const (
153
154 ConditionReady ConditionType = "Ready"
155
156
157 ConditionProgressing ConditionType = "Progressing"
158
159
160 ConditionFailure ConditionType = "Failure"
161 )
162
163
164 type Condition struct {
165 Type ConditionType `json:"type"`
166
167 Status corev1.ConditionStatus `json:"status"`
168
169
170
171 LastProbeTime metav1.Time `json:"lastProbeTime,omitempty"`
172
173
174
175 LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty"`
176
177
178 Reason string `json:"reason,omitempty"`
179
180
181 Message string `json:"message,omitempty"`
182 }
183
184
185
186 type VirtualMachineSnapshotList struct {
187 metav1.TypeMeta `json:",inline"`
188 metav1.ListMeta `json:"metadata"`
189
190 Items []VirtualMachineSnapshot `json:"items"`
191 }
192
193
194
195
196 type VirtualMachineSnapshotContent struct {
197 metav1.TypeMeta `json:",inline"`
198 metav1.ObjectMeta `json:"metadata,omitempty"`
199
200 Spec VirtualMachineSnapshotContentSpec `json:"spec"`
201
202
203 Status *VirtualMachineSnapshotContentStatus `json:"status,omitempty"`
204 }
205
206
207 type VirtualMachineSnapshotContentSpec struct {
208 VirtualMachineSnapshotName *string `json:"virtualMachineSnapshotName,omitempty"`
209
210 Source SourceSpec `json:"source"`
211
212
213 VolumeBackups []VolumeBackup `json:"volumeBackups,omitempty"`
214 }
215
216 type VirtualMachine struct {
217
218
219 metav1.ObjectMeta `json:"metadata,omitempty"`
220
221 Spec v1.VirtualMachineSpec `json:"spec,omitempty" valid:"required"`
222
223
224 Status v1.VirtualMachineStatus `json:"status,omitempty"`
225 }
226
227
228 type SourceSpec struct {
229
230 VirtualMachine *VirtualMachine `json:"virtualMachine,omitempty"`
231 }
232
233 type PersistentVolumeClaim struct {
234
235
236
237
238 metav1.ObjectMeta `json:"metadata,omitempty"`
239
240
241
242
243 Spec corev1.PersistentVolumeClaimSpec `json:"spec,omitempty"`
244 }
245
246
247 type VolumeBackup struct {
248 VolumeName string `json:"volumeName"`
249
250 PersistentVolumeClaim PersistentVolumeClaim `json:"persistentVolumeClaim"`
251
252
253 VolumeSnapshotName *string `json:"volumeSnapshotName,omitempty"`
254 }
255
256
257 type VirtualMachineSnapshotContentStatus struct {
258
259
260 CreationTime *metav1.Time `json:"creationTime,omitempty"`
261
262
263 ReadyToUse *bool `json:"readyToUse,omitempty"`
264
265
266 Error *Error `json:"error,omitempty"`
267
268
269 VolumeSnapshotStatus []VolumeSnapshotStatus `json:"volumeSnapshotStatus,omitempty"`
270 }
271
272
273
274 type VirtualMachineSnapshotContentList struct {
275 metav1.TypeMeta `json:",inline"`
276 metav1.ListMeta `json:"metadata"`
277
278 Items []VirtualMachineSnapshotContent `json:"items"`
279 }
280
281
282 type VolumeSnapshotStatus struct {
283 VolumeSnapshotName string `json:"volumeSnapshotName"`
284
285
286
287 CreationTime *metav1.Time `json:"creationTime,omitempty"`
288
289
290 ReadyToUse *bool `json:"readyToUse,omitempty"`
291
292
293 Error *Error `json:"error,omitempty"`
294 }
295
296
297
298
299 type VirtualMachineRestore struct {
300 metav1.TypeMeta `json:",inline"`
301 metav1.ObjectMeta `json:"metadata,omitempty"`
302
303 Spec VirtualMachineRestoreSpec `json:"spec"`
304
305
306 Status *VirtualMachineRestoreStatus `json:"status,omitempty"`
307 }
308
309
310 type VirtualMachineRestoreSpec struct {
311
312 Target corev1.TypedLocalObjectReference `json:"target"`
313
314 VirtualMachineSnapshotName string `json:"virtualMachineSnapshotName"`
315
316
317
318
319
320
321
322
323 Patches []string `json:"patches,omitempty"`
324 }
325
326
327 type VirtualMachineRestoreStatus struct {
328
329 Restores []VolumeRestore `json:"restores,omitempty"`
330
331
332 RestoreTime *metav1.Time `json:"restoreTime,omitempty"`
333
334
335 DeletedDataVolumes []string `json:"deletedDataVolumes,omitempty"`
336
337
338 Complete *bool `json:"complete,omitempty"`
339
340
341 Conditions []Condition `json:"conditions,omitempty"`
342 }
343
344
345 type VolumeRestore struct {
346 VolumeName string `json:"volumeName"`
347
348 PersistentVolumeClaimName string `json:"persistentVolumeClaim"`
349
350 VolumeSnapshotName string `json:"volumeSnapshotName"`
351
352
353 DataVolumeName *string `json:"dataVolumeName,omitempty"`
354 }
355
356
357
358 type VirtualMachineRestoreList struct {
359 metav1.TypeMeta `json:",inline"`
360 metav1.ListMeta `json:"metadata"`
361
362 Items []VirtualMachineRestore `json:"items"`
363 }
364
View as plain text