Skip to content

Commit 2ef9d9a

Browse files
Merge pull request #30494 from eggfoobar/OCPEDGE-1486-cp-node-replacement
OCPEDGE-2082: Added TNF control-plane node replacement test.
2 parents fc6ec0c + a093c61 commit 2ef9d9a

34 files changed

+6187
-211
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ require (
5353
github.com/lestrrat/go-jsschema v0.0.0-20181205002244-5c81c58ffcc3
5454
github.com/lithammer/dedent v1.1.0
5555
github.com/mattn/go-sqlite3 v1.14.30
56+
github.com/metal3-io/baremetal-operator/apis v0.11.0-alpha.0
5657
github.com/metallb/frr-k8s v0.0.15
5758
github.com/microsoftgraph/msgraph-sdk-go v1.81.0
5859
github.com/onsi/ginkgo/v2 v2.23.3

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -725,6 +725,8 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
725725
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
726726
github.com/mattn/go-sqlite3 v1.14.30 h1:bVreufq3EAIG1Quvws73du3/QgdeZ3myglJlrzSYYCY=
727727
github.com/mattn/go-sqlite3 v1.14.30/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
728+
github.com/metal3-io/baremetal-operator/apis v0.11.0-alpha.0 h1:DMdk7yuxgLXGTL+HmUNHzm8WyZaZGkSFxxdXJjWq6IU=
729+
github.com/metal3-io/baremetal-operator/apis v0.11.0-alpha.0/go.mod h1:TB7T7qAumrfrY/TCSuHvKtpEOLGw9QjnG43ez3vX14g=
728730
github.com/metallb/frr-k8s v0.0.15 h1:6M3UGhovX1EFoaSGjrRD7djUAx3w2I+g81FH8OVtHkM=
729731
github.com/metallb/frr-k8s v0.0.15/go.mod h1:TjrGoAf+v00hYGlI8jUdyDxY5udMAOs2GWwrvLWnA4E=
730732
github.com/microsoft/kiota-abstractions-go v1.9.3 h1:cqhbqro+VynJ7kObmo7850h3WN2SbvoyhypPn8uJ1SE=

test/extended/testdata/bindata.go

Lines changed: 104 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apiVersion: metal3.io/v1alpha1
2+
kind: BareMetalHost
3+
metadata:
4+
finalizers:
5+
- baremetalhost.metal3.io
6+
labels:
7+
installer.openshift.io/role: control-plane
8+
name: {BMH_NAME}
9+
namespace: openshift-machine-api
10+
spec:
11+
architecture: x86_64
12+
automatedCleaningMode: metadata
13+
bmc:
14+
address: redfish+https://{REDFISH_IP}:8000/redfish/v1/Systems/{UUID}
15+
credentialsName: {CREDENTIALS_NAME}
16+
disableCertificateVerification: true
17+
bootMACAddress: {BOOT_MAC_ADDRESS}
18+
bootMode: UEFI
19+
customDeploy:
20+
method: install_coreos
21+
hardwareProfile: unknown
22+
online: true
23+
rootDeviceHints:
24+
deviceName: /dev/sda
25+
userData:
26+
name: master-user-data-managed
27+
namespace: openshift-machine-api
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
apiVersion: machine.openshift.io/v1beta1
2+
kind: Machine
3+
metadata:
4+
annotations:
5+
metal3.io/BareMetalHost: openshift-machine-api/{BMH_NAME}
6+
finalizers:
7+
- machine.machine.openshift.io
8+
labels:
9+
machine.openshift.io/cluster-api-cluster: ostest-{MACHINE_HASH}
10+
machine.openshift.io/cluster-api-machine-role: master
11+
machine.openshift.io/cluster-api-machine-type: master
12+
name: {MACHINE_NAME}
13+
namespace: openshift-machine-api
14+
spec:
15+
authoritativeAPI: MachineAPI
16+
metadata: {}
17+
providerSpec:
18+
value:
19+
apiVersion: baremetal.cluster.k8s.io/v1alpha1
20+
customDeploy:
21+
method: install_coreos
22+
hostSelector: {}
23+
image:
24+
checksum: ""
25+
url: ""
26+
kind: BareMetalMachineProviderSpec
27+
metadata:
28+
creationTimestamp: null
29+
userData:
30+
name: master-user-data-managed

test/extended/two_node/arbiter_topology.go

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
o "github.com/onsi/gomega"
1111

1212
v1 "github.com/openshift/api/config/v1"
13+
"github.com/openshift/origin/test/extended/two_node/utils"
1314
exutil "github.com/openshift/origin/test/extended/util"
1415
"github.com/openshift/origin/test/extended/util/image"
1516
appv1 "k8s.io/api/apps/v1"
@@ -40,7 +41,7 @@ var _ = g.Describe("[sig-node][apigroup:config.openshift.io][OCPFeatureGate:High
4041
oc := exutil.NewCLIWithoutNamespace("")
4142

4243
g.BeforeEach(func() {
43-
skipIfNotTopology(oc, v1.HighlyAvailableArbiterMode)
44+
utils.SkipIfNotTopology(oc, v1.HighlyAvailableArbiterMode)
4445
})
4546

4647
g.It("Should validate that there are Master and Arbiter nodes as specified in the cluster", func() {
@@ -51,15 +52,11 @@ var _ = g.Describe("[sig-node][apigroup:config.openshift.io][OCPFeatureGate:High
5152
expectedMasterNodes = 2
5253
expectedArbiterNodes = 1
5354
)
54-
masterNodes, err := oc.AdminKubeClient().CoreV1().Nodes().List(context.Background(), metav1.ListOptions{
55-
LabelSelector: labelNodeRoleMaster,
56-
})
55+
masterNodes, err := utils.GetNodes(oc, utils.LabelNodeRoleControlPlane)
5756
o.Expect(err).To(o.BeNil(), "Expected to retrieve Master nodes without error")
5857
o.Expect(len(masterNodes.Items)).To(o.Equal(expectedMasterNodes))
5958

60-
arbiterNodes, err := oc.AdminKubeClient().CoreV1().Nodes().List(context.Background(), metav1.ListOptions{
61-
LabelSelector: labelNodeRoleArbiter,
62-
})
59+
arbiterNodes, err := utils.GetNodes(oc, utils.LabelNodeRoleArbiter)
6360
o.Expect(err).To(o.BeNil(), "Expected to retrieve Arbiter nodes without error")
6461
o.Expect(len(arbiterNodes.Items)).To(o.Equal(expectedArbiterNodes))
6562
})
@@ -71,13 +68,11 @@ var _ = g.Describe("[sig-node][apigroup:config.openshift.io][OCPFeatureGate:High
7168
oc := exutil.NewCLIWithoutNamespace("")
7269

7370
g.BeforeEach(func() {
74-
skipIfNotTopology(oc, v1.HighlyAvailableArbiterMode)
71+
utils.SkipIfNotTopology(oc, v1.HighlyAvailableArbiterMode)
7572
})
7673
g.It("Should verify that the correct number of pods are running on the Arbiter node", func() {
7774
g.By("Retrieving the Arbiter node name")
78-
nodes, err := oc.AdminKubeClient().CoreV1().Nodes().List(context.Background(), metav1.ListOptions{
79-
LabelSelector: labelNodeRoleArbiter,
80-
})
75+
nodes, err := utils.GetNodes(oc, utils.LabelNodeRoleArbiter)
8176
o.Expect(err).To(o.BeNil(), "Expected to retrieve nodes without error")
8277
o.Expect(len(nodes.Items)).To(o.Equal(1))
8378
g.By("by comparing pod counts")
@@ -102,7 +97,7 @@ var _ = g.Describe("[sig-apps][apigroup:apps.openshift.io][OCPFeatureGate:Highly
10297

10398
oc := exutil.NewCLI("arbiter-pod-validation").SetManagedNamespace().AsAdmin()
10499
g.BeforeEach(func() {
105-
skipIfNotTopology(oc, v1.HighlyAvailableArbiterMode)
100+
utils.SkipIfNotTopology(oc, v1.HighlyAvailableArbiterMode)
106101
})
107102

108103
g.It("should be created on arbiter nodes when arbiter node is selected", func() {
@@ -112,7 +107,7 @@ var _ = g.Describe("[sig-apps][apigroup:apps.openshift.io][OCPFeatureGate:Highly
112107
defer cancel()
113108
err := wait.PollUntilContextTimeout(ctx, 5*time.Second, 300*time.Second, true, func(ctx context.Context) (done bool, err error) {
114109
arbiterNodes, err := oc.AdminKubeClient().CoreV1().Nodes().List(context.Background(), metav1.ListOptions{
115-
LabelSelector: labelNodeRoleArbiter,
110+
LabelSelector: utils.LabelNodeRoleArbiter,
116111
})
117112
if kapierror.IsTimeout(err) {
118113
return false, nil
@@ -154,7 +149,7 @@ var _ = g.Describe("[sig-apps][apigroup:apps.openshift.io][OCPFeatureGate:Highly
154149
ctx := context.Background()
155150
g.By("Retrieving Master nodes")
156151
masterNodes, err := oc.AdminKubeClient().CoreV1().Nodes().List(ctx, metav1.ListOptions{
157-
LabelSelector: labelNodeRoleMaster,
152+
LabelSelector: utils.LabelNodeRoleControlPlane,
158153
})
159154
o.Expect(err).To(o.BeNil(), "Expected to retrieve Master nodes without error")
160155
o.Expect(len(masterNodes.Items)).To(o.Equal(2), "Expected to find two Master nodes")
@@ -197,13 +192,13 @@ var _ = g.Describe("[sig-apps][apigroup:apps.openshift.io][OCPFeatureGate:Highly
197192
oc := exutil.NewCLI("daemonset-pod-validation").SetManagedNamespace().AsAdmin()
198193

199194
g.BeforeEach(func() {
200-
skipIfNotTopology(oc, v1.HighlyAvailableArbiterMode)
195+
utils.SkipIfNotTopology(oc, v1.HighlyAvailableArbiterMode)
201196
})
202197

203198
g.It("should not create a DaemonSet on the Arbiter node", func() {
204199
g.By("Retrieving the Arbiter node")
205200
arbiterNodes, err := oc.AdminKubeClient().CoreV1().Nodes().List(context.Background(), metav1.ListOptions{
206-
LabelSelector: labelNodeRoleArbiter,
201+
LabelSelector: utils.LabelNodeRoleArbiter,
207202
})
208203
o.Expect(err).To(o.BeNil(), "Expected to retrieve Arbiter node without error")
209204
o.Expect(len(arbiterNodes.Items)).To(o.BeNumerically(">", 0), "Expected at least one Arbiter node")
@@ -247,7 +242,7 @@ var _ = g.Describe("[sig-etcd][apigroup:config.openshift.io][OCPFeatureGate:High
247242
oc := exutil.NewCLIWithoutNamespace("").AsAdmin()
248243

249244
g.BeforeEach(func() {
250-
skipIfNotTopology(oc, v1.HighlyAvailableArbiterMode)
245+
utils.SkipIfNotTopology(oc, v1.HighlyAvailableArbiterMode)
251246
})
252247

253248
g.It("should have all etcd pods running and quorum met", func() {
@@ -276,8 +271,8 @@ var _ = g.Describe("[sig-etcd][apigroup:config.openshift.io][OCPFeatureGate:High
276271
o.Expect(err).To(o.BeNil(), "Expected to retrieve etcd ClusterOperator without error")
277272

278273
g.By("Verifying ClusterOperator conditions for Availability and Degradation")
279-
o.Expect(isClusterOperatorAvailable(etcdOperator)).To(o.BeTrue(), "Expected etcd operator to be available, indicating quorum is met")
280-
o.Expect(isClusterOperatorDegraded(etcdOperator)).To(o.BeFalse(), "Expected etcd operator not to be degraded")
274+
o.Expect(utils.IsClusterOperatorAvailable(etcdOperator)).To(o.BeTrue(), "Expected etcd operator to be available, indicating quorum is met")
275+
o.Expect(utils.IsClusterOperatorDegraded(etcdOperator)).To(o.BeFalse(), "Expected etcd operator not to be degraded")
281276
})
282277
})
283278

test/extended/two_node/common.go

Lines changed: 0 additions & 56 deletions
This file was deleted.

0 commit comments

Comments
 (0)