diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml
index d2edb81c5e6b35b4f746157704ee12f3b5062812..df2ad6710f9852fedff31ce29e868daa097e86fc 100644
--- a/ansible/roles/nova/defaults/main.yml
+++ b/ansible/roles/nova/defaults/main.yml
@@ -236,3 +236,14 @@ openstack_placement_auth: "{{ openstack_auth }}"
 
 
 nova_ssh_port: "8022"
+
+####################
+# Notification
+####################
+nova_notification_topics:
+  - name: notifications
+    enabled: "{{ enable_ceilometer | bool or enable_searchlight | bool }}"
+  - name: notifications_designate
+    enabled: "{{ enable_designate | bool }}"
+
+nova_enabled_notification_topics: "{{ nova_notification_topics | selectattr('enabled', 'equalto', true) | list }}"
diff --git a/ansible/roles/nova/templates/nova.conf.j2 b/ansible/roles/nova/templates/nova.conf.j2
index f7d8a373f90b7d423475a1f05fa8677052b19923..cd87b42a315234064281d55831d0962e0b6d5a49 100644
--- a/ansible/roles/nova/templates/nova.conf.j2
+++ b/ansible/roles/nova/templates/nova.conf.j2
@@ -201,10 +201,9 @@ rbd_secret_uuid = {{ rbd_secret_uuid }}
 compute = auto
 
 [oslo_messaging_notifications]
-{% if enable_ceilometer | bool or enable_searchlight | bool  or enable_designate | bool %}
+{% if nova_enabled_notification_topics %}
 driver = messagingv2
-{% set topics=["notifications" if enable_ceilometer | bool else "", "notifications_designate" if enable_designate | bool else ""] %}
-topics = {{ topics|reject("equalto", "")|list|join(",") }}
+topics = {{ nova_enabled_notification_topics | map(attribute='name') | join(',') }}
 {% else %}
 driver = noop
 {% endif %}