@@ -157,6 +157,96 @@ var _ = Describe("Glanceapi controller", func() {
157157 }, timeout , interval ).Should (Succeed ())
158158 })
159159 })
160+ When ("the Secret is created with quorum queues enabled" , func () {
161+ BeforeEach (func () {
162+ DeferCleanup (infra .DeleteMemcached , infra .CreateMemcached (namespace , glanceTest .MemcachedInstance , memcachedSpec ))
163+ infra .SimulateMemcachedReady (glanceTest .GlanceMemcached )
164+ DeferCleanup (k8sClient .Delete , ctx , infra .CreateTransportURLSecret (glanceTest .Instance .Namespace , glanceTest .RabbitmqSecretName , true ))
165+ DeferCleanup (th .DeleteInstance , CreateDefaultGlance (glanceTest .Instance ))
166+ DeferCleanup (
167+ mariadb .DeleteDBService ,
168+ mariadb .CreateDBService (
169+ glanceName .Namespace ,
170+ GetGlance (glanceTest .Instance ).Spec .DatabaseInstance ,
171+ corev1.ServiceSpec {
172+ Ports : []corev1.ServicePort {{Port : 3306 }},
173+ },
174+ ),
175+ )
176+ mariadb .CreateMariaDBDatabase (glanceTest .GlanceDatabaseName .Namespace , glanceTest .GlanceDatabaseName .Name , mariadbv1.MariaDBDatabaseSpec {})
177+ DeferCleanup (k8sClient .Delete , ctx , mariadb .GetMariaDBDatabase (glanceTest .GlanceDatabaseName ))
178+
179+ spec := GetDefaultGlanceAPISpec (GlanceAPITypeSingle )
180+ spec ["notificationBusSecret" ] = glanceTest .RabbitmqSecretName
181+ DeferCleanup (th .DeleteInstance , CreateGlanceAPI (glanceTest .GlanceSingle , spec ))
182+ DeferCleanup (keystone .DeleteKeystoneAPI , keystone .CreateKeystoneAPI (glanceTest .Instance .Namespace ))
183+ })
184+ It ("generated configs with quorum queue settings" , func () {
185+ th .ExpectCondition (
186+ glanceTest .GlanceSingle ,
187+ ConditionGetterFunc (GlanceAPIConditionGetter ),
188+ condition .ServiceConfigReadyCondition ,
189+ corev1 .ConditionTrue ,
190+ )
191+ secretDataMap := th .GetSecret (glanceTest .GlanceSingleConfigMapData )
192+ Expect (secretDataMap ).ShouldNot (BeNil ())
193+ configData := string (secretDataMap .Data ["00-config.conf" ])
194+ Expect (configData ).Should (ContainSubstring ("rabbit_quorum_queue=true" ))
195+ Expect (configData ).Should (ContainSubstring ("rabbit_transient_quorum_queue=true" ))
196+ Expect (configData ).Should (ContainSubstring ("amqp_durable_queues=true" ))
197+ })
198+ })
199+ When ("quorum queues are enabled dynamically" , func () {
200+ BeforeEach (func () {
201+ DeferCleanup (infra .DeleteMemcached , infra .CreateMemcached (namespace , glanceTest .MemcachedInstance , memcachedSpec ))
202+ infra .SimulateMemcachedReady (glanceTest .GlanceMemcached )
203+ DeferCleanup (k8sClient .Delete , ctx , infra .CreateTransportURLSecret (glanceTest .Instance .Namespace , glanceTest .RabbitmqSecretName , false ))
204+ DeferCleanup (th .DeleteInstance , CreateDefaultGlance (glanceTest .Instance ))
205+ DeferCleanup (
206+ mariadb .DeleteDBService ,
207+ mariadb .CreateDBService (
208+ glanceName .Namespace ,
209+ GetGlance (glanceTest .Instance ).Spec .DatabaseInstance ,
210+ corev1.ServiceSpec {
211+ Ports : []corev1.ServicePort {{Port : 3306 }},
212+ },
213+ ),
214+ )
215+ mariadb .CreateMariaDBDatabase (glanceTest .GlanceDatabaseName .Namespace , glanceTest .GlanceDatabaseName .Name , mariadbv1.MariaDBDatabaseSpec {})
216+ DeferCleanup (k8sClient .Delete , ctx , mariadb .GetMariaDBDatabase (glanceTest .GlanceDatabaseName ))
217+
218+ spec := GetDefaultGlanceAPISpec (GlanceAPITypeSingle )
219+ spec ["notificationBusSecret" ] = glanceTest .RabbitmqSecretName
220+ DeferCleanup (th .DeleteInstance , CreateGlanceAPI (glanceTest .GlanceSingle , spec ))
221+ DeferCleanup (keystone .DeleteKeystoneAPI , keystone .CreateKeystoneAPI (glanceTest .Instance .Namespace ))
222+ })
223+ It ("updates configs when quorum queues are enabled" , func () {
224+ // First verify no quorum queue settings initially
225+ th .ExpectCondition (
226+ glanceTest .GlanceSingle ,
227+ ConditionGetterFunc (GlanceAPIConditionGetter ),
228+ condition .ServiceConfigReadyCondition ,
229+ corev1 .ConditionTrue ,
230+ )
231+ secretDataMap := th .GetSecret (glanceTest .GlanceSingleConfigMapData )
232+ configData := string (secretDataMap .Data ["00-config.conf" ])
233+ Expect (configData ).ShouldNot (ContainSubstring ("rabbit_quorum_queue=true" ))
234+
235+ // Enable quorum queues by updating the secret
236+ secret := th .GetSecret (types.NamespacedName {Namespace : glanceTest .Instance .Namespace , Name : glanceTest .RabbitmqSecretName })
237+ _ = k8sClient .Delete (ctx , & secret )
238+ infra .CreateTransportURLSecret (glanceTest .Instance .Namespace , glanceTest .RabbitmqSecretName , true )
239+
240+ // Verify quorum queue settings are now present
241+ Eventually (func (g Gomega ) {
242+ secretDataMap := th .GetSecret (glanceTest .GlanceSingleConfigMapData )
243+ configData := string (secretDataMap .Data ["00-config.conf" ])
244+ g .Expect (configData ).Should (ContainSubstring ("rabbit_quorum_queue=true" ))
245+ g .Expect (configData ).Should (ContainSubstring ("rabbit_transient_quorum_queue=true" ))
246+ g .Expect (configData ).Should (ContainSubstring ("amqp_durable_queues=true" ))
247+ }, timeout , interval ).Should (Succeed ())
248+ })
249+ })
160250 When ("GlanceAPI is deployed with Cinder backend" , func () {
161251 BeforeEach (func () {
162252 DeferCleanup (infra .DeleteMemcached , infra .CreateMemcached (namespace , glanceTest .MemcachedInstance , memcachedSpec ))
0 commit comments