/
machine_os_images.go
42 lines (39 loc) · 1.21 KB
/
machine_os_images.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
package provisioning
import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
"k8s.io/utils/pointer"
)
func createInitContainerMachineOSImages(info *ProvisioningInfo, whichImages string, dest corev1.VolumeMount, destPath string) corev1.Container {
ipOptionValue := info.NetworkStack.IpOption()
if !info.ProvConfig.Spec.VirtualMediaViaExternalNetwork {
ipOptionValue = IpOptionForProvisioning(&info.ProvConfig.Spec, info.NetworkStack)
}
container := corev1.Container{
Name: "machine-os-images",
Image: info.Images.MachineOSImages,
Command: []string{"/bin/copy-metal", whichImages, destPath},
VolumeMounts: []corev1.VolumeMount{
dest,
},
ImagePullPolicy: "IfNotPresent",
Env: []corev1.EnvVar{
{
Name: ipOptions,
Value: ipOptionValue,
},
},
Resources: corev1.ResourceRequirements{
Requests: corev1.ResourceList{
corev1.ResourceCPU: resource.MustParse("5m"),
corev1.ResourceMemory: resource.MustParse("50Mi"),
},
},
SecurityContext: &corev1.SecurityContext{
// Needed for hostPath image volume mount
Privileged: pointer.BoolPtr(true),
},
TerminationMessagePolicy: corev1.TerminationMessageFallbackToLogsOnError,
}
return container
}