feat: add nova failure domain filters (#1607)



Reviewed-by: Mohammed Naser <mnaser@vexxhost.com>
diff --git a/images/nova/Dockerfile b/images/nova/Dockerfile
index e336f45..c5a5a66 100644
--- a/images/nova/Dockerfile
+++ b/images/nova/Dockerfile
@@ -9,10 +9,14 @@
 RUN git -C /src/nova fetch --unshallow
 COPY patches/nova /patches/nova
 RUN git -C /src/nova apply --verbose /patches/nova/*
+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: