From 0ea2ef0304df4aa2c6440a9d6ef816eba15b91d9 Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Mon, 4 Feb 2019 21:44:24 -0500 Subject: [PATCH] Add support for managed bare metal platform. This patch introduces support for the managed bare metal platform that is currently under development under the metalkube github org. More information about this platform type can be found in documentation under https://github.com/metalkube/metalkube-docs/. --- README.md | 2 ++ ...hine-api-operator_01_images.configmap.yaml | 2 +- install/image-references | 4 ++++ pkg/operator/config.go | 3 +-- pkg/operator/config_test.go | 21 ++++++++++++++++++- pkg/operator/fixtures/images.json | 3 ++- 6 files changed, 30 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b1d4c00ac..75687df61 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,8 @@ This allows to convey desired state of machines in a cluster in a declarative fa - [cluster-api-provider-openstack](https://github.com/kubernetes-sigs/cluster-api-provider-openstack). Coming soon. + - [cluster-api-provider-baremetal](https://github.com/metalkube/cluster-api-provider-baremetal). Under development in [MetalKube](http://metalkube.org). + - [Node Controller](https://github.com/kubernetes-sigs/cluster-api/tree/master/pkg/controller) - Reconciles desired state of machines by matching IP addresses of machine objects with IP addresses of node objects. Annotating node with a special label containing machine name that the cluster-api node controller interprets and sets corresponding nodeRef field of each relevant machine. diff --git a/install/0000_30_machine-api-operator_01_images.configmap.yaml b/install/0000_30_machine-api-operator_01_images.configmap.yaml index f45989ece..56bd74136 100644 --- a/install/0000_30_machine-api-operator_01_images.configmap.yaml +++ b/install/0000_30_machine-api-operator_01_images.configmap.yaml @@ -4,4 +4,4 @@ metadata: name: machine-api-operator-images namespace: openshift-machine-api data: - images.json: '{"machineAPIOperator": "docker.io/openshift/origin-machine-api-operator:v4.0.0", "clusterAPIControllerAWS": "docker.io/openshift/origin-aws-machine-controllers:v4.0.0", "clusterAPIControllerOpenStack": "docker.io/openshift/origin-openstack-machine-controllers:v4.0.0", "clusterAPIControllerLibvirt": "docker.io/openshift/origin-libvirt-machine-controllers:v4.0.0", "clusterAPIControllerKubemark": "docker.io/gofed/kubemark-machine-controllers:v1.0"}' + images.json: '{"machineAPIOperator": "docker.io/openshift/origin-machine-api-operator:v4.0.0", "clusterAPIControllerAWS": "docker.io/openshift/origin-aws-machine-controllers:v4.0.0", "clusterAPIControllerOpenStack": "docker.io/openshift/origin-openstack-machine-controllers:v4.0.0", "clusterAPIControllerLibvirt": "docker.io/openshift/origin-libvirt-machine-controllers:v4.0.0", "clusterAPIControllerKubemark": "docker.io/gofed/kubemark-machine-controllers:v1.0", "clusterAPIControllerBareMetal": "quay.io/openshift/origin-baremetal-machine-controllers:v4.0.0"}' diff --git a/install/image-references b/install/image-references index 3b3a0f134..cb1d11d91 100644 --- a/install/image-references +++ b/install/image-references @@ -18,3 +18,7 @@ spec: from: kind: DockerImage name: docker.io/openshift/origin-libvirt-machine-controllers:v4.0.0 + - name: baremetal-machine-controllers + from: + kind: DockerImage + name: quay.io/openshift/origin-baremetal-machine-controllers:v4.0.0 diff --git a/pkg/operator/config.go b/pkg/operator/config.go index 5c21be332..a70aa44eb 100644 --- a/pkg/operator/config.go +++ b/pkg/operator/config.go @@ -167,8 +167,7 @@ func getProviderControllerFromImages(provider Provider, images Images) (string, case KubemarkProvider: return images.ClusterAPIControllerKubemark, nil case BareMetalProvider: - //FIXME Replace with a proper controller once its available - return images.ClusterAPIControllerLibvirt, nil + return images.ClusterAPIControllerBareMetal, nil case NoneProvider: return "None", nil } diff --git a/pkg/operator/config_test.go b/pkg/operator/config_test.go index f46dbbaff..4a3ad06b6 100644 --- a/pkg/operator/config_test.go +++ b/pkg/operator/config_test.go @@ -12,6 +12,7 @@ var ( expectedLibvirtImage = "docker.io/openshift/origin-libvirt-machine-controllers:v4.0.0" expectedOpenstackImage = "docker.io/openshift/origin-openstack-machine-controllers:v4.0.0" expectedMachineAPIOperatorImage = "docker.io/openshift/origin-machine-api-operator:v4.0.0" + expectedBareMetalImage = "quay.io/openshift/origin-baremetal-machine-controllers:v4.0.0" ) func TestInstallConfigFromClusterConfig(t *testing.T) { @@ -53,7 +54,7 @@ pullSecret: “" if err != nil { t.Errorf("failed to get install config: %v", err) } - if res.InstallPlatform.AWS != nil && res.InstallPlatform.Libvirt == nil && res.InstallPlatform.OpenStack == nil { + if res.InstallPlatform.AWS != nil && res.InstallPlatform.Libvirt == nil && res.InstallPlatform.OpenStack == nil && res.InstallPlatform.BareMetal == nil { t.Logf("got install config successfully: %+v", res) } else { t.Errorf("failed to getInstallConfigFromClusterConfig. Expected aws to be not nil, got: %+v", res) @@ -71,6 +72,7 @@ func TestGetProviderFromInstallConfig(t *testing.T) { AWS: notNil, Libvirt: nil, OpenStack: nil, + BareMetal: nil, }, }, expected: AWSProvider, @@ -81,6 +83,7 @@ func TestGetProviderFromInstallConfig(t *testing.T) { AWS: nil, Libvirt: notNil, OpenStack: nil, + BareMetal: nil, }, }, expected: LibvirtProvider, @@ -102,9 +105,21 @@ func TestGetProviderFromInstallConfig(t *testing.T) { AWS: nil, Libvirt: nil, OpenStack: notNil, + BareMetal: nil, }, }, expected: OpenStackProvider, + }, + { + ic: &InstallConfig{ + InstallPlatform{ + AWS: nil, + Libvirt: nil, + OpenStack: nil, + BareMetal: notNil, + }, + }, + expected: BareMetalProvider, }} for _, test := range tests { @@ -123,6 +138,7 @@ func TestGetProviderFromInstallConfig(t *testing.T) { AWS: nil, Libvirt: notNil, OpenStack: notNil, + BareMetal: nil, }, } res, err := getProviderFromInstallConfig(ic) @@ -145,6 +161,9 @@ func TestGetImagesFromJSONFile(t *testing.T) { if img.ClusterAPIControllerOpenStack != expectedOpenstackImage { t.Errorf("failed getImagesFromJSONFile. Expected: %s, got: %s", expectedOpenstackImage, img.ClusterAPIControllerOpenStack) } + if img.ClusterAPIControllerBareMetal != expectedBareMetalImage { + t.Errorf("failed getImagesFromJSONFile. Expected: %s, got: %s", expectedBareMetalImage, img.ClusterAPIControllerBareMetal) + } } func TestGetProviderControllerFromImages(t *testing.T) { diff --git a/pkg/operator/fixtures/images.json b/pkg/operator/fixtures/images.json index 40c303dc9..6cc05d976 100644 --- a/pkg/operator/fixtures/images.json +++ b/pkg/operator/fixtures/images.json @@ -2,5 +2,6 @@ "clusterAPIControllerAWS": "docker.io/openshift/origin-aws-machine-controllers:v4.0.0", "clusterAPIControllerOpenStack": "docker.io/openshift/origin-openstack-machine-controllers:v4.0.0", "clusterAPIControllerLibvirt": "docker.io/openshift/origin-libvirt-machine-controllers:v4.0.0", - "machineAPIOperator": "docker.io/openshift/origin-machine-api-operator:v4.0.0" + "machineAPIOperator": "docker.io/openshift/origin-machine-api-operator:v4.0.0", + "clusterAPIControllerBareMetal": "quay.io/openshift/origin-baremetal-machine-controllers:v4.0.0" }