@@ -859,6 +859,105 @@ var _ = Describe("Barbican controller", func() {
859859 })
860860 })
861861
862+ When ("A Barbican with quorum queues is created" , func () {
863+ BeforeEach (func () {
864+ DeferCleanup (k8sClient .Delete , ctx , infra .CreateTransportURLSecret (barbicanTest .Instance .Namespace , "rabbitmq-secret" , true ))
865+ DeferCleanup (th .DeleteInstance , CreateBarbican (barbicanTest .Instance , GetDefaultBarbicanSpec ()))
866+ DeferCleanup (k8sClient .Delete , ctx , CreateBarbicanSecret (barbicanTest .Instance .Namespace , SecretName ))
867+
868+ DeferCleanup (
869+ mariadb .DeleteDBService ,
870+ mariadb .CreateDBService (
871+ barbicanTest .Instance .Namespace ,
872+ GetBarbican (barbicanTest .Instance ).Spec .DatabaseInstance ,
873+ corev1.ServiceSpec {
874+ Ports : []corev1.ServicePort {{Port : 3306 }},
875+ },
876+ ),
877+ )
878+ infra .SimulateTransportURLReady (barbicanTest .BarbicanTransportURL )
879+ DeferCleanup (keystone .DeleteKeystoneAPI , keystone .CreateKeystoneAPI (barbicanTest .Instance .Namespace ))
880+ mariadb .SimulateMariaDBAccountCompleted (barbicanTest .BarbicanDatabaseAccount )
881+ mariadb .SimulateMariaDBDatabaseCompleted (barbicanTest .BarbicanDatabaseName )
882+ th .SimulateJobSuccess (barbicanTest .BarbicanDBSync )
883+ })
884+
885+ It ("should configure quorum queues when enabled" , func () {
886+ cf := th .GetSecret (barbicanTest .BarbicanConfigSecret )
887+ Expect (cf ).ShouldNot (BeNil ())
888+ conf := string (cf .Data ["00-default.conf" ])
889+ Expect (conf ).To (ContainSubstring ("rabbit_quorum_queue=true" ))
890+ Expect (conf ).To (ContainSubstring ("rabbit_transient_quorum_queue=true" ))
891+ Expect (conf ).To (ContainSubstring ("amqp_durable_queues=true" ))
892+ Expect (conf ).To (ContainSubstring ("[oslo_messaging_rabbit]" ))
893+ })
894+ })
895+
896+ When ("A Barbican starts with quorum queues disabled and then enables them" , func () {
897+ BeforeEach (func () {
898+ DeferCleanup (k8sClient .Delete , ctx , CreateBarbicanMessageBusSecret (barbicanTest .Instance .Namespace , "rabbitmq-secret" ))
899+ DeferCleanup (th .DeleteInstance , CreateBarbican (barbicanTest .Instance , GetDefaultBarbicanSpec ()))
900+ DeferCleanup (k8sClient .Delete , ctx , CreateBarbicanSecret (barbicanTest .Instance .Namespace , SecretName ))
901+
902+ DeferCleanup (
903+ mariadb .DeleteDBService ,
904+ mariadb .CreateDBService (
905+ barbicanTest .Instance .Namespace ,
906+ GetBarbican (barbicanTest .Instance ).Spec .DatabaseInstance ,
907+ corev1.ServiceSpec {
908+ Ports : []corev1.ServicePort {{Port : 3306 }},
909+ },
910+ ),
911+ )
912+ infra .SimulateTransportURLReady (barbicanTest .BarbicanTransportURL )
913+ DeferCleanup (keystone .DeleteKeystoneAPI , keystone .CreateKeystoneAPI (barbicanTest .Instance .Namespace ))
914+ mariadb .SimulateMariaDBAccountCompleted (barbicanTest .BarbicanDatabaseAccount )
915+ mariadb .SimulateMariaDBDatabaseCompleted (barbicanTest .BarbicanDatabaseName )
916+ th .SimulateJobSuccess (barbicanTest .BarbicanDBSync )
917+ })
918+
919+ It ("should initially configure without quorum queues" , func () {
920+ cf := th .GetSecret (barbicanTest .BarbicanConfigSecret )
921+ Expect (cf ).ShouldNot (BeNil ())
922+ conf := string (cf .Data ["00-default.conf" ])
923+ Expect (conf ).ToNot (ContainSubstring ("rabbit_quorum_queue=true" ))
924+ Expect (conf ).ToNot (ContainSubstring ("rabbit_transient_quorum_queue=true" ))
925+ Expect (conf ).ToNot (ContainSubstring ("amqp_durable_queues=true" ))
926+ Expect (conf ).ToNot (ContainSubstring ("[oslo_messaging_rabbit]" ))
927+ })
928+
929+ It ("should configure quorum queues when enabled dynamically" , func () {
930+ // Initially verify quorum queues are disabled
931+ cf := th .GetSecret (barbicanTest .BarbicanConfigSecret )
932+ Expect (cf ).ShouldNot (BeNil ())
933+ conf := string (cf .Data ["00-default.conf" ])
934+ Expect (conf ).ToNot (ContainSubstring ("rabbit_quorum_queue=true" ))
935+
936+ // Update the message bus secret to enable quorum queues
937+ messageBusSecretName := types.NamespacedName {
938+ Namespace : barbicanTest .Instance .Namespace ,
939+ Name : "rabbitmq-secret" ,
940+ }
941+ messageBusSecret := th .GetSecret (messageBusSecretName )
942+ Expect (messageBusSecret ).ShouldNot (BeNil ())
943+
944+ // Add the quorumqueues field to enable them
945+ messageBusSecret .Data ["quorumqueues" ] = []byte ("true" )
946+ Expect (k8sClient .Update (ctx , & messageBusSecret )).Should (Succeed ())
947+
948+ // Wait for the configuration to be updated
949+ Eventually (func (g Gomega ) {
950+ cf := th .GetSecret (barbicanTest .BarbicanConfigSecret )
951+ g .Expect (cf ).ShouldNot (BeNil ())
952+ conf := string (cf .Data ["00-default.conf" ])
953+ g .Expect (conf ).To (ContainSubstring ("rabbit_quorum_queue=true" ))
954+ g .Expect (conf ).To (ContainSubstring ("rabbit_transient_quorum_queue=true" ))
955+ g .Expect (conf ).To (ContainSubstring ("amqp_durable_queues=true" ))
956+ g .Expect (conf ).To (ContainSubstring ("[oslo_messaging_rabbit]" ))
957+ }, timeout , interval ).Should (Succeed ())
958+ })
959+ })
960+
862961 When ("A Barbican with pkcs11 plugin is created" , func () {
863962 BeforeEach (func () {
864963 DeferCleanup (k8sClient .Delete , ctx , CreatePKCS11LoginSecret (barbicanTest .Instance .Namespace , PKCS11LoginSecret ))
0 commit comments