Skip to content

Commit ac3c04b

Browse files
displaguedetiber
authored andcommitted
WIP adding Packet support
1 parent ba833e8 commit ac3c04b

27 files changed

Lines changed: 750 additions & 471 deletions

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ Ensure presence of expected number of replicas and a given provider config for a
3939

4040
- [cluster-api-provider-ovirt](https://github.com/openshift/cluster-api-provider-ovirt)
4141

42+
- [cluster-api-provider-equinix-metal](https://github.com/openshift/cluster-api-provider-equinix-metal)
43+
4244
Ensure that a provider instance is created for a Machine object in a given provider.
4345

4446
- Node link Controller

docs/dev/hacking-guide.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ Machine API consists of a number different components:
4141
- https://github.com/openshift/cluster-api-provider-openstack
4242
- https://github.com/openshift/cluster-api-provider-baremetal
4343
- https://github.com/openshift/cluster-api-provider-ovirt
44+
- https://github.com/openshift/cluster-api-provider-equinix-metal
4445

4546
### How to start contributing
4647

@@ -155,6 +156,7 @@ data:
155156
"clusterAPIControllerGCP": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:...",
156157
"clusterAPIControllerOvirt": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:...",
157158
"clusterAPIControllerVSphere": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:...",
159+
"clusterAPIControllerEquinixMetal": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:...",
158160
"baremetalOperator": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:...",
159161
"baremetalIronic": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:...",
160162
"baremetalIronicInspector": "quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:...",

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,5 @@ require (
3737
replace sigs.k8s.io/cluster-api-provider-aws => github.com/openshift/cluster-api-provider-aws v0.2.1-0.20201125052318-b85a18cbf338
3838

3939
replace sigs.k8s.io/cluster-api-provider-azure => github.com/openshift/cluster-api-provider-azure v0.1.0-alpha.3.0.20201130182513-88b90230f2a4
40+
41+
replace github.com/openshift/api => github.com/detiber/api v0.0.0-20210121195559-ef12c702c3b4

go.sum

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
135135
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
136136
github.com/davecgh/go-xdr v0.0.0-20161123171359-e6a2ba005892/go.mod h1:CTDl0pzVzE5DEzZhPfvhY/9sPFMQIxaJ9VAMs9AagrE=
137137
github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE=
138+
github.com/detiber/api v0.0.0-20210121195559-ef12c702c3b4 h1:aiawSDc8NqZfV5NKMM4xloIWOK64MdquiSjMsQwZcHc=
139+
github.com/detiber/api v0.0.0-20210121195559-ef12c702c3b4/go.mod h1:aqU5Cq+kqKKPbDMqxo9FojgDeSpNJI7iuskjXjtojDg=
138140
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
139141
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
140142
github.com/docker/distribution v0.0.0-20180920194744-16128bbac47f/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
@@ -484,14 +486,6 @@ github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQ
484486
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
485487
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
486488
github.com/opencontainers/runc v0.0.0-20191031171055-b133feaeeb2e/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
487-
github.com/openshift/api v0.0.0-20200326152221-912866ddb162/go.mod h1:RKMJ5CBnljLfnej+BJ/xnOWc3kZDvJUaIAEq2oKSPtE=
488-
github.com/openshift/api v0.0.0-20200424083944-0422dc17083e/go.mod h1:VnbEzX8SAaRj7Yfl836NykdQIlbEjfL6/CD+AaJQg5Q=
489-
github.com/openshift/api v0.0.0-20200827090112-c05698d102cf/go.mod h1:M3xexPhgM8DISzzRpuFUy+jfPjQPIcs9yqEYj17mXV8=
490-
github.com/openshift/api v0.0.0-20200901182017-7ac89ba6b971/go.mod h1:M3xexPhgM8DISzzRpuFUy+jfPjQPIcs9yqEYj17mXV8=
491-
github.com/openshift/api v0.0.0-20201214114959-164a2fb63b5f/go.mod h1:aqU5Cq+kqKKPbDMqxo9FojgDeSpNJI7iuskjXjtojDg=
492-
github.com/openshift/api v0.0.0-20201216151826-78a19e96f9eb h1:/2U2gRTwhhDLBUUfC9+5YPFFOeQ93VKq9EbZH2OPOXE=
493-
github.com/openshift/api v0.0.0-20201216151826-78a19e96f9eb/go.mod h1:aqU5Cq+kqKKPbDMqxo9FojgDeSpNJI7iuskjXjtojDg=
494-
github.com/openshift/build-machinery-go v0.0.0-20200211121458-5e3d6e570160/go.mod h1:1CkcsT3aVebzRBzVTSbiKSkJMsC/CASqxesfqEMfJEc=
495489
github.com/openshift/build-machinery-go v0.0.0-20200424080330-082bf86082cc/go.mod h1:1CkcsT3aVebzRBzVTSbiKSkJMsC/CASqxesfqEMfJEc=
496490
github.com/openshift/build-machinery-go v0.0.0-20200819073603-48aa266c95f7/go.mod h1:b1BuldmJlbA/xYtdZvKi+7j5YGB44qJUJDZ9zwiNCfE=
497491
github.com/openshift/build-machinery-go v0.0.0-20200917070002-f171684f77ab/go.mod h1:b1BuldmJlbA/xYtdZvKi+7j5YGB44qJUJDZ9zwiNCfE=
@@ -879,7 +873,6 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn
879873
golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
880874
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
881875
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
882-
golang.org/x/tools v0.0.0-20200115044656-831fdb1e1868/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
883876
golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
884877
golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
885878
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=

install/0000_30_machine-api-operator_00_credentials-request.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,3 +167,19 @@ spec:
167167
providerSpec:
168168
apiVersion: cloudcredential.openshift.io/v1
169169
kind: KubevirtProviderSpec
170+
---
171+
apiVersion: cloudcredential.openshift.io/v1
172+
kind: CredentialsRequest
173+
metadata:
174+
labels:
175+
controller-tools.k8s.io: "1.0"
176+
name: openshift-machine-api-equinix-metal
177+
namespace: openshift-cloud-credential-operator
178+
spec:
179+
secretRef:
180+
name: equinix-metal-credentials
181+
namespace: openshift-machine-api
182+
providerSpec:
183+
apiVersion: cloudcredential.openshift.io/v1
184+
kind: EquinixMetalProviderSpec
185+
---

install/0000_30_machine-api-operator_01_images.configmap.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,6 @@ data:
2020
"clusterAPIControllerGCP": "registry.svc.ci.openshift.org/openshift:gcp-machine-controllers",
2121
"clusterAPIControllerOvirt": "registry.svc.ci.openshift.org/openshift:ovirt-machine-controllers",
2222
"clusterAPIControllerKubevirt": "registry.svc.ci.openshift.org/openshift:kubevirt-machine-controllers",
23+
"clusterAPIControllerEquinixMetal": "registry.svc.ci.openshift.org/openshift:equinix-metal-machine-controllers",
2324
"clusterAPIControllerVSphere": "registry.svc.ci.openshift.org/openshift:machine-api-operator"
2425
}

install/image-references

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,7 @@ spec:
6666
from:
6767
kind: DockerImage
6868
name: registry.svc.ci.openshift.org/openshift:kubevirt-machine-controllers
69+
- name: equinix-metal-machine-controllers
70+
from:
71+
kind: DockerImage
72+
name: registry.svc.ci.openshift.org/openshift:equinix-metal-machine-controllers

pkg/operator/config.go

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,18 @@ type Controllers struct {
3636

3737
// Images allows build systems to inject images for MAO components
3838
type Images struct {
39-
MachineAPIOperator string `json:"machineAPIOperator"`
40-
ClusterAPIControllerAWS string `json:"clusterAPIControllerAWS"`
41-
ClusterAPIControllerOpenStack string `json:"clusterAPIControllerOpenStack"`
42-
ClusterAPIControllerLibvirt string `json:"clusterAPIControllerLibvirt"`
43-
ClusterAPIControllerBareMetal string `json:"clusterAPIControllerBareMetal"`
44-
ClusterAPIControllerAzure string `json:"clusterAPIControllerAzure"`
45-
ClusterAPIControllerGCP string `json:"clusterAPIControllerGCP"`
46-
ClusterAPIControllerOvirt string `json:"clusterAPIControllerOvirt"`
47-
ClusterAPIControllerVSphere string `json:"clusterAPIControllerVSphere"`
48-
ClusterAPIControllerKubevirt string `json:"clusterAPIControllerKubevirt"`
49-
KubeRBACProxy string `json:"kubeRBACProxy"`
39+
MachineAPIOperator string `json:"machineAPIOperator"`
40+
ClusterAPIControllerAWS string `json:"clusterAPIControllerAWS"`
41+
ClusterAPIControllerOpenStack string `json:"clusterAPIControllerOpenStack"`
42+
ClusterAPIControllerLibvirt string `json:"clusterAPIControllerLibvirt"`
43+
ClusterAPIControllerBareMetal string `json:"clusterAPIControllerBareMetal"`
44+
ClusterAPIControllerAzure string `json:"clusterAPIControllerAzure"`
45+
ClusterAPIControllerGCP string `json:"clusterAPIControllerGCP"`
46+
ClusterAPIControllerOvirt string `json:"clusterAPIControllerOvirt"`
47+
ClusterAPIControllerVSphere string `json:"clusterAPIControllerVSphere"`
48+
ClusterAPIControllerKubevirt string `json:"clusterAPIControllerKubevirt"`
49+
ClusterAPIControllerEquinixMetal string `json:"clusterAPIControllerEquinixMetal"`
50+
KubeRBACProxy string `json:"kubeRBACProxy"`
5051
}
5152

5253
func getProviderFromInfrastructure(infra *configv1.Infrastructure) (configv1.PlatformType, error) {
@@ -91,6 +92,8 @@ func getProviderControllerFromImages(platform configv1.PlatformType, images Imag
9192
return images.ClusterAPIControllerKubevirt, nil
9293
case kubemarkPlatform:
9394
return clusterAPIControllerKubemark, nil
95+
case configv1.EquinixMetalPlatformType:
96+
return images.ClusterAPIControllerEquinixMetal, nil
9497
default:
9598
return clusterAPIControllerNoOp, nil
9699
}

pkg/operator/config_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var (
1919
expectedOvirtImage = "quay.io/openshift/origin-ovirt-machine-controllers"
2020
expectedVSphereImage = "docker.io/openshift/origin-machine-api-operator:v4.0.0"
2121
expectedKubevirtImage = "quay.io/openshift/origin-kubevirt-machine-controllers"
22+
expectedEquinixMetalImage = "quay.io/openshift/origin-equinix-metal-machine-controllers"
2223
)
2324

2425
func TestGetProviderFromInfrastructure(t *testing.T) {
@@ -95,6 +96,13 @@ func TestGetProviderFromInfrastructure(t *testing.T) {
9596
},
9697
},
9798
expected: configv1.OvirtPlatformType,
99+
}, {
100+
infra: &configv1.Infrastructure{
101+
Status: configv1.InfrastructureStatus{
102+
Platform: configv1.EquinixMetalPlatformType,
103+
},
104+
},
105+
expected: configv1.EquinixMetalPlatformType,
98106
}}
99107

100108
for _, test := range tests {
@@ -140,6 +148,9 @@ func TestGetImagesFromJSONFile(t *testing.T) {
140148
if img.ClusterAPIControllerKubevirt != expectedKubevirtImage {
141149
t.Errorf("failed getImagesFromJSONFile. Expected: %s, got: %s", expectedKubevirtImage, img.ClusterAPIControllerKubevirt)
142150
}
151+
if img.ClusterAPIControllerEquinixMetal != expectedEquinixMetalImage {
152+
t.Errorf("failed getImagesFromJSONFile. Expected: %s, got: %s", expectedEquinixMetalImage, img.ClusterAPIControllerEquinixMetal)
153+
}
143154
}
144155

145156
func TestGetProviderControllerFromImages(t *testing.T) {
@@ -190,6 +201,10 @@ func TestGetProviderControllerFromImages(t *testing.T) {
190201
provider: configv1.KubevirtPlatformType,
191202
expectedImage: expectedKubevirtImage,
192203
},
204+
{
205+
provider: configv1.EquinixMetalPlatformType,
206+
expectedImage: expectedEquinixMetalImage,
207+
},
193208
}
194209

195210
img, err := getImagesFromJSONFile(imagesJSONFile)
@@ -252,6 +267,10 @@ func TestGetTerminationHandlerFromImages(t *testing.T) {
252267
provider: configv1.OvirtPlatformType,
253268
expectedImage: clusterAPIControllerNoOp,
254269
},
270+
{
271+
provider: configv1.EquinixMetalPlatformType,
272+
expectedImage: clusterAPIControllerNoOp,
273+
},
255274
}
256275

257276
img, err := getImagesFromJSONFile(imagesJSONFile)

pkg/operator/fixtures/images.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"clusterAPIControllerAzure": "quay.io/openshift/origin-azure-machine-controllers:v4.0.0",
88
"clusterAPIControllerGCP": "quay.io/openshift/origin-gcp-machine-controllers:v4.0.0",
99
"clusterAPIControllerOvirt": "quay.io/openshift/origin-ovirt-machine-controllers",
10+
"clusterAPIControllerEquinixMetal": "quay.io/openshift/origin-equinix-metal-machine-controllers",
1011
"clusterAPIControllerVSphere": "docker.io/openshift/origin-machine-api-operator:v4.0.0",
1112
"clusterAPIControllerKubevirt": "quay.io/openshift/origin-kubevirt-machine-controllers",
1213
"kubeRBACProxy": "docker.io/openshift/origin-kube-rbac-proxy:v4.0.0"

0 commit comments

Comments
 (0)