Skip to content

Commit 706ad9b

Browse files
committed
OCPBUGS-1500: Added scaling strategies for Two Node OpenShift with Fencing (TNF)
- TwoNodeScalingStrategy is for core installer installations fo Two Node OpenShift with Fencing - DelayedTwoNodeScalingStrategy is for assisted installs of Two Node OpenShift with Fencing Full change list: - Added updated with bootstrap scaling logic for TNF - Updated manifests render function to know about new topologies - Added a comment to health.go to explain why there isn't a TNF override directly in the quorum fault tolerance check function - Updated bootstrap teardown logic to handle TNF cases - Fixed quorum_check_test to check for the updated error message - Removed the single node topology check utility function - Enabled defragcontroller for Two Node OpenShift with Fencing and Two Node OpenShift with Arbiter
1 parent 5bbe494 commit 706ad9b

File tree

157 files changed

+4900
-1388
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

157 files changed

+4900
-1388
lines changed

go.mod

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ require (
1010
github.com/go-bindata/go-bindata v3.1.2+incompatible
1111
github.com/google/go-cmp v0.6.0
1212
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
13-
github.com/openshift/api v0.0.0-20250124212313-a770960d61e0
13+
github.com/openshift/api v0.0.0-20250305144515-529099f6d7a6
1414
github.com/openshift/build-machinery-go v0.0.0-20250102153059-e85a1a7ecb5c
1515
github.com/openshift/client-go v0.0.0-20250125113824-8e1f0b8fa9a7
1616
github.com/openshift/library-go v0.0.0-20250129210218-fe56c2cf5d70
@@ -29,19 +29,19 @@ require (
2929
go.etcd.io/etcd/server/v3 v3.5.16
3030
go.etcd.io/etcd/tests/v3 v3.5.4
3131
go.uber.org/zap v1.27.0
32-
golang.org/x/sys v0.26.0
32+
golang.org/x/sys v0.30.0
3333
google.golang.org/grpc v1.65.0
3434
gopkg.in/natefinch/lumberjack.v2 v2.2.1
3535
gopkg.in/yaml.v3 v3.0.1
36-
k8s.io/api v0.32.1
36+
k8s.io/api v0.32.2
3737
k8s.io/apiextensions-apiserver v0.32.1
38-
k8s.io/apimachinery v0.32.1
38+
k8s.io/apimachinery v0.32.2
3939
k8s.io/apiserver v0.32.1
4040
k8s.io/client-go v0.32.1
4141
k8s.io/component-base v0.32.1
4242
k8s.io/cri-api v0.21.0
4343
k8s.io/klog/v2 v2.130.1
44-
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738
44+
k8s.io/utils v0.0.0-20241210054802-24370beab758
4545
)
4646

4747
require (
@@ -115,13 +115,13 @@ require (
115115
go.opentelemetry.io/otel/trace v1.28.0 // indirect
116116
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
117117
go.uber.org/multierr v1.11.0 // indirect
118-
golang.org/x/crypto v0.28.0 // indirect
118+
golang.org/x/crypto v0.35.0 // indirect
119119
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
120-
golang.org/x/net v0.30.0 // indirect
120+
golang.org/x/net v0.36.0 // indirect
121121
golang.org/x/oauth2 v0.23.0 // indirect
122-
golang.org/x/sync v0.8.0 // indirect
123-
golang.org/x/term v0.25.0 // indirect
124-
golang.org/x/text v0.19.0 // indirect
122+
golang.org/x/sync v0.12.0 // indirect
123+
golang.org/x/term v0.29.0 // indirect
124+
golang.org/x/text v0.23.0 // indirect
125125
golang.org/x/time v0.7.0 // indirect
126126
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
127127
google.golang.org/genproto/googleapis/api v0.0.0-20240826202546-f6391c0de4c7 // indirect
@@ -134,9 +134,9 @@ require (
134134
k8s.io/kube-aggregator v0.32.1 // indirect
135135
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect
136136
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.0 // indirect
137-
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
137+
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
138138
sigs.k8s.io/kube-storage-version-migrator v0.0.6-0.20230721195810-5c8923c5ff96 // indirect
139-
sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect
139+
sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect
140140
sigs.k8s.io/yaml v1.4.0 // indirect
141141
)
142142

go.sum

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -321,8 +321,8 @@ github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM
321321
github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
322322
github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4=
323323
github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
324-
github.com/openshift/api v0.0.0-20250124212313-a770960d61e0 h1:dCvNfygMrPLVNQ06bpHXrxKfrXHiprO4+etHrRUqI8g=
325-
github.com/openshift/api v0.0.0-20250124212313-a770960d61e0/go.mod h1:yk60tHAmHhtVpJQo3TwVYq2zpuP70iJIFDCmeKMIzPw=
324+
github.com/openshift/api v0.0.0-20250305144515-529099f6d7a6 h1:JZOR0BDz2oXgYrYtW4sVuMGcd8uX7I9IC3mx9C4vbAQ=
325+
github.com/openshift/api v0.0.0-20250305144515-529099f6d7a6/go.mod h1:yk60tHAmHhtVpJQo3TwVYq2zpuP70iJIFDCmeKMIzPw=
326326
github.com/openshift/build-machinery-go v0.0.0-20250102153059-e85a1a7ecb5c h1:6XcszPFZpan4qll5XbdLll7n1So3IsPn28aw2j1obMo=
327327
github.com/openshift/build-machinery-go v0.0.0-20250102153059-e85a1a7ecb5c/go.mod h1:8jcm8UPtg2mCAsxfqKil1xrmRMI3a+XU2TZ9fF8A7TE=
328328
github.com/openshift/client-go v0.0.0-20250125113824-8e1f0b8fa9a7 h1:4iliLcvr1P9EUMZgIaSNEKNQQzBn+L6PSequlFOuB6Q=
@@ -522,8 +522,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U
522522
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
523523
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
524524
golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
525-
golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
526-
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
525+
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
526+
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
527527
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
528528
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
529529
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -573,8 +573,8 @@ golang.org/x/net v0.0.0-20210224082022-3d97a244fca7/go.mod h1:m0MpNAwzfU5UDzcl9v
573573
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
574574
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
575575
golang.org/x/net v0.0.0-20211123203042-d83791d6bcd9/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
576-
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
577-
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
576+
golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
577+
golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
578578
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
579579
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
580580
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -590,8 +590,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ
590590
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
591591
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
592592
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
593-
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
594-
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
593+
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
594+
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
595595
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
596596
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
597597
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -627,20 +627,20 @@ golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBc
627627
golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
628628
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
629629
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
630-
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
631-
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
630+
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
631+
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
632632
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
633-
golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24=
634-
golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M=
633+
golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
634+
golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
635635
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
636636
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
637637
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
638638
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
639639
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
640640
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
641641
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
642-
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
643-
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
642+
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
643+
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
644644
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
645645
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
646646
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -768,12 +768,12 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh
768768
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
769769
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
770770
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
771-
k8s.io/api v0.32.1 h1:f562zw9cy+GvXzXf0CKlVQ7yHJVYzLfL6JAS4kOAaOc=
772-
k8s.io/api v0.32.1/go.mod h1:/Yi/BqkuueW1BgpoePYBRdDYfjPF5sgTr5+YqDZra5k=
771+
k8s.io/api v0.32.2 h1:bZrMLEkgizC24G9eViHGOPbW+aRo9duEISRIJKfdJuw=
772+
k8s.io/api v0.32.2/go.mod h1:hKlhk4x1sJyYnHENsrdCWw31FEmCijNGPJO5WzHiJ6Y=
773773
k8s.io/apiextensions-apiserver v0.32.1 h1:hjkALhRUeCariC8DiVmb5jj0VjIc1N0DREP32+6UXZw=
774774
k8s.io/apiextensions-apiserver v0.32.1/go.mod h1:sxWIGuGiYov7Io1fAS2X06NjMIk5CbRHc2StSmbaQto=
775-
k8s.io/apimachinery v0.32.1 h1:683ENpaCBjma4CYqsmZyhEzrGz6cjn1MY/X2jB2hkZs=
776-
k8s.io/apimachinery v0.32.1/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE=
775+
k8s.io/apimachinery v0.32.2 h1:yoQBR9ZGkA6Rgmhbp/yuT9/g+4lxtsGYwW6dR6BDPLQ=
776+
k8s.io/apimachinery v0.32.2/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE=
777777
k8s.io/apiserver v0.32.1 h1:oo0OozRos66WFq87Zc5tclUX2r0mymoVHRq8JmR7Aak=
778778
k8s.io/apiserver v0.32.1/go.mod h1:UcB9tWjBY7aryeI5zAgzVJB/6k7E97bkr1RgqDz0jPw=
779779
k8s.io/client-go v0.32.1 h1:otM0AxdhdBIaQh7l1Q0jQpmo7WOFIk5FFa4bg6YMdUU=
@@ -790,17 +790,19 @@ k8s.io/kube-aggregator v0.32.1 h1:cztPyIHbo6tgrhYHDqmdmvxUufJKuxgAC/vog7yeWek=
790790
k8s.io/kube-aggregator v0.32.1/go.mod h1:sXjL5T8FO/rlBzTbBhahw9V5Nnr1UtzZHKTj9WxQCOU=
791791
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y=
792792
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4=
793-
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro=
794-
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
793+
k8s.io/utils v0.0.0-20241210054802-24370beab758 h1:sdbE21q2nlQtFh65saZY+rRM6x6aJJI8IUa1AmH/qa0=
794+
k8s.io/utils v0.0.0-20241210054802-24370beab758/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
795795
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
796796
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.0 h1:CPT0ExVicCzcpeN4baWEV2ko2Z/AsiZgEdwgcfwLgMo=
797797
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.0/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw=
798-
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8=
799-
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo=
798+
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
799+
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
800800
sigs.k8s.io/kube-storage-version-migrator v0.0.6-0.20230721195810-5c8923c5ff96 h1:PFWFSkpArPNJxFX4ZKWAk9NSeRoZaXschn+ULa4xVek=
801801
sigs.k8s.io/kube-storage-version-migrator v0.0.6-0.20230721195810-5c8923c5ff96/go.mod h1:EOBQyBowOUsd7U4CJnMHNE0ri+zCXyouGdLwC/jZU+I=
802-
sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA=
803-
sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4=
802+
sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016 h1:kXv6kKdoEtedwuqMmkqhbkgvYKeycVbC8+iPCP9j5kQ=
803+
sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
804+
sigs.k8s.io/structured-merge-diff/v4 v4.6.0 h1:IUA9nvMmnKWcj5jl84xn+T5MnlZKThmUW1TdblaLVAc=
805+
sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps=
804806
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
805807
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
806808
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=

pkg/cmd/render/render.go

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -256,9 +256,10 @@ func newTemplateData(opts *renderOpts) (*TemplateData, error) {
256256
}
257257

258258
// If bootstrap scaling strategy is delayed HA set annotation signal
259-
if templateData.BootstrapScalingStrategy == ceohelpers.DelayedHAScalingStrategy {
259+
if templateData.BootstrapScalingStrategy == ceohelpers.DelayedHAScalingStrategy ||
260+
templateData.BootstrapScalingStrategy == ceohelpers.DelayedTwoNodeScalingStrategy {
260261
templateData.NamespaceAnnotations = map[string]string{
261-
ceohelpers.DelayedHABootstrapScalingStrategyAnnotation: "",
262+
ceohelpers.DelayedBootstrapScalingStrategyAnnotation: "",
262263
}
263264
}
264265

@@ -721,26 +722,54 @@ func getInfrastructure(file string) (*configv1.Infrastructure, error) {
721722
}
722723

723724
func getBootstrapScalingStrategy(installConfig map[string]interface{}, delayedHAMarkerFile string) (ceohelpers.BootstrapScalingStrategy, error) {
724-
// Delayed HA strategy is set if marker file exists on disk.
725-
if _, err := os.Stat(delayedHAMarkerFile); err == nil {
726-
return ceohelpers.DelayedHAScalingStrategy, nil
727-
}
728-
729725
controlPlane, found := installConfig["controlPlane"].(map[string]interface{})
730726
if !found {
731727
return "", fmt.Errorf("unrecognized data structure in controlPlane field")
732728
}
733-
replicaCount, found := controlPlane["replicas"].(float64)
729+
cpReplicaCount, found := controlPlane["replicas"].(float64)
734730
if !found {
735731
return "", fmt.Errorf("unrecognized data structure in controlPlane replica field")
736732
}
737733

738734
// Bootstrap in place strategy when bootstrapInPlace root key exists in the install-config
739735
// and controlPlane replicas is 1.
740-
if _, found := installConfig["bootstrapInPlace"]; found && int(replicaCount) == 1 {
736+
if _, found := installConfig["bootstrapInPlace"]; found && int(cpReplicaCount) == 1 {
741737
return ceohelpers.BootstrapInPlaceStrategy, nil
742738
}
743739

740+
// Delayed HA strategy is set if marker file exists on disk.
741+
_, err := os.Stat(delayedHAMarkerFile)
742+
delayedHAEnabled := err == nil
743+
744+
// Check for arbiter to distinguish between Two Node OpenShift with
745+
// Fencing and Two Node OpenShift with Arbiter
746+
arbReplicaCount := int64(0)
747+
arbiterConfig, arbiterDefined := installConfig["arbiter"].(map[string]interface{})
748+
if arbiterDefined {
749+
replicas, arbReplicasDefined := arbiterConfig["replicas"].(float64)
750+
if arbReplicasDefined {
751+
arbReplicaCount = int64(replicas)
752+
}
753+
}
754+
755+
strategy := ceohelpers.HAScalingStrategy
756+
switch {
757+
// None of this logic is used.
758+
// The only code that references the scaling strategy written to the
759+
// manifests lives in the 00_etcd-endpoints-cm.yaml and etcd-member-pod.yaml
760+
// templates, which just check for BootstrapInPlaceStrategy (see logic above).
761+
case cpReplicaCount == 1:
762+
strategy = ceohelpers.UnsafeScalingStrategy
763+
case cpReplicaCount == 2 && arbReplicaCount == 0 && delayedHAEnabled:
764+
strategy = ceohelpers.DelayedTwoNodeScalingStrategy
765+
case cpReplicaCount == 2 && arbReplicaCount == 0 && !delayedHAEnabled:
766+
strategy = ceohelpers.TwoNodeScalingStrategy
767+
case delayedHAEnabled:
768+
strategy = ceohelpers.DelayedHAScalingStrategy
769+
default:
770+
strategy = ceohelpers.HAScalingStrategy
771+
}
772+
744773
// HA "default".
745-
return ceohelpers.HAScalingStrategy, nil
774+
return strategy, nil
746775
}

0 commit comments

Comments
 (0)