[stable/2023.2] feat: add nova failure domain filters (#1624)

Reviewed-by: Mohammed Naser mnaser@vexxhost.com
diff --git a/images/nova/Dockerfile b/images/nova/Dockerfile
index 89de834..cf79c0e 100644
--- a/images/nova/Dockerfile
+++ b/images/nova/Dockerfile
@@ -7,10 +7,14 @@
 ARG NOVA_GIT_REF=70a435fd519a0ebcc3ac9ad5254fefbf19c93e48
 ADD --keep-git-dir=true https://opendev.org/openstack/nova.git#${NOVA_GIT_REF} /src/nova
 RUN git -C /src/nova fetch --unshallow
+ARG SCHEDULER_FILTERS_GIT_REF=eb17f39c68606cca7ec68bf3e40d58e0954326ee
+ADD --keep-git-dir=true https://github.com/vexxhost/nova-scheduler-filters.git#${SCHEDULER_FILTERS_GIT_REF} /src/nova-scheduler-filters
+RUN git -C /src/nova-scheduler-filters fetch --unshallow
 RUN --mount=type=cache,mode=0755,target=/root/.cache/pip,sharing=private <<EOF bash -xe
 pip3 install \
     --constraint /upper-constraints.txt \
         /src/nova \
+        /src/nova-scheduler-filters \
         python-ironicclient \
         storpool \
         storpool.spopenstack
diff --git a/roles/nova/vars/main.yml b/roles/nova/vars/main.yml
index 3d86292..6145c6d 100644
--- a/roles/nova/vars/main.yml
+++ b/roles/nova/vars/main.yml
@@ -76,6 +76,11 @@
         connection_recycle_time: 10
         max_pool_size: 1
       filter_scheduler:
+        available_filters:
+          type: multistring
+          values:
+            - nova.scheduler.filters.all_filters
+            - nova_scheduler_filters.failure_domain_filter.FailureDomainFilter
         enabled_filters:
           ComputeFilter,
           AggregateTypeAffinityFilter,
@@ -83,7 +88,8 @@
           PciPassthroughFilter,
           ImagePropertiesFilter,
           ServerGroupAntiAffinityFilter,
-          ServerGroupAffinityFilter
+          ServerGroupAffinityFilter,
+          FailureDomainFilter
         image_properties_default_architecture: x86_64
         max_instances_per_host: 200
       glance: