Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions pkg/operator/baremetal_config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package operator

import (
"strings"
)

const (
baremetalHttpPort = "6180"
baremetalIronicPort = "6385"
baremetalIronicInspectorPort = "5050"
baremetalKernelUrlSubPath = "/images/ironic-python-agent.kernel"
baremetalRamdiskUrlSubPath = "/images/ironic-python-agent.initramfs"
baremetalIronicEndpointSubpath = "/v1/"
)

func getHttpPort() string {
return baremetalHttpPort
}

func getProvisioningIPCIDR(baremetalConfig BaremetalConfig) string {
cidr := strings.Split(baremetalConfig.ProvisioningNetworkCIDR, "/")
return baremetalConfig.ProvisioningIp + "/" + cidr[1]
}

func getDeployKernelUrl(baremetalConfig BaremetalConfig) string {
return baremetalConfig.ProvisioningIp + ":" + baremetalHttpPort + baremetalKernelUrlSubPath
}

func getDeployRamdiskUrl(baremetalConfig BaremetalConfig) string {
return baremetalConfig.ProvisioningIp + ":" + baremetalHttpPort + baremetalRamdiskUrlSubPath
}

func getIronicEndpoint(baremetalConfig BaremetalConfig) string {
return baremetalConfig.ProvisioningIp + ":" + baremetalIronicPort + baremetalIronicEndpointSubpath
}

func getIronicInspectorEndpoint(baremetalConfig BaremetalConfig) string {
return baremetalConfig.ProvisioningIp + ":" + baremetalIronicInspectorPort + baremetalIronicEndpointSubpath
}
54 changes: 23 additions & 31 deletions pkg/operator/baremetal_pod.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import (
)

const (
baremetalConfigmap = "metal3-config"
baremetalSharedVolume = "metal3-shared"
baremetalSecretName = "metal3-mariadb-password"
baremetalSecretKey = "password"
Expand All @@ -36,17 +35,10 @@ var volumeMounts = []corev1.VolumeMount{
},
}

func setEnvVar(name string, key string) corev1.EnvVar {
func setConfig(name string, value string) corev1.EnvVar {
return corev1.EnvVar{
Name: name,
ValueFrom: &corev1.EnvVarSource{
ConfigMapKeyRef: &corev1.ConfigMapKeySelector{
LocalObjectReference: corev1.LocalObjectReference{
Name: baremetalConfigmap,
},
Key: key,
},
},
Value: value,
}
}

Expand Down Expand Up @@ -185,7 +177,7 @@ func newMetal3InitContainers(config *OperatorConfig) []corev1.Container {
},
VolumeMounts: volumeMounts,
Env: []corev1.EnvVar{
setEnvVar("CACHEURL", "cache_url"),
setConfig("CACHEURL", config.BaremetalConfig.CacheUrl),
},
},
}
Expand All @@ -205,8 +197,8 @@ func createInitContainerRhcosDownloader(config *OperatorConfig) corev1.Container
},
VolumeMounts: volumeMounts,
Env: []corev1.EnvVar{
setEnvVar("RHCOS_IMAGE_URL", "rhcos_image_url"),
setEnvVar("CACHEURL", "cache_url"),
setConfig("RHCOS_IMAGE_URL", config.BaremetalConfig.RhcosImageUrl),
setConfig("CACHEURL", config.BaremetalConfig.CacheUrl),
},
}
return initContainer
Expand All @@ -222,8 +214,8 @@ func createInitContainerStaticIpSet(config *OperatorConfig) corev1.Container {
Privileged: pointer.BoolPtr(true),
},
Env: []corev1.EnvVar{
setEnvVar("PROVISIONING_IP", "provisioning_ip"),
setEnvVar("PROVISIONING_INTERFACE", "provisioning_interface"),
setConfig("PROVISIONING_IP", getProvisioningIPCIDR(config.BaremetalConfig)),
setConfig("PROVISIONING_INTERFACE", config.BaremetalConfig.ProvisioningInterface),
},
}
return initContainer
Expand Down Expand Up @@ -264,10 +256,10 @@ func newMetal3Containers(config *OperatorConfig) []corev1.Container {
Name: "OPERATOR_NAME",
Value: "baremetal-operator",
},
setEnvVar("DEPLOY_KERNEL_URL", "deploy_kernel_url"),
setEnvVar("DEPLOY_RAMDISK_URL", "deploy_ramdisk_url"),
setEnvVar("IRONIC_ENDPOINT", "ironic_endpoint"),
setEnvVar("IRONIC_INSPECTOR_ENDPOINT", "ironic_inspector_endpoint"),
setConfig("DEPLOY_KERNEL_URL", getDeployKernelUrl(config.BaremetalConfig)),
setConfig("DEPLOY_RAMDISK_URL", getDeployRamdiskUrl(config.BaremetalConfig)),
setConfig("IRONIC_ENDPOINT", getIronicEndpoint(config.BaremetalConfig)),
setConfig("IRONIC_INSPECTOR_ENDPOINT", getIronicInspectorEndpoint(config.BaremetalConfig)),
},
},
}
Expand All @@ -293,9 +285,9 @@ func createContainerMetal3Dnsmasq(config *OperatorConfig) corev1.Container {
Command: []string{"/bin/rundnsmasq"},
VolumeMounts: volumeMounts,
Env: []corev1.EnvVar{
setEnvVar("HTTP_PORT", "http_port"),
setEnvVar("PROVISIONING_INTERFACE", "provisioning_interface"),
setEnvVar("DHCP_RANGE", "dhcp_range"),
setConfig("HTTP_PORT", getHttpPort()),
setConfig("PROVISIONING_INTERFACE", config.BaremetalConfig.ProvisioningInterface),
setConfig("DHCP_RANGE", config.BaremetalConfig.DhcpRange),
},
}
return container
Expand Down Expand Up @@ -331,8 +323,8 @@ func createContainerMetal3Httpd(config *OperatorConfig) corev1.Container {
Command: []string{"/bin/runhttpd"},
VolumeMounts: volumeMounts,
Env: []corev1.EnvVar{
setEnvVar("HTTP_PORT", "http_port"),
setEnvVar("PROVISIONING_INTERFACE", "provisioning_interface"),
setConfig("HTTP_PORT", getHttpPort()),
setConfig("PROVISIONING_INTERFACE", config.BaremetalConfig.ProvisioningInterface),
},
}
return container
Expand All @@ -351,8 +343,8 @@ func createContainerMetal3IronicConductor(config *OperatorConfig) corev1.Contain
VolumeMounts: volumeMounts,
Env: []corev1.EnvVar{
setMariadbPassword(),
setEnvVar("HTTP_PORT", "http_port"),
setEnvVar("PROVISIONING_INTERFACE", "provisioning_interface"),
setConfig("HTTP_PORT", getHttpPort()),
setConfig("PROVISIONING_INTERFACE", config.BaremetalConfig.ProvisioningInterface),
},
}
return container
Expand All @@ -371,8 +363,8 @@ func createContainerMetal3IronicApi(config *OperatorConfig) corev1.Container {
VolumeMounts: volumeMounts,
Env: []corev1.EnvVar{
setMariadbPassword(),
setEnvVar("HTTP_PORT", "http_port"),
setEnvVar("PROVISIONING_INTERFACE", "provisioning_interface"),
setConfig("HTTP_PORT", getHttpPort()),
setConfig("PROVISIONING_INTERFACE", config.BaremetalConfig.ProvisioningInterface),
},
}
return container
Expand All @@ -389,7 +381,7 @@ func createContainerMetal3IronicInspector(config *OperatorConfig) corev1.Contain
},
VolumeMounts: volumeMounts,
Env: []corev1.EnvVar{
setEnvVar("PROVISIONING_INTERFACE", "provisioning_interface"),
setConfig("PROVISIONING_INTERFACE", config.BaremetalConfig.ProvisioningInterface),
},
}
return container
Expand All @@ -406,8 +398,8 @@ func createContainerMetal3StaticIpManager(config *OperatorConfig) corev1.Contain
Privileged: pointer.BoolPtr(true),
},
Env: []corev1.EnvVar{
setEnvVar("PROVISIONING_IP", "provisioning_ip"),
setEnvVar("PROVISIONING_INTERFACE", "provisioning_interface"),
setConfig("PROVISIONING_IP", getProvisioningIPCIDR(config.BaremetalConfig)),
setConfig("PROVISIONING_INTERFACE", config.BaremetalConfig.ProvisioningInterface),
},
}
return container
Expand Down
26 changes: 26 additions & 0 deletions pkg/operator/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ type OperatorConfig struct {
TargetNamespace string `json:"targetNamespace"`
Controllers Controllers
BaremetalControllers BaremetalControllers
BaremetalConfig BaremetalConfig
}

type Controllers struct {
Expand Down Expand Up @@ -58,6 +59,16 @@ type Images struct {
BaremetalStaticIpManager string `json:"baremetalStaticIpManager"`
}

// Config needed for metal3 pod
type BaremetalConfig struct {
ProvisioningInterface string
ProvisioningIp string
ProvisioningNetworkCIDR string
DhcpRange string
CacheUrl string
RhcosImageUrl string
}

func getProviderFromInfrastructure(infra *configv1.Infrastructure) (configv1.PlatformType, error) {
if infra.Status.Platform == "" {
return "", fmt.Errorf("no platform provider found on install config")
Expand Down Expand Up @@ -120,3 +131,18 @@ func getMachineAPIOperatorFromImages(images Images) (string, error) {
}
return images.MachineAPIOperator, nil
}

func getBaremetalConfigFromInfrastructure(infra *configv1.Infrastructure, usingBareMetal bool) BaremetalConfig {
if !usingBareMetal {
return BaremetalConfig{}
}

return BaremetalConfig{
ProvisioningInterface: infra.BareMetal.ProvisioningInterface,
ProvisioningIp: infra.BareMetal.ProvisioningIp,
ProvisioningNetworkCIDR: infra.BareMetal.ProvisioningNetworkCIDR,
DhcpRange: infra.BareMetal.DhcpRange,
CacheUrl: infra.BareMetal.CacheUrl,
RhcosImageUrl: infra.BareMetal.RhcosImageUrl,
}
}
2 changes: 2 additions & 0 deletions pkg/operator/operator.go
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,7 @@ func (optr *Operator) maoConfigFromInfrastructure() (*OperatorConfig, error) {

usingBareMetal := provider == osconfigv1.BareMetalPlatformType
baremetalControllers := newBaremetalControllers(*images, usingBareMetal)
baremetalConfig := getBaremetalConfigFromInfrastructure(infra, usingBareMetal)

machineAPIOperatorImage, err := getMachineAPIOperatorFromImages(*images)
if err != nil {
Expand All @@ -222,5 +223,6 @@ func (optr *Operator) maoConfigFromInfrastructure() (*OperatorConfig, error) {
MachineHealthCheck: machineAPIOperatorImage,
},
BaremetalControllers: baremetalControllers,
BaremetalConfig: baremetalConfig,
}, nil
}
Loading