kubevirt.io/api@v1.2.0/core/v1/defaults.go (about) 1 package v1 2 3 import ( 4 "github.com/google/uuid" 5 "k8s.io/apimachinery/pkg/types" 6 ) 7 8 var _true = t(true) 9 var _false = t(false) 10 11 func SetDefaults_HPETTimer(obj *HPETTimer) { 12 if obj.Enabled == nil { 13 obj.Enabled = _true 14 } 15 } 16 17 func SetDefaults_PITTimer(obj *PITTimer) { 18 if obj.Enabled == nil { 19 obj.Enabled = _true 20 } 21 } 22 23 func SetDefaults_KVMTimer(obj *KVMTimer) { 24 if obj.Enabled == nil { 25 obj.Enabled = _true 26 } 27 } 28 29 func SetDefaults_HypervTimer(obj *HypervTimer) { 30 if obj.Enabled == nil { 31 obj.Enabled = _true 32 } 33 } 34 35 func SetDefaults_RTCTimer(obj *RTCTimer) { 36 if obj.Enabled == nil { 37 obj.Enabled = _true 38 } 39 } 40 41 func SetDefaults_FeatureState(obj *FeatureState) { 42 if obj.Enabled == nil { 43 obj.Enabled = _true 44 } 45 } 46 47 func SetDefaults_SyNICTimer(obj *SyNICTimer) { 48 if obj.Enabled == nil { 49 obj.Enabled = _true 50 } 51 52 if obj.Direct != nil && obj.Direct.Enabled == nil { 53 obj.Direct.Enabled = _true 54 } 55 } 56 57 func SetDefaults_FeatureAPIC(obj *FeatureAPIC) { 58 if obj.Enabled == nil { 59 obj.Enabled = _true 60 } 61 } 62 63 func SetDefaults_FeatureVendorID(obj *FeatureVendorID) { 64 if obj.Enabled == nil { 65 obj.Enabled = _true 66 } 67 } 68 69 func SetDefaults_DiskDevice(obj *DiskDevice) { 70 if obj.Disk == nil && 71 obj.CDRom == nil && 72 obj.LUN == nil { 73 obj.Disk = &DiskTarget{} 74 } 75 } 76 77 func SetDefaults_Watchdog(obj *Watchdog) { 78 if obj.I6300ESB == nil { 79 obj.I6300ESB = &I6300ESBWatchdog{} 80 } 81 } 82 83 func SetDefaults_CDRomTarget(obj *CDRomTarget) { 84 if obj.ReadOnly == nil { 85 obj.ReadOnly = _true 86 } 87 if obj.Tray == "" { 88 obj.Tray = TrayStateClosed 89 } 90 } 91 92 func SetDefaults_FeatureSpinlocks(obj *FeatureSpinlocks) { 93 if obj.Enabled == nil { 94 obj.Enabled = _true 95 } 96 if *obj.Enabled == *_true && obj.Retries == nil { 97 obj.Retries = ui32(4096) 98 } 99 } 100 101 func SetDefaults_I6300ESBWatchdog(obj *I6300ESBWatchdog) { 102 if obj.Action == "" { 103 obj.Action = WatchdogActionReset 104 } 105 } 106 107 func SetDefaults_Firmware(obj *Firmware) { 108 if obj.UUID == "" { 109 obj.UUID = types.UID(uuid.NewString()) 110 } 111 } 112 113 func SetDefaults_VirtualMachineInstance(obj *VirtualMachineInstance) { 114 if obj.Spec.Domain.Firmware == nil { 115 obj.Spec.Domain.Firmware = &Firmware{} 116 } 117 118 if obj.Spec.Domain.Features == nil { 119 obj.Spec.Domain.Features = &Features{} 120 } 121 122 setDefaults_Disk(obj) 123 setDefaults_Input(obj) 124 SetDefaults_Probe(obj.Spec.ReadinessProbe) 125 SetDefaults_Probe(obj.Spec.LivenessProbe) 126 } 127 128 func setDefaults_Disk(obj *VirtualMachineInstance) { 129 for i := range obj.Spec.Domain.Devices.Disks { 130 disk := &obj.Spec.Domain.Devices.Disks[i].DiskDevice 131 SetDefaults_DiskDevice(disk) 132 } 133 } 134 135 func setDefaults_Input(obj *VirtualMachineInstance) { 136 for i := range obj.Spec.Domain.Devices.Inputs { 137 input := &obj.Spec.Domain.Devices.Inputs[i] 138 139 if input.Bus == "" { 140 input.Bus = InputBusUSB 141 } 142 143 if input.Type == "" { 144 input.Type = InputTypeTablet 145 } 146 } 147 } 148 149 func SetDefaults_Probe(probe *Probe) { 150 if probe == nil { 151 return 152 } 153 154 if probe.TimeoutSeconds < 1 { 155 probe.TimeoutSeconds = 1 156 } 157 158 if probe.PeriodSeconds < 1 { 159 probe.PeriodSeconds = 10 160 } 161 162 if probe.SuccessThreshold < 1 { 163 probe.SuccessThreshold = 1 164 } 165 166 if probe.FailureThreshold < 1 { 167 probe.FailureThreshold = 3 168 } 169 } 170 171 func SetDefaults_NetworkInterface(obj *VirtualMachineInstance) { 172 autoAttach := obj.Spec.Domain.Devices.AutoattachPodInterface 173 if autoAttach != nil && *autoAttach == false { 174 return 175 } 176 177 // Override only when nothing is specified 178 if len(obj.Spec.Networks) == 0 { 179 obj.Spec.Domain.Devices.Interfaces = []Interface{*DefaultBridgeNetworkInterface()} 180 obj.Spec.Networks = []Network{*DefaultPodNetwork()} 181 } 182 } 183 184 func DefaultBridgeNetworkInterface() *Interface { 185 iface := &Interface{ 186 Name: "default", 187 InterfaceBindingMethod: InterfaceBindingMethod{ 188 Bridge: &InterfaceBridge{}, 189 }, 190 } 191 return iface 192 } 193 194 func DefaultSlirpNetworkInterface() *Interface { 195 iface := &Interface{ 196 Name: "default", 197 InterfaceBindingMethod: InterfaceBindingMethod{ 198 Slirp: &InterfaceSlirp{}, 199 }, 200 } 201 return iface 202 } 203 204 func DefaultMasqueradeNetworkInterface() *Interface { 205 iface := &Interface{ 206 Name: "default", 207 InterfaceBindingMethod: InterfaceBindingMethod{ 208 Masquerade: &InterfaceMasquerade{}, 209 }, 210 } 211 return iface 212 } 213 214 func DefaultMacvtapNetworkInterface(ifaceName string) *Interface { 215 iface := &Interface{ 216 Name: ifaceName, 217 InterfaceBindingMethod: InterfaceBindingMethod{ 218 Macvtap: &InterfaceMacvtap{}, 219 }, 220 } 221 return iface 222 } 223 224 func DefaultPodNetwork() *Network { 225 defaultNet := &Network{ 226 Name: "default", 227 NetworkSource: NetworkSource{ 228 Pod: &PodNetwork{}, 229 }, 230 } 231 return defaultNet 232 } 233 234 func t(v bool) *bool { 235 return &v 236 } 237 238 func ui32(v uint32) *uint32 { 239 return &v 240 }