Skip to content

Commit 05fbcc2

Browse files
Merge pull request #680 from abays/client_pod_status
[OSPRH-5019] Consider OpenStackClient pod status when calculating CR's ready state
2 parents 28682d4 + b0486ba commit 05fbcc2

File tree

7 files changed

+78
-51
lines changed

7 files changed

+78
-51
lines changed

apis/client/v1beta1/conditions.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ const (
4545
// OpenStackClientInputReady
4646
OpenStackClientInputReady = "OpenStack Client input ready"
4747

48+
// OpenStackClientReadyRunningMessage
49+
OpenStackClientReadyRunningMessage = "OpenStack Client in progress"
50+
4851
// OpenStackClientReadyMessage
4952
OpenStackClientReadyMessage = "OpenStack Client created"
5053

apis/go.mod

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ require (
1414
github.com/openstack-k8s-operators/infra-operator/apis v0.3.1-0.20240216172129-990c7cf02b25
1515
github.com/openstack-k8s-operators/ironic-operator/api v0.3.1-0.20240216150409-296d5c6420a5
1616
github.com/openstack-k8s-operators/keystone-operator/api v0.3.1-0.20240216173228-eec429bcc776
17-
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240216173409-86913e6d5885
17+
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240220172726-06e269f22402
1818
github.com/openstack-k8s-operators/manila-operator/api v0.3.1-0.20240216154248-d78aa8eb0e8a
1919
github.com/openstack-k8s-operators/mariadb-operator/api v0.3.1-0.20240215091212-cbf2ad281f43
2020
github.com/openstack-k8s-operators/neutron-operator/api v0.3.1-0.20240216172657-9188630d3435
@@ -25,7 +25,7 @@ require (
2525
github.com/openstack-k8s-operators/swift-operator/api v0.3.1-0.20240216164023-80bb42077844
2626
github.com/openstack-k8s-operators/telemetry-operator/api v0.3.1-0.20240216195458-a0493d51b492
2727
github.com/rabbitmq/cluster-operator/v2 v2.5.0
28-
k8s.io/apimachinery v0.28.6
28+
k8s.io/apimachinery v0.28.7
2929
sigs.k8s.io/controller-runtime v0.16.5
3030
)
3131

@@ -89,10 +89,10 @@ require (
8989
gopkg.in/inf.v0 v0.9.1 // indirect
9090
gopkg.in/yaml.v2 v2.4.0 // indirect
9191
gopkg.in/yaml.v3 v3.0.1 // indirect
92-
k8s.io/api v0.28.6
93-
k8s.io/apiextensions-apiserver v0.28.3 //indirect
94-
k8s.io/client-go v0.28.6
95-
k8s.io/component-base v0.28.3 //indirect
92+
k8s.io/api v0.28.7
93+
k8s.io/apiextensions-apiserver v0.28.7 //indirect
94+
k8s.io/client-go v0.28.7
95+
k8s.io/component-base v0.28.7 //indirect
9696
k8s.io/klog/v2 v2.120.1 // indirect
9797
k8s.io/kube-openapi v0.0.0-20240209001042-7a0d5b415232 //indirect
9898
k8s.io/utils v0.0.0-20240102154912-e7106e64919e //indirect

apis/go.sum

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ github.com/openstack-k8s-operators/ironic-operator/api v0.3.1-0.20240216150409-2
9191
github.com/openstack-k8s-operators/ironic-operator/api v0.3.1-0.20240216150409-296d5c6420a5/go.mod h1:jAqNnaLEqhgSimEvgql28pvkQibRu4MeO5gFpfSzqYw=
9292
github.com/openstack-k8s-operators/keystone-operator/api v0.3.1-0.20240216173228-eec429bcc776 h1:piRji0b//DM3h2KNXxphlIYTGeRw03QhfQ/+0JS5eVY=
9393
github.com/openstack-k8s-operators/keystone-operator/api v0.3.1-0.20240216173228-eec429bcc776/go.mod h1:bfDpzoPV6K8Zrl4wFN0pubw5c3wvsNTl1ppvGmCdfKc=
94-
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240216173409-86913e6d5885 h1:o7KZaxKt8Dr97ZJIBPW0P482gLyFEURKF89fizcJCBQ=
95-
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240216173409-86913e6d5885/go.mod h1:bQwzyQtWCR9F0+IvWZ30J9d1lB6tcX3CNJ0Ten1smDw=
94+
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240220172726-06e269f22402 h1:UNpz+VviGgrAGISBtB1u3sQfEUbzKcKfV7tCSN+c/Do=
95+
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240220172726-06e269f22402/go.mod h1:oB0Lc1U5wiJZBdT3lSMkZfG/LhHR6z/SJ0Tp7Y/GUkg=
9696
github.com/openstack-k8s-operators/lib-common/modules/openstack v0.3.1-0.20240216173409-86913e6d5885 h1:g3wUugrt+GsQMtWdxQDzFXjY13U/FKLx1dVMMMJhQqA=
9797
github.com/openstack-k8s-operators/lib-common/modules/openstack v0.3.1-0.20240216173409-86913e6d5885/go.mod h1:8QsCFttAm+X6A8I8EQThGjNjeMAYt2hK7ivbvnR3434=
9898
github.com/openstack-k8s-operators/lib-common/modules/storage v0.3.1-0.20240216173409-86913e6d5885 h1:sMO+IYsZ91Nho0FV6y03J0NTGd8+ZWB4KmKJJU94gTU=
@@ -226,16 +226,16 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
226226
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
227227
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
228228
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
229-
k8s.io/api v0.28.6 h1:yy6u9CuIhmg55YvF/BavPBBXB+5QicB64njJXxVnzLo=
230-
k8s.io/api v0.28.6/go.mod h1:AM6Ys6g9MY3dl/XNaNfg/GePI0FT7WBGu8efU/lirAo=
231-
k8s.io/apiextensions-apiserver v0.28.3 h1:Od7DEnhXHnHPZG+W9I97/fSQkVpVPQx2diy+2EtmY08=
232-
k8s.io/apiextensions-apiserver v0.28.3/go.mod h1:NE1XJZ4On0hS11aWWJUTNkmVB03j9LM7gJSisbRt8Lc=
233-
k8s.io/apimachinery v0.28.6 h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0=
234-
k8s.io/apimachinery v0.28.6/go.mod h1:QFNX/kCl/EMT2WTSz8k4WLCv2XnkOLMaL8GAVRMdpsA=
235-
k8s.io/client-go v0.28.6 h1:Gge6ziyIdafRchfoBKcpaARuz7jfrK1R1azuwORIsQI=
236-
k8s.io/client-go v0.28.6/go.mod h1:+nu0Yp21Oeo/cBCsprNVXB2BfJTV51lFfe5tXl2rUL8=
237-
k8s.io/component-base v0.28.3 h1:rDy68eHKxq/80RiMb2Ld/tbH8uAE75JdCqJyi6lXMzI=
238-
k8s.io/component-base v0.28.3/go.mod h1:fDJ6vpVNSk6cRo5wmDa6eKIG7UlIQkaFmZN2fYgIUD8=
229+
k8s.io/api v0.28.7 h1:YKIhBxjXKaxuxWJnwohV0aGjRA5l4IU0Eywf/q19AVI=
230+
k8s.io/api v0.28.7/go.mod h1:y4RbcjCCMff1930SG/TcP3AUKNfaJUgIeUp58e/2vyY=
231+
k8s.io/apiextensions-apiserver v0.28.7 h1:NQlzP/vmvIO9Qt7wQTdMe9sGWGkozQZMPk9suehAvR8=
232+
k8s.io/apiextensions-apiserver v0.28.7/go.mod h1:ST+ZOppyy+Z0mIxezSOK8qwIXctNwdFLNpGkQp8bw4M=
233+
k8s.io/apimachinery v0.28.7 h1:2Z38/XRAOcpb+PonxmBEmjG7hBfmmr41xnr0XvpTnB4=
234+
k8s.io/apimachinery v0.28.7/go.mod h1:QFNX/kCl/EMT2WTSz8k4WLCv2XnkOLMaL8GAVRMdpsA=
235+
k8s.io/client-go v0.28.7 h1:3L6402+tjmOl8twX3fjUQ/wsYAkw6UlVNDVP+rF6YGA=
236+
k8s.io/client-go v0.28.7/go.mod h1:xIoEaDewZ+EwWOo1/F1t0IOKMPe1rwBZhLu9Es6y0tE=
237+
k8s.io/component-base v0.28.7 h1:Cq5aQ52N0CTaOMiary4rXzR4RoTP77Z3ll4qSg4qH7s=
238+
k8s.io/component-base v0.28.7/go.mod h1:RrtNBKrSuckksSQ3fV9PhwBSHO/ZbwJXM2Z0OPx+UJk=
239239
k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
240240
k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
241241
k8s.io/kube-openapi v0.0.0-20240209001042-7a0d5b415232 h1:MMq4iF9pHuAz/9dLnHwBQKEoeigXClzs3MFh/seyqtA=

controllers/client/openstackclient_controller.go

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -373,10 +373,27 @@ func (r *OpenStackClientReconciler) Reconcile(ctx context.Context, req ctrl.Requ
373373
)
374374
}
375375

376-
instance.Status.Conditions.MarkTrue(
377-
clientv1.OpenStackClientReadyCondition,
378-
clientv1.OpenStackClientReadyMessage,
379-
)
376+
podReady := false
377+
378+
for _, condition := range osclient.Status.Conditions {
379+
if condition.Type == corev1.PodReady && condition.Status == corev1.ConditionTrue {
380+
podReady = true
381+
break
382+
}
383+
}
384+
385+
if podReady {
386+
instance.Status.Conditions.MarkTrue(
387+
clientv1.OpenStackClientReadyCondition,
388+
clientv1.OpenStackClientReadyMessage,
389+
)
390+
} else {
391+
instance.Status.Conditions.Set(condition.FalseCondition(
392+
clientv1.OpenStackClientReadyCondition,
393+
condition.RequestedReason,
394+
condition.SeverityInfo,
395+
clientv1.OpenStackClientReadyRunningMessage))
396+
}
380397

381398
return ctrl.Result{}, nil
382399
}

go.mod

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ require (
2020
github.com/openstack-k8s-operators/ironic-operator/api v0.3.1-0.20240216150409-296d5c6420a5
2121
github.com/openstack-k8s-operators/keystone-operator/api v0.3.1-0.20240216173228-eec429bcc776
2222
github.com/openstack-k8s-operators/lib-common/modules/certmanager v0.0.0-20240216173409-86913e6d5885
23-
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240216173409-86913e6d5885
23+
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240220172726-06e269f22402
2424
github.com/openstack-k8s-operators/lib-common/modules/test v0.3.1-0.20240216173409-86913e6d5885
2525
github.com/openstack-k8s-operators/manila-operator/api v0.3.1-0.20240216154248-d78aa8eb0e8a
2626
github.com/openstack-k8s-operators/mariadb-operator/api v0.3.1-0.20240215091212-cbf2ad281f43
@@ -38,9 +38,9 @@ require (
3838
github.com/rabbitmq/cluster-operator/v2 v2.5.0
3939
go.uber.org/zap v1.26.0
4040
golang.org/x/exp v0.0.0-20240213143201-ec583247a57a
41-
k8s.io/api v0.28.6
42-
k8s.io/apimachinery v0.28.6
43-
k8s.io/client-go v0.28.6
41+
k8s.io/api v0.28.7
42+
k8s.io/apimachinery v0.28.7
43+
k8s.io/client-go v0.28.7
4444
sigs.k8s.io/controller-runtime v0.16.5
4545
)
4646

@@ -106,8 +106,8 @@ require (
106106
gopkg.in/inf.v0 v0.9.1 // indirect
107107
gopkg.in/yaml.v2 v2.4.0 // indirect
108108
gopkg.in/yaml.v3 v3.0.1 // indirect
109-
k8s.io/apiextensions-apiserver v0.28.3 //indirect
110-
k8s.io/component-base v0.28.3 //indirect
109+
k8s.io/apiextensions-apiserver v0.28.7 //indirect
110+
k8s.io/component-base v0.28.7 //indirect
111111
k8s.io/klog/v2 v2.120.1 // indirect
112112
k8s.io/kube-openapi v0.0.0-20240209001042-7a0d5b415232 //indirect
113113
k8s.io/utils v0.0.0-20240102154912-e7106e64919e

go.sum

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ github.com/openstack-k8s-operators/keystone-operator/api v0.3.1-0.20240216173228
107107
github.com/openstack-k8s-operators/keystone-operator/api v0.3.1-0.20240216173228-eec429bcc776/go.mod h1:bfDpzoPV6K8Zrl4wFN0pubw5c3wvsNTl1ppvGmCdfKc=
108108
github.com/openstack-k8s-operators/lib-common/modules/certmanager v0.0.0-20240216173409-86913e6d5885 h1:30h+8BjebHiR6dm23ulEZJ5QNHev0YoVBBJTuJJLt1U=
109109
github.com/openstack-k8s-operators/lib-common/modules/certmanager v0.0.0-20240216173409-86913e6d5885/go.mod h1:v7EfD82TconjzYpNLAsRjYC2seEu/QFobEWA4zpEH9k=
110-
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240216173409-86913e6d5885 h1:o7KZaxKt8Dr97ZJIBPW0P482gLyFEURKF89fizcJCBQ=
111-
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240216173409-86913e6d5885/go.mod h1:bQwzyQtWCR9F0+IvWZ30J9d1lB6tcX3CNJ0Ten1smDw=
110+
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240220172726-06e269f22402 h1:UNpz+VviGgrAGISBtB1u3sQfEUbzKcKfV7tCSN+c/Do=
111+
github.com/openstack-k8s-operators/lib-common/modules/common v0.3.1-0.20240220172726-06e269f22402/go.mod h1:oB0Lc1U5wiJZBdT3lSMkZfG/LhHR6z/SJ0Tp7Y/GUkg=
112112
github.com/openstack-k8s-operators/lib-common/modules/openstack v0.3.1-0.20240216173409-86913e6d5885 h1:g3wUugrt+GsQMtWdxQDzFXjY13U/FKLx1dVMMMJhQqA=
113113
github.com/openstack-k8s-operators/lib-common/modules/openstack v0.3.1-0.20240216173409-86913e6d5885/go.mod h1:8QsCFttAm+X6A8I8EQThGjNjeMAYt2hK7ivbvnR3434=
114114
github.com/openstack-k8s-operators/lib-common/modules/storage v0.3.1-0.20240216173409-86913e6d5885 h1:sMO+IYsZ91Nho0FV6y03J0NTGd8+ZWB4KmKJJU94gTU=
@@ -255,16 +255,16 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
255255
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
256256
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
257257
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
258-
k8s.io/api v0.28.6 h1:yy6u9CuIhmg55YvF/BavPBBXB+5QicB64njJXxVnzLo=
259-
k8s.io/api v0.28.6/go.mod h1:AM6Ys6g9MY3dl/XNaNfg/GePI0FT7WBGu8efU/lirAo=
260-
k8s.io/apiextensions-apiserver v0.28.3 h1:Od7DEnhXHnHPZG+W9I97/fSQkVpVPQx2diy+2EtmY08=
261-
k8s.io/apiextensions-apiserver v0.28.3/go.mod h1:NE1XJZ4On0hS11aWWJUTNkmVB03j9LM7gJSisbRt8Lc=
262-
k8s.io/apimachinery v0.28.6 h1:RsTeR4z6S07srPg6XYrwXpTJVMXsjPXn0ODakMytSW0=
263-
k8s.io/apimachinery v0.28.6/go.mod h1:QFNX/kCl/EMT2WTSz8k4WLCv2XnkOLMaL8GAVRMdpsA=
264-
k8s.io/client-go v0.28.6 h1:Gge6ziyIdafRchfoBKcpaARuz7jfrK1R1azuwORIsQI=
265-
k8s.io/client-go v0.28.6/go.mod h1:+nu0Yp21Oeo/cBCsprNVXB2BfJTV51lFfe5tXl2rUL8=
266-
k8s.io/component-base v0.28.3 h1:rDy68eHKxq/80RiMb2Ld/tbH8uAE75JdCqJyi6lXMzI=
267-
k8s.io/component-base v0.28.3/go.mod h1:fDJ6vpVNSk6cRo5wmDa6eKIG7UlIQkaFmZN2fYgIUD8=
258+
k8s.io/api v0.28.7 h1:YKIhBxjXKaxuxWJnwohV0aGjRA5l4IU0Eywf/q19AVI=
259+
k8s.io/api v0.28.7/go.mod h1:y4RbcjCCMff1930SG/TcP3AUKNfaJUgIeUp58e/2vyY=
260+
k8s.io/apiextensions-apiserver v0.28.7 h1:NQlzP/vmvIO9Qt7wQTdMe9sGWGkozQZMPk9suehAvR8=
261+
k8s.io/apiextensions-apiserver v0.28.7/go.mod h1:ST+ZOppyy+Z0mIxezSOK8qwIXctNwdFLNpGkQp8bw4M=
262+
k8s.io/apimachinery v0.28.7 h1:2Z38/XRAOcpb+PonxmBEmjG7hBfmmr41xnr0XvpTnB4=
263+
k8s.io/apimachinery v0.28.7/go.mod h1:QFNX/kCl/EMT2WTSz8k4WLCv2XnkOLMaL8GAVRMdpsA=
264+
k8s.io/client-go v0.28.7 h1:3L6402+tjmOl8twX3fjUQ/wsYAkw6UlVNDVP+rF6YGA=
265+
k8s.io/client-go v0.28.7/go.mod h1:xIoEaDewZ+EwWOo1/F1t0IOKMPe1rwBZhLu9Es6y0tE=
266+
k8s.io/component-base v0.28.7 h1:Cq5aQ52N0CTaOMiary4rXzR4RoTP77Z3ll4qSg4qH7s=
267+
k8s.io/component-base v0.28.7/go.mod h1:RrtNBKrSuckksSQ3fV9PhwBSHO/ZbwJXM2Z0OPx+UJk=
268268
k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw=
269269
k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
270270
k8s.io/kube-openapi v0.0.0-20240209001042-7a0d5b415232 h1:MMq4iF9pHuAz/9dLnHwBQKEoeigXClzs3MFh/seyqtA=

tests/functional/openstackoperator_controller_test.go

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -162,21 +162,12 @@ var _ = Describe("OpenStackOperator controller", func() {
162162
}, timeout, interval).Should(Succeed())
163163
// make keystoneAPI ready and create secrets usually created by keystone-controller
164164
keystone.SimulateKeystoneAPIReady(names.KeystoneAPIName)
165+
165166
th.CreateSecret(types.NamespacedName{Name: "openstack-config-secret", Namespace: namespace}, map[string][]byte{"secure.yaml": []byte("foo")})
166167
th.CreateConfigMap(types.NamespacedName{Name: "openstack-config", Namespace: namespace}, map[string]interface{}{"clouds.yaml": string("foo"), "OS_CLOUD": "default"})
167168

168-
// openstackclient exists
169+
// client pod exists
169170
Eventually(func(g Gomega) {
170-
osclient := GetOpenStackClient(names.OpenStackClientName)
171-
g.Expect(osclient).Should(Not(BeNil()))
172-
173-
th.ExpectCondition(
174-
names.OpenStackClientName,
175-
ConditionGetterFunc(OpenStackClientConditionGetter),
176-
clientv1.OpenStackClientReadyCondition,
177-
k8s_corev1.ConditionTrue,
178-
)
179-
180171
pod := &k8s_corev1.Pod{}
181172
err := th.K8sClient.Get(ctx, names.OpenStackClientName, pod)
182173
g.Expect(pod).Should(Not(BeNil()))
@@ -194,6 +185,22 @@ var _ = Describe("OpenStackOperator controller", func() {
194185
g.Expect(volMounts).To(HaveKeyWithValue("combined-ca-bundle", "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem"))
195186
g.Expect(volMounts).To(HaveKeyWithValue("openstack-config", "/home/cloud-admin/.config/openstack/clouds.yaml"))
196187
g.Expect(volMounts).To(HaveKeyWithValue("openstack-config-secret", "/home/cloud-admin/.config/openstack/secure.yaml"))
188+
189+
// simulate pod being in the ready state
190+
th.SimulatePodReady(names.OpenStackClientName)
191+
}, timeout, interval).Should(Succeed())
192+
193+
// openstackclient exists
194+
Eventually(func(g Gomega) {
195+
osclient := GetOpenStackClient(names.OpenStackClientName)
196+
g.Expect(osclient).Should(Not(BeNil()))
197+
198+
th.ExpectCondition(
199+
names.OpenStackClientName,
200+
ConditionGetterFunc(OpenStackClientConditionGetter),
201+
clientv1.OpenStackClientReadyCondition,
202+
k8s_corev1.ConditionTrue,
203+
)
197204
}, timeout, interval).Should(Succeed())
198205
})
199206
})

0 commit comments

Comments
 (0)