1
19
20 package v1beta1
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
120 Conditions []Condition `json:"conditions,omitempty"`
121
122
123
124 Indications []Indication `json:"indications,omitempty"`
125
126
127 SnapshotVolumes *SnapshotVolumesLists `json:"snapshotVolumes,omitempty"`
128 }
129
130
131 type SnapshotVolumesLists struct {
132
133
134 IncludedVolumes []string `json:"includedVolumes,omitempty"`
135
136
137
138 ExcludedVolumes []string `json:"excludedVolumes,omitempty"`
139 }
140
141
142 type Error struct {
143
144 Time *metav1.Time `json:"time,omitempty"`
145
146
147 Message *string `json:"message,omitempty"`
148 }
149
150
151 type ConditionType string
152
153 const (
154
155 ConditionReady ConditionType = "Ready"
156
157
158 ConditionProgressing ConditionType = "Progressing"
159
160
161 ConditionFailure ConditionType = "Failure"
162 )
163
164
165 type Condition struct {
166 Type ConditionType `json:"type"`
167
168 Status corev1.ConditionStatus `json:"status"`
169
170
171
172 LastProbeTime metav1.Time `json:"lastProbeTime,omitempty"`
173
174
175
176 LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty"`
177
178
179 Reason string `json:"reason,omitempty"`
180
181
182 Message string `json:"message,omitempty"`
183 }
184
185
186
187 type VirtualMachineSnapshotList struct {
188 metav1.TypeMeta `json:",inline"`
189 metav1.ListMeta `json:"metadata"`
190
191 Items []VirtualMachineSnapshot `json:"items"`
192 }
193
194
195
196
197 type VirtualMachineSnapshotContent struct {
198 metav1.TypeMeta `json:",inline"`
199 metav1.ObjectMeta `json:"metadata,omitempty"`
200
201 Spec VirtualMachineSnapshotContentSpec `json:"spec"`
202
203
204 Status *VirtualMachineSnapshotContentStatus `json:"status,omitempty"`
205 }
206
207
208 type VirtualMachineSnapshotContentSpec struct {
209 VirtualMachineSnapshotName *string `json:"virtualMachineSnapshotName,omitempty"`
210
211 Source SourceSpec `json:"source"`
212
213
214
215 VolumeBackups []VolumeBackup `json:"volumeBackups,omitempty"`
216 }
217
218 type VirtualMachine struct {
219
220
221 metav1.ObjectMeta `json:"metadata,omitempty"`
222
223 Spec v1.VirtualMachineSpec `json:"spec,omitempty" valid:"required"`
224
225
226 Status v1.VirtualMachineStatus `json:"status,omitempty"`
227 }
228
229
230 type SourceSpec struct {
231
232 VirtualMachine *VirtualMachine `json:"virtualMachine,omitempty"`
233 }
234
235 type PersistentVolumeClaim struct {
236
237
238
239
240 metav1.ObjectMeta `json:"metadata,omitempty"`
241
242
243
244
245 Spec corev1.PersistentVolumeClaimSpec `json:"spec,omitempty"`
246 }
247
248
249 type VolumeBackup struct {
250 VolumeName string `json:"volumeName"`
251
252 PersistentVolumeClaim PersistentVolumeClaim `json:"persistentVolumeClaim"`
253
254
255 VolumeSnapshotName *string `json:"volumeSnapshotName,omitempty"`
256 }
257
258
259 type VirtualMachineSnapshotContentStatus struct {
260
261
262 CreationTime *metav1.Time `json:"creationTime,omitempty"`
263
264
265 ReadyToUse *bool `json:"readyToUse,omitempty"`
266
267
268 Error *Error `json:"error,omitempty"`
269
270
271
272 VolumeSnapshotStatus []VolumeSnapshotStatus `json:"volumeSnapshotStatus,omitempty"`
273 }
274
275
276
277 type VirtualMachineSnapshotContentList struct {
278 metav1.TypeMeta `json:",inline"`
279 metav1.ListMeta `json:"metadata"`
280
281 Items []VirtualMachineSnapshotContent `json:"items"`
282 }
283
284
285 type VolumeSnapshotStatus struct {
286 VolumeSnapshotName string `json:"volumeSnapshotName"`
287
288
289
290 CreationTime *metav1.Time `json:"creationTime,omitempty"`
291
292
293 ReadyToUse *bool `json:"readyToUse,omitempty"`
294
295
296 Error *Error `json:"error,omitempty"`
297 }
298
299
300
301
302 type VirtualMachineRestore struct {
303 metav1.TypeMeta `json:",inline"`
304 metav1.ObjectMeta `json:"metadata,omitempty"`
305
306 Spec VirtualMachineRestoreSpec `json:"spec"`
307
308
309 Status *VirtualMachineRestoreStatus `json:"status,omitempty"`
310 }
311
312
313 type VirtualMachineRestoreSpec struct {
314
315 Target corev1.TypedLocalObjectReference `json:"target"`
316
317 VirtualMachineSnapshotName string `json:"virtualMachineSnapshotName"`
318
319
320
321
322
323
324
325
326 Patches []string `json:"patches,omitempty"`
327 }
328
329
330 type VirtualMachineRestoreStatus struct {
331
332
333 Restores []VolumeRestore `json:"restores,omitempty"`
334
335
336 RestoreTime *metav1.Time `json:"restoreTime,omitempty"`
337
338
339
340 DeletedDataVolumes []string `json:"deletedDataVolumes,omitempty"`
341
342
343 Complete *bool `json:"complete,omitempty"`
344
345
346
347 Conditions []Condition `json:"conditions,omitempty"`
348 }
349
350
351 type VolumeRestore struct {
352 VolumeName string `json:"volumeName"`
353
354 PersistentVolumeClaimName string `json:"persistentVolumeClaim"`
355
356 VolumeSnapshotName string `json:"volumeSnapshotName"`
357
358
359 DataVolumeName *string `json:"dataVolumeName,omitempty"`
360 }
361
362
363
364 type VirtualMachineRestoreList struct {
365 metav1.TypeMeta `json:",inline"`
366 metav1.ListMeta `json:"metadata"`
367
368 Items []VirtualMachineRestore `json:"items"`
369 }
370
View as plain text