chore: use vendir to vendor
diff --git a/vendir.yml b/vendir.yml
new file mode 100644
index 0000000..aa1e0b7
--- /dev/null
+++ b/vendir.yml
@@ -0,0 +1,389 @@
+apiVersion: vendir.k14s.io/v1alpha1
+kind: Config
+directories:
+  - path: charts
+    contents:
+      - path: barbican
+        helmChart:
+          name: barbican
+          version: 0.3.6
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm
+      - path: ceph-csi-rbd
+        helmChart:
+          name: ceph-csi-rbd
+          version: 3.5.1
+          repository:
+            url: https://ceph.github.io/csi-charts
+      - path: ceph-provisioners
+        helmChart:
+          name: ceph-provisioners
+          version: 0.1.8
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm-infra
+      - path: cert-manager-webhook-infoblox-wapi
+        helmChart:
+          name: cert-manager-webhook-infoblox-wapi
+          version: 1.5.2
+          repository:
+            url: https://luisico.github.io/cert-manager-webhook-infoblox-wapi
+      - path: cinder
+        helmChart:
+          name: cinder
+          version: 0.3.15
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm
+      - path: coredns
+        helmChart:
+          name: coredns
+          version: 1.19.4
+          repository:
+            url: https://coredns.github.io/helm
+      - path: designate
+        helmChart:
+          name: designate
+          version: 0.2.9
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm
+      - path: glance
+        helmChart:
+          name: glance
+          version: 0.4.15
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm
+      - path: heat
+        helmChart:
+          name: heat
+          version: 0.3.7
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm
+      - path: horizon
+        helmChart:
+          name: horizon
+          version: 0.3.15
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm
+      - path: ingress-nginx
+        helmChart:
+          name: ingress-nginx
+          version: 4.0.17
+          repository:
+            url: https://kubernetes.github.io/ingress-nginx
+      - path: keycloak
+        helmChart:
+          name: keycloak
+          version: 16.0.3
+          repository:
+            url: https://charts.bitnami.com/bitnami
+      - path: keystone
+        helmChart:
+          name: keystone
+          version: 0.3.5
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm
+      - path: kube-prometheus-stack
+        helmChart:
+          name: kube-prometheus-stack
+          version: 49.0.0
+          repository:
+            url: https://prometheus-community.github.io/helm-charts
+      - path: libvirt
+        helmChart:
+          name: libvirt
+          version: 0.1.27
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm-infra
+      - path: local-path-provisioner
+        git:
+          url: https://github.com/rancher/local-path-provisioner
+          ref: v0.0.24
+        newRootPath: deploy/chart/local-path-provisioner
+      - path: loki
+        helmChart:
+          name: loki
+          version: 4.6.1
+          repository:
+            url: https://grafana.github.io/helm-charts
+      - path: magnum
+        helmChart:
+          name: magnum
+          version: 0.2.9
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm
+      - path: manila
+        helmChart:
+          name: manila
+          version: 0.1.7
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm
+      - path: memcached
+        helmChart:
+          name: memcached
+          version: 0.1.12
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm-infra
+      - path: neutron
+        helmChart:
+          name: neutron
+          version: 0.3.29
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm/
+      - path: node-feature-discovery
+        helmChart:
+          name: node-feature-discovery
+          version: 0.11.2
+          repository:
+            url: https://kubernetes-sigs.github.io/node-feature-discovery/charts
+      - path: nova
+        helmChart:
+          name: nova
+          version: 0.3.27
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm
+      - path: octavia
+        helmChart:
+          name: octavia
+          version: 0.2.9
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm
+      - path: openvswitch
+        helmChart:
+          name: openvswitch
+          version: 0.1.19
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm-infra
+      - path: ovn
+        helmChart:
+          name: ovn
+          version: 0.1.4
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm-infra
+      - path: placement
+        helmChart:
+          name: placement
+          version: 0.3.9
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm/
+      - path: prometheus-pushgateway
+        helmChart:
+          name: prometheus-pushgateway
+          version: 1.16.0
+          repository:
+            url: https://prometheus-community.github.io/helm-charts
+      - path: pxc-operator
+        helmChart:
+          name: pxc-operator
+          version: 1.12.0
+          repository:
+            url: https://percona.github.io/percona-helm-charts
+      - path: rabbitmq-cluster-operator
+        helmChart:
+          name: rabbitmq-cluster-operator
+          version: 2.6.6
+          repository:
+            url: https://charts.bitnami.com/bitnami
+      - path: rook-ceph
+        helmChart:
+          name: rook-ceph
+          version: 1.10.10
+          repository:
+            url: https://charts.rook.io/release
+      - path: rook-ceph-cluster
+        helmChart:
+          name: rook-ceph-cluster
+          version: 1.10.10
+          repository:
+            url: https://charts.rook.io/release
+      - path: senlin
+        helmChart:
+          name: senlin
+          version: 0.2.9
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm
+      - path: staffeln
+        manual: {}
+      - path: tempest
+        helmChart:
+          name: tempest
+          version: 0.2.8
+          repository:
+            url: https://tarballs.openstack.org/openstack-helm
+      - path: vector
+        helmChart:
+          name: vector
+          version: 0.19.0
+          repository:
+            url: https://vectordotdev.github.io/helm-charts
+
+
+# KEYSTONE_VERSION=0.3.5
+# curl -sL https://tarballs.opendev.org/openstack/openstack-helm/keystone-${KEYSTONE_VERSION}.tgz \
+#   | tar -xz -C ${ATMOSPHERE}/charts
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899867/revisions/1/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'keystone/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/keystone
+# # Remove extra files before 899867 merged
+# rm -fv ${ATMOSPHERE}/charts/keystone/templates/bin/_domain-manage-init.sh.tpl ${ATMOSPHERE}/charts/keystone/templates/bin/_domain-manage.py.tpl
+
+# GLANCE_VERSION=0.4.15
+# curl -sL https://tarballs.opendev.org/openstack/openstack-helm/glance-${GLANCE_VERSION}.tgz \
+#   | tar -xz -C ${ATMOSPHERE}/charts
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899864/revisions/2/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'glance/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/glance
+
+# CINDER_VERSION=0.3.15
+# curl -sL https://tarballs.opendev.org/openstack/openstack-helm/cinder-${CINDER_VERSION}.tgz \
+#   | tar -xz -C ${ATMOSPHERE}/charts
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899814/revisions/1/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'cinder/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/cinder
+
+# PLACEMENT_VERSION=0.3.9
+# curl -sL https://tarballs.opendev.org/openstack/openstack-helm/placement-${PLACEMENT_VERSION}.tgz \
+#   | tar -xz -C ${ATMOSPHERE}/charts
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899914/revisions/3/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'placement/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/placement
+# # Remove extra files before 899914 merged
+# rm -rfv ${ATMOSPHERE}/charts/placement/values_overrides/
+
+# LIBVIRT_VERSION=0.1.27
+# curl -sL https://tarballs.opendev.org/openstack/openstack-helm-infra/libvirt-${LIBVIRT_VERSION}.tgz \
+#   | tar -xz -C ${ATMOSPHERE}/charts
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm-infra~893406/revisions/9/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'libvirt/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/libvirt
+
+# LOCAL_PATH_PROVISIONER_VERSION=0.0.24
+# curl -sL https://github.com/rancher/local-path-provisioner/archive/refs/tags/v${LOCAL_PATH_PROVISIONER_VERSION}.tar.gz \
+#   | tar -xz -C ${ATMOSPHERE}/charts --strip-components=3 local-path-provisioner-${LOCAL_PATH_PROVISIONER_VERSION}/deploy/chart/
+
+# OVN_VERSION=0.1.4
+# curl -sL https://tarballs.opendev.org/openstack/openstack-helm-infra/ovn-${OVN_VERSION}.tgz \
+#   | tar -xz -C ${ATMOSPHERE}/charts
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm-infra~893739/revisions/2/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'ovn/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/ovn
+
+# NEUTRON_VERSION=0.3.24
+# curl -sL https://tarballs.opendev.org/openstack/openstack-helm/neutron-${NEUTRON_VERSION}.tgz \
+#   | tar -xz -C ${ATMOSPHERE}/charts
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899711/revisions/2/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'neutron/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/neutron
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899684/revisions/4/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'neutron/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/neutron
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899716/revisions/1/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'neutron/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/neutron
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899933/revisions/1/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'neutron/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/neutron
+
+# NOVA_VERISON=0.3.27
+# curl -sL https://tarballs.opendev.org/openstack/openstack-helm/nova-${NOVA_VERISON}.tgz \
+#   | tar -xz -C ${ATMOSPHERE}/charts
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899809/revisions/2/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'nova/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/nova
+
+# SENLIN_VERSION=0.2.9
+# curl -sL https://tarballs.opendev.org/openstack/openstack-helm/senlin-${SENLIN_VERSION}.tgz \
+#   | tar -xz -C ${ATMOSPHERE}/charts
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899913/revisions/1/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'senlin/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/senlin
+
+# DESIGNATE_VERSION=0.2.9
+# curl -sL https://tarballs.opendev.org/openstack/openstack-helm/designate-${DESIGNATE_VERSION}.tgz \
+#   | tar -xz -C ${ATMOSPHERE}/charts
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899932/revisions/1/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'designate/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/designate
+
+# HEAT_VERSION=0.3.7
+# curl -sL https://tarballs.opendev.org/openstack/openstack-helm/heat-${HEAT_VERSION}.tgz \
+#   | tar -xz -C ${ATMOSPHERE}/charts
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899931/revisions/1/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'heat/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/heat
+
+# OCTAVIA_VERSION=0.2.9
+# curl -sL https://tarballs.opendev.org/openstack/openstack-helm/octavia-${OCTAVIA_VERSION}.tgz \
+#   | tar -xz -C ${ATMOSPHERE}/charts
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899918/revisions/1/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'octavia/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/octavia
+
+# MAGNUM_VERSION=0.2.9
+# curl -sL https://tarballs.opendev.org/openstack/openstack-helm/magnum-${MAGNUM_VERSION}.tgz \
+#   | tar -xz -C ${ATMOSPHERE}/charts
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899926/revisions/1/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'magnum/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/magnum
+
+# MANILA_VERSION=0.1.7
+# curl -sL https://tarballs.opendev.org/openstack/openstack-helm/manila-${MANILA_VERSION}.tgz \
+#   | tar -xz -C ${ATMOSPHERE}/charts
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~883168/revisions/11/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'manila/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/manila
+# curl 'https://review.opendev.org/changes/openstack%2Fopenstack-helm~899923/revisions/1/patch?download' \
+#   | base64 --decode \
+#   | filterdiff -p1 -x 'releasenotes/*' \
+#   | filterdiff -p2 -x 'Chart.yaml' \
+#   | filterdiff -p1 -i 'manila/*' \
+#   | patch -p2 -d ${ATMOSPHERE}/charts/manila