Skip to content

Commit a2c355b

Browse files
committed
WIP: Integrate baremetal-operator with machine-api-operator
1 parent 01da2b0 commit a2c355b

File tree

5 files changed

+46
-3
lines changed

5 files changed

+46
-3
lines changed

Diff for: install/0000_30_machine-api-operator_01_images.configmap.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ data:
1212
"clusterAPIControllerLibvirt": "docker.io/openshift/origin-libvirt-machine-controllers:v4.0.0",
1313
"clusterAPIControllerBareMetal": "quay.io/openshift/origin-baremetal-machine-controllers:v4.0.0",
1414
"clusterAPIControllerAzure": "quay.io/openshift/origin-azure-machine-controllers:v4.0.0"
15+
"baremetalOperator": "quay.io/metalkube/baremetal-operator:latest"
1516
}

Diff for: install/image-references

+4
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,7 @@ spec:
2626
from:
2727
kind: DockerImage
2828
name: quay.io/openshift/origin-azure-machine-controllers:v4.0.0
29+
- name: baremetal-operator
30+
from:
31+
kind: DockerImage
32+
name: quay.io/metalkube/baremetal-operator:latest

Diff for: owned-manifests/machine-api-controllers.yaml

+12
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,15 @@ spec:
8484
cpu: 10m
8585
memory: 20Mi
8686
{{end}}
87+
{{if .Controllers.ProviderRequestEnabled }}
88+
- name: baremetal-opertor
89+
image: {{ .Controllers.ProviderRequest }}
90+
command:
91+
- /baremetal-operator
92+
args:
93+
- --logtostderr=true
94+
- --v=3
95+
resources:
96+
requests:
97+
cpu: 10m
98+
memory: 20Mi

Diff for: pkg/operator/config.go

+18
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ type Controllers struct {
3232
NodeLink string
3333
MachineHealthCheck string
3434
MachineHealthCheckEnabled bool
35+
//A bool keep track of whether additional provider specific work needs to be done.
36+
//Could also be called ProviderOptionalEnabled
37+
ProviderRequestEnabled bool
38+
//Only when ProviderRequestEnabled is true, will contain location of an image.
39+
//Could also be called ProviderOptional
40+
ProviderRequest string
3541
}
3642

3743
// Images allows build systems to inject images for MAO components
@@ -42,6 +48,7 @@ type Images struct {
4248
ClusterAPIControllerLibvirt string `json:"clusterAPIControllerLibvirt"`
4349
ClusterAPIControllerBareMetal string `json:"clusterAPIControllerBareMetal"`
4450
ClusterAPIControllerAzure string `json:"clusterAPIControllerAzure"`
51+
BaremetalOperator string `json:"baremetalOperator"`
4552
}
4653

4754
func getProviderFromInfrastructure(infra *configv1.Infrastructure) (configv1.PlatformType, error) {
@@ -83,6 +90,17 @@ func getProviderControllerFromImages(platform configv1.PlatformType, images Imag
8390
}
8491
}
8592

93+
// When the platforme type is BareMetal, MAO is also responsible for deploying
94+
// the baremetal-operator pod
95+
func getAdditionalProviderImages(platform configv1.PlatformType, images Images) (bool, string, error) {
96+
switch platform {
97+
case bareMetalPlatform:
98+
return true, images.BaremetalOperator, nil
99+
default:
100+
return false, "", nil
101+
}
102+
}
103+
86104
func getMachineAPIOperatorFromImages(images Images) (string, error) {
87105
if images.MachineAPIOperator == "" {
88106
return "", fmt.Errorf("failed gettingMachineAPIOperator image. It is empty")

Diff for: pkg/operator/operator.go

+11-3
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,12 @@ func (optr *Operator) maoConfigFromInfrastructure() (*OperatorConfig, error) {
216216
return nil, err
217217
}
218218

219+
providerRequestEnabled, providerRequestImage, err := getAdditionalProviderImages(provider, *images)
220+
//Ignore error if no additional images are required.
221+
if providerRequestEnabled == true && err != nil {
222+
return nil, err
223+
}
224+
219225
machineAPIOperatorImage, err := getMachineAPIOperatorFromImages(*images)
220226
if err != nil {
221227
return nil, err
@@ -224,9 +230,11 @@ func (optr *Operator) maoConfigFromInfrastructure() (*OperatorConfig, error) {
224230
return &OperatorConfig{
225231
TargetNamespace: optr.namespace,
226232
Controllers: Controllers{
227-
Provider: providerControllerImage,
228-
NodeLink: machineAPIOperatorImage,
229-
MachineHealthCheck: machineAPIOperatorImage,
233+
Provider: providerControllerImage,
234+
NodeLink: machineAPIOperatorImage,
235+
MachineHealthCheck: machineAPIOperatorImage,
236+
ProviderRequestEnabled: providerRequestEnabled,
237+
ProviderRequest: providerRequestImage,
230238
},
231239
}, nil
232240
}

0 commit comments

Comments
 (0)