...
1
19
20 package v1alpha1
21
22 import (
23 "k8s.io/apimachinery/pkg/api/resource"
24 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25
26 k6tv1 "kubevirt.io/api/core/v1"
27 )
28
29
30
31
32
33
34
35 type MigrationPolicy struct {
36 metav1.TypeMeta `json:",inline"`
37 metav1.ObjectMeta `json:"metadata,omitempty"`
38 Spec MigrationPolicySpec `json:"spec" valid:"required"`
39
40 Status MigrationPolicyStatus `json:"status,omitempty"`
41 }
42
43 type MigrationPolicySpec struct {
44 Selectors *Selectors `json:"selectors"`
45
46
47 AllowAutoConverge *bool `json:"allowAutoConverge,omitempty"`
48
49 BandwidthPerMigration *resource.Quantity `json:"bandwidthPerMigration,omitempty"`
50
51 CompletionTimeoutPerGiB *int64 `json:"completionTimeoutPerGiB,omitempty"`
52
53 AllowPostCopy *bool `json:"allowPostCopy,omitempty"`
54 }
55
56 type LabelSelector map[string]string
57
58 type Selectors struct {
59
60 NamespaceSelector LabelSelector `json:"namespaceSelector,omitempty"`
61
62 VirtualMachineInstanceSelector LabelSelector `json:"virtualMachineInstanceSelector,omitempty"`
63 }
64
65 type MigrationPolicyStatus struct {
66 }
67
68
69
70
71
72 type MigrationPolicyList struct {
73 metav1.TypeMeta `json:",inline"`
74 metav1.ListMeta `json:"metadata,omitempty"`
75
76 Items []MigrationPolicy `json:"items"`
77 }
78
79
80
81
82 func (m *MigrationPolicy) GetMigrationConfByPolicy(clusterMigrationConfigurations *k6tv1.MigrationConfiguration) (changed bool, err error) {
83 policySpec := m.Spec
84 changed = false
85
86 if policySpec.AllowAutoConverge != nil {
87 changed = true
88 *clusterMigrationConfigurations.AllowAutoConverge = *policySpec.AllowAutoConverge
89 }
90 if policySpec.BandwidthPerMigration != nil {
91 changed = true
92 *clusterMigrationConfigurations.BandwidthPerMigration = *policySpec.BandwidthPerMigration
93 }
94 if policySpec.CompletionTimeoutPerGiB != nil {
95 changed = true
96 *clusterMigrationConfigurations.CompletionTimeoutPerGiB = *policySpec.CompletionTimeoutPerGiB
97 }
98 if policySpec.AllowPostCopy != nil {
99 changed = true
100 *clusterMigrationConfigurations.AllowPostCopy = *policySpec.AllowPostCopy
101 }
102
103 return changed, nil
104 }
105
View as plain text