Full Code of openstack/openstack-helm for AI

master 7e8f26de0ac3 cached
3167 files
8.1 MB
2.3M tokens
13 symbols
1 requests
Download .txt
Showing preview only (9,108K chars total). Download the full file or copy to clipboard to get everything.
Repository: openstack/openstack-helm
Branch: master
Commit: 7e8f26de0ac3
Files: 3167
Total size: 8.1 MB

Directory structure:
gitextract_9pqhdo10/

├── .gitignore
├── .gitreview
├── .pre-commit-config.yaml
├── CONTRIBUTING.rst
├── LICENSE
├── Makefile
├── README.rst
├── aodh/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _aodh-alarms-cleaner.sh.tpl
│   │   │   ├── _aodh-api.sh.tpl
│   │   │   ├── _aodh-evaluator.sh.tpl
│   │   │   ├── _aodh-listener.sh.tpl
│   │   │   ├── _aodh-notifier.sh.tpl
│   │   │   ├── _aodh-test.sh.tpl
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   └── _db-sync.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-alarms-cleaner.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-evaluator.yaml
│   │   ├── deployment-listener.yaml
│   │   ├── deployment-notifier.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-aodh-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── barbican/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _barbican-test.sh.tpl
│   │   │   ├── _barbican.sh.tpl
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   └── _simple_crypto_kek_rewrap.py.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── bindep.txt
├── blazar/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _blazar_api.sh.tpl
│   │   │   ├── _blazar_manager.sh.tpl
│   │   │   └── _db-sync.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-manager.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pdb-manager.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ks-etc.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── ca-clusterissuer/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── clusterissuer-ca.yaml
│   │   ├── extra-manifests.yaml
│   │   └── secret-ca.yaml
│   └── values.yaml
├── ca-issuer/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── extra-manifests.yaml
│   │   ├── issuer-ca.yaml
│   │   └── secret-ca.yaml
│   └── values.yaml
├── ceilometer/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _ceilometer-central.sh.tpl
│   │   │   ├── _ceilometer-compute.sh.tpl
│   │   │   ├── _ceilometer-ipmi.sh.tpl
│   │   │   ├── _ceilometer-notification.sh.tpl
│   │   │   └── _db-sync.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-compute.yaml
│   │   ├── daemonset-ipmi.yaml
│   │   ├── deployment-central.yaml
│   │   ├── deployment-notification.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── ceph-adapter-rook/
│   ├── Chart.yaml
│   ├── README.md
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _config-manager.sh.tpl
│   │   │   └── _key-manager.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc-client.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-namespace-client-ceph-config.yaml
│   │   └── job-namespace-client-key.yaml
│   └── values.yaml
├── ceph-client/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _helm-tests.sh.tpl
│   │   │   ├── _init-dirs.sh.tpl
│   │   │   ├── mds/
│   │   │   │   └── _start.sh.tpl
│   │   │   ├── pool/
│   │   │   │   ├── _calc.py.tpl
│   │   │   │   └── _init.sh.tpl
│   │   │   └── utils/
│   │   │       ├── _checkDNS.sh.tpl
│   │   │       ├── _checkDNS_start.sh.tpl
│   │   │       ├── _checkPGs.sh.tpl
│   │   │       └── _defragOSDs.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc-client.yaml
│   │   ├── cronjob-checkPGs.yaml
│   │   ├── cronjob-defragosds.yaml
│   │   ├── deployment-checkdns.yaml
│   │   ├── deployment-mds.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-rbd-pool.yaml
│   │   ├── pod-helm-tests.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── ceph-mon/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _init-dirs.sh.tpl
│   │   │   ├── _post-apply.sh.tpl
│   │   │   ├── keys/
│   │   │   │   ├── _bootstrap-keyring-generator.py.tpl
│   │   │   │   ├── _bootstrap-keyring-manager.sh.tpl
│   │   │   │   └── _storage-keyring-manager.sh.tpl
│   │   │   ├── mgr/
│   │   │   │   ├── _check.sh.tpl
│   │   │   │   └── _start.sh.tpl
│   │   │   ├── mon/
│   │   │   │   ├── _check.sh.tpl
│   │   │   │   ├── _start.sh.tpl
│   │   │   │   └── _stop.sh.tpl
│   │   │   ├── moncheck/
│   │   │   │   ├── _reap-zombies.py.tpl
│   │   │   │   └── _start.sh.tpl
│   │   │   └── utils/
│   │   │       ├── _checkDNS.sh.tpl
│   │   │       ├── _checkObjectReplication.py.tpl
│   │   │       └── _checkPGs.py.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── configmap-templates.yaml
│   │   ├── daemonset-mon.yaml
│   │   ├── deployment-mgr.yaml
│   │   ├── deployment-moncheck.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-keyring.yaml
│   │   ├── job-post-apply.yaml
│   │   ├── job-storage-admin-keys.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-mgr.yaml
│   │   ├── service-mon-discovery.yaml
│   │   ├── service-mon.yaml
│   │   ├── snippets/
│   │   │   └── _mon_host_from_k8s_ep.sh.tpl
│   │   └── utils/
│   │       └── _mon_daemonset_overrides.tpl
│   └── values.yaml
├── ceph-osd/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _helm-tests.sh.tpl
│   │   │   ├── _init-dirs.sh.tpl
│   │   │   ├── _post-apply.sh.tpl
│   │   │   ├── osd/
│   │   │   │   ├── _check.sh.tpl
│   │   │   │   ├── _config.sh.tpl
│   │   │   │   ├── _directory.sh.tpl
│   │   │   │   ├── _init.sh.tpl
│   │   │   │   ├── _log-runner-stop.sh.tpl
│   │   │   │   ├── _log-tail.sh.tpl
│   │   │   │   ├── _start.sh.tpl
│   │   │   │   ├── _stop.sh.tpl
│   │   │   │   └── ceph-volume/
│   │   │   │       ├── _block.sh.tpl
│   │   │   │       ├── _bluestore.sh.tpl
│   │   │   │       ├── _common.sh.tpl
│   │   │   │       ├── _init-ceph-volume-helper-block-logical.sh.tpl
│   │   │   │       ├── _init-ceph-volume-helper-bluestore.sh.tpl
│   │   │   │       ├── _init-ceph-volume-helper-directory.sh.tpl
│   │   │   │       └── _init-with-ceph-volume.sh.tpl
│   │   │   └── utils/
│   │   │       ├── _checkDNS.sh.tpl
│   │   │       ├── _defragOSDs.sh.tpl
│   │   │       └── _resolveLocations.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-osd.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-post-apply.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-registry.yaml
│   │   └── utils/
│   │       └── _osd_daemonset_overrides.tpl
│   └── values.yaml
├── ceph-provisioners/
│   ├── Chart.yaml
│   ├── crds/
│   │   ├── snapshot.storage.k8s.io_volumesnapshotclasses.yaml
│   │   ├── snapshot.storage.k8s.io_volumesnapshotcontents.yaml
│   │   └── snapshot.storage.k8s.io_volumesnapshots.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _helm-tests.sh.tpl
│   │   │   └── provisioner/
│   │   │       ├── cephfs/
│   │   │       │   ├── _client-key-manager.sh.tpl
│   │   │       │   └── _start.sh.tpl
│   │   │       └── rbd/
│   │   │           ├── _namespace-client-ceph-config-manager.sh.tpl
│   │   │           ├── _namespace-client-key-cleaner.sh.tpl
│   │   │           ├── _namespace-client-key-manager.sh.tpl
│   │   │           └── _start.sh.tpl
│   │   ├── configmap-bin-provisioner.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc-client.yaml
│   │   ├── configmap-etc-csi.yaml
│   │   ├── daemonset-csi-rbd-plugin.yaml
│   │   ├── deployment-csi-rbd-provisioner.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-cephfs-client-key.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-namespace-client-ceph-config.yaml
│   │   ├── job-namespace-client-key-cleaner.yaml
│   │   ├── job-namespace-client-key.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-registry.yaml
│   │   └── storageclass.yaml
│   └── values.yaml
├── ceph-rgw/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _ceph-admin-keyring.sh.tpl
│   │   │   ├── _ceph-rgw-storage-init.sh.tpl
│   │   │   ├── _create-rgw-placement-targets.sh.tpl
│   │   │   ├── _helm-tests.sh.tpl
│   │   │   ├── _init-dirs.sh.tpl
│   │   │   ├── _rgw-restart.sh.tpl
│   │   │   ├── rgw/
│   │   │   │   ├── _init.sh.tpl
│   │   │   │   ├── _rerun-pool-job.sh.tpl
│   │   │   │   └── _start.sh.tpl
│   │   │   └── utils/
│   │   │       └── _checkDNS.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin-ks.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-ceph-rgw-templates.yaml
│   │   ├── configmap-etc-client.yaml
│   │   ├── deployment-rgw.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-rgw.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rgw-placement-targets.yaml
│   │   ├── job-rgw-pool.yaml
│   │   ├── job-rgw-restart.yaml
│   │   ├── job-rgw-storage-init.yaml
│   │   ├── job-s3-admin.yaml
│   │   ├── network_policy.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone-rgw.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-s3-rgw.yaml
│   │   ├── service-ingress-rgw.yaml
│   │   └── service-rgw.yaml
│   └── values.yaml
├── cert-rotation/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _rotate-certs.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── cron-job-cert-rotate.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-cert-rotate.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── cinder/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _backup-storage-init.sh.tpl
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _ceph-admin-keyring.sh.tpl
│   │   │   ├── _ceph-keyring.sh.tpl
│   │   │   ├── _cinder-api.sh.tpl
│   │   │   ├── _cinder-backup.sh.tpl
│   │   │   ├── _cinder-scheduler.sh.tpl
│   │   │   ├── _cinder-volume.sh.tpl
│   │   │   ├── _clean-secrets.sh.tpl
│   │   │   ├── _create-internal-tenant-id.sh.tpl
│   │   │   ├── _db-purge.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _external-ceph-rbd-admin-keyring.sh.tpl
│   │   │   ├── _iscsiadm.tpl
│   │   │   ├── _multipath.tpl
│   │   │   ├── _multipathd.tpl
│   │   │   ├── _retrieve-internal-tenant-id.sh.tpl
│   │   │   ├── _storage-init.sh.tpl
│   │   │   └── _volume-usage-audit.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-cinder-db-purge.yaml
│   │   ├── cron-job-cinder-volume-usage-audit.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-backup.yaml
│   │   ├── deployment-scheduler.yaml
│   │   ├── deployment-volume.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-backup-storage-init.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-clean.yaml
│   │   ├── job-create-internal-tenant.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── job-storage-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── pvc-backup.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-external-ceph-keyring.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ks-etc.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── utils/
│   │       ├── _ceph_backend_list.tpl
│   │       ├── _has_ceph_backend.tpl
│   │       └── _is_ceph_backend.tpl
│   └── values.yaml
├── cloudkitty/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _cloudkitty-api.sh.tpl
│   │   │   ├── _cloudkitty-processor.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   └── _storage-init.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-processor.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbitmq-init.yaml
│   │   ├── job-storage-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pbd-api.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ks-etc.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   └── service-api.yaml
│   └── values.yaml
├── cyborg/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _cyborg-agent.sh.tpl
│   │   │   ├── _cyborg-api.sh.tpl
│   │   │   ├── _cyborg-conductor.sh.tpl
│   │   │   └── _db-sync.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-agent.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-conductor.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── designate/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _designate-api.sh.tpl
│   │   │   ├── _designate-central.sh.tpl
│   │   │   ├── _designate-mdns.sh.tpl
│   │   │   ├── _designate-producer.sh.tpl
│   │   │   ├── _designate-service-cleaner.sh.tpl
│   │   │   ├── _designate-sink.sh.tpl
│   │   │   └── _designate-worker.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-service.cleaner.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-central.yaml
│   │   ├── deployment-mdns.yaml
│   │   ├── deployment-producer.yaml
│   │   ├── deployment-sink.yaml
│   │   ├── deployment-worker.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pdb-central.yaml
│   │   ├── pdb-mdns.yaml
│   │   ├── pdb-producer.yaml
│   │   ├── pdb-sink.yaml
│   │   ├── pdb-worker.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── service-mdns.yaml
│   └── values.yaml
├── doc/
│   ├── helm-docs.rst.gotmpl
│   ├── requirements.txt
│   └── source/
│       ├── _exts/
│       │   └── helm_docs.py
│       ├── _static/
│       │   └── .placeholder
│       ├── chart/
│       │   ├── index.rst
│       │   ├── infra_charts.rst
│       │   └── openstack_charts.rst
│       ├── conf.py
│       ├── devref/
│       │   ├── endpoints.rst
│       │   ├── fluent-logging.rst
│       │   ├── images.rst
│       │   ├── index.rst
│       │   ├── networking.rst
│       │   ├── node-and-label-specific-configurations.rst
│       │   ├── oslo-config.rst
│       │   ├── pod-disruption-budgets.rst
│       │   └── upgrades.rst
│       ├── index.rst
│       ├── install/
│       │   ├── before_starting.rst
│       │   ├── index.rst
│       │   ├── kubernetes.rst
│       │   ├── openstack.rst
│       │   └── prerequisites.rst
│       ├── logging/
│       │   ├── elasticsearch.rst
│       │   ├── fluent-logging.rst
│       │   ├── index.rst
│       │   └── kibana.rst
│       ├── monitoring/
│       │   ├── grafana.rst
│       │   ├── index.rst
│       │   ├── nagios.rst
│       │   └── prometheus.rst
│       ├── readme.rst
│       ├── specs/
│       │   ├── 2025.1/
│       │   │   └── chart_versioning.rst
│       │   ├── 2025.2/
│       │   │   └── own_service_accounts.rst
│       │   ├── COPYME
│       │   ├── developer-environment.rst
│       │   ├── fluentbit-fluentd-architecture.rst
│       │   ├── index.rst
│       │   ├── multi-os.rst
│       │   ├── neutron-multiple-sdns.rst
│       │   ├── nginx-sidecar.rst
│       │   ├── osh-1.0-requirements.rst
│       │   ├── osh-lma-stack.rst
│       │   ├── support-OCI-image-registry-with-authentication-turned-on.rst
│       │   ├── support-linux-bridge-on-neutron.rst
│       │   ├── tenant-ceph.rst
│       │   └── values-ordering.rst
│       ├── testing/
│       │   ├── ceph-node-resiliency.rst
│       │   ├── ceph-resiliency/
│       │   │   ├── README.rst
│       │   │   ├── disk-failure.rst
│       │   │   ├── failure-domain.rst
│       │   │   ├── host-failure.rst
│       │   │   ├── index.rst
│       │   │   ├── monitor-failure.rst
│       │   │   ├── namespace-deletion.rst
│       │   │   ├── osd-failure.rst
│       │   │   └── validate-object-replication.rst
│       │   ├── ceph-upgrade.rst
│       │   ├── helm-tests.rst
│       │   └── index.rst
│       ├── troubleshooting/
│       │   ├── ceph.rst
│       │   ├── database.rst
│       │   ├── index.rst
│       │   ├── migrate-ceph-to-rook.rst
│       │   ├── persistent-storage.rst
│       │   └── ubuntu-hwe-kernel.rst
│       └── upgrade/
│           ├── index.rst
│           └── multiple-osd-releases.rst
├── elastic-apm-server/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-elasticsearch-creds.yaml
│   │   ├── secret-registry.yaml
│   │   └── service.yaml
│   └── values.yaml
├── elastic-filebeat/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-elasticsearch-creds.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── elastic-metricbeat/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-node-metrics.yaml
│   │   ├── deployment-modules.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-elasticsearch-creds.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── elastic-packetbeat/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-elasticsearch-creds.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── elasticsearch/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _apache.sh.tpl
│   │   │   ├── _ceph-admin-keyring.sh.tpl
│   │   │   ├── _create_s3_buckets.sh.tpl
│   │   │   ├── _create_s3_users.sh.tpl
│   │   │   ├── _create_template.sh.tpl
│   │   │   ├── _curator.sh.tpl
│   │   │   ├── _elasticsearch.sh.tpl
│   │   │   ├── _helm-tests.sh.tpl
│   │   │   └── _verify-repositories.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin-curator.yaml
│   │   ├── configmap-bin-elasticsearch.yaml
│   │   ├── configmap-etc-curator.yaml
│   │   ├── configmap-etc-elasticsearch.yaml
│   │   ├── cron-job-curator.yaml
│   │   ├── cron-job-verify-repositories.yaml
│   │   ├── deployment-client.yaml
│   │   ├── deployment-gateway.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-elasticsearch.yaml
│   │   ├── job-elasticsearch-template.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-s3-bucket.yaml
│   │   ├── job-s3-user.yaml
│   │   ├── monitoring/
│   │   │   └── prometheus/
│   │   │       ├── exporter-deployment.yaml
│   │   │       ├── exporter-network-policy.yaml
│   │   │       └── exporter-service.yaml
│   │   ├── network-policy.yaml
│   │   ├── object-bucket-claim.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-elasticsearch.yaml
│   │   ├── secret-environment.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-s3-user.yaml
│   │   ├── service-data.yaml
│   │   ├── service-discovery.yaml
│   │   ├── service-gateway.yaml
│   │   ├── service-ingress-elasticsearch.yaml
│   │   ├── service-logging.yaml
│   │   ├── statefulset-data.yaml
│   │   └── statefulset-master.yaml
│   └── values.yaml
├── etcd/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _etcd-db-compact.sh.tpl
│   │   │   ├── _etcd-healthcheck.sh.tpl
│   │   │   └── _etcd.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── cron-job-db-compact.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-discovery.yaml
│   │   ├── service.yaml
│   │   └── statefulset.yaml
│   └── values.yaml
├── fluentbit/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _fluent-bit.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-fluent-bit.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── fluentd/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _fluentd.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-elasticsearch-creds.yaml
│   │   ├── secret-fluentd.yaml
│   │   ├── secret-kafka-creds.yaml
│   │   ├── secret-registry.yaml
│   │   └── service-fluentd.yaml
│   └── values.yaml
├── freezer/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   └── _freezer-api.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── pdb-api.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── glance/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _ceph-admin-keyring.sh.tpl
│   │   │   ├── _ceph-keyring.sh.tpl
│   │   │   ├── _clean-image.sh.tpl
│   │   │   ├── _clean-secrets.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _glance-api.sh.tpl
│   │   │   ├── _iscsiadm.tpl
│   │   │   ├── _metadefs-load.sh.tpl
│   │   │   ├── _multipath.tpl
│   │   │   ├── _multipathd.tpl
│   │   │   ├── _nginx.sh.tpl
│   │   │   └── _storage-init.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-clean.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-metadefs-load.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── job-storage-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── pvc-images.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── gnocchi/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _ceph-admin-keyring.sh.tpl
│   │   │   ├── _ceph-keyring.sh.tpl
│   │   │   ├── _clean-secrets.sh.tpl
│   │   │   ├── _db-init.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _gnocchi-api.sh.tpl
│   │   │   ├── _gnocchi-metricd.sh.tpl
│   │   │   ├── _gnocchi-resources-cleaner.sh.tpl
│   │   │   ├── _gnocchi-statsd.sh.tpl
│   │   │   ├── _gnocchi-test.sh.tpl
│   │   │   └── _storage-init.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-resources-cleaner.yaml
│   │   ├── daemonset-metricd.yaml
│   │   ├── daemonset-statsd.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-clean.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init-indexer.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-storage-init.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-gnocchi-test.yaml
│   │   ├── secret-db-indexer.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── service-api.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── service-statsd.yaml
│   └── values.yaml
├── grafana/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _db-session-sync.py.tpl
│   │   │   ├── _grafana.sh.tpl
│   │   │   ├── _selenium-tests.py.tpl
│   │   │   └── _set-admin-password.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-dashboards.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-grafana.yaml
│   │   ├── job-db-init-session.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-session-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-run-migrator.yaml
│   │   ├── job-set-admin-user.yaml
│   │   ├── network_policy.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-admin-creds.yaml
│   │   ├── secret-db-session.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-prom-creds.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secrets/
│   │   │   └── _my.cnf.tpl
│   │   ├── service-ingress.yaml
│   │   └── service.yaml
│   └── values.yaml
├── heat/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _heat-api.sh.tpl
│   │   │   ├── _heat-cfn.sh.tpl
│   │   │   ├── _heat-engine-cleaner.sh.tpl
│   │   │   ├── _heat-engine.sh.tpl
│   │   │   ├── _heat-purge-deleted-active.sh.tpl
│   │   │   └── _trusts.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-engine-cleaner.yaml
│   │   ├── cron-job-purge-deleted.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-cfn.yaml
│   │   ├── deployment-engine.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── ingress-cfn.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user-domain.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── job-trusts.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pdb-cfn.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   ├── service-cfn.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── service-ingress-cfn.yaml
│   └── values.yaml
├── helm-toolkit/
│   ├── Chart.yaml
│   └── templates/
│       ├── endpoints/
│       │   ├── _authenticated_endpoint_uri_lookup.tpl
│       │   ├── _authenticated_transport_endpoint_uri_lookup.tpl
│       │   ├── _endpoint_host_lookup.tpl
│       │   ├── _endpoint_port_lookup.tpl
│       │   ├── _endpoint_token_lookup.tpl
│       │   ├── _host_and_port_endpoint_uri_lookup.tpl
│       │   ├── _hostname_fqdn_endpoint_lookup.tpl
│       │   ├── _hostname_namespaced_endpoint_lookup.tpl
│       │   ├── _hostname_namespaced_endpoint_namespace_lookup.tpl
│       │   ├── _hostname_short_endpoint_lookup.tpl
│       │   ├── _keystone_endpoint_name_lookup.tpl
│       │   ├── _keystone_endpoint_path_lookup.tpl
│       │   ├── _keystone_endpoint_scheme_lookup.tpl
│       │   ├── _keystone_endpoint_uri_lookup.tpl
│       │   └── _service_name_endpoint_with_namespace_lookup.tpl
│       ├── manifests/
│       │   ├── _ceph-storageclass.tpl
│       │   ├── _certificates.tpl
│       │   ├── _configmap-oslo-policy.tpl
│       │   ├── _ingress.tpl
│       │   ├── _job-bootstrap.tpl
│       │   ├── _job-db-drop-mysql.tpl
│       │   ├── _job-db-init-mysql.tpl
│       │   ├── _job-db-sync.tpl
│       │   ├── _job-ks-endpoints.tpl
│       │   ├── _job-ks-service.tpl
│       │   ├── _job-ks-user.yaml.tpl
│       │   ├── _job-rabbit-init.yaml.tpl
│       │   ├── _job-s3-bucket.yaml.tpl
│       │   ├── _job-s3-user.yaml.tpl
│       │   ├── _job_image_repo_sync.tpl
│       │   ├── _network_policy.tpl
│       │   ├── _secret-ks-etc.yaml.tpl
│       │   ├── _secret-registry.yaml.tpl
│       │   ├── _secret-tls.yaml.tpl
│       │   └── _service-ingress.tpl
│       ├── scripts/
│       │   ├── _create-s3-user.sh.tpl
│       │   ├── _db-drop.py.tpl
│       │   ├── _db-init.py.tpl
│       │   ├── _db-pg-init.sh.tpl
│       │   ├── _image-repo-sync.sh.tpl
│       │   ├── _ks-domain-user.sh.tpl
│       │   ├── _ks-endpoints.sh.tpl
│       │   ├── _ks-service.sh.tpl
│       │   ├── _ks-user.sh.tpl
│       │   ├── _rabbit-init.sh.tpl
│       │   ├── _rally_test.sh.tpl
│       │   └── db-backup-restore/
│       │       ├── _backup_main.sh.tpl
│       │       └── _restore_main.sh.tpl
│       ├── snippets/
│       │   ├── _custom_job_annotations.tpl
│       │   ├── _custom_pod_annotations.tpl
│       │   ├── _custom_secret_annotations.tpl
│       │   ├── _image.tpl
│       │   ├── _keystone_openrc_env_vars.tpl
│       │   ├── _keystone_openrc_failover_env_vars.tpl
│       │   ├── _keystone_secret_openrc.tpl
│       │   ├── _keystone_user_create_env_vars.tpl
│       │   ├── _kubernetes_apparmor_configmap.tpl
│       │   ├── _kubernetes_apparmor_loader_init_container.tpl
│       │   ├── _kubernetes_apparmor_volumes.tpl
│       │   ├── _kubernetes_container_security_context.tpl
│       │   ├── _kubernetes_entrypoint_init_container.tpl
│       │   ├── _kubernetes_kubectl_params.tpl
│       │   ├── _kubernetes_mandatory_access_control_annotation.tpl
│       │   ├── _kubernetes_metadata_labels.tpl
│       │   ├── _kubernetes_pod_anti_affinity.tpl
│       │   ├── _kubernetes_pod_image_pull_secret.tpl
│       │   ├── _kubernetes_pod_priority_class.tpl
│       │   ├── _kubernetes_pod_rbac_roles.tpl
│       │   ├── _kubernetes_pod_rbac_serviceaccount.tpl
│       │   ├── _kubernetes_pod_runtime_class.tpl
│       │   ├── _kubernetes_pod_security_context.tpl
│       │   ├── _kubernetes_probes.tpl
│       │   ├── _kubernetes_resources.tpl
│       │   ├── _kubernetes_seccomp_annotation.tpl
│       │   ├── _kubernetes_tolerations.tpl
│       │   ├── _kubernetes_upgrades_daemonset.tpl
│       │   ├── _kubernetes_upgrades_deployment.tpl
│       │   ├── _kubernetes_upgrades_statefulset.tpl
│       │   ├── _mon_host_from_k8s_ep.sh.tpl
│       │   ├── _prometheus_pod_annotations.tpl
│       │   ├── _prometheus_service_annotations.tpl
│       │   ├── _release_uuid.tpl
│       │   ├── _rgw_s3_admin_env_vars.tpl
│       │   ├── _rgw_s3_bucket_user_env_vars_rook.tpl
│       │   ├── _rgw_s3_secret_creds.tpl
│       │   ├── _rgw_s3_user_env_vars.tpl
│       │   ├── _service_params.tpl
│       │   ├── _tls_volume.tpl
│       │   ├── _tls_volume_mount.tpl
│       │   └── _values_template_renderer.tpl
│       ├── tls/
│       │   └── _tls_generate_certs.tpl
│       └── utils/
│           ├── _comma_joined_service_list.tpl
│           ├── _configmap_templater.tpl
│           ├── _daemonset_overrides.tpl
│           ├── _daemonset_overrides_root.tpl
│           ├── _dependency_jobs.tpl
│           ├── _dependency_resolver.tpl
│           ├── _hash.tpl
│           ├── _hash2.tpl
│           ├── _host_list.tpl
│           ├── _image_sync_list.tpl
│           ├── _joinListWithComma.tpl
│           ├── _joinListWithCommaAndSingleQuotes.tpl
│           ├── _joinListWithPrefix.tpl
│           ├── _joinListWithSpace.tpl
│           ├── _merge.tpl
│           ├── _template.tpl
│           ├── _to_ini.tpl
│           ├── _to_k8s_env_secret_vars.tpl
│           ├── _to_k8s_env_vars.tpl
│           ├── _to_kv_list.tpl
│           └── _to_oslo_conf.tpl
├── horizon/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── releasenotes/
│   │   └── notes/
│   │       ├── horizon-023da44e7958de05.yaml
│   │       └── horizon-4c5d5e3b58c700a0.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _django.wsgi.tpl
│   │   │   ├── _horizon.sh.tpl
│   │   │   ├── _manage.py.tpl
│   │   │   └── _selenium-test.py.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── configmap-logo.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress.yaml
│   │   └── service.yaml
│   └── values.yaml
├── ironic/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _ironic-api.sh.tpl
│   │   │   ├── _ironic-conductor-init.sh.tpl
│   │   │   ├── _ironic-conductor.sh.tpl
│   │   │   ├── _manage-cleaning-network.sh.tpl
│   │   │   └── _retreive-swift-config.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-manage-cleaning-network.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── statefulset-conductor.yaml
│   └── values.yaml
├── keystone/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _cred-clean.py.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _domain-manage-init.sh.tpl
│   │   │   ├── _domain-manage.py.tpl
│   │   │   ├── _domain-manage.sh.tpl
│   │   │   ├── _fernet-manage.py.tpl
│   │   │   └── _keystone-api.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-credential-rotate.yaml
│   │   ├── cron-job-fernet-rotate.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-credential-cleanup.yaml
│   │   ├── job-credential-setup.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-domain-manage.yaml
│   │   ├── job-fernet-setup.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-credential-keys.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-fernet-keys.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ldap-tls.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── kibana/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _apache.sh.tpl
│   │   │   ├── _create_kibana_index_patterns.sh.tpl
│   │   │   ├── _flush_kibana_metadata.sh.tpl
│   │   │   └── _kibana.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-kibana.yaml
│   │   ├── job-flush-kibana-metadata.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-register-kibana-indexes.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-elasticsearch-creds.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress-kibana.yaml
│   │   └── service.yaml
│   └── values.yaml
├── kube-dns/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-kube-dns.yaml
│   │   ├── deployment-kube-dns.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-kube-dns.yaml
│   │   └── serviceaccount-kube-dns.yaml
│   └── values.yaml
├── kubernetes-keystone-webhook/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _kubernetes-keystone-webhook-test.sh.tpl
│   │   │   └── _start.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress.yaml
│   │   ├── pod-test.yaml
│   │   ├── secret-certificates.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── service.yaml
│   └── values.yaml
├── kubernetes-node-problem-detector/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _node-problem-detector.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-registry.yaml
│   │   └── service.yaml
│   └── values.yaml
├── ldap/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── _helpers.tpl
│   │   ├── bin/
│   │   │   └── _bootstrap.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service.yaml
│   │   └── statefulset.yaml
│   └── values.yaml
├── libvirt/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── releasenotes/
│   │   └── notes/
│   │       └── libvirt-339936ca478fbf50.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _ceph-admin-keyring.sh.tpl
│   │   │   ├── _ceph-keyring.sh.tpl
│   │   │   └── _libvirt.sh.tpl
│   │   ├── configmap-apparmor.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-libvirt.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network-policy.yaml
│   │   ├── pod-monitor.yaml
│   │   ├── role-cert-manager.yaml
│   │   ├── secret-registry.yaml
│   │   └── utils/
│   │       └── _to_libvirt_conf.tpl
│   └── values.yaml
├── local-storage/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── extra-manifests.yaml
│   │   ├── persistent-volumes.yaml
│   │   └── storage-class.yaml
│   └── values.yaml
├── local-volume-provisioner/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _fakemount.py.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-lvp.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-registry.yaml
│   │   └── storageclasses.yaml
│   └── values.yaml
├── magnum/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _magnum-api.sh.tpl
│   │   │   ├── _magnum-conductor-init.sh.tpl
│   │   │   └── _magnum-conductor.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user-domain.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── kubeconfig.tpl
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── statefulset-conductor.yaml
│   └── values.yaml
├── manila/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _ceph-keyring.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _manila-api.sh.tpl
│   │   │   ├── _manila-data.sh.tpl
│   │   │   ├── _manila-scheduler.sh.tpl
│   │   │   ├── _manila-share-init.sh.tpl
│   │   │   └── _manila-share.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-data.yaml
│   │   ├── deployment-scheduler.yaml
│   │   ├── deployment-share.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── mariadb/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── README.rst
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _backup_mariadb.sh.tpl
│   │   │   ├── _health.sh.tpl
│   │   │   ├── _mariadb-wait-for-cluster.py.tpl
│   │   │   ├── _mariadb_controller.py.tpl
│   │   │   ├── _prometheus-create-mysql-user.sh.tpl
│   │   │   ├── _prometheus-mysqld-exporter.sh.tpl
│   │   │   ├── _restore_mariadb.sh.tpl
│   │   │   ├── _start.py.tpl
│   │   │   ├── _start_mariadb_verify_server.sh.tpl
│   │   │   └── _test.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── configmap-services-tcp.yaml
│   │   ├── cron-job-backup-mariadb.yaml
│   │   ├── deployment-controller.yaml
│   │   ├── exporter-configmap-bin.yaml
│   │   ├── exporter-job-create-user.yaml
│   │   ├── exporter-secrets-etc.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-cluster-wait.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── mariadb-backup-pvc.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-mariadb.yaml
│   │   ├── pod-test.yaml
│   │   ├── secret-backup-restore.yaml
│   │   ├── secret-dbadmin-password.yaml
│   │   ├── secret-dbaudit-password.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-rgw.yaml
│   │   ├── secret-sst-password.yaml
│   │   ├── secrets/
│   │   │   ├── _admin_user.cnf.tpl
│   │   │   ├── _admin_user_internal.cnf.tpl
│   │   │   └── _prometheus-exporter_user.cnf.tpl
│   │   ├── secrets-etc.yaml
│   │   ├── service-discovery.yaml
│   │   ├── service-master.yaml
│   │   ├── service.yaml
│   │   └── statefulset.yaml
│   └── values.yaml
├── mariadb-backup/
│   ├── Chart.yaml
│   ├── README.rst
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _backup_mariadb.sh.tpl
│   │   │   ├── _restore_mariadb.sh.tpl
│   │   │   └── _start_mariadb_verify_server.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-backup-mariadb.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── mariadb-backup-pvc.yaml
│   │   ├── secret-backup-restore.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-rgw.yaml
│   │   ├── secrets/
│   │   │   ├── _admin_user.cnf.tpl
│   │   │   └── _admin_user_internal.cnf.tpl
│   │   └── secrets-etc.yaml
│   └── values.yaml
├── mariadb-cluster/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── README.rst
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _liveness.sh.tpl
│   │   │   ├── _readiness.sh.tpl
│   │   │   └── _test.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-refresh-statefulset.yaml
│   │   ├── mariadb.yaml
│   │   ├── network_policy.yaml
│   │   ├── pod-test.yaml
│   │   ├── secret-dbadmin-password.yaml
│   │   ├── secret-dbaudit-password.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-sst-password.yaml
│   │   ├── secrets/
│   │   │   ├── _admin_user.cnf.tpl
│   │   │   ├── _admin_user_internal.cnf.tpl
│   │   │   └── _privileges.sql.tpl
│   │   └── secrets-etc.yaml
│   └── values.yaml
├── masakari/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _manage-db.sh.tpl
│   │   │   ├── _masakari-api.sh.tpl
│   │   │   ├── _masakari-engine.sh.tpl
│   │   │   ├── _masakari-host-monitor.sh.tpl
│   │   │   ├── _masakari-instance-monitor.sh.tpl
│   │   │   ├── _masakari-introspective-instance-monitor.sh.tpl
│   │   │   ├── _masakari-monitors-init.sh.tpl
│   │   │   └── _masakari-process-monitor.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-host-monitor.yaml
│   │   ├── daemonset-instance-monitor.yaml
│   │   ├── daemonset-introspective-instance-monitor.yaml
│   │   ├── daemonset-process-monitor.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-engine.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbitmq-init.yaml
│   │   ├── pbd-api.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   └── service-api.yaml
│   └── values.yaml
├── memcached/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _memcached.sh.tpl
│   │   ├── configmap-apparmor.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service.yaml
│   │   └── statefulset.yaml
│   └── values.yaml
├── mistral/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _mistral-api.sh.tpl
│   │   │   ├── _mistral-engine.sh.tpl
│   │   │   ├── _mistral-event-engine.sh.tpl
│   │   │   └── _mistral-executor.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-executor.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   ├── service-ingress-api.yaml
│   │   ├── statefulset-engine.yaml
│   │   └── statefulset-event-engine.yaml
│   └── values.yaml
├── nagios/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _apache.sh.tpl
│   │   │   ├── _nagios-readiness.sh.tpl
│   │   │   └── _selenium-tests.py.tpl
│   │   ├── configmap-additional-plugins.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-nagios.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-nagios.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress-nagios.yaml
│   │   └── service.yaml
│   └── values.yaml
├── namespace-config/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── extra-manifests.yaml
│   │   └── limit-range.yaml
│   └── values.yaml
├── neutron/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _health-probe.py.tpl
│   │   │   ├── _neutron-bagpipe-bgp-init.sh.tpl
│   │   │   ├── _neutron-bagpipe-bgp.sh.tpl
│   │   │   ├── _neutron-bgp-dragent.sh.tpl
│   │   │   ├── _neutron-dhcp-agent-init.sh.tpl
│   │   │   ├── _neutron-dhcp-agent.sh.tpl
│   │   │   ├── _neutron-ironic-agent-init.sh.tpl
│   │   │   ├── _neutron-ironic-agent.sh.tpl
│   │   │   ├── _neutron-l2gw-agent.sh.tpl
│   │   │   ├── _neutron-l3-agent-init.sh.tpl
│   │   │   ├── _neutron-l3-agent.sh.tpl
│   │   │   ├── _neutron-linuxbridge-agent-init-modules.sh.tpl
│   │   │   ├── _neutron-linuxbridge-agent-init.sh.tpl
│   │   │   ├── _neutron-linuxbridge-agent.sh.tpl
│   │   │   ├── _neutron-metadata-agent-init.sh.tpl
│   │   │   ├── _neutron-metadata-agent.sh.tpl
│   │   │   ├── _neutron-netns-cleanup-cron.sh.tpl
│   │   │   ├── _neutron-openvswitch-agent-init-modules.sh.tpl
│   │   │   ├── _neutron-openvswitch-agent-init-netoffload.sh.tpl
│   │   │   ├── _neutron-openvswitch-agent-init.sh.tpl
│   │   │   ├── _neutron-openvswitch-agent-liveness.sh.tpl
│   │   │   ├── _neutron-openvswitch-agent-readiness.sh.tpl
│   │   │   ├── _neutron-openvswitch-agent.sh.tpl
│   │   │   ├── _neutron-ovn-db-sync.sh.tpl
│   │   │   ├── _neutron-ovn-init.sh.tpl
│   │   │   ├── _neutron-ovn-metadata-agent.sh.tpl
│   │   │   ├── _neutron-ovn-vpn-agent-init.sh.tpl
│   │   │   ├── _neutron-ovn-vpn-agent.sh.tpl
│   │   │   ├── _neutron-rpc-server.sh.tpl
│   │   │   ├── _neutron-server.sh.tpl
│   │   │   ├── _neutron-sriov-agent-init.sh.tpl
│   │   │   ├── _neutron-sriov-agent.sh.tpl
│   │   │   ├── _neutron-test-force-cleanup.sh.tpl
│   │   │   └── _nginx.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-ovn-db-sync.yaml
│   │   ├── daemonset-bagpipe-bgp.yaml
│   │   ├── daemonset-bgp-dragent.yaml
│   │   ├── daemonset-dhcp-agent.yaml
│   │   ├── daemonset-l2gw-agent.yaml
│   │   ├── daemonset-l3-agent.yaml
│   │   ├── daemonset-lb-agent.yaml
│   │   ├── daemonset-metadata-agent.yaml
│   │   ├── daemonset-netns-cleanup-cron.yaml
│   │   ├── daemonset-neutron-ovn-vpn-agent.yaml
│   │   ├── daemonset-ovn-metadata-agent.yaml
│   │   ├── daemonset-ovs-agent.yaml
│   │   ├── daemonset-sriov-agent.yaml
│   │   ├── deployment-ironic-agent.yaml
│   │   ├── deployment-rpc_server.yaml
│   │   ├── deployment-server.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-server.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-server.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ks-etc.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress-neutron.yaml
│   │   └── service-server.yaml
│   └── values.yaml
├── nfs-provisioner/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-bin.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service.yaml
│   │   ├── storage_class.yaml
│   │   └── volume_claim.yaml
│   └── values.yaml
├── nova/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _cell-setup-init.sh.tpl
│   │   │   ├── _cell-setup.sh.tpl
│   │   │   ├── _ceph-admin-keyring.sh.tpl
│   │   │   ├── _ceph-keyring.sh.tpl
│   │   │   ├── _db-archive-deleted-row.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _fake-iptables.sh.tpl
│   │   │   ├── _health-probe.py.tpl
│   │   │   ├── _iscsiadm.tpl
│   │   │   ├── _multipath.tpl
│   │   │   ├── _multipathd.tpl
│   │   │   ├── _nova-api-metadata-init.sh.tpl
│   │   │   ├── _nova-api-metadata.sh.tpl
│   │   │   ├── _nova-api.sh.tpl
│   │   │   ├── _nova-compute-init.sh.tpl
│   │   │   ├── _nova-compute-ironic.sh.tpl
│   │   │   ├── _nova-compute.sh.tpl
│   │   │   ├── _nova-conductor.sh.tpl
│   │   │   ├── _nova-console-compute-init.sh.tpl
│   │   │   ├── _nova-console-proxy-init-assets.sh.tpl
│   │   │   ├── _nova-console-proxy-init.sh.tpl
│   │   │   ├── _nova-console-proxy.sh.tpl
│   │   │   ├── _nova-scheduler.sh.tpl
│   │   │   ├── _nova-service-cleaner.sh.tpl
│   │   │   ├── _ssh-init.sh.tpl
│   │   │   ├── _ssh-start.sh.tpl
│   │   │   ├── _storage-init.sh.tpl
│   │   │   └── _wait-for-computes-init.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-archive-deleted-rows.yaml
│   │   ├── cron-job-cell-setup.yaml
│   │   ├── cron-job-service-cleaner.yaml
│   │   ├── daemonset-compute.yaml
│   │   ├── deployment-api-metadata.yaml
│   │   ├── deployment-api-osapi.yaml
│   │   ├── deployment-conductor.yaml
│   │   ├── deployment-novncproxy.yaml
│   │   ├── deployment-scheduler.yaml
│   │   ├── deployment-serialproxy.yaml
│   │   ├── deployment-spiceproxy.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-metadata.yaml
│   │   ├── ingress-novncproxy.yaml
│   │   ├── ingress-osapi.yaml
│   │   ├── ingress-serialproxy.yaml
│   │   ├── ingress-spiceproxy.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-cell-setup.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-nova-storage-init.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── netpol-nova.yaml
│   │   ├── pdb-metadata.yaml
│   │   ├── pdb-osapi.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db-api.yaml
│   │   ├── secret-db-cell0.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ks-etc.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-ssh.yaml
│   │   ├── service-ingress-metadata.yaml
│   │   ├── service-ingress-novncproxy.yaml
│   │   ├── service-ingress-osapi.yaml
│   │   ├── service-ingress-serialproxy.yaml
│   │   ├── service-ingress-spiceproxy.yaml
│   │   ├── service-metadata.yaml
│   │   ├── service-novncproxy.yaml
│   │   ├── service-osapi.yaml
│   │   ├── service-serialproxy.yaml
│   │   ├── service-spiceproxy.yaml
│   │   ├── statefulset-compute-ironic.yaml
│   │   ├── statefulset-conductor.yaml
│   │   └── statefulset-scheduler.yaml
│   └── values.yaml
├── octavia/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _octavia-api.sh.tpl
│   │   │   ├── _octavia-driver-agent.sh.tpl
│   │   │   ├── _octavia-health-manager-get-port.sh.tpl
│   │   │   ├── _octavia-health-manager-nic-init.sh.tpl
│   │   │   ├── _octavia-health-manager.sh.tpl
│   │   │   ├── _octavia-housekeeping.sh.tpl
│   │   │   ├── _octavia-worker-get-port.sh.tpl
│   │   │   ├── _octavia-worker-nic-init.sh.tpl
│   │   │   └── _octavia-worker.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-health-manager.yaml
│   │   ├── daemonset-worker.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-driver-agent.yaml
│   │   ├── deployment-housekeeping.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoint.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── secret-db-persistence.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── openvswitch/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _openvswitch-db-server.sh.tpl
│   │   │   ├── _openvswitch-vswitchd-init-modules.sh.tpl
│   │   │   └── _openvswitch-vswitchd.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── daemonset.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network-policy.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── ovn/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _ovn-controller-init.sh.tpl
│   │   │   └── _ovn-network-logging-parser.sh.tpl
│   │   ├── clusterrole-controller.yaml
│   │   ├── clusterrolebinding-controller.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-controller.yaml
│   │   ├── deployment-northd.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── role-controller.yaml
│   │   ├── role-northd.yaml
│   │   ├── role-ovsdb.yaml
│   │   ├── rolebinding-controller.yaml
│   │   ├── rolebinding-northd.yaml
│   │   ├── rolebinding-ovsdb.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-vector.yaml
│   │   ├── service-ovsdb-nb.yaml
│   │   ├── service-ovsdb-sb.yaml
│   │   ├── statefulset-ovsdb-nb.yaml
│   │   └── statefulset-ovsdb-sb.yaml
│   └── values.yaml
├── placement/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _db-sync.sh.tpl
│   │   │   └── _placement-api.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ks-etc.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress.yaml
│   │   └── service.yaml
│   └── values.yaml
├── playbooks/
│   ├── build-chart.yaml
│   ├── collect-logs.yaml
│   ├── deploy-env-kubespray.yaml
│   ├── deploy-env.yaml
│   ├── enable-hugepages.yaml
│   ├── inject-keys.yaml
│   ├── lint.yaml
│   ├── mount-volumes.yaml
│   ├── osh-bandit.yaml
│   ├── prepare-hosts.yaml
│   ├── publish/
│   │   ├── post.yaml
│   │   └── run.yaml
│   └── run-scripts.yaml
├── postgresql/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _backup_postgresql.sh.tpl
│   │   │   ├── _common_backup_restore.sh.tpl
│   │   │   ├── _db_test.sh.tpl
│   │   │   ├── _postgresql_archive_cleanup.sh.tpl
│   │   │   ├── _readiness.sh.tpl
│   │   │   ├── _remote_retrieve_postgresql.sh.tpl
│   │   │   ├── _remote_store_postgresql.sh.tpl
│   │   │   ├── _restore_postgresql.sh.tpl
│   │   │   └── _start.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-backup-postgres.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── monitoring/
│   │   │   └── prometheus/
│   │   │       ├── bin/
│   │   │       │   └── _create-postgresql-exporter-user.sh.tpl
│   │   │       ├── exporter-configmap-bin.yaml
│   │   │       ├── exporter-configmap-etc.yaml
│   │   │       ├── exporter-deployment.yaml
│   │   │       ├── exporter-job-create-user.yaml
│   │   │       ├── exporter-secrets-etc.yaml
│   │   │       └── exporter-service.yaml
│   │   ├── network_policy.yaml
│   │   ├── pod-test.yaml
│   │   ├── postgresql-backup-pvc.yaml
│   │   ├── secret-admin.yaml
│   │   ├── secret-audit.yaml
│   │   ├── secret-backup-restore.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-rgw.yaml
│   │   ├── secrets/
│   │   │   └── _admin_user.conf.tpl
│   │   ├── secrets-etc.yaml
│   │   ├── service-postgres.yaml
│   │   ├── service-restapi.yaml
│   │   └── statefulset.yaml
│   └── values.yaml
├── powerdns/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _powerdns-mysql-sync.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-registry.yaml
│   │   └── service.yaml
│   └── values.yaml
├── prometheus/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _apache.sh.tpl
│   │   │   ├── _helm-tests.sh.tpl
│   │   │   └── _prometheus.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-prometheus.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-prometheus.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-tls-configs.yaml
│   │   ├── service-ingress-prometheus.yaml
│   │   ├── service.yaml
│   │   ├── statefulset.yaml
│   │   └── utils/
│   │       └── _command_line_flags.tpl
│   └── values.yaml
├── prometheus-alertmanager/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _alertmanager.sh.tpl
│   │   │   └── _apache.sh.tpl
│   │   ├── clusterrolebinding.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-alertmanager.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-admin-user.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-discovery.yaml
│   │   ├── service-ingress-alertmanager.yaml
│   │   ├── service.yaml
│   │   └── statefulset.yaml
│   └── values.yaml
├── prometheus-blackbox-exporter/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret.yaml
│   │   └── service.yaml
│   └── values.yaml
├── prometheus-kube-state-metrics/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-bin.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-controller-manager.yaml
│   │   ├── service-kube-state-metrics.yaml
│   │   └── service-scheduler.yaml
│   └── values.yaml
├── prometheus-mysql-exporter/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── README.rst
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _create-mysql-user.sh.tpl
│   │   │   └── _mysqld-exporter.sh.tpl
│   │   ├── exporter-configmap-bin.yaml
│   │   ├── exporter-deployment.yaml
│   │   ├── exporter-job-create-user.yaml
│   │   ├── exporter-network-policy.yaml
│   │   ├── exporter-secrets-etc.yaml
│   │   ├── exporter-service.yaml
│   │   ├── extra-manifests.yaml
│   │   └── secrets/
│   │       └── _exporter_user.cnf.tpl
│   └── values.yaml
├── prometheus-node-exporter/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _node-exporter.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── daemonset.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-registry.yaml
│   │   └── service.yaml
│   └── values.yaml
├── prometheus-openstack-exporter/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _prometheus-openstack-exporter.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-registry.yaml
│   │   └── service.yaml
│   └── values.yaml
├── prometheus-process-exporter/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── daemonset.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-registry.yaml
│   │   └── service.yaml
│   └── values.yaml
├── rabbitmq/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _rabbitmq-cookie.sh.tpl
│   │   │   ├── _rabbitmq-liveness.sh.tpl
│   │   │   ├── _rabbitmq-password-hash.py.tpl
│   │   │   ├── _rabbitmq-readiness.sh.tpl
│   │   │   ├── _rabbitmq-start.sh.tpl
│   │   │   ├── _rabbitmq-test.sh.tpl
│   │   │   └── _rabbitmq-wait-for-cluster.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── etc/
│   │   │   └── _enabled_plugins.tpl
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-management.yaml
│   │   ├── job-cluster-wait.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── pod-test.yaml
│   │   ├── secret-erlang-cookie.yaml
│   │   ├── secret-rabbit-admin.yaml
│   │   ├── secret-rabbitmq-users-credentials.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress-management.yaml
│   │   ├── service.yaml
│   │   ├── statefulset.yaml
│   │   └── utils/
│   │       └── _to_rabbit_config.tpl
│   └── values.yaml
├── rally/
│   ├── Chart.yaml
│   ├── README.rst
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _manage-db.sh.tpl
│   │   │   └── _run-task.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── configmap-tasks.yaml
│   │   ├── configmap-test-templates.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-manage-db.yaml
│   │   ├── job-run-task.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pvc-rally.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── redis/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-bin.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── pod_test.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service.yaml
│   │   └── test/
│   │       ├── _python_redis_tests.py.tpl
│   │       └── _redis_test.sh.tpl
│   └── values.yaml
├── registry/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _registry-proxy.sh.tpl
│   │   │   └── _registry.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-registry-proxy.yaml
│   │   ├── deployment-registry.yaml
│   │   ├── etc/
│   │   │   └── _default.conf.tpl
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── pvc-images.yaml
│   │   ├── secret-registry.yaml
│   │   └── service-registry.yaml
│   └── values.yaml
├── release.asc
├── releasenotes/
│   ├── config.yaml
│   ├── notes/
│   │   ├── added-nova-uid-parameter-to-ovs-chart-41d2b05b79300a31.yaml
│   │   ├── aodh-0fe345390dd08642.yaml
│   │   ├── aodh-1002dad350db1c60.yaml
│   │   ├── aodh-bb91c011b0c7d911.yaml
│   │   ├── aodh.yaml
│   │   ├── barbican-669168de73ab5847.yaml
│   │   ├── barbican-d291498fada9e601.yaml
│   │   ├── barbican-ead8061b2a6b1b1b.yaml
│   │   ├── barbican.yaml
│   │   ├── blazar-73cedded47699964.yaml
│   │   ├── blazar-a7b9b29ba15720c0.yaml
│   │   ├── blazar-b7fc5016b49c8f59.yaml
│   │   ├── ca-clusterissuer.yaml
│   │   ├── ca-issuer.yaml
│   │   ├── ceilometer-15768e1064d3339d.yaml
│   │   ├── ceilometer-8fc69d6664cdf101.yaml
│   │   ├── ceilometer-ab177a5c0aad98df.yaml
│   │   ├── ceilometer-b03ea218e1e61f90.yaml
│   │   ├── ceilometer-b86532145d088208.yaml
│   │   ├── ceilometer-c08f029ffa1e122f.yaml
│   │   ├── ceilometer.yaml
│   │   ├── ceph-adapter-rook-2fd83689f9bf78fb.yaml
│   │   ├── ceph-adapter-rook-f0855e8843fe615f.yaml
│   │   ├── ceph-adapter-rook.yaml
│   │   ├── ceph-client-055d675e86b2d0ea.yaml
│   │   ├── ceph-client-f4c8397a4313c53a.yaml
│   │   ├── ceph-client.yaml
│   │   ├── ceph-mon-1a1ecc38a96bfead.yaml
│   │   ├── ceph-mon-5ece5f0b0f571966.yaml
│   │   ├── ceph-mon-a1f450d714b90cfb.yaml
│   │   ├── ceph-mon-f029c2a86a0b7edd.yaml
│   │   ├── ceph-mon.yaml
│   │   ├── ceph-osd-294b73092b0b301b.yaml
│   │   ├── ceph-osd-c897b82dd8d0104b.yaml
│   │   ├── ceph-osd-e9bd9ab0cb036080.yaml
│   │   ├── ceph-osd.yaml
│   │   ├── ceph-provisioners-091a682dc01c219f.yaml
│   │   ├── ceph-provisioners-c4334743e1cadc04.yaml
│   │   ├── ceph-provisioners.yaml
│   │   ├── ceph-rgw-1dc7fd498ff7ed46.yaml
│   │   ├── ceph-rgw-9d99622a011584b0.yaml
│   │   ├── ceph-rgw.yaml
│   │   ├── cert-rotation-06fbf166bc55e372.yaml
│   │   ├── cert-rotation.yaml
│   │   ├── change-default-ovs-image-c1e24787f1b03170.yaml
│   │   ├── change-memcache-backend-2d85a3c75b32db39.yaml
│   │   ├── changed-ovs-dpdk-root-key-f8aaf3ad65189c8a.yaml
│   │   ├── cinder-1db248fbc00e56ff.yaml
│   │   ├── cinder-32aac095ffc09912.yaml
│   │   ├── cinder-48232b427a294d57.yaml
│   │   ├── cinder-4e17dd8ee84ca1a2.yaml
│   │   ├── cinder-8f8fd56d2c9a5d75.yaml
│   │   ├── cinder-92ee9aa061442690.yaml
│   │   ├── cinder-a25114bef0ed2f56.yaml
│   │   ├── cinder-a530fe90112c74d1.yaml
│   │   ├── cinder-aca94f2247bcddcd.yaml
│   │   ├── cinder-b605e2bc57b6d49f.yaml
│   │   ├── cinder-ddd3bb79dff72ba6.yaml
│   │   ├── cinder-ded5ec20ef58ac93.yaml
│   │   ├── cinder-f177532ecd78dcec.yaml
│   │   ├── cinder.yaml
│   │   ├── cloudkitty-a95de06fbfeac965.yaml
│   │   ├── cloudkitty-d61bea096f10b731.yaml
│   │   ├── cloudkitty.yaml
│   │   ├── common-695408be564c5d44.yaml
│   │   ├── common-76e452ae14eb3707.yaml
│   │   ├── common-8730c7058550f934.yaml
│   │   ├── common-d6d7b93fcc7296e9.yaml
│   │   ├── common-eb7338a63d83ad95.yaml
│   │   ├── common-f19dec4799b18756.yaml
│   │   ├── cyborg.yaml
│   │   ├── designate-9ed4257ab657b224.yaml
│   │   ├── designate-bc18055009645160.yaml
│   │   ├── designate.yaml
│   │   ├── elastic-apm-server.yaml
│   │   ├── elastic-filebeat.yaml
│   │   ├── elastic-metricbeat.yaml
│   │   ├── elastic-packetbeat.yaml
│   │   ├── elasticseach-625bc83028513f08.yaml
│   │   ├── elasticsearch-127e34013b70451d.yaml
│   │   ├── elasticsearch-1fb9cb9d0b6169a7.yaml
│   │   ├── elasticsearch-4a005ef3cec5f170.yaml
│   │   ├── elasticsearch-653d4b77cf26c277.yaml
│   │   ├── elasticsearch-ba314935c85c3b25.yaml
│   │   ├── elasticsearch-baf978b047efc111.yaml
│   │   ├── elasticsearch.yaml
│   │   ├── etcd.yaml
│   │   ├── fluentbit.yaml
│   │   ├── fluentd.yaml
│   │   ├── freezer-3272cc6ed891f5a3.yaml
│   │   ├── glance-1245a71c1694b79c.yaml
│   │   ├── glance-79dad0da1e27df42.yaml
│   │   ├── glance-9043d8c0a8119256.yaml
│   │   ├── glance-cb814fab2bccc95e.yaml
│   │   ├── glance-cbd61a1ae1e902b5.yaml
│   │   ├── glance-e528d9f2473763a1.yaml
│   │   ├── glance.yaml
│   │   ├── gnocchi-37ba93d527c7ba75.yaml
│   │   ├── gnocchi-71bec40a3416cb8a.yaml
│   │   ├── gnocchi.yaml
│   │   ├── grafana-b3fac6a311d115a6.yaml
│   │   ├── grafana-d1a2049e057fe878.yaml
│   │   ├── grafana.yaml
│   │   ├── heat-5e861ec1ee8e2784.yaml
│   │   ├── heat-7222563449ea848e.yaml
│   │   ├── heat-a584fab629e1c4fc.yaml
│   │   ├── heat.yaml
│   │   ├── helm-toolkit-04996581655d9952.yaml
│   │   ├── helm-toolkit-1ac16e62f779d907.yaml
│   │   ├── helm-toolkit-49593d58783c3a97.yaml
│   │   ├── helm-toolkit-5fa68b35be3378b3.yaml
│   │   ├── helm-toolkit-81cf091a301877ff.yaml
│   │   ├── helm-toolkit-9618f6c4379c13bc.yaml
│   │   ├── helm-toolkit-a2810391532bd64a.yaml
│   │   ├── helm-toolkit-acb954baa2fe7b2f.yaml
│   │   ├── helm-toolkit-e84e695df114929d.yaml
│   │   ├── helm-toolkit-fa49be61648b2d72.yaml
│   │   ├── helm-toolkit.yaml
│   │   ├── horizon-172a4ff3264fc495.yaml
│   │   ├── horizon.yaml
│   │   ├── increase-default-logging-31db0e9d3e51b429.yaml
│   │   ├── ingress.yaml
│   │   ├── ironic-0035b6286b1c6333.yaml
│   │   ├── ironic-022571f573f6c430.yaml
│   │   ├── ironic-2b9283c8924f8c63.yaml
│   │   ├── ironic-2fcd7c5ae98b55f4.yaml
│   │   ├── ironic-4963b8bfe3c212d0.yaml
│   │   ├── ironic-4a1d33f9e4147b79.yaml
│   │   ├── ironic-82bd78c64b57d2ce.yaml
│   │   ├── ironic-adbba9c6718cc0d6.yaml
│   │   ├── ironic-c0de8abe9970dca0.yaml
│   │   ├── ironic.yaml
│   │   ├── keystone-0e6674e1c443cd81.yaml
│   │   ├── keystone-12efe8927d1a0934.yaml
│   │   ├── keystone-17cdfeb53f6eb5dd.yaml
│   │   ├── keystone-1aaec51f0512e445.yaml
│   │   ├── keystone-56908951efdcc19e.yaml
│   │   ├── keystone-5dd1eca70f3382d8.yaml
│   │   ├── keystone-9bca09a40cc3dc68.yaml
│   │   ├── keystone-dab27a4eeaab96d1.yaml
│   │   ├── keystone-e2d6c0f6c85415ab.yaml
│   │   ├── keystone-fb00add9c87916a3.yaml
│   │   ├── keystone-healthcheck-1f72d266f886e735.yaml
│   │   ├── keystone.yaml
│   │   ├── kibana-053401293f7f508d.yaml
│   │   ├── kibana-add46185e9a8d6af.yaml
│   │   ├── kibana-c0b39f760a7c5b80.yaml
│   │   ├── kibana.yaml
│   │   ├── kube-dns.yaml
│   │   ├── kubernetes-keystone-webhook.yaml
│   │   ├── kubernetes-node-problem-detector.yaml
│   │   ├── ldap-4737a2ba0a8a499f.yaml
│   │   ├── ldap.yaml
│   │   ├── libvirt-5bf3185fc00a9938.yaml
│   │   ├── libvirt-85375c3ae369bc39.yaml
│   │   ├── libvirt-ac59444a6623ddb9.yaml
│   │   ├── libvirt-b5dc605552feb278.yaml
│   │   ├── libvirt-e8ba1d91a8ca4999.yaml
│   │   ├── libvirt-f81d6fc0b0094209.yaml
│   │   ├── libvirt.yaml
│   │   ├── local-storage.yaml
│   │   ├── local-volume-provisioner.yaml
│   │   ├── magnum.yaml
│   │   ├── manila-23590e37667d10a5.yaml
│   │   ├── manila-3a767553950629bd.yaml
│   │   ├── manila-7bf5ad7472dbf691.yaml
│   │   ├── manila-a5beeacdb577dd23.yaml
│   │   ├── manila-f7286f302a9372eb.yaml
│   │   ├── manila-f8ada2e675fcc308.yaml
│   │   ├── manila.yaml
│   │   ├── mariadb-0cb94bb0ae8cf38a.yaml
│   │   ├── mariadb-2d75f250c1fbcd73.yaml
│   │   ├── mariadb-7d8282a6eeb4d249.yaml
│   │   ├── mariadb-840fccbf8f0e9d39.yaml
│   │   ├── mariadb-b923ac9345734125.yaml
│   │   ├── mariadb-backup-58c8a77f9c03bae8.yaml
│   │   ├── mariadb-backup-af891fea0cfa3db5.yaml
│   │   ├── mariadb-backup-c27eb2dc0a56a7ed.yaml
│   │   ├── mariadb-backup.yaml
│   │   ├── mariadb-cluster-4672d16769afdb47.yaml
│   │   ├── mariadb-cluster.yaml
│   │   ├── mariadb-dcd35d40fcd4a749.yaml
│   │   ├── mariadb.yaml
│   │   ├── masakari-ea8acf2427bc9811.yaml
│   │   ├── masakari.yaml
│   │   ├── memcached-1ae10613b2e36813.yaml
│   │   ├── memcached.yaml
│   │   ├── mistral.yaml
│   │   ├── nagios-36a6b2cb6e9fc720.yaml
│   │   ├── nagios.yaml
│   │   ├── namespace-config.yaml
│   │   ├── neutron-00a56405067b123d.yaml
│   │   ├── neutron-013c9be46456b92c.yaml
│   │   ├── neutron-288ac8b37720832e.yaml
│   │   ├── neutron-2af36e49a0a377c3.yaml
│   │   ├── neutron-2bb975307f0d27f2.yaml
│   │   ├── neutron-2d4db97bc8900286.yaml
│   │   ├── neutron-315f825e54d3f34c.yaml
│   │   ├── neutron-32815761690bedf5.yaml
│   │   ├── neutron-3c11cf48f8c7c592.yaml
│   │   ├── neutron-3c33aea435f7ab8a.yaml
│   │   ├── neutron-42b77d74ce8fe287.yaml
│   │   ├── neutron-4f9263300df02c9b.yaml
│   │   ├── neutron-659f0c21af1feaa0.yaml
│   │   ├── neutron-670d4cd96f100dea.yaml
│   │   ├── neutron-96d95ffbdeaaf29a.yaml
│   │   ├── neutron-9dbb4250fd893743.yaml
│   │   ├── neutron-add-uwsgi-start-time-d73ba462e1157dd2.yaml
│   │   ├── neutron-b2247f89a5f258aa.yaml
│   │   ├── neutron-b225c11a5e1d522d.yaml
│   │   ├── neutron-c0c7ca4e49cbf03c.yaml
│   │   ├── neutron-c451a4129f97e891.yaml
│   │   ├── neutron-d39cc4643edac73c.yaml
│   │   ├── neutron-f0674e08d80fc203.yaml
│   │   ├── neutron-fca28403d7a0be3a.yaml
│   │   ├── neutron.yaml
│   │   ├── nfs-provisioner.yaml
│   │   ├── nova-1a7fb130b261f92d.yaml
│   │   ├── nova-29572c7b62b6ae0b.yaml
│   │   ├── nova-2c10ffbcf8d2f838.yaml
│   │   ├── nova-2e97a6de46b4c9b9.yaml
│   │   ├── nova-3493b35ba8c4479a.yaml
│   │   ├── nova-366b14dea33d416d.yaml
│   │   ├── nova-467e6c34e9fd1b05.yaml
│   │   ├── nova-476f40003a31bc77.yaml
│   │   ├── nova-495c648112a2b539.yaml
│   │   ├── nova-4b998ef222e57fd1.yaml
│   │   ├── nova-5bb93c130c2a280d.yaml
│   │   ├── nova-5d7903f3b97aa088.yaml
│   │   ├── nova-60c926ac61319ba1.yaml
│   │   ├── nova-69cb1a01b6f5c561.yaml
│   │   ├── nova-6b1d99fb5c67b2dd.yaml
│   │   ├── nova-7f3dbce1333752b8.yaml
│   │   ├── nova-9df2dfa1e3521305.yaml
│   │   ├── nova-b0749b6144e2b871.yaml
│   │   ├── nova-b2ce6bcc83029d1b.yaml
│   │   ├── nova-c59fc7469b3a8500.yaml
│   │   ├── nova-dd4188dbc489977c.yaml
│   │   ├── nova-e42deac3199480e6.yaml
│   │   ├── nova-e8350419e59bc440.yaml
│   │   ├── nova-fc00bda9bb69988e.yaml
│   │   ├── nova.yaml
│   │   ├── octavia-171c56de7891c86d.yaml
│   │   ├── octavia-3c13346818a743cc.yaml
│   │   ├── octavia-63cb483419410e3c.yaml
│   │   ├── octavia-73c0f7c8c13c00a1.yaml
│   │   ├── octavia-74938cd9ffae016b.yaml
│   │   ├── octavia-875ff6ae26e5586c.yaml
│   │   ├── octavia-a9a696fde141cd8b.yaml
│   │   ├── octavia-b40e89ec5e5b5568.yaml
│   │   ├── octavia-c0e8011e138832db.yaml
│   │   ├── octavia-c952d2266d5dbd62.yaml
│   │   ├── octavia-c9f2b0ece7ba8406.yaml
│   │   ├── octavia-d22c4az0a92b7d16.yaml
│   │   ├── octavia-f6afc93cf3ccc8f7.yaml
│   │   ├── octavia-health-manager-net-caps-49adc645e1d03456.yaml
│   │   ├── octavia.yaml
│   │   ├── openstack.yaml
│   │   ├── openvswitch-0b37403ffc75bb63.yaml
│   │   ├── openvswitch-3401ba2f0dc8e1f6.yaml
│   │   ├── openvswitch-3df8c5ca6034009f.yaml
│   │   ├── openvswitch-5c0d74ca4f420e56.yaml
│   │   ├── openvswitch-63f74f08815529dd.yaml
│   │   ├── openvswitch-c123b289b476575a.yaml
│   │   ├── openvswitch-e761d6733b84bdc7.yaml
│   │   ├── openvswitch-e888d02378d4d044.yaml
│   │   ├── openvswitch.yaml
│   │   ├── other-23a753cb53b10bb8.yaml
│   │   ├── ovn-3b9e82e5d469bc98.yaml
│   │   ├── ovn-3e576a7be97232fe.yaml
│   │   ├── ovn-50ba6d3611decff9.yaml
│   │   ├── ovn-53e7ddb42d51e7c9.yaml
│   │   ├── ovn-6c1c8afff28cf7f7.yaml
│   │   ├── ovn-73332b0bc5d647f2.yaml
│   │   ├── ovn-8b5cc103886f3b25.yaml
│   │   ├── ovn-a82eced671495a3d.yaml
│   │   ├── ovn-b172c29d8c0602b1.yaml
│   │   ├── ovn-d195851d81d68036.yaml
│   │   ├── ovn-ffd84bb8c9e73b64.yaml
│   │   ├── ovn.yaml
│   │   ├── panko.yaml
│   │   ├── placement-2b023904bc06028b.yaml
│   │   ├── placement-3115f3ce4c0801af.yaml
│   │   ├── placement-a180f4e88ed81d30.yaml
│   │   ├── placement.yaml
│   │   ├── podsecuritypolicy.yaml
│   │   ├── postgresql-4ee4e72706f17d8a.yaml
│   │   ├── postgresql-e1a02dbbe6601b0f.yaml
│   │   ├── postgresql.yaml
│   │   ├── powerdns.yaml
│   │   ├── prometeus-alertmanager-293616e8a47a12e8.yaml
│   │   ├── prometeus-e9a80f262470313c.yaml
│   │   ├── prometheus-alertmanager.yaml
│   │   ├── prometheus-blackbox-exporter.yaml
│   │   ├── prometheus-kube-state-metrics-b1fc3bf8e9109ae4.yaml
│   │   ├── prometheus-kube-state-metrics.yaml
│   │   ├── prometheus-mysql-exporter.yaml
│   │   ├── prometheus-node-exporter.yaml
│   │   ├── prometheus-openstack-exporter-39b2a7f52552033d.yaml
│   │   ├── prometheus-openstack-exporter-d95d286faa68ea98.yaml
│   │   ├── prometheus-openstack-exporter.yaml
│   │   ├── prometheus-process-exporter.yaml
│   │   ├── prometheus.yaml
│   │   ├── rabbitmq-04d68343d1f9dbec.yaml
│   │   ├── rabbitmq.yaml
│   │   ├── rally.yaml
│   │   ├── redis.yaml
│   │   ├── registry-daf63a0fbe9771cb.yaml
│   │   ├── registry.yaml
│   │   ├── remove-legacy-volume-apis-12d2d1abbb7fbe61.yaml
│   │   ├── remove-share-v1-api-d7b0b85e395bf131.yaml
│   │   ├── rename-ceph-rbd-pool-app-name.yaml
│   │   ├── skyline-0cc4caaea4f05714.yaml
│   │   ├── skyline-4763b3a9c14ace98.yaml
│   │   ├── skyline-794e9be9cc48f98d.yaml
│   │   ├── skyline-db-sync-image-b56ba0a4cad85c9c.yaml
│   │   ├── skyline-de744253bec9dfa3.yaml
│   │   ├── tacker.yaml
│   │   ├── tempest.yaml
│   │   ├── trove-a1b2c3d4e5f6g7h8.yaml
│   │   ├── trove.yaml
│   │   ├── watcher.yaml
│   │   └── zaqar-e43f9b2ace992d92.yaml
│   ├── requirements.txt
│   └── source/
│       ├── conf.py
│       ├── current.rst
│       ├── index.rst
│       └── locale/
│           └── en_GB/
│               └── LC_MESSAGES/
│                   └── releasenotes.po
├── roles/
│   ├── build-helm-packages/
│   │   ├── defaults/
│   │   │   └── main.yml
│   │   ├── tasks/
│   │   │   ├── main.yaml
│   │   │   └── setup-helm-serve.yaml
│   │   └── templates/
│   │       └── helm-serve.service.j2
│   ├── chart-testing/
│   │   ├── README.rst
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── clean-host/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── deploy-apparmor/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── deploy-docker/
│   │   ├── defaults/
│   │   │   └── main.yml
│   │   ├── tasks/
│   │   │   ├── deploy-ansible-docker-support.yaml
│   │   │   └── main.yaml
│   │   └── templates/
│   │       ├── centos-docker.service.j2
│   │       ├── fedora-docker.service.j2
│   │       ├── http-proxy.conf.j2
│   │       └── ubuntu-docker.service.j2
│   ├── deploy-env/
│   │   ├── README.md
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   ├── files/
│   │   │   ├── calico_patch.yaml
│   │   │   ├── cluster_resolv.conf
│   │   │   ├── containerd_config.toml
│   │   │   ├── daemon.json
│   │   │   ├── etc_default_kubelet.j2
│   │   │   ├── hosts
│   │   │   ├── hosts.toml
│   │   │   ├── kubeadm_config.yaml.j2
│   │   │   ├── loop-setup.service
│   │   │   ├── nginx_tcp_proxy.conf
│   │   │   ├── resolv.conf
│   │   │   └── ssh_config
│   │   ├── handlers/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       ├── buildset_registry_alias.yaml
│   │       ├── calico.yaml
│   │       ├── cilium.yaml
│   │       ├── client_cluster_ssh.yaml
│   │       ├── client_cluster_tunnel.yaml
│   │       ├── containerd.yaml
│   │       ├── coredns_resolver.yaml
│   │       ├── env_inventory.yaml
│   │       ├── flannel.yaml
│   │       ├── floating_network.yaml
│   │       ├── gatewayapi_envoy.yaml
│   │       ├── ingress_haproxy.yaml
│   │       ├── ingress_nginx.yaml
│   │       ├── k8s_client.yaml
│   │       ├── k8s_common.yaml
│   │       ├── k8s_control_plane.yaml
│   │       ├── loopback_devices.yaml
│   │       ├── loopback_devices_mount.yaml
│   │       ├── main.yaml
│   │       ├── metallb.yaml
│   │       ├── overlay.yaml
│   │       ├── prerequisites.yaml
│   │       └── public_endpoints.yaml
│   ├── deploy-jq/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── deploy-package/
│   │   ├── defaults/
│   │   │   └── main.yml
│   │   └── tasks/
│   │       ├── dist.yaml
│   │       └── pip.yaml
│   ├── deploy-python/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── deploy-python-pip/
│   │   ├── defaults/
│   │   │   └── main.yml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── deploy-selenium/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── describe-kubernetes-objects/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── disable-local-nameserver/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── enable-hugepages/
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── ensure-chart-testing/
│   │   ├── README.rst
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── gather-host-logs/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── gather-pod-logs/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── gather-prom-metrics/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── gather-selenium-data/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── helm-release-status/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── mount-extra-volume/
│   │   ├── defaults/
│   │   │   └── main.yml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── osh-bandit/
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── osh-run-script/
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── osh-run-script-set/
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── override-images/
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── setup-firewall/
│   │   └── tasks/
│   │       └── main.yaml
│   └── upgrade-host/
│       ├── defaults/
│       │   └── main.yml
│       └── tasks/
│           └── main.yaml
├── skyline/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _skyline-apiserver-init.sh.tpl
│   │   │   └── _skyline-apiserver.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress.yaml
│   │   └── service.yaml
│   └── values.yaml
├── swift/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _account-start.sh.tpl
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _container-start.sh.tpl
│   │   │   ├── _ks-endpoints.sh.tpl
│   │   │   ├── _ks-service.sh.tpl
│   │   │   ├── _ks-user.sh.tpl
│   │   │   ├── _object-start.sh.tpl
│   │   │   ├── _proxy-start.sh.tpl
│   │   │   ├── _ring-builder.sh.tpl
│   │   │   ├── _ring-copy.sh.tpl
│   │   │   ├── _storage-init.sh.tpl
│   │   │   ├── _storage-start.sh.tpl
│   │   │   └── _swift-test.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-storage.yaml
│   │   ├── deployment-proxy.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-proxy.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-ring-builder.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-proxy.yaml
│   │   ├── pdb-storage.yaml
│   │   ├── pod-test.yaml
│   │   ├── pvc.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── service-ingress-proxy.yaml
│   │   └── service-proxy.yaml
│   └── values.yaml
├── tacker/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _tacker-test.sh.tpl
│   │   │   ├── _tacker_conductor.sh.tpl
│   │   │   └── _tacker_server.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-conductor.yaml
│   │   ├── deployment-server.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── pod-test.yaml
│   │   ├── pvc.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── service-api.yaml
│   │   ├── service-conductor.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── tempest/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── _helpers.tpl
│   │   ├── bin/
│   │   │   └── _run-tests.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-run-tests.yaml
│   │   ├── pvc-tempest.yaml
│   │   ├── secret-keystone.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── tests/
│   ├── dns-test.yaml
│   └── pvc-test.yaml
├── tools/
│   ├── changelog.py
│   ├── chart_version.sh
│   ├── debug_sleep.sh
│   ├── deployment/
│   │   ├── baremetal/
│   │   │   ├── 005-setup-nodes.sh
│   │   │   ├── 010-setup-client.sh
│   │   │   ├── 110-compute-kit.sh
│   │   │   ├── 800-create-baremetal-host-aggregate.sh
│   │   │   ├── 810-register-baremetal-nodes.sh
│   │   │   ├── 820-create-baremetal-flavor.sh
│   │   │   ├── 900-use-it.sh
│   │   │   ├── fake-baremetal-1.xml
│   │   │   └── heat-basic-bm-deployment.yaml
│   │   ├── ceph/
│   │   │   ├── ceph-adapter-rook.sh
│   │   │   ├── ceph-ns-activate.sh
│   │   │   ├── ceph-radosgw.sh
│   │   │   ├── ceph-rook.sh
│   │   │   ├── ceph.sh
│   │   │   ├── ceph_legacy.sh
│   │   │   ├── migrate-after.sh
│   │   │   ├── migrate-before.sh
│   │   │   ├── migrate-to-rook-ceph.sh
│   │   │   └── migrate-values.sh
│   │   ├── common/
│   │   │   ├── cert-manager.sh
│   │   │   ├── clean-it.sh
│   │   │   ├── deploy-docker-registry.sh
│   │   │   ├── env-variables.sh
│   │   │   ├── force-cronjob-run.sh
│   │   │   ├── heat-basic-vm-deployment.yaml
│   │   │   ├── heat-public-net-deployment.yaml
│   │   │   ├── heat-subnet-pool-deployment.yaml
│   │   │   ├── heat-vm-volume-attach.yaml
│   │   │   ├── namespace-config.sh
│   │   │   ├── prepare-bashrc.sh
│   │   │   ├── prepare-charts.sh
│   │   │   ├── prepare-helm-repos-local.sh
│   │   │   ├── prepare-helm-repos-public.sh
│   │   │   ├── prepare-k8s.sh
│   │   │   ├── pull-images.sh
│   │   │   ├── rally-reports.yaml
│   │   │   ├── run-helm-tests.sh
│   │   │   ├── setup-certificates.sh
│   │   │   ├── setup-client.sh
│   │   │   ├── sleep.sh
│   │   │   ├── test-networkpolicy.sh
│   │   │   └── use-it.sh
│   │   ├── component/
│   │   │   ├── aodh/
│   │   │   │   └── aodh.sh
│   │   │   ├── barbican/
│   │   │   │   └── barbican.sh
│   │   │   ├── blazar/
│   │   │   │   ├── blazar.sh
│   │   │   │   └── blazar_smoke_test.sh
│   │   │   ├── ceilometer/
│   │   │   │   └── ceilometer.sh
│   │   │   ├── cinder/
│   │   │   │   └── cinder.sh
│   │   │   ├── cloudkitty/
│   │   │   │   └── cloudkitty.sh
│   │   │   ├── common/
│   │   │   │   ├── ldap.sh
│   │   │   │   ├── memcached.sh
│   │   │   │   ├── openstack.sh
│   │   │   │   └── rabbitmq.sh
│   │   │   ├── compute-kit/
│   │   │   │   ├── compute-kit-sr-iov.sh
│   │   │   │   ├── compute-kit.sh
│   │   │   │   ├── libvirt.sh
│   │   │   │   └── openvswitch.sh
│   │   │   ├── freezer/
│   │   │   │   ├── freezer.sh
│   │   │   │   └── freezer_smoke_test.sh
│   │   │   ├── glance/
│   │   │   │   └── glance.sh
│   │   │   ├── heat/
│   │   │   │   └── heat.sh
│   │   │   ├── horizon/
│   │   │   │   └── horizon.sh
│   │   │   ├── keystone/
│   │   │   │   └── keystone.sh
│   │   │   ├── magnum/
│   │   │   │   └── magnum.sh
│   │   │   ├── manila/
│   │   │   │   └── manila.sh
│   │   │   ├── mistral/
│   │   │   │   └── mistral.sh
│   │   │   ├── nfs-provisioner/
│   │   │   │   └── nfs-provisioner.sh
│   │   │   ├── octavia/
│   │   │   │   ├── create_dual_intermediate_CA.sh
│   │   │   │   ├── heat_octavia_env.yaml
│   │   │   │   ├── octavia.sh
│   │   │   │   ├── octavia_certs.sh
│   │   │   │   ├── octavia_resources.sh
│   │   │   │   ├── octavia_test.sh
│   │   │   │   └── openssl.cnf
│   │   │   ├── ovn/
│   │   │   │   └── ovn.sh
│   │   │   ├── redis/
│   │   │   │   └── redis.sh
│   │   │   ├── skyline/
│   │   │   │   └── skyline.sh
│   │   │   ├── swift/
│   │   │   │   └── swift.sh
│   │   │   ├── tacker/
│   │   │   │   └── tacker.sh
│   │   │   ├── trove/
│   │   │   │   └── trove.sh
│   │   │   ├── watcher/
│   │   │   │   └── watcher.sh
│   │   │   └── zaqar/
│   │   │       ├── zaqar.sh
│   │   │       └── zaqar_smoke_test.sh
│   │   ├── db/
│   │   │   ├── mariadb-backup.sh
│   │   │   ├── mariadb-operator-cluster.sh
│   │   │   ├── mariadb.sh
│   │   │   └── postgresql.sh
│   │   ├── logging/
│   │   │   ├── elasticsearch.sh
│   │   │   ├── fluentbit.sh
│   │   │   ├── fluentd.sh
│   │   │   └── kibana.sh
│   │   ├── monitoring/
│   │   │   ├── alertmanager.sh
│   │   │   ├── blackbox-exporter.sh
│   │   │   ├── grafana.sh
│   │   │   ├── kube-state-metrics.sh
│   │   │   ├── mysql-exporter.sh
│   │   │   ├── nagios.sh
│   │   │   ├── node-exporter.sh
│   │   │   ├── node-problem-detector.sh
│   │   │   ├── openstack-exporter.sh
│   │   │   ├── process-exporter.sh
│   │   │   └── prometheus.sh
│   │   └── openstack/
│   │       └── keystone.sh
│   └── gate/
│       └── selenium/
│           ├── grafana-selenium.sh
│           ├── grafanaSelenium.py
│           ├── kibana-selenium.sh
│           ├── kibanaSelenium.py
│           ├── nagios-selenium.sh
│           ├── nagiosSelenium.py
│           ├── prometheus-selenium.sh
│           ├── prometheusSelenium.py
│           ├── seleniumtester.py
│           ├── skyline-selenium.sh
│           └── skylineSelenium.py
├── tox.ini
├── trove/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _db-purge.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _trove-api.sh.tpl
│   │   │   ├── _trove-conductor.sh.tpl
│   │   │   └── _trove-taskmanager.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-trove-db-purge.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-conductor.yaml
│   │   ├── deployment-taskmanager.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── values_overrides/
│   ├── aodh/
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   └── mariadb-operator.yaml
│   ├── barbican/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── blazar/
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── mariadb-operator.yaml
│   ├── ceilometer/
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   └── annotations.yaml
│   ├── ceph-client/
│   │   └── apparmor.yaml
│   ├── ceph-mon/
│   │   └── apparmor.yaml
│   ├── ceph-osd/
│   │   └── apparmor.yaml
│   ├── ceph-provisioners/
│   │   └── apparmor.yaml
│   ├── ceph-rgw/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── netpol.yaml
│   │   └── tls.yaml
│   ├── cinder/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── backend_pure.yaml
│   │   ├── external-ceph-backend.yaml
│   │   ├── external-ceph-configmap.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── nfs-cinder-backup.yaml
│   │   ├── qos.yaml
│   │   ├── rabbitmq4.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── cloudkitty/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── mariadb-operator.yaml
│   ├── cyborg/
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   ├── mariadb-operator.yaml
│   │   └── rabbitmq4.yaml
│   ├── designate/
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   └── mariadb-operator.yaml
│   ├── elastic-apm-server/
│   │   └── apparmor.yaml
│   ├── elastic-filebeat/
│   │   └── apparmor.yaml
│   ├── elasticsearch/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── local-storage.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── remote-cluster.yaml
│   │   └── tls.yaml
│   ├── fluentd/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── tls.yaml
│   ├── freezer/
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── mariadb-operator.yaml
│   ├── glance/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── bootstrap-ubuntu-image.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── rabbitmq4.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── gnocchi/
│   │   ├── gateway.yaml
│   │   └── mariadb-operator.yaml
│   ├── grafana/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── calico.yaml
│   │   ├── ceph.yaml
│   │   ├── containers.yaml
│   │   ├── coredns.yaml
│   │   ├── elasticsearch.yaml
│   │   ├── gateway.yaml
│   │   ├── home_dashboard.yaml
│   │   ├── kubernetes.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── nginx.yaml
│   │   ├── nodes.yaml
│   │   ├── openstack.yaml
│   │   ├── persistentvolume.yaml
│   │   ├── prometheus.yaml
│   │   ├── sqlite3.yaml
│   │   └── tls.yaml
│   ├── heat/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── rabbitmq4.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── horizon/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── logo.yaml
│   │   ├── netpol.yaml
│   │   └── tls.yaml
│   ├── ironic/
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   ├── mariadb-operator.yaml
│   │   └── standalone.yaml
│   ├── keystone/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── internal-reverse-proxy.yaml
│   │   ├── ldap.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── rabbitmq4.yaml
│   │   ├── tls-custom.yaml
│   │   └── tls.yaml
│   ├── kibana/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── tls.yaml
│   ├── kubernetes-keystone-webhook/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   └── loci-2025.2-ubuntu_noble.yaml
│   ├── kubernetes-node-problem-detector/
│   │   └── apparmor.yaml
│   ├── libvirt/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── cinder-external-ceph-backend.yaml
│   │   ├── inovex_exporter.yaml
│   │   ├── netpol.yaml
│   │   ├── node_overrides.yaml
│   │   ├── ovn.yaml
│   │   ├── ssl.yaml
│   │   └── vexxhost_exporter.yaml
│   ├── local-storage/
│   │   └── local-storage.yaml
│   ├── magnum/
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   └── mariadb-operator.yaml
│   ├── manila/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── rabbitmq4.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── mariadb/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── backups.yaml
│   │   ├── local-storage.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── netpol.yaml
│   │   ├── remote_backups.yaml
│   │   ├── staggered-backups.yaml
│   │   ├── tls.yaml
│   │   └── wait-for-cluster.yaml
│   ├── mariadb-backup/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── backups.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── staggered-backups.yaml
│   │   └── tls.yaml
│   ├── mariadb-cluster/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── downscaled.yaml
│   │   ├── local-storage.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── netpol.yaml
│   │   ├── prometheus.yaml
│   │   ├── tls.yaml
│   │   └── upscaled.yaml
│   ├── masakari/
│   │   ├── annotations.yaml
│   │   └── mariadb-operator.yaml
│   ├── memcached/
│   │   ├── apparmor.yaml
│   │   ├── exporter.yaml
│   │   └── netpol.yaml
│   ├── mistral/
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   └── mariadb-operator.yaml
│   ├── nagios/
│   │   ├── apparmor.yaml
│   │   ├── elasticsearch-objects.yaml
│   │   ├── gateway.yaml
│   │   ├── openstack-objects.yaml
│   │   ├── postgresql-objects.yaml
│   │   └── tls.yaml
│   ├── neutron/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── bagpipe_bgp.yaml
│   │   ├── dpdk-bond.yaml
│   │   ├── dpdk.yaml
│   │   ├── gate.yaml
│   │   ├── gateway.yaml
│   │   ├── l2gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── ovn.yaml
│   │   ├── ovn_vpn.yaml
│   │   ├── rabbitmq4.yaml
│   │   ├── shared-sriov-ovs-dpdk-bond.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── nova/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── cntt.yaml
│   │   ├── dpdk.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── opensuse_15.yaml
│   │   ├── ovn.yaml
│   │   ├── rabbitmq4.yaml
│   │   ├── ssh.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── octavia/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── mariadb-operator.yaml
│   ├── openvswitch/
│   │   ├── apparmor.yaml
│   │   ├── dpdk-ubuntu_jammy.yaml
│   │   ├── dpdk-ubuntu_noble.yaml
│   │   ├── exporter.yaml
│   │   ├── netpol.yaml
│   │   ├── ovn.yaml
│   │   ├── ubuntu_jammy.yaml
│   │   ├── ubuntu_noble.yaml
│   │   └── vswitchd-probes.yaml
│   ├── ovn/
│   │   ├── ubuntu_jammy.yaml
│   │   └── ubuntu_noble.yaml
│   ├── placement/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── postgresql/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── backups.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── netpol.yaml
│   │   ├── staggered-backups.yaml
│   │   └── tls.yaml
│   ├── powerdns/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   └── loci-2025.2-ubuntu_noble.yaml
│   ├── prometheus/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── alertmanager.yaml
│   │   ├── apparmor.yaml
│   │   ├── ceph.yaml
│   │   ├── elasticsearch.yaml
│   │   ├── gateway.yaml
│   │   ├── kubernetes.yaml
│   │   ├── local-storage.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── nodes.yaml
│   │   ├── openstack.yaml
│   │   ├── postgresql.yaml
│   │   └── tls.yaml
│   ├── prometheus-alertmanager/
│   │   ├── apparmor.yaml
│   │   └── gateway.yaml
│   ├── prometheus-blackbox-exporter/
│   │   └── apparmor.yaml
│   ├── prometheus-kube-state-metrics/
│   │   └── apparmor.yaml
│   ├── prometheus-mysql-exporter/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── prometheus.yaml
│   │   └── tls.yaml
│   ├── prometheus-node-exporter/
│   │   └── apparmor.yaml
│   ├── prometheus-openstack-exporter/
│   │   ├── apparmor.yaml
│   │   ├── netpol.yaml
│   │   └── tls.yaml
│   ├── prometheus-process-exporter/
│   │   └── apparmor.yaml
│   ├── rabbitmq/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── builtin-metrics.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── netpol.yaml
│   │   ├── rabbitmq-exporter.yaml
│   │   └── tls.yaml
│   ├── rally/
│   │   ├── annotations.yaml
│   │   ├── mariadb-operator.yaml
│   │   └── tls-offloading.yaml
│   ├── skyline/
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── gateway.yaml
│   │   └── loci-2025.2-ubuntu_noble.yaml
│   ├── swift/
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   └── gateway.yaml
│   ├── tacker/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── mariadb-operator.yaml
│   ├── tempest/
│   │   └── annotations.yaml
│   ├── trove/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   └── mariadb-operator.yaml
│   ├── watcher/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── mariadb-operator.yaml
│   └── zaqar/
│       ├── 2025.1-ubuntu_jammy.yaml
│       ├── 2025.1-ubuntu_noble.yaml
│       ├── 2025.2-ubuntu_noble.yaml
│       ├── gateway.yaml
│       ├── loci-2025.1-ubuntu_noble.yaml
│       └── loci-2025.2-ubuntu_noble.yaml
├── watcher/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _watcher-api.sh.tpl
│   │   │   ├── _watcher-applier.sh.tpl
│   │   │   └── _watcher-decision-engine.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-applier.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── statefulset-decision-engine.yaml
│   └── values.yaml
├── yamllint-templates.conf
├── yamllint.conf
├── zaqar/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _zaqar-test.sh.tpl
│   │   │   └── _zaqar_api.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── pod-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ks-etc.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
└── zuul.d/
    ├── 2024.2.yaml
    ├── 2025.1.yaml
    ├── 2025.2-ubuntu_noble.yaml
    ├── base.yaml
    ├── infra_jobs.yaml
    ├── nodesets.yaml
    └── project.yaml

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
*.py[cod]

# C extensions
*.so

# Packages
*.egg*
*.egg-info
dist
build
eggs
parts
var
sdist
develop-eggs
.installed.cfg
lib
lib64

# Installer logs
pip-log.txt

# Unit test / coverage reports
cover/
.coverage*
!.coveragerc
.tox
nosetests.xml
.testrepository
.venv

# Translations
*.mo

# Mr Developer
.mr.developer.cfg
.project
.pydevproject

# Complexity
output/*.html
output/*/index.html

# Sphinx
doc/build
doc/source/chart/*
!doc/source/chart/index.rst
!doc/source/chart/openstack_charts.rst
!doc/source/chart/infra_charts.rst

# installed tools
tools/helm-docs

# pbr generates these
AUTHORS
ChangeLog

# Editors
*~
.*.swp
.*sw?

# Files created by releasenotes build
releasenotes/build

# Dev tools
.idea/
.vscode/
.devcontainer/
**/.vagrant
**/*.log

# Helm internals
*.lock
*/*.lock
*.tgz
**/*.tgz
**/_partials.tpl
**/_globals.tpl

# Gate and Check Logs
logs/
tools/gate/local-overrides/
playbooks/*.retry
tmp/

# Helm-toolkit dev
helm-toolkit/templates/test.yaml
helm-toolkit/values.yaml


================================================
FILE: .gitreview
================================================
[gerrit]
host=review.opendev.org
port=29418
project=openstack/openstack-helm.git


================================================
FILE: .pre-commit-config.yaml
================================================
---
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.5.0
    hooks:
      - id: trailing-whitespace
      - id: fix-byte-order-marker
      - id: mixed-line-ending
        args: ['--fix', 'lf']
      - id: check-merge-conflict
  - repo: https://github.com/sphinx-contrib/sphinx-lint
    rev: v1.0.0
    hooks:
      - id: sphinx-lint
        args: [--enable=default-role]
        files: ^doc/|releasenotes


================================================
FILE: CONTRIBUTING.rst
================================================
The source repository for this project can be found at:

   https://opendev.org/openstack/openstack-helm.git

Pull requests submitted through GitHub are not monitored.

To start contributing to OpenStack, follow the steps in the contribution guide
to set up and use Gerrit:

   https://docs.openstack.org/contributors/code-and-documentation/quick-start.html

Bugs should be filed on StoryBoard:

   https://storyboard.openstack.org/#!/project/openstack/openstack-helm


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "{}"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright {yyyy} {name of copyright owner}

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: Makefile
================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# It's necessary to set this because some environments don't link sh -> bash.
SHELL := /bin/bash
HELM := helm
PYTHON := python3
TASK  := build
HELM_DOCS := tools/helm-docs
UNAME_OS := $(shell uname -s)
UNAME_ARCH := $(shell uname -m)
# We generate CHANGELOG.md files by default which
# requires reno>=4.1.0 installed.
# To skip generating it use the following:
# make all SKIP_CHANGELOG=1
SKIP_CHANGELOG ?= 0

PKG_ARGS =
ifdef VERSION
	PKG_ARGS += --version $(VERSION)
endif

ifdef PACKAGE_DIR
	PKG_ARGS += --destination $(PACKAGE_DIR)
endif

BASE_VERSION ?= 2025.2.0

CHART_DIRS := $(subst /,,$(dir $(wildcard */Chart.yaml)))
CHARTS := $(sort helm-toolkit $(CHART_DIRS))

.PHONY: $(CHARTS)

all: $(CHARTS)

charts:
	@echo $(CHART_DIRS)

$(CHARTS):
	@if [ -d $@ ]; then \
		echo; \
		echo "===== Processing [$@] chart ====="; \
		make $(TASK)-$@; \
	fi

HELM_DOCS_VERSION ?= 1.14.2
.PHONY: helm-docs ## Download helm-docs locally if necessary
helm-docs: $(HELM_DOCS)
$(HELM_DOCS):
	{ \
		curl -fsSL -o tools/helm-docs.tar.gz https://github.com/norwoodj/helm-docs/releases/download/v$(HELM_DOCS_VERSION)/helm-docs_$(HELM_DOCS_VERSION)_$(UNAME_OS)_$(UNAME_ARCH).tar.gz && \
		tar -zxf tools/helm-docs.tar.gz -C tools helm-docs && \
		rm -f tools/helm-docs.tar.gz && \
		chmod +x tools/helm-docs; \
	}

init-%:
	if [ -f $*/Makefile ]; then make -C $*; fi
	if grep -qE "^dependencies:" $*/Chart.yaml; then $(HELM) dep up $*; fi

lint-%: init-%
	if [ -d $* ]; then $(HELM) lint $*; fi

# reno required for changelog generation
%/CHANGELOG.md:
	if [ -d $* ]; then $(PYTHON) tools/changelog.py --charts $*; fi

build-%: lint-% $(if $(filter-out 1,$(SKIP_CHANGELOG)),%/CHANGELOG.md)
	if [ -d $* ]; then \
		$(HELM) package $* --version $$(tools/chart_version.sh $* $(BASE_VERSION)) $(PKG_ARGS); \
	fi

# This is used exclusively with helm3 building in the gate to publish
package-%: init-%
	if [ -d $* ]; then $(HELM) package $* $(PKG_ARGS); fi

clean:
	@echo "Clean all build artifacts"
	rm -f */templates/_partials.tpl */templates/_globals.tpl
	rm -f *tgz */charts/*tgz */requirements.lock
	rm -rf */charts */tmpcharts

pull-all-images:
	@./tools/deployment/common/pull-images.sh

pull-images:
	@./tools/deployment/common/pull-images.sh $(filter-out $@,$(MAKECMDGOALS))

dev-deploy:
	@./tools/gate/devel/start.sh $(filter-out $@,$(MAKECMDGOALS))

%:
	@:


================================================
FILE: README.rst
================================================
==============
OpenStack-Helm
==============

Mission
-------

The goal of OpenStack-Helm is to provide a collection of Helm charts that
simply, resiliently, and flexibly deploy OpenStack and related services
on Kubernetes.

Versions supported
------------------

The table below shows the combinations of the Openstack/Platform/Kubernetes versions
that are tested and proved to work.

.. list-table::
   :widths: 30 30 30 30
   :header-rows: 1

   * - Openstack version
     - Host OS
     - Image OS
     - Kubernetes version
   * - 2024.1 (Caracal)
     - Ubuntu Jammy
     - Ubuntu Jammy
     - >=1.29,<=1.31
   * - 2024.2 (Dalmatian)
     - Ubuntu Jammy
     - Ubuntu Jammy
     - >=1.29,<=1.31
   * - 2025.1 (Epoxy)
     - Ubuntu Jammy
     - Ubuntu Jammy
     - >=1.29,<=1.31
   * - 2025.1 (Epoxy)
     - Ubuntu Noble
     - Ubuntu Noble
     - >=1.29,<=1.31

Communication
-------------

* Join us on `IRC <irc://chat.oftc.net/openstack-helm>`_:
  ``#openstack-helm`` on oftc
* Join us on `Slack <https://kubernetes.slack.com/messages/C3WERB7DE/>`_
  (this is preferable way of communication): ``#openstack-helm``
* Join us on `Openstack-discuss <https://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-discuss>`_
  mailing list (use subject prefix ``[openstack-helm]``)

The list of Openstack-Helm core team members is available here
`openstack-helm-core <https://review.opendev.org/#/admin/groups/1749,members>`_.

Storyboard
----------

You found an issue and want to make sure we are aware of it? You can do so on our
`Storyboard <https://storyboard.openstack.org/#!/project_group/64>`_.

Bugs should be filed as stories in Storyboard, not GitHub.

Please be as much specific as possible while describing an issue. Usually having
more context in the bug description means less efforts for a developer to
reproduce the bug and understand how to fix it.

Also before filing a bug to the Openstack-Helm `Storyboard <https://storyboard.openstack.org/#!/project_group/64>`_
please try to identify if the issue is indeed related to the deployment
process and not to the deployable software.

Other links
-----------

Our documentation is available `here <https://docs.openstack.org/openstack-helm/latest/>`_.

This project is under active development. We encourage anyone interested in
OpenStack-Helm to review the `code changes <https://review.opendev.org/q/(project:openstack/openstack-helm+OR+project:openstack/openstack-helm-images+OR+project:openstack/loci)+AND+-is:abandoned>`_

Our repositories:

* OpenStack charts `openstack-helm <https://opendev.org/openstack/openstack-helm.git>`_
* OpenStack-Helm plugin `openstack-helm-plugin <https://opendev.org/openstack/openstack-helm-plugin.git>`_
* Build non-OpenStack images `openstack-helm-images <https://opendev.org/openstack/openstack-helm-images.git>`_
* Build Openstack images `loci <https://opendev.org/openstack/loci.git>`_

We welcome contributions in any form: code review, code changes, usage feedback, updating documentation.

Release notes
-------------

We use `reno <https://opendev.org/openstack/reno.git>`_ for managing release notes. If you update
a chart, please add a release note using the following command:

.. code-block:: bash

    reno new <chart_name>

This will create a new release note file ``releasenotes/notes/<chart_name>-<sha>.yaml``. Fill in the
necessary information and commit the release note file.

If you update multiple charts in a single commit use the following command:

.. code-block:: bash

    reno new common

This will create a new release note file ``releasenotes/notes/common-<sha>.yaml``. In this case you
can add multiple chart specific sections in this release note file.

When building tarballs, we will use the ``reno`` features to combine release notes from all files and
generate  ``<chart_name>/CHANGELOG.md`` files.


================================================
FILE: aodh/Chart.yaml
================================================
# Copyright 2019 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

---
apiVersion: v2
appVersion: v1.0.0
description: Openstack-Helm Aodh
name: aodh
version: 2025.2.0
home: https://docs.openstack.org/aodh/latest/
sources:
  - https://opendev.org/openstack/aodh
  - https://opendev.org/openstack/openstack-helm
maintainers:
  - name: OpenStack-Helm Authors

dependencies:
  - name: helm-toolkit
    repository: file://../helm-toolkit
    version: ">= 0.1.0"
...


================================================
FILE: aodh/templates/bin/_aodh-alarms-cleaner.sh.tpl
================================================
#!/bin/bash

{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex

exec aodh-expirer \
     --config-file=/etc/aodh/aodh.conf \
     --config-dir=/etc/aodh/aodh.conf.d


================================================
FILE: aodh/templates/bin/_aodh-api.sh.tpl
================================================
#!/bin/bash

{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex

COMMAND="${@:-start}"

function start () {

  cp -a $(type -p aodh-api) /var/www/cgi-bin/aodh/

  if [ -f /etc/apache2/envvars ]; then
    # Loading Apache2 ENV variables
    source /etc/apache2/envvars
    # The directory below has to be created due to the fact that
    # libapache2-mod-wsgi-py3 doesn't create it in contrary by libapache2-mod-wsgi
    if [ ! -d ${APACHE_RUN_DIR} ]; then
       mkdir -p ${APACHE_RUN_DIR}
    fi
  fi

  # Get rid of stale pid file if present.
  rm -f /var/run/apache2/*.pid

  # Start Apache2
  exec apache2 -DFOREGROUND
}

function stop () {
  apachectl -k graceful-stop
}

$COMMAND


================================================
FILE: aodh/templates/bin/_aodh-evaluator.sh.tpl
================================================
#!/bin/bash

{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex

exec aodh-evaluator \
     --config-file=/etc/aodh/aodh.conf \
     --config-dir=/etc/aodh/aodh.conf.d


================================================
FILE: aodh/templates/bin/_aodh-listener.sh.tpl
================================================
#!/bin/bash

{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex

exec aodh-listener \
     --config-file=/etc/aodh/aodh.conf \
     --config-dir=/etc/aodh/aodh.conf.d


================================================
FILE: aodh/templates/bin/_aodh-notifier.sh.tpl
================================================
#!/bin/bash

{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex

exec aodh-notifier \
     --config-file=/etc/aodh/aodh.conf \
     --config-dir=/etc/aodh/aodh.conf.d


================================================
FILE: aodh/templates/bin/_aodh-test.sh.tpl
================================================
#!/bin/bash

{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex

export HOME=/tmp

echo "Test: create an alarm"
aodh alarm create \
    --name test_cpu_aggregation \
    --type gnocchi_aggregation_by_resources_threshold \
    --metric cpu --threshold 214106115 \
    --comparison-operator lt \
    --aggregation-method mean \
    --granularity 300  \
    --evaluation-periods 1 \
    --alarm-action 'http://localhost:8776/alarm' \
    --resource-type instance \
    --query '{"=": {"flavor_name": "small"}}'
sleep 5

echo "Test: list alarms"
aodh alarm list
sleep 5

echo "Test: show an alarm"
ALARM_UUID=$(aodh alarm list -c alarm_id -f value | head -1)
aodh alarm show ${ALARM_UUID}
sleep 5

echo "Test: update an alarm"
aodh alarm update ${ALARM_UUID} --comparison-operator gt
sleep 5

echo "Test: delete an alarm"
aodh alarm delete ${ALARM_UUID}

exit 0



================================================
FILE: aodh/templates/bin/_bootstrap.sh.tpl
================================================
#!/bin/bash

{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex

{{ .Values.bootstrap.script | default "echo 'Not Enabled'" }}


================================================
FILE: aodh/templates/bin/_db-sync.sh.tpl
================================================
#!/bin/bash

{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex

exec aodh-dbsync


================================================
FILE: aodh/templates/configmap-bin.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.configmap_bin }}
{{- $envAll := . }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: aodh-bin
data:
{{- if .Values.images.local_registry.active }}
  image-repo-sync.sh: |
{{- include "helm-toolkit.scripts.image_repo_sync" . | indent 4 }}
{{- end }}
{{- if .Values.bootstrap.enabled }}
  bootstrap.sh: |
{{ tuple "bin/_bootstrap.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
{{- end }}
  aodh-test.sh: |
{{ tuple "bin/_aodh-test.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
  db-init.py: |
{{- include "helm-toolkit.scripts.db_init" . | indent 4 }}
  db-sync.sh: |
{{ tuple "bin/_db-sync.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
  db-drop.py: |
{{- include "helm-toolkit.scripts.db_drop" . | indent 4 }}
  aodh-api.sh: |
{{ tuple "bin/_aodh-api.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
  aodh-evaluator.sh: |
{{ tuple "bin/_aodh-evaluator.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
  aodh-listener.sh: |
{{ tuple "bin/_aodh-listener.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
  aodh-notifier.sh: |
{{ tuple "bin/_aodh-notifier.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
  aodh-alarms-cleaner.sh: |
{{ tuple "bin/_aodh-alarms-cleaner.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
  ks-service.sh: |
{{- include "helm-toolkit.scripts.keystone_service" . | indent 4 }}
  ks-endpoints.sh: |
{{- include "helm-toolkit.scripts.keystone_endpoints" . | indent 4 }}
  ks-user.sh: |
{{- include "helm-toolkit.scripts.keystone_user" . | indent 4 }}
  rabbit-init.sh: |
{{- include "helm-toolkit.scripts.rabbit_init" . | indent 4 }}
{{- end }}


================================================
FILE: aodh/templates/configmap-etc.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.configmap_etc }}
{{- $envAll := . }}

{{- if empty .Values.conf.aodh.keystone_authtoken.auth_uri -}}
{{- $_ := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" | set .Values.conf.aodh.keystone_authtoken "auth_uri" -}}
{{- end -}}

{{- if empty .Values.conf.aodh.keystone_authtoken.auth_url -}}
{{- $_ := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" | set .Values.conf.aodh.keystone_authtoken "auth_url" -}}
{{- end -}}

{{- if empty .Values.conf.aodh.keystone_authtoken.region_name -}}
{{- $_ := set .Values.conf.aodh.keystone_authtoken "region_name" .Values.endpoints.identity.auth.aodh.region_name -}}
{{- end -}}

{{- if empty .Values.conf.aodh.keystone_authtoken.project_name -}}
{{- $_ := set .Values.conf.aodh.keystone_authtoken "project_name" .Values.endpoints.identity.auth.aodh.project_name -}}
{{- end -}}

{{- if empty .Values.conf.aodh.keystone_authtoken.project_domain_name -}}
{{- $_ := set .Values.conf.aodh.keystone_authtoken "project_domain_name" .Values.endpoints.identity.auth.aodh.project_domain_name -}}
{{- end -}}

{{- if empty .Values.conf.aodh.keystone_authtoken.user_domain_name -}}
{{- $_ := set .Values.conf.aodh.keystone_authtoken "user_domain_name" .Values.endpoints.identity.auth.aodh.user_domain_name -}}
{{- end -}}

{{- if empty .Values.conf.aodh.keystone_authtoken.username -}}
{{- $_ := set .Values.conf.aodh.keystone_authtoken "username" .Values.endpoints.identity.auth.aodh.username -}}
{{- end -}}

{{- if empty .Values.conf.aodh.keystone_authtoken.password -}}
{{- $_ := set .Values.conf.aodh.keystone_authtoken "password" .Values.endpoints.identity.auth.aodh.password -}}
{{- end -}}

{{- if empty .Values.conf.aodh.keystone_authtoken.memcached_servers -}}
{{- $_ := tuple "oslo_cache" "internal" "memcache" . | include "helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup" | set .Values.conf.aodh.keystone_authtoken "memcached_servers" -}}
{{- end -}}

{{- if empty .Values.conf.aodh.keystone_authtoken.memcache_secret_key -}}
{{- $_ := set .Values.conf.aodh.keystone_authtoken "memcache_secret_key" ( default ( randAlphaNum 64 ) .Values.endpoints.oslo_cache.auth.memcache_secret_key ) -}}
{{- end -}}

{{- if and (not (kindIs "invalid" .Values.conf.aodh.database.connection)) (empty .Values.conf.aodh.database.connection) -}}
{{- $_ := tuple "oslo_db" "internal" "aodh" "mysql" . | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup" | set .Values.conf.aodh.database "connection" -}}
{{- end -}}

{{- if empty .Values.conf.aodh.DEFAULT.transport_url -}}
{{- $_ := tuple "oslo_messaging" "internal" "aodh" "amqp" . | include "helm-toolkit.endpoints.authenticated_transport_endpoint_uri_lookup" | set .Values.conf.aodh.DEFAULT "transport_url" -}}
{{- end -}}

{{- if empty .Values.conf.aodh.service_credentials.auth_url -}}
{{- $_ := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup"| set .Values.conf.aodh.service_credentials "auth_url" -}}
{{- end -}}

{{- if empty .Values.conf.aodh.service_credentials.region_name -}}
{{- $_ := set .Values.conf.aodh.service_credentials "region_name" .Values.endpoints.identity.auth.aodh.region_name -}}
{{- end -}}

{{- if empty .Values.conf.aodh.service_credentials.project_name -}}
{{- $_ := set .Values.conf.aodh.service_credentials "project_name" .Values.endpoints.identity.auth.aodh.project_name -}}
{{- end -}}

{{- if empty .Values.conf.aodh.service_credentials.project_domain_name -}}
{{- $_ := set .Values.conf.aodh.service_credentials "project_domain_name" .Values.endpoints.identity.auth.aodh.project_domain_name -}}
{{- end -}}

{{- if empty .Values.conf.aodh.service_credentials.user_domain_name -}}
{{- $_ := set .Values.conf.aodh.service_credentials "user_domain_name" .Values.endpoints.identity.auth.aodh.user_domain_name -}}
{{- end -}}

{{- if empty .Values.conf.aodh.service_credentials.username -}}
{{- $_ := set .Values.conf.aodh.service_credentials "username" .Values.endpoints.identity.auth.aodh.username -}}
{{- end -}}

{{- if empty .Values.conf.aodh.service_credentials.password -}}
{{- $_ := set .Values.conf.aodh.service_credentials "password" .Values.endpoints.identity.auth.aodh.password -}}
{{- end -}}

{{- if and (empty .Values.conf.logging.handler_fluent) (has "fluent" .Values.conf.logging.handlers.keys) -}}
{{- $fluentd_host := tuple "fluentd" "internal" $envAll | include "helm-toolkit.endpoints.hostname_namespaced_endpoint_lookup" }}
{{- $fluentd_port := tuple "fluentd" "internal" "service" $envAll | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
{{- $fluent_args := printf "('%s.%s', '%s', %s)" .Release.Namespace .Release.Name $fluentd_host $fluentd_port }}
{{- $handler_fluent := dict "class" "fluent.handler.FluentHandler" "formatter" "fluent" "args" $fluent_args -}}
{{- $_ := set .Values.conf.logging "handler_fluent" $handler_fluent -}}
{{- end -}}

{{- if and (empty .Values.conf.logging.formatter_fluent) (has "fluent" .Values.conf.logging.formatters.keys) -}}
{{- $formatter_fluent := dict "class" "oslo_log.formatters.FluentFormatter" -}}
{{- $_ := set .Values.conf.logging "formatter_fluent" $formatter_fluent -}}
{{- end -}}
---
apiVersion: v1
kind: Secret
metadata:
  name: aodh-etc
type: Opaque
data:
  aodh.conf: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.aodh | b64enc }}
  logging.conf: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.logging | b64enc }}
  api-paste.ini: {{ include "helm-toolkit.utils.to_ini" .Values.conf.paste | b64enc }}
  policy.yaml: {{ toYaml .Values.conf.policy | b64enc }}
{{ include "helm-toolkit.snippets.values_template_renderer" (dict "envAll" $envAll "template" .Values.conf.wsgi_aodh "key" "wsgi-aodh.conf" "format" "Secret" ) | indent 2 }}
{{- end }}


================================================
FILE: aodh/templates/cron-job-alarms-cleaner.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.cron_job_alarms_cleaner }}
{{- $envAll := . }}

{{- $mounts_aodh_alarms_cleaner := .Values.pod.mounts.aodh_alarms_cleaner.aodh_alarms_cleaner }}
{{- $mounts_aodh_alarms_cleaner_init := .Values.pod.mounts.aodh_alarms_cleaner.init_container }}

{{- $serviceAccountName := "aodh-alarms-cleaner" }}
{{ tuple $envAll "alarms_cleaner" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}

{{- $etcSources := .Values.pod.etcSources.aodh_alarms_cleaner }}
---
apiVersion: batch/v1
kind: CronJob
metadata:
  name: aodh-alarms-cleaner
  annotations:
    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
spec:
  schedule: {{ .Values.jobs.alarms_cleaner.cron | quote }}
  successfulJobsHistoryLimit: {{ .Values.jobs.alarms_cleaner.history.success }}
  failedJobsHistoryLimit: {{ .Values.jobs.alarms_cleaner.history.failed }}
  concurrencyPolicy: Forbid
  jobTemplate:
    metadata:
      labels:
{{ tuple $envAll "aodh" "alarms-cleaner" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
    spec:
      template:
        metadata:
          labels:
{{ tuple $envAll "aodh" "alarms-cleaner" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 12 }}
        spec:
          serviceAccountName: {{ $serviceAccountName }}
          restartPolicy: OnFailure
          nodeSelector:
            {{ .Values.labels.job.node_selector_key }}: {{ .Values.labels.job.node_selector_value }}
{{ if $envAll.Values.pod.tolerations.aodh.enabled }}
{{ tuple $envAll "aodh" | include "helm-toolkit.snippets.kubernetes_tolerations" | indent 10 }}
{{ end }}
          initContainers:
{{ tuple $envAll "alarms_cleaner" $mounts_aodh_alarms_cleaner_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 12 }}
          containers:
            - name: aodh-alarms-cleaner
{{ tuple $envAll "aodh_alarms_cleaner" | include "helm-toolkit.snippets.image" | indent 14 }}
{{ tuple $envAll $envAll.Values.pod.resources.jobs.alarms_cleaner | include "helm-toolkit.snippets.kubernetes_resources" | indent 14 }}
              command:
                - /tmp/aodh-alarms-cleaner.sh
              volumeMounts:
                - name: pod-tmp
                  mountPath: /tmp
                - name: aodh-bin
                  mountPath: /tmp/aodh-alarms-cleaner.sh
                  subPath: aodh-alarms-cleaner.sh
                  readOnly: true
                - name: pod-etc-aodh
                  mountPath: /etc/aodh
                - name: aodh-etc
                  mountPath: /etc/aodh/aodh.conf
                  subPath: aodh.conf
                  readOnly: true
                - name: aodh-etc-snippets
                  mountPath: /etc/aodh/aodh.conf.d/
                  readOnly: true
                {{- if .Values.conf.aodh.DEFAULT.log_config_append }}
                - name: aodh-etc
                  mountPath: {{ .Values.conf.aodh.DEFAULT.log_config_append }}
                  subPath: {{ base .Values.conf.aodh.DEFAULT.log_config_append }}
                  readOnly: true
                {{- end }}
{{ if $mounts_aodh_alarms_cleaner.volumeMounts }}{{ toYaml $mounts_aodh_alarms_cleaner.volumeMounts | indent 16 }}{{ end }}
          volumes:
            - name: pod-tmp
              emptyDir: {}
            - name: pod-etc-aodh
              emptyDir: {}
            - name: aodh-etc
              secret:
                secretName: aodh-etc
                defaultMode: 0444
            - name: aodh-et-etc-snippets
{{- if $etcSources }}
              projected:
                sources:
{{ toYaml $etcSources | indent 18 }}
{{- else }}
              emptyDir: {}
{{ end }}
            - name: aodh-bin
              configMap:
                name: aodh-bin
                defaultMode: 0555
{{ if $mounts_aodh_alarms_cleaner.volumes }}{{ toYaml $mounts_aodh_alarms_cleaner.volumes | indent 12 }}{{ end }}
{{- end }}


================================================
FILE: aodh/templates/deployment-api.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.deployment_api }}
{{- $envAll := . }}

{{- $mounts_aodh_api := .Values.pod.mounts.aodh_api.aodh_api }}
{{- $mounts_aodh_api_init := .Values.pod.mounts.aodh_api.init_container }}

{{- $serviceAccountName := "aodh-api" }}
{{ tuple $envAll "api" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}

{{- $etcSources := .Values.pod.etcSources.aodh_api }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: aodh-api
  annotations:
    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
  labels:
{{ tuple $envAll "aodh" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
spec:
  replicas: {{ .Values.pod.replicas.api }}
  selector:
    matchLabels:
{{ tuple $envAll "aodh" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
{{ tuple $envAll | include "helm-toolkit.snippets.kubernetes_upgrades_deployment" | indent 2 }}
  template:
    metadata:
      labels:
{{ tuple $envAll "aodh" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
      annotations:
{{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" | indent 8 }}
        configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }}
        configmap-etc-hash: {{ tuple "configmap-etc.yaml" . | include "helm-toolkit.utils.hash" }}
{{ tuple "aodh_api" . | include "helm-toolkit.snippets.custom_pod_annotations" | indent 8 }}
    spec:
      serviceAccountName: {{ $serviceAccountName }}
{{ dict "envAll" $envAll "application" "aodh" | include "helm-toolkit.snippets.kubernetes_pod_security_context" | indent 6 }}
      affinity:
{{ tuple $envAll "aodh" "api" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
      nodeSelector:
        {{ .Values.labels.api.node_selector_key }}: {{ .Values.labels.api.node_selector_value }}
{{ if $envAll.Values.pod.tolerations.aodh.enabled }}
{{ tuple $envAll "aodh" | include "helm-toolkit.snippets.kubernetes_tolerations" | indent 6 }}
{{ end }}
      terminationGracePeriodSeconds: {{ .Values.pod.lifecycle.termination_grace_period.api.timeout | default "30" }}
      initContainers:
{{ tuple $envAll "api" $mounts_aodh_api_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
      containers:
        - name: aodh-api
{{ tuple $envAll "aodh_api" | include "helm-toolkit.snippets.image" | indent 10 }}
{{ tuple $envAll $envAll.Values.pod.resources.api | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
{{ dict "envAll" $envAll "application" "aodh" "container" "aodh_api" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 10 }}
          command:
            - /tmp/aodh-api.sh
            - start
          lifecycle:
            preStop:
              exec:
                command:
                  - /tmp/aodh-api.sh
                  - stop
          ports:
            - name: a-api
              containerPort: {{ tuple "alarming" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
          readinessProbe:
            tcpSocket:
              port: {{ tuple "alarming" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
          volumeMounts:
            - name: pod-tmp
              mountPath: /tmp
            - name: oslo-lock-path
              mountPath: {{ .Values.conf.aodh.oslo_concurrency.lock_path }}
            - name: wsgi-aodh
              mountPath: /var/www/cgi-bin/aodh
            - name: pod-etc-aodh
              mountPath: /etc/aodh
            - name: aodh-etc
              mountPath: /etc/aodh/aodh.conf
              subPath: aodh.conf
              readOnly: true
            - name: aodh-etc-snippets
              mountPath: /etc/aodh/aodh.conf.d/
              readOnly: true
            {{- if .Values.conf.aodh.DEFAULT.log_config_append }}
            - name: aodh-etc
              mountPath: {{ .Values.conf.aodh.DEFAULT.log_config_append }}
              subPath: {{ base .Values.conf.aodh.DEFAULT.log_config_append }}
              readOnly: true
            {{- end }}
            - name: aodh-etc
              mountPath: /etc/aodh/api_paste.ini
              subPath: api-paste.ini
              readOnly: true
            - name: aodh-etc
              mountPath: /etc/aodh/policy.yaml
              subPath: policy.yaml
              readOnly: true
            - name: aodh-etc
              mountPath: /etc/apache2/conf-enabled/wsgi-aodh.conf
              subPath: wsgi-aodh.conf
              readOnly: true
            - name: aodh-bin
              mountPath: /tmp/aodh-api.sh
              subPath: aodh-api.sh
              readOnly: true
{{ if $mounts_aodh_api.volumeMounts }}{{ toYaml $mounts_aodh_api.volumeMounts | indent 12 }}{{ end }}
      volumes:
        - name: pod-tmp
          emptyDir: {}
        - name: oslo-lock-path
          emptyDir: {}
        - name: wsgi-aodh
          emptyDir: {}
        - name: pod-etc-aodh
          emptyDir: {}
        - name: aodh-etc
          secret:
            secretName: aodh-etc
            defaultMode: 0444
        - name: aodh-etc-snippets
{{- if $etcSources }}
          projected:
            sources:
{{ toYaml $etcSources | indent 14 }}
{{- else }}
          emptyDir: {}
{{ end }}
        - name: aodh-bin
          configMap:
            name: aodh-bin
            defaultMode: 0555
{{ if $mounts_aodh_api.volumes }}{{ toYaml $mounts_aodh_api.volumes | indent 8 }}{{ end }}
{{- end }}


================================================
FILE: aodh/templates/deployment-evaluator.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.deployment_evaluator }}
{{- $envAll := . }}

{{- $mounts_aodh_evaluator := .Values.pod.mounts.aodh_evaluator.aodh_evaluator }}
{{- $mounts_aodh_evaluator_init := .Values.pod.mounts.aodh_evaluator.init_container }}

{{- $serviceAccountName := "aodh-evaluator" }}
{{ tuple $envAll "evaluator" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}

{{- $etcSources := .Values.pod.etcSources.aodh_evaluator }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: aodh-evaluator
  annotations:
    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
  labels:
{{ tuple $envAll "aodh" "evaluator" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
spec:
  replicas: {{ .Values.pod.replicas.evaluator }}
  selector:
    matchLabels:
{{ tuple $envAll "aodh" "evaluator" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
{{ tuple $envAll | include "helm-toolkit.snippets.kubernetes_upgrades_deployment" | indent 2 }}
  template:
    metadata:
      labels:
{{ tuple $envAll "aodh" "evaluator" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
      annotations:
{{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" | indent 8 }}
        configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }}
        configmap-etc-hash: {{ tuple "configmap-etc.yaml" . | include "helm-toolkit.utils.hash" }}
{{ tuple "aodh_evaluator" . | include "helm-toolkit.snippets.custom_pod_annotations" | indent 8 }}
    spec:
      serviceAccountName: {{ $serviceAccountName }}
{{ dict "envAll" $envAll "application" "aodh" | include "helm-toolkit.snippets.kubernetes_pod_security_context" | indent 6 }}
      affinity:
{{ tuple $envAll "aodh" "evaluator" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
      nodeSelector:
        {{ .Values.labels.evaluator.node_selector_key }}: {{ .Values.labels.evaluator.node_selector_value }}
{{ if $envAll.Values.pod.tolerations.aodh.enabled }}
{{ tuple $envAll "aodh" | include "helm-toolkit.snippets.kubernetes_tolerations" | indent 6 }}
{{ end }}
      initContainers:
{{ tuple $envAll "evaluator" $mounts_aodh_evaluator_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
      containers:
        - name: aodh-evaluator
{{ tuple $envAll "aodh_evaluator" | include "helm-toolkit.snippets.image" | indent 10 }}
{{ tuple $envAll $envAll.Values.pod.resources.evaluator | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
{{ dict "envAll" $envAll "application" "aodh" "container" "aodh_evaluator" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 10 }}
          command:
            - /tmp/aodh-evaluator.sh
            - start
          lifecycle:
            preStop:
              exec:
                command:
                  - /tmp/aodh-evaluator.sh
                  - stop
          volumeMounts:
            - name: pod-tmp
              mountPath: /tmp
            - name: oslo-lock-path
              mountPath: {{ .Values.conf.aodh.oslo_concurrency.lock_path }}
            - name: pod-etc-aodh
              mountPath: /etc/aodh
            - name: aodh-etc
              mountPath: /etc/aodh/aodh.conf
              subPath: aodh.conf
              readOnly: true
            - name: aodh-etc-snippets
              mountPath: /etc/aodh/aodh.conf.d/
              readOnly: true
            {{- if .Values.conf.aodh.DEFAULT.log_config_append }}
            - name: aodh-etc
              mountPath: {{ .Values.conf.aodh.DEFAULT.log_config_append }}
              subPath: {{ base .Values.conf.aodh.DEFAULT.log_config_append }}
              readOnly: true
            {{- end }}
            - name: aodh-etc
              mountPath: /etc/aodh/policy.yaml
              subPath: policy.yaml
              readOnly: true
            - name: aodh-bin
              mountPath: /tmp/aodh-evaluator.sh
              subPath: aodh-evaluator.sh
              readOnly: true
{{ if $mounts_aodh_evaluator.volumeMounts }}{{ toYaml $mounts_aodh_evaluator.volumeMounts | indent 12 }}{{ end }}
      volumes:
        - name: pod-tmp
          emptyDir: {}
        - name: oslo-lock-path
          emptyDir: {}
        - name: pod-etc-aodh
          emptyDir: {}
        - name: aodh-etc
          secret:
            secretName: aodh-etc
            defaultMode: 0444
        - name: aodh-etc-snippets
{{- if $etcSources }}
          projected:
            sources:
{{ toYaml $etcSources | indent 14 }}
{{- else }}
          emptyDir: {}
{{ end }}
        - name: aodh-bin
          configMap:
            name: aodh-bin
            defaultMode: 0555
{{ if $mounts_aodh_evaluator.volumes }}{{ toYaml $mounts_aodh_evaluator.volumes | indent 8 }}{{ end }}
{{- end }}


================================================
FILE: aodh/templates/deployment-listener.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.deployment_listener }}
{{- $envAll := . }}

{{- $mounts_aodh_listener := .Values.pod.mounts.aodh_listener.aodh_listener }}
{{- $mounts_aodh_listener_init := .Values.pod.mounts.aodh_listener.init_container }}

{{- $serviceAccountName := "aodh-listener" }}
{{ tuple $envAll "listener" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}

{{- $etcSources := .Values.pod.etcSources.aodh_listener }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: aodh-listener
  annotations:
    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
  labels:
{{ tuple $envAll "aodh" "listener" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
spec:
  replicas: {{ .Values.pod.replicas.listener }}
  selector:
    matchLabels:
{{ tuple $envAll "aodh" "listener" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
{{ tuple $envAll | include "helm-toolkit.snippets.kubernetes_upgrades_deployment" | indent 2 }}
  template:
    metadata:
      labels:
{{ tuple $envAll "aodh" "listener" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
      annotations:
{{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" | indent 8 }}
        configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }}
        configmap-etc-hash: {{ tuple "configmap-etc.yaml" . | include "helm-toolkit.utils.hash" }}
{{ tuple "aodh_listener" . | include "helm-toolkit.snippets.custom_pod_annotations" | indent 8 }}
    spec:
      serviceAccountName: {{ $serviceAccountName }}
{{ dict "envAll" $envAll "application" "aodh" | include "helm-toolkit.snippets.kubernetes_pod_security_context" | indent 6 }}
      affinity:
{{ tuple $envAll "aodh" "listener" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
      nodeSelector:
        {{ .Values.labels.listener.node_selector_key }}: {{ .Values.labels.listener.node_selector_value }}
{{ if $envAll.Values.pod.tolerations.aodh.enabled }}
{{ tuple $envAll "aodh" | include "helm-toolkit.snippets.kubernetes_tolerations" | indent 6 }}
{{ end }}
      initContainers:
{{ tuple $envAll "listener" $mounts_aodh_listener_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
      containers:
        - name: aodh-listener
{{ tuple $envAll "aodh_listener" | include "helm-toolkit.snippets.image" | indent 10 }}
{{ tuple $envAll $envAll.Values.pod.resources.listener | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
{{ dict "envAll" $envAll "application" "aodh" "container" "aodh_listener" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 10 }}
          command:
            - /tmp/aodh-listener.sh
            - start
          lifecycle:
            preStop:
              exec:
                command:
                  - /tmp/aodh-listener.sh
                  - stop
          volumeMounts:
            - name: pod-tmp
              mountPath: /tmp
            - name: oslo-lock-path
              mountPath: {{ .Values.conf.aodh.oslo_concurrency.lock_path }}
            - name: pod-etc-aodh
              mountPath: /etc/aodh
            - name: aodh-etc
              mountPath: /etc/aodh/aodh.conf
              subPath: aodh.conf
              readOnly: true
            - name: aodh-etc-snippets
              mountPath: /etc/aodh/aodh.conf.d/
              readOnly: true
            {{- if .Values.conf.aodh.DEFAULT.log_config_append }}
            - name: aodh-etc
              mountPath: {{ .Values.conf.aodh.DEFAULT.log_config_append }}
              subPath: {{ base .Values.conf.aodh.DEFAULT.log_config_append }}
              readOnly: true
            {{- end }}
            - name: aodh-etc
              mountPath: /etc/aodh/policy.yaml
              subPath: policy.yaml
              readOnly: true
            - name: aodh-bin
              mountPath: /tmp/aodh-listener.sh
              subPath: aodh-listener.sh
              readOnly: true
{{ if $mounts_aodh_listener.volumeMounts }}{{ toYaml $mounts_aodh_listener.volumeMounts | indent 12 }}{{ end }}
      volumes:
        - name: pod-tmp
          emptyDir: {}
        - name: oslo-lock-path
          emptyDir: {}
        - name: pod-etc-aodh
          emptyDir: {}
        - name: aodh-etc
          secret:
            secretName: aodh-etc
            defaultMode: 0444
        - name: aodh-etc-snippets
{{- if $etcSources }}
          projected:
            sources:
{{ toYaml $etcSources | indent 14 }}
{{- else }}
          emptyDir: {}
{{ end }}
        - name: aodh-bin
          configMap:
            name: aodh-bin
            defaultMode: 0555
{{ if $mounts_aodh_listener.volumes }}{{ toYaml $mounts_aodh_listener.volumes | indent 8 }}{{ end }}
{{- end }}


================================================
FILE: aodh/templates/deployment-notifier.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.deployment_notifier }}
{{- $envAll := . }}

{{- $mounts_aodh_notifier := .Values.pod.mounts.aodh_notifier.aodh_notifier }}
{{- $mounts_aodh_notifier_init := .Values.pod.mounts.aodh_notifier.init_container }}

{{- $serviceAccountName := "aodh-notifier" }}
{{ tuple $envAll "notifier" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}

{{- $etcSources := .Values.pod.etcSources.aodh_notifier }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: aodh-notifier
  annotations:
    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
  labels:
{{ tuple $envAll "aodh" "notifier" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
spec:
  replicas: {{ .Values.pod.replicas.notifier }}
  selector:
    matchLabels:
{{ tuple $envAll "aodh" "notifier" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
{{ tuple $envAll | include "helm-toolkit.snippets.kubernetes_upgrades_deployment" | indent 2 }}
  template:
    metadata:
      labels:
{{ tuple $envAll "aodh" "notifier" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
      annotations:
{{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" | indent 8 }}
        configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }}
        configmap-etc-hash: {{ tuple "configmap-etc.yaml" . | include "helm-toolkit.utils.hash" }}
{{ tuple "aodh_notifier" . | include "helm-toolkit.snippets.custom_pod_annotations" | indent 8 }}
    spec:
      serviceAccountName: {{ $serviceAccountName }}
{{ dict "envAll" $envAll "application" "aodh" | include "helm-toolkit.snippets.kubernetes_pod_security_context" | indent 6 }}
      affinity:
{{ tuple $envAll "aodh" "notifier" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
      nodeSelector:
        {{ .Values.labels.notifier.node_selector_key }}: {{ .Values.labels.notifier.node_selector_value }}
{{ if $envAll.Values.pod.tolerations.aodh.enabled }}
{{ tuple $envAll "aodh" | include "helm-toolkit.snippets.kubernetes_tolerations" | indent 6 }}
{{ end }}
      initContainers:
{{ tuple $envAll "notifier" $mounts_aodh_notifier_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
      containers:
        - name: aodh-notifier
{{ tuple $envAll "aodh_notifier" | include "helm-toolkit.snippets.image" | indent 10 }}
{{ tuple $envAll $envAll.Values.pod.resources.notifier | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
{{ dict "envAll" $envAll "application" "aodh" "container" "aodh_notifier" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 10 }}
          command:
            - /tmp/aodh-notifier.sh
            - start
          lifecycle:
            preStop:
              exec:
                command:
                  - /tmp/aodh-notifier.sh
                  - stop
          volumeMounts:
            - name: pod-tmp
              mountPath: /tmp
            - name: oslo-lock-path
              mountPath: {{ .Values.conf.aodh.oslo_concurrency.lock_path }}
            - name: pod-etc-aodh
              mountPath: /etc/aodh
            - name: aodh-etc
              mountPath: /etc/aodh/aodh.conf
              subPath: aodh.conf
              readOnly: true
            - name: aodh-etc-snippets
              mountPath: /etc/aodh/aodh.conf.d/
              readOnly: true
            {{- if .Values.conf.aodh.DEFAULT.log_config_append }}
            - name: aodh-etc
              mountPath: {{ .Values.conf.aodh.DEFAULT.log_config_append }}
              subPath: {{ base .Values.conf.aodh.DEFAULT.log_config_append }}
              readOnly: true
            {{- end }}
            - name: aodh-etc
              mountPath: /etc/aodh/policy.yaml
              subPath: policy.yaml
              readOnly: true
            - name: aodh-bin
              mountPath: /tmp/aodh-notifier.sh
              subPath: aodh-notifier.sh
              readOnly: true
{{ if $mounts_aodh_notifier.volumeMounts }}{{ toYaml $mounts_aodh_notifier.volumeMounts | indent 12 }}{{ end }}
      volumes:
        - name: pod-tmp
          emptyDir: {}
        - name: oslo-lock-path
          emptyDir: {}
        - name: pod-etc-aodh
          emptyDir: {}
        - name: aodh-etc
          secret:
            secretName: aodh-etc
            defaultMode: 0444
        - name: aodh-etc-snippets
{{- if $etcSources }}
          projected:
            sources:
{{ toYaml $etcSources | indent 14 }}
{{- else }}
          emptyDir: {}
{{ end }}
        - name: aodh-bin
          configMap:
            name: aodh-bin
            defaultMode: 0555
{{ if $mounts_aodh_notifier.volumes }}{{ toYaml $mounts_aodh_notifier.volumes | indent 8 }}{{ end }}
{{- end }}


================================================
FILE: aodh/templates/extra-manifests.yaml
================================================
{{ range .Values.extraObjects }}
---
{{ if typeIs "string" . }}
    {{- tpl . $ }}
{{- else }}
    {{- tpl (toYaml .) $ }}
{{- end }}
{{ end }}


================================================
FILE: aodh/templates/ingress-api.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if and .Values.manifests.ingress_api .Values.network.api.ingress.public }}
{{- $ingressOpts := dict "envAll" . "backendServiceType" "alarming" "backendPort" "a-api" -}}
{{ $ingressOpts | include "helm-toolkit.manifests.ingress" }}
{{- end }}


================================================
FILE: aodh/templates/job-bootstrap.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if and .Values.manifests.job_bootstrap .Values.bootstrap.enabled }}
{{- $bootstrapJob := dict "envAll" . "serviceName" "aodh" "keystoneUser" .Values.bootstrap.ks_user -}}
{{- if .Values.pod.tolerations.aodh.enabled -}}
{{- $_ := set $bootstrapJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $bootstrapJob | include "helm-toolkit.manifests.job_bootstrap" }}
{{- end }}


================================================
FILE: aodh/templates/job-db-drop.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.job_db_drop }}
{{- $dbDropJob := dict "envAll" . "serviceName" "aodh" -}}
{{- if .Values.pod.tolerations.aodh.enabled -}}
{{- $_ := set $dbDropJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $dbDropJob | include "helm-toolkit.manifests.job_db_drop_mysql" }}
{{- end }}


================================================
FILE: aodh/templates/job-db-init.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.job_db_init }}
{{- $dbInitJob := dict "envAll" . "serviceName" "aodh" -}}
{{- if .Values.pod.tolerations.aodh.enabled -}}
{{- $_ := set $dbInitJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $dbInitJob | include "helm-toolkit.manifests.job_db_init_mysql" }}
{{- end }}


================================================
FILE: aodh/templates/job-db-sync.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.job_db_sync }}
{{- $dbSyncJob := dict "envAll" . "serviceName" "aodh" -}}
{{- $dbSyncJob := dict "envAll" . "serviceName" "aodh" "podVolMounts" .Values.pod.mounts.aodh_db_sync.aodh_db_sync.volumeMounts "podVols" .Values.pod.mounts.aodh_db_sync.aodh_db_sync.volumes -}}
{{- if .Values.pod.tolerations.aodh.enabled -}}
{{- $_ := set $dbSyncJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $dbSyncJob | include "helm-toolkit.manifests.job_db_sync" }}
{{- end }}


================================================
FILE: aodh/templates/job-image-repo-sync.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if and .Values.manifests.job_image_repo_sync .Values.images.local_registry.active }}
{{- $imageRepoSyncJob := dict "envAll" . "serviceName" "aodh" -}}
{{- if .Values.pod.tolerations.aodh.enabled -}}
{{- $_ := set $imageRepoSyncJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $imageRepoSyncJob | include "helm-toolkit.manifests.job_image_repo_sync" }}
{{- end }}


================================================
FILE: aodh/templates/job-ks-endpoints.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.job_ks_endpoints }}
{{- $ksServiceJob := dict "envAll" . "serviceName" "aodh" "serviceTypes" ( tuple "alarming" ) -}}
{{- if .Values.pod.tolerations.aodh.enabled -}}
{{- $_ := set $ksServiceJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $ksServiceJob | include "helm-toolkit.manifests.job_ks_endpoints" }}
{{- end }}


================================================
FILE: aodh/templates/job-ks-service.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.job_ks_service }}
{{- $ksServiceJob := dict "envAll" . "serviceName" "aodh" "serviceTypes" ( tuple "alarming" ) -}}
{{- if .Values.pod.tolerations.aodh.enabled -}}
{{- $_ := set $ksServiceJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $ksServiceJob | include "helm-toolkit.manifests.job_ks_service" }}
{{- end }}


================================================
FILE: aodh/templates/job-ks-user.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.job_ks_user }}
{{- $ksUserJob := dict "envAll" . "serviceName" "aodh" -}}
{{- if .Values.pod.tolerations.aodh.enabled -}}
{{- $_ := set $ksUserJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $ksUserJob | include "helm-toolkit.manifests.job_ks_user" }}
{{- end }}


================================================
FILE: aodh/templates/job-rabbit-init.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.job_rabbit_init }}
{{- $rmqUserJob := dict "envAll" . "serviceName" "aodh" -}}
{{- if .Values.pod.tolerations.aodh.enabled -}}
{{- $_ := set $rmqUserJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $rmqUserJob | include "helm-toolkit.manifests.job_rabbit_init" }}
{{- end }}


================================================
FILE: aodh/templates/network_policy.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.network_policy -}}
{{- $opts := dict "envAll" . "name" "application" "label" "aodh" -}}
{{ $opts | include "helm-toolkit.manifests.kubernetes_network_policy" }}
{{- end -}}


================================================
FILE: aodh/templates/pdb-api.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.pdb_api }}
{{- $envAll := . }}
---
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: aodh-api
spec:
  minAvailable: {{ .Values.pod.lifecycle.disruption_budget.api.min_available }}
  selector:
    matchLabels:
{{ tuple $envAll "aodh" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
{{- end }}


================================================
FILE: aodh/templates/pod-aodh-test.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.pod_aodh_test }}
{{- $envAll := . }}

{{- $mounts_tests := .Values.pod.mounts.aodh_tests.aodh_tests }}
{{- $mounts_tests_init := .Values.pod.mounts.aodh_tests.init_container }}

{{- $serviceAccountName := print $envAll.Release.Name "-test" }}
{{ tuple $envAll "tests" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
---
apiVersion: v1
kind: Pod
metadata:
  name: {{ print $envAll.Release.Name "-test" }}
  labels:
{{ tuple $envAll "aodh" "test" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
  annotations:
    "helm.sh/hook": test-success
    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
spec:
  restartPolicy: Never
  nodeSelector:
    {{ .Values.labels.test.node_selector_key }}: {{ .Values.labels.test.node_selector_value }}
{{ if $envAll.Values.pod.tolerations.aodh.enabled }}
{{ tuple $envAll "aodh" | include "helm-toolkit.snippets.kubernetes_tolerations" | indent 2 }}
{{ end }}
  serviceAccountName: {{ $serviceAccountName }}
  initContainers:
{{ tuple $envAll "tests" $mounts_tests_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 4 }}
  containers:
    - name: {{ .Release.Name }}-test
{{ tuple $envAll "aodh_api" | include "helm-toolkit.snippets.image" | indent 6 }}
{{ tuple $envAll $envAll.Values.pod.resources.jobs.tests | include "helm-toolkit.snippets.kubernetes_resources" | indent 6 }}
      env:
{{- with $env := dict "ksUserSecret" .Values.secrets.identity.admin }}
{{- include "helm-toolkit.snippets.keystone_openrc_env_vars" $env | indent 8 }}
{{- end }}
      command:
        - /tmp/aodh-test.sh
      volumeMounts:
        - name: pod-tmp
          mountPath: /tmp
        - name: aodh-etc
          mountPath: /etc/aodh/aodh.conf
          subPath: aodh.conf
          readOnly: true
        - name: aodh-bin
          mountPath: /tmp/aodh-test.sh
          subPath: aodh-test.sh
          readOnly: true
{{ if $mounts_tests.volumeMounts }}{{ toYaml $mounts_tests.volumeMounts | indent 8 }}{{ end }}
  volumes:
    - name: pod-tmp
      emptyDir: {}
    - name: aodh-etc
      secret:
        secretName: aodh-etc
        defaultMode: 0444
    - name: aodh-bin
      configMap:
        name: aodh-bin
        defaultMode: 0555
{{ if $mounts_tests.volumes }}{{ toYaml $mounts_tests.volumes | indent 4 }}{{ end }}
{{- end }}


================================================
FILE: aodh/templates/secret-db.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.secret_db }}
{{- $envAll := . }}
{{- range $key1, $userClass := tuple "admin" "aodh" }}
{{- $secretName := index $envAll.Values.secrets.oslo_db $userClass }}
---
apiVersion: v1
kind: Secret
metadata:
  name: {{ $secretName }}
  annotations:
{{ tuple "oslo_db" $userClass $envAll | include "helm-toolkit.snippets.custom_secret_annotations" | indent 4 }}
type: Opaque
data:
  DB_CONNECTION: {{ tuple "oslo_db" "internal" $userClass "mysql" $envAll | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup" | b64enc -}}
{{- end }}
{{- end }}


================================================
FILE: aodh/templates/secret-ingress-tls.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.secret_ingress_tls }}
{{- include "helm-toolkit.manifests.secret_ingress_tls" ( dict "envAll" . "backendServiceType" "alarming" ) }}
{{- end }}


================================================
FILE: aodh/templates/secret-keystone.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.secret_keystone }}
{{- $envAll := . }}
{{- range $key1, $userClass := tuple "admin" "aodh" }}
{{- $secretName := index $envAll.Values.secrets.identity $userClass }}
---
apiVersion: v1
kind: Secret
metadata:
  name: {{ $secretName }}
  annotations:
{{ tuple "identity" $userClass $envAll | include "helm-toolkit.snippets.custom_secret_annotations" | indent 4 }}
type: Opaque
data:
{{- tuple $userClass "internal" $envAll | include "helm-toolkit.snippets.keystone_secret_openrc" | indent 2 -}}
{{- end }}
{{- end }}


================================================
FILE: aodh/templates/secret-rabbitmq.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.secret_rabbitmq }}
{{- $envAll := . }}
{{- range $key1, $userClass := tuple "admin" "aodh" }}
{{- $secretName := index $envAll.Values.secrets.oslo_messaging $userClass }}
---
apiVersion: v1
kind: Secret
metadata:
  name: {{ $secretName }}
  annotations:
{{ tuple "oslo_messaging" $userClass $envAll | include "helm-toolkit.snippets.custom_secret_annotations" | indent 4 }}
type: Opaque
data:
  RABBITMQ_CONNECTION: {{ tuple "oslo_messaging" "internal" $userClass "http" $envAll | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup" | b64enc }}
{{- end }}
{{- end }}


================================================
FILE: aodh/templates/secret-registry.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if and .Values.manifests.secret_registry .Values.endpoints.oci_image_registry.auth.enabled }}
{{ include "helm-toolkit.manifests.secret_registry" ( dict "envAll" . "registryUser" .Chart.Name ) }}
{{- end }}


================================================
FILE: aodh/templates/service-api.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.service_api }}
{{- $envAll := . }}
---
apiVersion: v1
kind: Service
metadata:
  name: {{ tuple "alarming" "internal" . | include "helm-toolkit.endpoints.hostname_short_endpoint_lookup" }}
spec:
  ports:
    - name: a-api
      port: {{ tuple "alarming" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
      {{ if .Values.network.api.node_port.enabled }}
      nodePort: {{ .Values.network.api.node_port.port }}
      {{ end }}
  selector:
{{ tuple $envAll "aodh" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
  {{ if .Values.network.api.node_port.enabled }}
  type: NodePort
  {{ if .Values.network.api.external_policy_local }}
  externalTrafficPolicy: Local
  {{ end }}
  {{ end }}
{{- end }}


================================================
FILE: aodh/templates/service-ingress-api.yaml
================================================
{{/*
Copyright 2019 Wind River Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if and .Values.manifests.service_ingress_api .Values.network.api.ingress.public }}
{{- $serviceIngressOpts := dict "envAll" . "backendServiceType" "alarming" -}}
{{ $serviceIngressOpts | include "helm-toolkit.manifests.service_ingress" }}
{{- end }}


================================================
FILE: aodh/values.yaml
================================================
# Copyright 2019 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Default values for aodh.
# This is a YAML-formatted file.
# Declare name/value pairs to be passed into your templates.
# name: value

---
release_group: null

labels:
  api:
    node_selector_key: openstack-control-plane
    node_selector_value: enabled
  evaluator:
    node_selector_key: openstack-control-plane
    node_selector_value: enabled
  listener:
    node_selector_key: openstack-control-plane
    node_selector_value: enabled
  notifier:
    node_selector_key: openstack-control-plane
    node_selector_value: enabled
  job:
    node_selector_key: openstack-control-plane
    node_selector_value: enabled
  test:
    node_selector_key: openstack-control-plane
    node_selector_value: enabled


images:
  tags:
    bootstrap: quay.io/airshipit/openstack-client:2025.1-ubuntu_noble
    db_init: quay.io/airshipit/openstack-client:2025.1-ubuntu_noble
    db_drop: quay.io/airshipit/openstack-client:2025.1-ubuntu_noble
    rabbit_init: docker.io/rabbitmq:3.13-management
    aodh_db_sync: quay.io/airshipit/aodh:2025.1-ubuntu_noble
    ks_user: quay.io/airshipit/openstack-client:2025.1-ubuntu_noble
    ks_service: quay.io/airshipit/openstack-client:2025.1-ubuntu_noble
    ks_endpoints: quay.io/airshipit/openstack-client:2025.1-ubuntu_noble
    aodh_api: quay.io/airshipit/aodh:2025.1-ubuntu_noble
    aodh_evaluator: quay.io/airshipit/aodh:2025.1-ubuntu_noble
    aodh_listener: quay.io/airshipit/aodh:2025.1-ubuntu_noble
    aodh_notifier: quay.io/airshipit/aodh:2025.1-ubuntu_noble
    aodh_alarms_cleaner: quay.io/airshipit/aodh:2025.1-ubuntu_noble
    dep_check: quay.io/airshipit/kubernetes-entrypoint:latest-ubuntu_noble
    image_repo_sync: docker.io/docker:17.07.0
  pull_policy: "IfNotPresent"
  local_registry:
    active: false
    exclude:
      - dep_check
      - image_repo_sync

jobs:
  alarms_cleaner:
    # daily
    cron: "0 */24 * * *"
    history:
      success: 3
      failed: 1

pod:
  security_context:
    aodh:
      pod:
        runAsUser: 42402
      container:
        aodh_api:
          runAsUser: 0
        aodh_evaluator:
          readOnlyRootFilesystem: true
          allowPrivilegeEscalation: false
        aodh_notifier:
          readOnlyRootFilesystem: true
          allowPrivilegeEscalation: false
        aodh_listener:
          readOnlyRootFilesystem: true
          allowPrivilegeEscalation: false
  affinity:
    anti:
      type:
        default: preferredDuringSchedulingIgnoredDuringExecution
      topologyKey:
        default: kubernetes.io/hostname
      weight:
        default: 10
  tolerations:
    aodh:
      enabled: false
      tolerations:
        - key: node-role.kubernetes.io/master
          operator: Exists
          effect: NoSchedule
        - key: node-role.kubernetes.io/control-plane
          operator: Exists
          effect: NoSchedule
  mounts:
    aodh_api:
      init_container: null
      aodh_api:
        volumeMounts:
        volumes:
    aodh_evaluator:
      init_container: null
      aodh_evaluator:
        volumeMounts:
        volumes:
    aodh_listener:
      init_container: null
      aodh_listener:
        volumeMounts:
        volumes:
    aodh_notifier:
      init_container: null
      aodh_notifier:
        volumeMounts:
        volumes:
    aodh_alarms_cleaner:
      init_container: null
      aodh_alarms_cleaner:
        volumeMounts:
        volumes:
    aodh_bootstrap:
      init_container: null
      aodh_bootstrap:
        volumeMounts:
        volumes:
    aodh_tests:
      init_container: null
      aodh_tests:
        volumeMounts:
        volumes:
    aodh_db_sync:
      aodh_db_sync:
        volumeMounts:
        volumes:
  # -- This allows users to add Kubernetes Projected Volumes to be mounted at /etc/aodh/aodh.conf.d/
  ## This is a list of projected volume source objects for each deployment/statefulset/daemonset/cronjob
  ## https://kubernetes.io/docs/concepts/storage/projected-volumes/
  etcSources:
    aodh_api: []
    aodh_evaluator: []
    aodh_listener: []
    aodh_notifier: []
    aodh_alarms_cleaner: []
    aodh_db_sync: []
  replicas:
    api: 1
    evaluator: 1
    listener: 1
    notifier: 1
  lifecycle:
    upgrades:
      deployments:
        revision_history: 3
        pod_replacement_strategy: RollingUpdate
        rolling_update:
          max_unavailable: 1
          max_surge: 3
    disruption_budget:
      api:
        min_available: 0
    termination_grace_period:
      api:
        timeout: 30
  resources:
    enabled: false
    api:
      requests:
        memory: "128Mi"
        cpu: "100m"
      limits:
        memory: "1024Mi"
        cpu: "2000m"
    evaluator:
      requests:
        memory: "128Mi"
        cpu: "100m"
      limits:
        memory: "1024Mi"
        cpu: "2000m"
    listener:
      requests:
        memory: "128Mi"
        cpu: "100m"
      limits:
        memory: "1024Mi"
        cpu: "2000m"
    notifier:
      requests:
        memory: "128Mi"
        cpu: "100m"
      limits:
        memory: "1024Mi"
        cpu: "2000m"
    jobs:
      bootstrap:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      rabbit_init:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      db_init:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      db_sync:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      ks_endpoints:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      ks_service:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      ks_user:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      alarms_cleaner:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      db_drop:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      tests:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      image_repo_sync:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"

network:
  api:
    ingress:
      public: true
      classes:
        namespace: "ingress-openstack"
        cluster: "ingress-cluster"
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /
        haproxy.org/path-rewrite: /
    external_policy_local: false
    node_port:
      enabled: false
      port: 8042

dependencies:
  dynamic:
    common:
      local_image_registry:
        jobs:
          - aodh-image-repo-sync
        services:
          - endpoint: node
            service: local_image_registry
  static:
    api:
      jobs:
        - aodh-db-sync
        - aodh-ks-user
        - aodh-ks-endpoints
      services:
        - endpoint: internal
          service: oslo_db
        - endpoint: internal
          service: identity
    evaluator:
      jobs:
        - aodh-db-sync
        - aodh-rabbit-init
      services:
        - endpoint: internal
          service: oslo_db
        - endpoint: internal
          service: identity
        - endpoint: internal
          service: alarming
    listener:
      jobs:
        - aodh-db-sync
        - aodh-rabbit-init
      services:
        - endpoint: internal
          service: oslo_db
        - endpoint: internal
          service: identity
        - endpoint: internal
          service: alarming
    notifier:
      jobs:
        - aodh-db-sync
        - aodh-rabbit-init
      services:
        - endpoint: internal
          service: oslo_db
        - endpoint: internal
          service: identity
        - endpoint: internal
          service: alarming
    rabbit_init:
      services:
        - service: oslo_messaging
          endpoint: internal
    db_init:
      services:
        - endpoint: internal
          service: oslo_db
    db_sync:
      jobs:
        - aodh-db-init
      services:
        - endpoint: internal
          service: oslo_db
    db_drop:
      services:
        - endpoint: internal
          service: oslo_db
    ks_endpoints:
      jobs:
        - aodh-ks-service
      services:
        - endpoint: internal
          service: identity
    ks_service:
      services:
        - endpoint: internal
          service: identity
    ks_user:
      services:
        - endpoint: internal
          service: identity
    image_repo_sync:
      services:
        - endpoint: internal
          service: local_image_registry
    tests:
      jobs:
        - aodh-db-sync
      services:
        - endpoint: internal
          service: identity
        - endpoint: internal
          service: oslo_db
        - endpoint: internal
          service: alarming

conf:
  wsgi_aodh: |
    Listen 0.0.0.0:{{ tuple "alarming" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy

    SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
    CustomLog /dev/stdout combined env=!forwarded
    CustomLog /dev/stdout proxy env=forwarded

    <VirtualHost *:{{ tuple "alarming" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}>
        WSGIDaemonProcess aodh processes=2 threads=1 user=aodh group=aodh display-name=%{GROUP}
        WSGIProcessGroup aodh
        WSGIScriptAlias / /var/www/cgi-bin/aodh/aodh-api
        WSGIApplicationGroup %{GLOBAL}
        ErrorLogFormat "%{cu}t %M"
        ErrorLog /dev/stdout
        SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
        CustomLog /dev/stdout combined env=!forwarded
        CustomLog /dev/stdout proxy env=forwarded
    </VirtualHost>
  paste:
    composite:aodh+noauth:
      use: egg:Paste#urlmap
      /: aodhversions_pipeline
      /v2: aodhv2_noauth_pipeline
      /healthcheck: healthcheck
    composite:aodh+keystone:
      use: egg:Paste#urlmap
      /: aodhversions_pipeline
      /v2: aodhv2_keystone_pipeline
      /healthcheck: healthcheck
    app:healthcheck:
      use: egg:oslo.middleware#healthcheck
      oslo_config_project: aodh
    pipeline:aodhversions_pipeline:
      pipeline: cors http_proxy_to_wsgi aodhversions
    app:aodhversions:
      paste.app_factory: aodh.api.app:app_factory
      root: aodh.api.controllers.root.VersionsController
    pipeline:aodhv2_keystone_pipeline:
      pipeline: cors http_proxy_to_wsgi request_id authtoken aodhv2
    pipeline:aodhv2_noauth_pipeline:
      pipeline: cors http_proxy_to_wsgi request_id aodhv2
    app:aodhv2:
      paste.app_factory: aodh.api.app:app_factory
      root: aodh.api.controllers.v2.root.V2Controller
    filter:authtoken:
      paste.filter_factory: keystonemiddleware.auth_token:filter_factory
      oslo_config_project: aodh
    filter:request_id:
      paste.filter_factory: oslo_middleware:RequestId.factory
    filter:cors:
      paste.filter_factory: oslo_middleware.cors:filter_factory
      oslo_config_project: aodh
    filter:http_proxy_to_wsgi:
      paste.filter_factory: oslo_middleware.http_proxy_to_wsgi:HTTPProxyToWSGI.factory
      oslo_config_project: aodh
  policy: {}
  aodh:
    DEFAULT:
      debug: false
      log_config_append: /etc/aodh/logging.conf
    oslo_middleware:
      enable_proxy_headers_parsing: true
    oslo_policy:
      policy_file: /etc/aodh/policy.yaml
    oslo_concurrency:
      lock_path: /var/lock
    database:
      alarm_history_time_to_live: 86400
      max_retries: -1
      # -- Database connection URI. When empty the URI is auto-generated
      ## from endpoints.oslo_db. Set to null to disable auto-generation,
      ## e.g. when using an operator such as mariadb-operator that supplies
      ## the connection string via a mounted configuration snippet.
      connection: ""
    keystone_authtoken:
      auth_version: v3
      auth_type: password
      memcache_security_strategy: ENCRYPT
      service_type: alarming
    service_credentials:
      auth_type: password
      interface: internal
      auth_version: v3
  logging:
    loggers:
      keys:
        - root
        - aodh
    handlers:
      keys:
        - stdout
        - stderr
        - "null"
    formatters:
      keys:
        - context
        - default
    logger_root:
      level: WARNING
      handlers: 'null'
    logger_aodh:
      level: INFO
      handlers:
        - stdout
      qualname: aodh
    logger_amqp:
      level: WARNING
      handlers: stderr
      qualname: amqp
    logger_amqplib:
      level: WARNING
      handlers: stderr
      qualname: amqplib
    logger_eventletwsgi:
      level: WARNING
      handlers: stderr
      qualname: eventlet.wsgi.server
    logger_sqlalchemy:
      level: WARNING
      handlers: stderr
      qualname: sqlalchemy
    logger_boto:
      level: WARNING
      handlers: stderr
      qualname: boto
    handler_null:
      class: logging.NullHandler
      formatter: default
      args: ()
    handler_stdout:
      class: StreamHandler
      args: (sys.stdout,)
      formatter: context
    handler_stderr:
      class: StreamHandler
      args: (sys.stderr,)
      formatter: context
    formatter_context:
      class: oslo_log.formatters.ContextFormatter
    formatter_default:
      format: "%(message)s"

secrets:
  identity:
    admin: aodh-keystone-admin
    aodh: aodh-keystone-user
  oslo_db:
    admin: aodh-db-admin
    aodh: aodh-db-user
  oslo_messaging:
    admin: aodh-rabbitmq-admin
    aodh: aodh-rabbitmq-user
  tls:
    alarming:
      api:
        public: aodh-tls-public
  oci_image_registry:
    aodh: aodh-oci-image-registry

bootstrap:
  enabled: false
  ks_user: aodh
  script: |
    openstack token issue

# typically overriden by environmental
# values, but should include all endpoints
# required by this chart
endpoints:
  cluster_domain_suffix: cluster.local
  local_image_registry:
    name: docker-registry
    namespace: docker-registry
    hosts:
      default: localhost
      internal: docker-registry
      node: localhost
    host_fqdn_override:
      default: null
    port:
      registry:
        node: 5000
  oci_image_registry:
    name: oci-image-registry
    namespace: oci-image-registry
    auth:
      enabled: false
      aodh:
        username: aodh
        password: password
    hosts:
      default: localhost
    host_fqdn_override:
      default: null
    port:
      registry:
        default: null
  identity:
    name: keystone
    auth:
      admin:
        region_name: RegionOne
        username: admin
        password: password
        project_name: admin
        user_domain_name: default
        project_domain_name: default
      aodh:
        role: admin
        region_name: RegionOne
        username: aodh
        password: password
        project_name: service
        user_domain_name: service
        project_domain_name: service
    hosts:
      default: keystone
      internal: keystone-api
    host_fqdn_override:
      default: null
    path:
      default: /v3
    scheme:
      default: 'http'
    port:
      api:
        default: 80
        internal: 5000
  alarming:
    name: aodh
    hosts:
      default: aodh-api
      public: aodh
    host_fqdn_override:
      default: null
      # NOTE: this chart supports TLS for fqdn over-ridden public
      # endpoints using the following format:
      # public:
      #   host: null
      #   tls:
      #     crt: null
      #     key: null
    path:
      default: null
    scheme:
      default: 'http'
    port:
      api:
        default: 8042
        public: 80
  oslo_db:
    auth:
      admin:
        username: root
        password: password
      aodh:
        username: aodh
        password: password
    hosts:
      default: mariadb
    host_fqdn_override:
      default: null
    path: /aodh
    scheme: mysql+pymysql
    port:
      mysql:
        default: 3306
  oslo_cache:
    auth:
      # NOTE: this is used to define the value for keystone
      # authtoken cache encryption key, if not set it will be populated
      # automatically with a random value, but to take advantage of
      # this feature all services should be set to use the same key,
      # and memcache service.
      memcache_secret_key: null
    hosts:
      default: memcached
    host_fqdn_override:
      default: null
    port:
      memcache:
        default: 11211
  oslo_messaging:
    auth:
      admin:
        username: rabbitmq
        password: password
      aodh:
        username: aodh
        password: password
    statefulset:
      replicas: 2
      name: rabbitmq-rabbitmq
    hosts:
      default: rabbitmq
    host_fqdn_override:
      default: null
    path: /aodh
    scheme: rabbit
    port:
      amqp:
        default: 5672
      http:
        default: 15672
  fluentd:
    namespace: null
    name: fluentd
    hosts:
      default: fluentd-logging
    host_fqdn_override:
      default: null
    path:
      default: null
    scheme: 'http'
    port:
      service:
        default: 24224
      metrics:
        default: 24220

network_policy:
  aodh:
    ingress:
      - {}
    egress:
      - {}

manifests:
  configmap_bin: true
  configmap_etc: true
  cron_job_alarms_cleaner: true
  deployment_api: true
  deployment_evaluator: true
  deployment_listener: true
  deployment_notifier: true
  ingress_api: true
  job_bootstrap: true
  job_db_drop: false
  job_db_init: true
  job_image_repo_sync: true
  job_rabbit_init: true
  job_db_sync: true
  job_ks_endpoints: true
  job_ks_service: true
  job_ks_user: true
  network_policy: false
  pdb_api: true
  pod_aodh_test: true
  secret_db: true
  secret_ingress_tls: true
  secret_keystone: true
  secret_rabbitmq: true
  secret_registry: true
  service_api: true
  service_ingress_api: true

# -- Array of extra K8s manifests to deploy
## Note: Supports use of custom Helm templates
extraObjects: []
  # - apiVersion: secrets-store.csi.x-k8s.io/v1
  #   kind: SecretProviderClass
  #   metadata:
  #     name: osh-secrets-store
  #   spec:
  #     provider: aws
  #     parameters:
  #       objects: |
  #         - objectName: "osh"
  #           objectType: "secretsmanager"
  #           jmesPath:
  #               - path: "client_id"
  #                 objectAlias: "client_id"
  #               - path: "client_secret"
  #                 objectAlias: "client_secret"
  #     secretObjects:
  #     - data:
  #       - key: client_id
  #         objectName: client_id
  #       - key: client_secret
  #         objectName: client_secret
  #       secretName: osh-secrets-store
  #       type: Opaque
  #       labels:
  #         app.kubernetes.io/part-of: osh
...


================================================
FILE: barbican/.helmignore
================================================
values_overrides


================================================
FILE: barbican/Chart.yaml
================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

---
apiVersion: v2
appVersion: v1.0.0
description: OpenStack-Helm Barbican
name: barbican
version: 2025.2.0
home: https://docs.openstack.org/barbican/latest/
icon: https://www.openstack.org/themes/openstack/images/project-mascots/Barbican/OpenStack_Project_Barbican_vertical.png
sources:
  - https://opendev.org/openstack/barbican
  - https://opendev.org/openstack/openstack-helm
maintainers:
  - name: OpenStack-Helm Authors

dependencies:
  - name: helm-toolkit
    repository: file://../helm-toolkit
    version: ">= 0.1.0"
...


================================================
FILE: barbican/templates/bin/_barbican-test.sh.tpl
================================================
#!/bin/bash

{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex

openstack secret list

# Come up with a random payload
PAYLOAD=`cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`
echo $PAYLOAD

SECRET=`openstack secret store --name mysecret --payload ${PAYLOAD} | awk ' /href/ {print $5}'`

openstack secret list

openstack secret get $SECRET

openstack secret get --payload $SECRET

openstack secret delete $SECRET

openstack secret list


================================================
FILE: barbican/templates/bin/_barbican.sh.tpl
================================================
#!/bin/bash

{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex
COMMAND="${@:-start}"

function start () {
  exec uwsgi --ini /etc/barbican/barbican-api-uwsgi.ini
}

function stop () {
  kill -TERM 1
}

$COMMAND


================================================
FILE: barbican/templates/bin/_bootstrap.sh.tpl
================================================
#!/bin/bash

{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex
{{ .Values.bootstrap.script | default "echo 'Not Enabled'" }}


================================================
FILE: barbican/templates/bin/_db-sync.sh.tpl
================================================
#!/bin/bash

{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex

barbican-db-manage upgrade

{{- $kek := (index (index .Values.conf.barbican "simple_crypto_plugin" | default dict) "kek") | default "" }}
{{- $old_kek := index .Values.conf.simple_crypto_kek_rewrap "old_kek" | default ""}}
{{- if and (not (empty $old_kek)) (not (empty $kek)) }}
set +x
echo "Ensuring that project KEKs are wrapped with the target global KEK"
/tmp/simple_crypto_kek_rewrap.py --old-keks="$(cat /tmp/old_keks)"
{{- end }}


================================================
FILE: barbican/templates/bin/_simple_crypto_kek_rewrap.py.tpl
================================================
#!/usr/bin/env python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
#  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
#  License for the specific language governing permissions and limitations
#  under the License.

import argparse
import base64
import sys

from cryptography import fernet
from oslo_db.sqlalchemy import session
from sqlalchemy import orm
from sqlalchemy.orm import scoping

from barbican.common import utils
from barbican.model import models
from barbican.plugin.crypto import simple_crypto

# Use config values from simple_crypto
CONF = simple_crypto.CONF


class KekRewrap(object):

    def __init__(self, conf, old_keks):
        self.dry_run = False
        self.db_engine = session.create_engine(conf.database.connection or conf.sql_connection)
        self._session_creator = scoping.scoped_session(
            orm.sessionmaker(
                bind=self.db_engine
            )
        )
        self.crypto_plugin = simple_crypto.SimpleCryptoPlugin(conf)
        self.plugin_name = utils.generate_fullname_for(self.crypto_plugin)

        if hasattr(self.crypto_plugin, 'master_kek'):
            self.encryptor = fernet.Fernet(self.crypto_plugin.master_kek)
        else:
            self.encryptor = fernet.MultiFernet(
                [fernet.Fernet(x) for x in self.crypto_plugin.master_keys]
            )
        self.decryptor = fernet.MultiFernet(
            [fernet.Fernet(x.encode('utf-8')) for x in old_keks]
        )

    def rewrap_kek(self, project, kek):
        db_begin_fn = self.db_session.begin_nested if (
            self.db_session.in_transaction()) else self.db_session.begin
        with db_begin_fn():

            plugin_meta = kek.plugin_meta

            # try to unwrap with the target kek, and if successful, skip
            try:
                if self.encryptor.decrypt(plugin_meta.encode('utf-8')):
                    print('Project KEK {} is already wrapped with target KEK, skipping'.format(kek.id))
                    return
            except fernet.InvalidToken:
                pass

            # decrypt with the old kek
            print('Unwrapping Project KEK {}'.format(kek.id))
            try:
                decrypted_plugin_meta = self.decryptor.decrypt(plugin_meta.encode('utf-8'))
            except fernet.InvalidToken:
                print('Failed to unwrap Project KEK {}'.format(kek.id))
                raise

            # encrypt with the new kek
            print('Rewrapping Project KEK {}'.format(kek.id))
            try:
                new_plugin_meta = self.encryptor.encrypt(decrypted_plugin_meta).decode('utf-8')
            except fernet.InvalidToken:
                print('Failed to wrap Project KEK {}'.format(kek.id))
                raise

            if self.dry_run:
                return

            # Update KEK metadata in DB
            print('Storing updated Project KEK {}'.format(kek.id))
            kek.plugin_meta = new_plugin_meta

    def get_keks_for_project(self, project):
        keks = []
        db_begin_fn = self.db_session.begin_nested if (
            self.db_session.in_transaction()) else self.db_session.begin
        with db_begin_fn() as transaction:
            print('Retrieving KEKs for Project {}'.format(project.external_id))
            query = transaction.session.query(models.KEKDatum)
            query = query.filter_by(project_id=project.id)
            query = query.filter_by(plugin_name=self.plugin_name)

            keks = query.all()

        return keks

    def get_projects(self):
        print('Retrieving all available projects')

        projects = []
        db_begin_fn = self.db_session.begin_nested if (
            self.db_session.in_transaction()) else self.db_session.begin
        with db_begin_fn() as transaction:
            projects = transaction.session.query(models.Project).all()

        return projects

    @property
    def db_session(self):
        return self._session_creator()

    def execute(self, dry_run=True):
        self.dry_run = dry_run
        if self.dry_run:
            print('-- Running in dry-run mode --')

        projects = self.get_projects()
        successes = []
        failures = []

        for project in projects:
            keks = self.get_keks_for_project(project)
            for kek in keks:
                try:
                    self.rewrap_kek(project, kek)
                    successes.append(kek.id)
                except Exception:
                    failures.append(kek.id)

        if successes:
            print('Sucessfully processed the following KEKs:')
            print('\n'.join(successes))

        if failures:
            print('Failed to rewrap the following KEKs:')
            print('\n'.join(failures))
            sys.exit(1)


def main():
    script_desc = 'Utility to re-wrap Project KEKs after rotating the global KEK.'

    parser = argparse.ArgumentParser(description=script_desc)
    parser.add_argument(
        '--dry-run',
        action='store_true',
        help='Displays changes that will be made (Non-destructive)'
    )
    parser.add_argument(
        '--old-keks',
        default="dGhpcnR5X3R3b19ieXRlX2tleWJsYWhibGFoYmxhaGg=",
        help='Old key encryption keys previously used by Simple Crypto Plugin. '
             'A comma separated string of list contain keys '
             '( with formate 32 bytes and base64-encoded ). '
             'First key in list is used for ecnrypting new data. '
             'Additional keys used for decrypting existing data.'
    )
    args = parser.parse_args()

    rewrapper = KekRewrap(CONF, args.old_keks.split(","))
    rewrapper.execute(args.dry_run)


if __name__ == '__main__':
    main()


================================================
FILE: barbican/templates/certificates.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.certificates -}}
{{  dict "envAll" . "service" "key_manager" "type" "internal" | include "helm-toolkit.manifests.certificates" }}
{{- end -}}


================================================
FILE: barbican/templates/configmap-bin.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.configmap_bin }}
{{- $envAll := . }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: barbican-bin
data:
{{- if .Values.images.local_registry.active }}
  image-repo-sync.sh: |
{{- include "helm-toolkit.scripts.image_repo_sync" . | indent 4 }}
{{- end }}
{{- if .Values.bootstrap.enabled }}
  bootstrap.sh: |
{{ tuple "bin/_bootstrap.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
{{- end }}
  barbican-test.sh: |
{{ tuple "bin/_barbican-test.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
  db-init.py: |
{{- include "helm-toolkit.scripts.db_init" . | indent 4 }}
  db-sync.sh: |
{{ tuple "bin/_db-sync.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
  db-drop.py: |
{{- include "helm-toolkit.scripts.db_drop" . | indent 4 }}
  barbican.sh: |
{{ tuple "bin/_barbican.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
  ks-service.sh: |
{{- include "helm-toolkit.scripts.keystone_service" . | indent 4 }}
  ks-endpoints.sh: |
{{- include "helm-toolkit.scripts.keystone_endpoints" . | indent 4 }}
  ks-user.sh: |
{{- include "helm-toolkit.scripts.keystone_user" . | indent 4 }}
  rabbit-init.sh: |
{{- include "helm-toolkit.scripts.rabbit_init" . | indent 4 }}
  simple_crypto_kek_rewrap.py: |
{{ tuple "bin/_simple_crypto_kek_rewrap.py.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
{{- end }}


================================================
FILE: barbican/templates/configmap-etc.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.configmap_etc }}
{{- $envAll := . }}

{{- if empty .Values.conf.barbican.keystone_authtoken.auth_uri -}}
{{- $_ := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup"| set .Values.conf.barbican.keystone_authtoken "auth_uri" -}}
{{- end -}}

{{- if empty .Values.conf.barbican.keystone_authtoken.auth_url -}}
{{- $_ := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup"| set .Values.conf.barbican.keystone_authtoken "auth_url" -}}
{{- end -}}

{{- if empty .Values.conf.barbican.keystone_authtoken.region_name -}}
{{- $_ := set .Values.conf.barbican.keystone_authtoken "region_name" .Values.endpoints.identity.auth.barbican.region_name -}}
{{- end -}}
{{- if empty .Values.conf.barbican.keystone_authtoken.project_name -}}
{{- $_ := set .Values.conf.barbican.keystone_authtoken "project_name" .Values.endpoints.identity.auth.barbican.project_name -}}
{{- end -}}
{{- if empty .Values.conf.barbican.keystone_authtoken.project_domain_name -}}
{{- $_ := set .Values.conf.barbican.keystone_authtoken "project_domain_name" .Values.endpoints.identity.auth.barbican.project_domain_name -}}
{{- end -}}
{{- if empty .Values.conf.barbican.keystone_authtoken.user_domain_name -}}
{{- $_ := set .Values.conf.barbican.keystone_authtoken "user_domain_name" .Values.endpoints.identity.auth.barbican.user_domain_name -}}
{{- end -}}
{{- if empty .Values.conf.barbican.keystone_authtoken.username -}}
{{- $_ := set .Values.conf.barbican.keystone_authtoken "username" .Values.endpoints.identity.auth.barbican.username -}}
{{- end -}}
{{- if empty .Values.conf.barbican.keystone_authtoken.password -}}
{{- $_ := set .Values.conf.barbican.keystone_authtoken "password" .Values.endpoints.identity.auth.barbican.password -}}
{{- end -}}

{{- if empty .Values.conf.barbican.keystone_authtoken.memcached_servers -}}
{{- $_ := tuple "oslo_cache" "internal" "memcache" . | include "helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup" | set .Values.conf.barbican.keystone_authtoken "memcached_servers" -}}
{{- end -}}
{{- if empty .Values.conf.barbican.keystone_authtoken.memcache_secret_key -}}
{{- $_ := set .Values.conf.barbican.keystone_authtoken "memcache_secret_key" ( default ( randAlphaNum 64 ) .Values.endpoints.oslo_cache.auth.memcache_secret_key ) -}}
{{- end -}}

{{- if and (not (kindIs "invalid" .Values.conf.barbican.database.connection)) (empty .Values.conf.barbican.database.connection) -}}
{{- $connection := tuple "oslo_db" "internal" "barbican" "mysql" . | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup" -}}
{{- if .Values.manifests.certificates -}}
{{- $_ := (printf "%s?charset=utf8&ssl_ca=/etc/mysql/certs/ca.crt&ssl_key=/etc/mysql/certs/tls.key&ssl_cert=/etc/mysql/certs/tls.crt&ssl_verify_cert" $connection ) | set .Values.conf.barbican.database "connection" -}}
{{- else -}}
{{- $_ := set .Values.conf.barbican.database "connection" $connection -}}
{{- end -}}
{{- end -}}

{{- if empty .Values.conf.barbican.DEFAULT.transport_url -}}
{{- $_ := tuple "oslo_messaging" "internal" "barbican" "amqp" . | include "helm-toolkit.endpoints.authenticated_transport_endpoint_uri_lookup" | set .Values.conf.barbican.DEFAULT "transport_url" -}}
{{- end -}}

{{- $barbicanPath := index .Values "endpoints" "key_manager" "path" "default" }}
{{- if empty .Values.conf.barbican.DEFAULT.host_href -}}
{{- $_ := tuple "key_manager" "public" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" | trimSuffix $barbicanPath | set .Values.conf.barbican.DEFAULT "host_href" -}}
{{- end -}}

{{- if empty (index .Values.conf.barbican_api_uwsgi.uwsgi "http-socket") -}}
{{- $http_socket_port := tuple "key_manager" "service" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" | toString }}
{{- $http_socket := printf "0.0.0.0:%s" $http_socket_port }}
{{- $_ := set .Values.conf.barbican_api_uwsgi.uwsgi "http-socket" $http_socket -}}
{{- end -}}

{{- if and (empty .Values.conf.logging.handler_fluent) (has "fluent" .Values.conf.logging.handlers.keys) -}}
{{- $fluentd_host := tuple "fluentd" "internal" $envAll | include "helm-toolkit.endpoints.hostname_namespaced_endpoint_lookup" }}
{{- $fluentd_port := tuple "fluentd" "internal" "service" $envAll | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
{{- $fluent_args := printf "('%s.%s', '%s', %s)" .Release.Namespace .Release.Name $fluentd_host $fluentd_port }}
{{- $handler_fluent := dict "class" "fluent.handler.FluentHandler" "formatter" "fluent" "args" $fluent_args -}}
{{- $_ := set .Values.conf.logging "handler_fluent" $handler_fluent -}}
{{- end -}}

{{- if and (empty .Values.conf.logging.formatter_fluent) (has "fluent" .Values.conf.logging.formatters.keys) -}}
{{- $formatter_fluent := dict "class" "oslo_log.formatters.FluentFormatter" -}}
{{- $_ := set .Values.conf.logging "formatter_fluent" $formatter_fluent -}}
{{- end -}}
---
apiVersion: v1
kind: Secret
metadata:
  name: barbican-etc
type: Opaque
data:
  barbican.conf: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.barbican | b64enc }}
  logging.conf: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.logging | b64enc }}
  barbican-api-paste.ini: {{ include "helm-toolkit.utils.to_ini" .Values.conf.paste | b64enc }}
  api_audit_map.conf: {{ include "helm-toolkit.utils.to_ini" .Values.conf.audit_map | b64enc }}
  policy.yaml: {{ toYaml .Values.conf.policy | b64enc }}
  barbican-api-uwsgi.ini: {{ include "helm-toolkit.utils.to_ini" .Values.conf.barbican_api_uwsgi | b64enc }}
  old_keks: {{ index .Values.conf.simple_crypto_kek_rewrap "old_kek" | default "" | b64enc | quote }}
{{- end }}


================================================
FILE: barbican/templates/deployment-api.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- define "probeTemplate" }}
{{- $health_path := tuple "key_manager" "healthcheck" "internal" . | include "helm-toolkit.endpoints.keystone_endpoint_path_lookup" }}
httpGet:
  scheme: {{ tuple "key_manager" "service" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_scheme_lookup" | upper }}
  path: {{ $health_path }}
  port: {{ tuple "key_manager" "service" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
{{- end }}

{{- if .Values.manifests.deployment_api }}
{{- $envAll := . }}

{{- $mounts_barbican_api := .Values.pod.mounts.barbican_api.barbican_api }}
{{- $mounts_barbican_api_init := .Values.pod.mounts.barbican_api.init_container }}
{{- $etcSources := .Values.pod.etcSources.barbican_api }}

{{- $serviceAccountName := "barbican-api" }}
{{ tuple $envAll "api" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: barbican-api
  annotations:
    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
  labels:
{{ tuple $envAll "barbican" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
spec:
  replicas: {{ .Values.pod.replicas.api }}
  selector:
    matchLabels:
{{ tuple $envAll "barbican" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
{{ tuple $envAll | include "helm-toolkit.snippets.kubernetes_upgrades_deployment" | indent 2 }}
  template:
    metadata:
      labels:
{{ tuple $envAll "barbican" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
      annotations:
{{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" | indent 8 }}
        configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }}
        configmap-etc-hash: {{ tuple "configmap-etc.yaml" . | include "helm-toolkit.utils.hash" }}
{{ tuple "barbican_api" . | include "helm-toolkit.snippets.custom_pod_annotations" | indent 8 }}
{{ dict "envAll" $envAll "podName" "barbican-api" "containerNames" (list "init" "barbican-api") | include "helm-toolkit.snippets.kubernetes_mandatory_access_control_annotation" | indent 8 }}
    spec:
{{ dict "envAll" $envAll "application" "barbican" | include "helm-toolkit.snippets.kubernetes_pod_security_context" | indent 6 }}
{{ tuple "barbican_api" . | include "helm-toolkit.snippets.kubernetes_pod_priority_class" | indent 6 }}
{{ tuple "barbican_api" . | include "helm-toolkit.snippets.kubernetes_pod_runtime_class" | indent 6 }}
      serviceAccountName: {{ $serviceAccountName }}
      affinity:
{{ tuple $envAll "barbican" "api" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
      nodeSelector:
        {{ .Values.labels.api.node_selector_key }}: {{ .Values.labels.api.node_selector_value }}
{{ if $envAll.Values.pod.tolerations.barbican.enabled }}
{{ tuple $envAll "barbican" | include "helm-toolkit.snippets.kubernetes_tolerations" | indent 6 }}
{{ end }}
      initContainers:
{{ tuple $envAll "api" $mounts_barbican_api_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
      containers:
        - name: barbican-api
{{ tuple $envAll "barbican_api" | include "helm-toolkit.snippets.image" | indent 10 }}
{{ tuple $envAll $envAll.Values.pod.resources.api | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
{{ dict "envAll" $envAll "application" "barbican" "container" "barbican_api" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 10 }}
{{ dict "envAll" $envAll "component" "api" "container" "barbican-api" "type" "readiness" "probeTemplate" (include "probeTemplate" $envAll | fromYaml) | include "helm-toolkit.snippets.kubernetes_probe" | indent 10 }}
{{ dict "envAll" $envAll "component" "api" "container" "barbican-api" "type" "liveness" "probeTemplate" (include "probeTemplate" $envAll | fromYaml) | include "helm-toolkit.snippets.kubernetes_probe" | indent 10 }}
          command:
            - /tmp/barbican.sh
            - start
          env:
{{- if or .Values.manifests.certificates .Values.tls.identity }}
            - name: REQUESTS_CA_BUNDLE
              value: "/etc/barbican/certs/ca.crt"
{{- end }}
          lifecycle:
            preStop:
              exec:
                command:
                  - /tmp/barbican.sh
                  - stop
          ports:
            - name: b-api
              containerPort: {{ tuple "key_manager" "service" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
          volumeMounts:
            - name: pod-tmp
              mountPath: /tmp
            - name: oslo-lock-path
              mountPath: {{ .Values.conf.barbican.oslo_concurrency.lock_path }}
            - name: etcbarbican
              mountPath: /etc/barbican
            - name: barbican-etc
              mountPath: /etc/barbican/barbican-api-uwsgi.ini
              subPath: barbican-api-uwsgi.ini
              readOnly: true
            - name: barbican-etc
              mountPath: /etc/barbican/barbican.conf
              subPath: barbican.conf
              readOnly: true
            - name: barbican-etc-snippets
              mountPath: /etc/barbican/barbican.conf.d/
              readOnly: true
            {{- if .Values.conf.barbican.DEFAULT.log_config_append }}
            - name: barbican-etc
              mountPath: {{ .Values.conf.barbican.DEFAULT.log_config_append }}
              subPath: {{ base .Values.conf.barbican.DEFAULT.log_config_append }}
              readOnly: true
            {{- end }}
            - name: barbican-etc
              mountPath: /etc/barbican/api_audit_map.conf
              subPath: api_audit_map.conf
              readOnly: true
            - name: barbican-etc
              mountPath: /etc/barbican/barbican-api-paste.ini
              subPath: barbican-api-paste.ini
              readOnly: true
            - name: barbican-etc
              mountPath: /etc/barbican/policy.yaml
              subPath: policy.yaml
              readOnly: true
            - name: barbican-bin
              mountPath: /tmp/barbican.sh
              subPath: barbican.sh
              readOnly: true
{{- dict "enabled" .Values.tls.oslo_db "name" .Values.endpoints.oslo_db.auth.admin.secret.tls.internal "path" "/etc/mysql/certs" | include "helm-toolkit.snippets.tls_volume_mount" | indent 12 }}
{{- dict "enabled" .Values.tls.identity "name" .Values.secrets.tls.key_manager.api.internal "path" "/etc/barbican/certs" | include "helm-toolkit.snippets.tls_volume_mount" | indent 12 }}
{{- dict "enabled" $envAll.Values.tls.oslo_messaging "name" $envAll.Values.endpoints.oslo_messaging.auth.admin.secret.tls.internal "path" "/etc/rabbitmq/certs" | include "helm-toolkit.snippets.tls_volume_mount" | indent 12 }}

{{ if $mounts_barbican_api.volumeMounts }}{{ toYaml $mounts_barbican_api.volumeMounts | indent 12 }}{{ end }}
      volumes:
        - name: pod-tmp
          emptyDir: {}
        - name: oslo-lock-path
          emptyDir: {}
        - name: etcbarbican
          emptyDir: {}
        - name: barbican-etc
          secret:
            secretName: barbican-etc
            defaultMode: 0444
        - name: barbican-etc-snippets
{{- if $etcSources }}
          projected:
            sources:
{{ toYaml $etcSources | indent 14 }}
{{- else }}
          emptyDir: {}
{{ end }}
        - name: barbican-bin
          configMap:
            name: barbican-bin
            defaultMode: 0555
{{- dict "enabled" .Values.tls.oslo_db "name" .Values.endpoints.oslo_db.auth.admin.secret.tls.internal | include "helm-toolkit.snippets.tls_volume" | indent 8 }}
{{- dict "enabled" .Values.tls.identity "name" .Values.secrets.tls.key_manager.api.internal | include "helm-toolkit.snippets.tls_volume" | indent 8 }}
{{- dict "enabled" $envAll.Values.tls.oslo_messaging "name" $envAll.Values.endpoints.oslo_messaging.auth.admin.secret.tls.internal | include "helm-toolkit.snippets.tls_volume" | indent 8 }}

{{ if $mounts_barbican_api.volumes }}{{ toYaml $mounts_barbican_api.volumes | indent 8 }}{{ end }}
{{- end }}


================================================
FILE: barbican/templates/extra-manifests.yaml
================================================
{{ range .Values.extraObjects }}
---
{{ if typeIs "string" . }}
    {{- tpl . $ }}
{{- else }}
    {{- tpl (toYaml .) $ }}
{{- end }}
{{ end }}


================================================
FILE: barbican/templates/ingress-api.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if and .Values.manifests.ingress_api .Values.network.api.ingress.public }}
{{- $ingressOpts := dict "envAll" . "backendServiceType" "key_manager" "backendPort" "b-api" -}}
{{ $ingressOpts | include "helm-toolkit.manifests.ingress" }}
{{- end }}


================================================
FILE: barbican/templates/job-bootstrap.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- define "metadata.annotations.job.bootstrap" }}
helm.sh/hook: post-install,post-upgrade
helm.sh/hook-weight: "5"
{{- end }}

{{- if and .Values.manifests.job_bootstrap .Values.bootstrap.enabled }}
{{- $bootstrapJob := dict "envAll" . "serviceName" "barbican" "keystoneUser" .Values.bootstrap.ks_user "logConfigFile" .Values.conf.barbican.DEFAULT.log_config_append "jobAnnotations" (include "metadata.annotations.job.bootstrap" . | fromYaml) -}}
{{- if .Values.pod.tolerations.barbican.enabled -}}
{{- $_ := set $bootstrapJob "tolerationsEnabled" true -}}
{{- end -}}
{{- if or .Values.manifests.certificates .Values.tls.identity -}}
{{- $_ := set $bootstrapJob "tlsSecret" .Values.secrets.tls.key_manager.api.internal -}}
{{- end -}}
{{ $bootstrapJob | include "helm-toolkit.manifests.job_bootstrap" }}
{{- end }}


================================================
FILE: barbican/templates/job-db-drop.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.job_db_drop }}
{{- $dbDropJob := dict "envAll" . "serviceName" "barbican" -}}
{{- if .Values.manifests.certificates -}}
{{- $_ := set $dbDropJob "dbAdminTlsSecret" .Values.endpoints.oslo_db.auth.admin.secret.tls.internal -}}
{{- end -}}
{{- if .Values.pod.tolerations.barbican.enabled -}}
{{- $_ := set $dbDropJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $dbDropJob | include "helm-toolkit.manifests.job_db_drop_mysql" }}
{{- end }}


================================================
FILE: barbican/templates/job-db-init.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- define "metadata.annotations.job.db_init" }}
helm.sh/hook: post-install,post-upgrade
helm.sh/hook-weight: "-5"
{{- end }}

{{- if .Values.manifests.job_db_init }}
{{- $dbInitJob := dict "envAll" . "serviceName" "barbican" -}}
{{- if .Values.manifests.certificates -}}
{{- $_ := set $dbInitJob "dbAdminTlsSecret" .Values.endpoints.oslo_db.auth.admin.secret.tls.internal -}}
{{- end -}}
{{- $_ := set $dbInitJob "jobAnnotations" (include "metadata.annotations.job.db_init" . | fromYaml) }}
{{- if .Values.pod.tolerations.barbican.enabled -}}
{{- $_ := set $dbInitJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $dbInitJob | include "helm-toolkit.manifests.job_db_init_mysql" }}
{{- end }}


================================================
FILE: barbican/templates/job-db-sync.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- define "metadata.annotations.job.db_sync" }}
helm.sh/hook: post-install,post-upgrade
helm.sh/hook-weight: "-4"
{{- end }}

{{- $podVolMounts := .Values.pod.mounts.barbican_db_sync.barbican_db_sync.volumeMounts | default list }}
{{- $podVolMounts = append $podVolMounts (dict "name" "db-sync-sh" "mountPath" "/tmp/simple_crypto_kek_rewrap.py" "subPath" "simple_crypto_kek_rewrap.py" "readOnly" true) }}
{{- $podVolMounts = append $podVolMounts (dict "name" "db-sync-conf" "mountPath" "/tmp/old_keks" "subPath" "old_keks" "readOnly" true) }}

{{- if .Values.manifests.job_db_sync }}
{{- $dbSyncJob := dict "envAll" . "serviceName" "barbican" "podVolMounts" $podVolMounts "podVols" .Values.pod.mounts.barbican_db_sync.barbican_db_sync.volumes "jobAnnotations" (include "metadata.annotations.job.db_sync" . | fromYaml) -}}
{{- if .Values.manifests.certificates -}}
{{- $_ := set $dbSyncJob "dbAdminTlsSecret" .Values.endpoints.oslo_db.auth.admin.secret.tls.internal -}}
{{- end -}}
{{- if .Values.pod.tolerations.barbican.enabled -}}
{{- $_ := set $dbSyncJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $dbSyncJob | include "helm-toolkit.manifests.job_db_sync" }}
{{- end }}


================================================
FILE: barbican/templates/job-image-repo-sync.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- define "metadata.annotations.job.repo_sync" }}
helm.sh/hook: post-install,post-upgrade
{{- end }}

{{- if and .Values.manifests.job_image_repo_sync .Values.images.local_registry.active }}
{{- $imageRepoSyncJob := dict "envAll" . "serviceName" "barbican" "jobAnnotations" (include "metadata.annotations.job.repo_sync" . | fromYaml) -}}
{{- if .Values.pod.tolerations.barbican.enabled -}}
{{- $_ := set $imageRepoSyncJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $imageRepoSyncJob | include "helm-toolkit.manifests.job_image_repo_sync" }}
{{- end }}


================================================
FILE: barbican/templates/job-ks-endpoints.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- define "metadata.annotations.job.ks_endpoints" }}
helm.sh/hook: post-install,post-upgrade
helm.sh/hook-weight: "-2"
{{- end }}

{{- if .Values.manifests.job_ks_endpoints }}
{{- $ksServiceJob := dict "envAll" . "serviceName" "barbican" "serviceTypes" ( tuple "key-manager" ) "jobAnnotations" (include "metadata.annotations.job.ks_endpoints" . | fromYaml) -}}
{{- if .Values.pod.tolerations.barbican.enabled -}}
{{- $_ := set $ksServiceJob "tolerationsEnabled" true -}}
{{- end -}}
{{- if or .Values.manifests.certificates .Values.tls.identity -}}
{{- $_ := set $ksServiceJob "tlsSecret" .Values.secrets.tls.key_manager.api.internal -}}
{{- end -}}
{{ $ksServiceJob | include "helm-toolkit.manifests.job_ks_endpoints" }}
{{- end }}


================================================
FILE: barbican/templates/job-ks-service.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- define "metadata.annotations.job.ks_service" }}
helm.sh/hook: post-install,post-upgrade
helm.sh/hook-weight: "-3"
{{- end }}

{{- if .Values.manifests.job_ks_service }}
{{- $ksServiceJob := dict "envAll" . "serviceName" "barbican" "serviceTypes" ( tuple "key-manager" ) "jobAnnotations" (include "metadata.annotations.job.ks_service" . | fromYaml) -}}
{{- if .Values.pod.tolerations.barbican.enabled -}}
{{- $_ := set $ksServiceJob "tolerationsEnabled" true -}}
{{- end -}}
{{- if or .Values.manifests.certificates .Values.tls.identity -}}
{{- $_ := set $ksServiceJob "tlsSecret" .Values.secrets.tls.key_manager.api.internal -}}
{{- end -}}
{{ $ksServiceJob | include "helm-toolkit.manifests.job_ks_service" }}
{{- end }}


================================================
FILE: barbican/templates/job-ks-user.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- define "metadata.annotations.job.ks_user" }}
helm.sh/hook: post-install,post-upgrade
helm.sh/hook-weight: "-1"
{{- end }}

{{- if .Values.manifests.job_ks_user }}
{{- $ksUserJob := dict "envAll" . "serviceName" "barbican" "jobAnnotations" (include "metadata.annotations.job.ks_user" . | fromYaml) -}}
{{- if .Values.pod.tolerations.barbican.enabled -}}
{{- $_ := set $ksUserJob "tolerationsEnabled" true -}}
{{- end -}}
{{- if or .Values.manifests.certificates .Values.tls.identity -}}
{{- $_ := set $ksUserJob "tlsSecret" .Values.secrets.tls.key_manager.api.internal -}}
{{- end -}}
{{ $ksUserJob | include "helm-toolkit.manifests.job_ks_user" }}
{{- end }}


================================================
FILE: barbican/templates/job-rabbit-init.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- define "metadata.annotations.job.rabbit_init" }}
helm.sh/hook: post-install,post-upgrade
helm.sh/hook-weight: "-4"
{{- end }}

{{- if .Values.manifests.job_rabbit_init }}
{{- $rmqUserJob := dict "envAll" . "serviceName" "barbican" "jobAnnotations" (include "metadata.annotations.job.rabbit_init" . | fromYaml) -}}
{{- if and .Values.tls.oslo_messaging .Values.endpoints.oslo_messaging.auth.admin.secret.tls.internal -}}
{{- $_ := set $rmqUserJob "tlsSecret" .Values.endpoints.oslo_messaging.auth.admin.secret.tls.internal -}}
{{- end -}}
{{- if .Values.pod.tolerations.barbican.enabled -}}
{{- $_ := set $rmqUserJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $rmqUserJob | include "helm-toolkit.manifests.job_rabbit_init" }}
{{- end }}


================================================
FILE: barbican/templates/network_policy.yaml
================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

{{- if .Values.manifests.network_policy -}}
{{- $netpol_opts := dict "envAll" . "name" "application" "label" "barbican" -}}
{{ $netpol_opts | include "helm-toolkit.manifests.kubernetes_network_policy" }}
{{- end -}}


================================================
FILE: barbican/templates/pdb-api.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.pdb_api }}
{{- $envAll := . }}
---
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: barbican-api
spec:
  minAvailable: {{ .Values.pod.lifecycle.disruption_budget.api.min_available }}
  selector:
    matchLabels:
{{ tuple $envAll "barbican" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 6 }}
{{- end }}


================================================
FILE: barbican/templates/pod-test.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.pod_test }}
{{- $envAll := . }}
{{- $dependencies := .Values.dependencies.static.tests }}

{{- $mounts_barbican_tests := .Values.pod.mounts.barbican_tests.barbican_tests }}
{{- $mounts_barbican_tests_init := .Values.pod.mounts.barbican_tests.init_container }}

{{- $serviceAccountName := print .Release.Name "-test" }}
{{ tuple $envAll "tests" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
---
apiVersion: v1
kind: Pod
metadata:
  name: "{{.Release.Name}}-test"
  labels:
{{ tuple $envAll "barbican" "test" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
  annotations:
    "helm.sh/hook": test-success
    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
{{ dict "envAll" $envAll "podName" "barbican-test" "containerNames" (list "init" "barbican-test") | include "helm-toolkit.snippets.kubernetes_mandatory_access_control_annotation" | indent 4 }}
spec:
{{ tuple "barbican_tests" . | include "helm-toolkit.snippets.kubernetes_pod_priority_class" | indent 2 }}
{{ tuple "barbican_tests" . | include "helm-toolkit.snippets.kubernetes_pod_runtime_class" | indent 2 }}
  serviceAccountName: {{ $serviceAccountName }}
{{ dict "envAll" $envAll "application" "test" | include "helm-toolkit.snippets.kubernetes_pod_security_context" | indent 2 }}
  nodeSelector:
    {{ .Values.labels.test.node_selector_key }}: {{ .Values.labels.test.node_selector_value }}
{{ if $envAll.Values.pod.tolerations.barbican.enabled }}
{{ tuple $envAll "barbican" | include "helm-toolkit.snippets.kubernetes_tolerations" | indent 2 }}
{{ end }}
  restartPolicy: Never
  initContainers:
{{ tuple $envAll "tests" $mounts_barbican_tests_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 4 }}
  containers:
    - name: barbican-test
{{ tuple $envAll "scripted_test" | include "helm-toolkit.snippets.image" | indent 6 }}
{{ dict "envAll" $envAll "application" "test" "container" "barbican_test" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 6 }}
      env:
{{- with $env := dict "ksUserSecret" .Values.secrets.identity.admin }}
{{- include "helm-toolkit.snippets.keystone_openrc_env_vars" $env | indent 8 }}
{{- end }}
      command:
        - /tmp/barbican-test.sh
      volumeMounts:
        - name: pod-tmp
          mountPath: /tmp
        - name: barbican-bin
          mountPath: /tmp/barbican-test.sh
          subPath: barbican-test.sh
          readOnly: true
{{ if $mounts_barbican_tests.volumeMounts }}{{ toYaml $mounts_barbican_tests.volumeMounts | indent 8 }}{{ end }}
  volumes:
    - name: pod-tmp
      emptyDir: {}
    - name: barbican-bin
      configMap:
        name: barbican-bin
        defaultMode: 0555
{{ if $mounts_barbican_tests.volumes }}{{ toYaml $mounts_barbican_tests.volumes | indent 4 }}{{ end }}
{{- end }}


================================================
FILE: barbican/templates/secret-db.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.secret_db }}
{{- $envAll := . }}
{{- range $key1, $userClass := tuple "admin" "barbican" }}
{{- $secretName := index $envAll.Values.secrets.oslo_db $userClass }}
{{- $connection := tuple "oslo_db" "internal" $userClass "mysql" $envAll | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup" }}
---
apiVersion: v1
kind: Secret
metadata:
  name: {{ $secretName }}
  annotations:
{{ tuple "oslo_db" $userClass $envAll | include "helm-toolkit.snippets.custom_secret_annotations" | indent 4 }}
type: Opaque
data:
{{- if $envAll.Values.manifests.certificates }}
  DB_CONNECTION: {{ (printf "%s?charset=utf8&ssl_ca=/etc/mysql/certs/ca.crt&ssl_key=/etc/mysql/certs/tls.key&ssl_cert=/etc/mysql/certs/tls.crt&ssl_verify_cert" $connection ) | b64enc -}}
{{- else }}
  DB_CONNECTION: {{  $connection | b64enc -}}
{{- end }}
{{- end }}
{{- end }}


================================================
FILE: barbican/templates/secret-ingress-tls.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.secret_ingress_tls }}
{{- include "helm-toolkit.manifests.secret_ingress_tls" ( dict "envAll" . "backendServiceType" "key_manager" ) }}
{{- end }}


================================================
FILE: barbican/templates/secret-keystone.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.secret_keystone }}
{{- $envAll := . }}
{{- range $key1, $userClass := tuple "admin" "barbican" }}
{{- $secretName := index $envAll.Values.secrets.identity $userClass }}
---
apiVersion: v1
kind: Secret
metadata:
  name: {{ $secretName }}
  annotations:
{{ tuple "identity" $userClass $envAll | include "helm-toolkit.snippets.custom_secret_annotations" | indent 4 }}
type: Opaque
data:
{{- tuple $userClass "internal" $envAll | include "helm-toolkit.snippets.keystone_secret_openrc" | indent 2 -}}
{{- end }}
{{- end }}


================================================
FILE: barbican/templates/secret-rabbitmq.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.secret_rabbitmq }}
{{- $envAll := . }}
{{- range $key1, $userClass := tuple "admin" "barbican" }}
{{- $secretName := index $envAll.Values.secrets.oslo_messaging $userClass }}
---
apiVersion: v1
kind: Secret
metadata:
  name: {{ $secretName }}
  annotations:
{{ tuple "oslo_messaging" $userClass $envAll | include "helm-toolkit.snippets.custom_secret_annotations" | indent 4 }}
type: Opaque
data:
  RABBITMQ_CONNECTION: {{ tuple "oslo_messaging" "internal" $userClass "http" $envAll | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup" | b64enc }}
{{- end }}
{{- end }}


================================================
FILE: barbican/templates/secret-registry.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if and .Values.manifests.secret_registry .Values.endpoints.oci_image_registry.auth.enabled }}
{{ include "helm-toolkit.manifests.secret_registry" ( dict "envAll" . "registryUser" .Chart.Name ) }}
{{- end }}


================================================
FILE: barbican/templates/service-api.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.service_api }}
{{- $envAll := . }}
---
apiVersion: v1
kind: Service
metadata:
  name: {{ tuple "key-manager" "internal" . | include "helm-toolkit.endpoints.hostname_short_endpoint_lookup" }}
spec:
  ports:
  - name: b-api
    port: {{ tuple "key-manager" "service" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
    {{ if .Values.network.api.node_port.enabled }}
    nodePort: {{ .Values.network.api.node_port.port }}
    {{ end }}
  selector:
{{ tuple $envAll "barbican" "api" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
  {{ if .Values.network.api.node_port.enabled }}
  type: NodePort
  {{ if .Values.network.api.external_policy_local }}
  externalTrafficPolicy: Local
  {{ end }}
  {{ end }}
{{- end }}


================================================
FILE: barbican/templates/service-ingress-api.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if and .Values.manifests.service_ingress_api .Values.network.api.ingress.public }}
{{- $serviceIngressOpts := dict "envAll" . "backendServiceType" "key-manager" -}}
{{ $serviceIngressOpts | include "helm-toolkit.manifests.service_ingress" }}
{{- end }}


================================================
FILE: barbican/values.yaml
================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Default values for barbican.
# This is a YAML-formatted file.
# Declare name/value pairs to be passed into your templates.
# name: value

---
labels:
  api:
    node_selector_key: openstack-control-plane
    node_selector_value: enabled
  job:
    node_selector_key: openstack-control-plane
    node_selector_value: enabled
  test:
    node_selector_key: openstack-control-plane
    node_selector_value: enabled

release_group: null

images:
  tags:
    bootstrap: quay.io/airshipit/openstack-client:2025.1-ubuntu_noble
    dep_check: quay.io/airshipit/kubernetes-entrypoint:latest-ubuntu_jammy
    scripted_test: quay.io/airshipit/openstack-client:2025.1-ubuntu_noble
    db_init: quay.io/airshipit/openstack-client:2025.1-ubuntu_noble
    barbican_db_sync: quay.io/airshipit/barbican:2025.1-ubuntu_noble
    db_drop: quay.io/airshipit/openstack-client:2025.1-ubuntu_noble
    ks_user: quay.io/airshipit/openstack-client:2025.1-ubuntu_noble
    ks_service: quay.io/airshipit/openstack-client:2025.1-ubuntu_noble
    ks_endpoints: quay.io/airshipit/openstack-client:2025.1-ubuntu_noble
    barbican_api: quay.io/airshipit/barbican:2025.1-ubuntu_noble
    rabbit_init: docker.io/rabbitmq:3.13-management
    image_repo_sync: docker.io/docker:17.07.0
  pull_policy: "IfNotPresent"
  local_registry:
    active: false
    exclude:
      - dep_check
      - image_repo_sync

pod:
  security_context:
    barbican:
      pod:
        runAsUser: 42424
      container:
        barbican_api:
          allowPrivilegeEscalation: false
          readOnlyRootFilesystem: true
    test:
      pod:
        runAsUser: 42424
      container:
        barbican_test:
          allowPrivilegeEscalation: false
          readOnlyRootFilesystem: true
  affinity:
    anti:
      type:
        default: preferredDuringSchedulingIgnoredDuringExecution
      topologyKey:
        default: kubernetes.io/hostname
      weight:
        default: 10
  tolerations:
    barbican:
      enabled: false
      tolerations:
        - key: node-role.kubernetes.io/master
          operator: Exists
          effect: NoSchedule
        - key: node-role.kubernetes.io/control-plane
          operator: Exists
          effect: NoSchedule
  mounts:
    barbican_api:
      init_container: null
      barbican_api:
        volumeMounts:
        volumes:
    barbican_bootstrap:
      init_container: null
      barbican_bootstrap:
        volumeMounts:
        volumes:
    barbican_tests:
      init_container: null
      barbican_tests:
        volumeMounts:
        volumes:
    barbican_db_sync:
      barbican_db_sync:
        volumeMounts:
        volumes:
  # -- This allows users to add Kubernetes Projected Volumes to be mounted at /etc/barbican/barbican.conf.d/
  ## This is a list of projected volume source objects for each deployment/statefulset/daemonset/cronjob
  ## https://kubernetes.io/docs/concepts/storage/projected-volumes/
  etcSources:
    barbican_api: []
    barbican_db_sync: []
  replicas:
    api: 1
  lifecycle:
    upgrades:
      deployments:
        revision_history: 3
        pod_replacement_strategy: RollingUpdate
        rolling_update:
          max_unavailable: 1
          max_surge: 3
    disruption_budget:
      api:
        min_available: 0
  probes:
    api:
      barbican-api:
        readiness:
          enabled: true
          params:
            periodSeconds: 10
            timeoutSeconds: 5
        liveness:
          enabled: true
          params:
            initialDelaySeconds: 5
            periodSeconds: 10
            timeoutSeconds: 5
  resources:
    enabled: false
    api:
      requests:
        memory: "128Mi"
        cpu: "100m"
      limits:
        memory: "1024Mi"
        cpu: "2000m"
    jobs:
      bootstrap:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      db_init:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      db_sync:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      db_drop:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      rabbit_init:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      ks_endpoints:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      ks_service:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      ks_user:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      tests:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      image_repo_sync:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"

network:
  api:
    ingress:
      public: true
      classes:
        namespace: "ingress-openstack"
        cluster: "ingress-cluster"
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /
        haproxy.org/path-rewrite: /
    external_policy_local: false
    node_port:
      enabled: false
      port: 30486

network_policy:
  barbican:
    ingress:
      - {}
    egress:
      - {}

bootstrap:
  enabled: false
  ks_user: barbican
  script: |
    openstack token issue

dependencies:
  dynamic:
    common:
      local_image_registry:
        jobs:
          - barbican-image-repo-sync
        services:
          - endpoint: node
            service: local_image_registry
  static:
    api:
      jobs:
        - barbican-db-sync
        - barbican-ks-user
        - barbican-ks-endpoints
        - barbican-rabbit-init
      services:
        - endpoint: internal
          service: oslo_db
        - endpoint: internal
          service: identity
        - endpoint: internal
          service: oslo_messaging
    db_drop:
      services:
        - endpoint: internal
          service: oslo_db
    db_init:
      services:
        - endpoint: internal
          service: oslo_db
    db_sync:
      jobs:
        - barbican-db-init
      services:
        - endpoint: internal
          service: oslo_db
    image_repo_sync:
      services:
        - endpoint: internal
          service: local_image_registry
    ks_endpoints:
      jobs:
        - barbican-ks-service
      services:
        - endpoint: internal
          service: identity
    ks_service:
      services:
        - endpoint: internal
          service: identity
    ks_user:
      services:
        - endpoint: internal
          service: identity
    rabbit_init:
      services:
        - endpoint: internal
          service: oslo_messaging

conf:
  paste:
    composite:main:
      use: egg:Paste#urlmap
      /: barbican_version
      /v1: barbican-api-keystone
      /healthcheck: healthcheck
    pipeline:barbican_version:
      pipeline: cors http_proxy_to_wsgi versionapp
    pipeline:barbican_api:
      pipeline: cors http_proxy_to_wsgi unauthenticated-context apiapp
    pipeline:barbican-profile:
      pipeline: cors http_proxy_to_wsgi unauthenticated-context egg:Paste#cgitb egg:Paste#httpexceptions profile apiapp
    pipeline:barbican-api-keystone:
      pipeline: cors http_proxy_to_wsgi authtoken context apiapp
    pipeline:barbican-api-keystone-audit:
      pipeline: http_proxy_to_wsgi authtoken context audit apiapp
    app:apiapp:
      paste.app_factory: barbican.api.app:create_main_app
    app:versionapp:
      paste.app_factory: barbican.api.app:create_version_app
    app:healthcheck:
      paste.app_factory: oslo_middleware:Healthcheck.app_factory
      backends: disable_by_file
      disable_by_file_path: /etc/barbican/healthcheck_disable
    filter:simple:
      paste.filter_factory: barbican.api.middleware.simple:SimpleFilter.factory
    filter:unauthenticated-context:
      paste.filter_factory: barbican.api.middleware.context:UnauthenticatedContextMiddleware.factory
    filter:context:
      paste.filter_factory: barbican.api.middleware.context:ContextMiddleware.factory
    filter:audit:
      paste.filter_factory: keystonemiddleware.audit:filter_factory
      audit_map_file: /etc/barbican/api_audit_map.conf
    filter:authtoken:
      paste.filter_factory: keystonemiddleware.auth_token:filter_factory
    filter:profile:
      use: egg:repoze.profile
      log_filename: myapp.profile
      cachegrind_filename: cachegrind.out.myapp
      discard_first_request: true
      path: /__profile__
      flush_at_shutdown: true
      unwind: false
    filter:cors:
      paste.filter_factory: oslo_middleware.cors:filter_factory
      oslo_config_project: barbican
    filter:http_proxy_to_wsgi:
      paste.filter_factory: oslo_middleware:HTTPProxyToWSGI.factory
  policy: {}
  audit_map:
    DEFAULT:
      # default target endpoint type
      # should match the endpoint type defined in service catalog
      target_endpoint_type: key-manager
    custom_actions:
      # map urls ending with specific text to a unique action
      # Don't need custom mapping for other resource operations
      # Note: action should match action names defined in CADF taxonomy
      acl/get: read
    path_keywords:
      # path of api requests for CADF target typeURI
      # Just need to include top resource path to identify class of resources
      secrets: null
      containers: null
      orders: null
      cas: "None"
      quotas: null
      project-quotas: null
    service_endpoints:
      # map endpoint type defined in service catalog to CADF typeURI
      key-manager: service/security/keymanager
  barbican_api_uwsgi:
    uwsgi:
      add-header: "Connection: close"
      buffer-size: 65535
      die-on-term: true
      enable-threads: true
      exit-on-reload: false
      hook-master-start: unix_signal:15 gracefully_kill_them_all
      lazy-apps: true
      log-x-forwarded-for: true
      master: true
      procname-prefix-spaced: "barbiacan-api:"
      route-user-agent: '^kube-probe.* donotlog:'
      thunder-lock: true
      worker-reload-mercy: 80
      wsgi-file: /var/lib/openstack/bin/barbican-wsgi-api
      processes: 1
      stats: 0.0.0.0:1717
      stats-http: true
  barbican:
    DEFAULT:
      transport_url: null
      log_config_append: /etc/barbican/logging.conf
    keystone_authtoken:
      auth_type: password
      auth_version: v3
      memcache_security_strategy: ENCRYPT
      memcache_secret_key: null
      service_type: key-manager
    database:
      max_retries: -1
      # -- Database connection URI. When empty the URI is auto-generated
      ## from endpoints.oslo_db. Set to null to disable auto-generation,
      ## e.g. when using an operator such as mariadb-operator that supplies
      ## the connection string via a mounted configuration snippet.
      connection: ""
    barbican_api:
      # NOTE(portdirect): the bind port should not be defined, and is manipulated
      # via the endpoints section.
      bind_port: null
    oslo_policy:
      policy_file: /etc/barbican/policy.yaml
    oslo_concurrency:
      lock_path: /var/lock
    # When using the simple_crypto_plugin, a kek must be provided as:
    #   .conf.barbican.simple_crypto_plugin.kek
    # If no kek is provided, barbican will use a well-known default.
    # If upgrading the chart with a new kek, the old kek must be provided in:
    #   .conf.simple_crypto_plugin_rewrap.old_kek
    # Please refer to the .conf.simple_crypto_key_rewrap section below.
    # The barbican defaults are included here as a reference:
    #   secretstore:
    #     enabled_secretstore_plugins:
    #       - store_crypto
    #   crypto:
    #     enabled_crypto_plugins:
    #       - simple_crypto
    #   simple_crypto_plugin:
    #     # The kek should be a 32-byte value which is base64 encoded.
    #     # First key is used for ecnrypting new data
    #     kek: "dGhpcnR5X3R3b19ieXRlX2tleWJsYWhibGFoYmxhaGg="
    #     # Additional keys used for decrypting existing data
    #     kek: "xCDpcnR5X3R3b19ieXRlX2tleWJsYWhibGFoYmxhaGg="
  # KEK rotation for the simple_crypto plugin
  simple_crypto_kek_rewrap:
    # To allow for chart upgrades when modifying the Key Encryption Keys, the
    # db-sync job can rewrap the existing project keys with the new kek, leaving
    # each secret’s encrypted data unchanged.

    # This feature is enabled automatically, if a kek is specified at:
    #   .conf.barbican.simple_crypto_plugin.kek
    # and the previous kek is also specified at:
    #   .conf.simple_crypto_kek_rewrap.old_kek

    # The project keys are decrypted with 'old_kek' and re-encrypted with the
    # target kek (as defined in barbican.conf).
    # This resembles the lightweight rotation described here, which was never
    # implemented for the simple crypto plugin:
    # https://specs.openstack.org/openstack/barbican-specs/specs/liberty/add-crypto-mkek-rotation-support-lightweight.html

    # The KEK value "dGhpcnR5X3R3b19ieXRlX2tleWJsYWhibGFoYmxhaGg=" matches the
    # plugin default, and is retained here for convenience, in case the chart was
    # previously installed without explicitly specifying a kek.
    # old_kek allows commna-separated string for keks
    # old_kek:
    #   # First key is used for ecnrypting new data
    #   # Additional keys used for decrypting existing data
    #   - "dGhpcnR5X3R3b19ieXRlX2tleWJsYWhibGFoYmxhaGg=,dDDpcnR5X3R3b19ieXRlX2tleWJsYWhibGFoYmxhaGg="
    old_kek: "dGhpcnR5X3R3b19ieXRlX2tleWJsYWhibGFoYmxhaGg="
  logging:
    loggers:
      keys:
        - root
        - barbican
    handlers:
      keys:
        - stdout
        - stderr
        - "null"
    formatters:
      keys:
        - context
        - default
    logger_root:
      level: WARNING
      handlers: 'null'
    logger_barbican:
      level: INFO
      handlers:
        - stdout
      qualname: barbican
    logger_amqp:
      level: WARNING
      handlers: stderr
      qualname: amqp
    logger_amqplib:
      level: WARNING
      handlers: stderr
      qualname: amqplib
    logger_eventletwsgi:
      level: WARNING
      handlers: stderr
      qualname: eventlet.wsgi.server
    logger_sqlalchemy:
      level: WARNING
      handlers: stderr
      qualname: sqlalchemy
    logger_boto:
      level: WARNING
      handlers: stderr
      qualname: boto
    handler_null:
      class: logging.NullHandler
      formatter: default
      args: ()
    handler_stdout:
      class: StreamHandler
      args: (sys.stdout,)
      formatter: context
    handler_stderr:
      class: StreamHandler
      args: (sys.stderr,)
      formatter: context
    formatter_context:
      class: oslo_log.formatters.ContextFormatter
      datefmt: "%Y-%m-%d %H:%M:%S"
    formatter_default:
      format: "%(message)s"
      datefmt: "%Y-%m-%d %H:%M:%S"

# Names of secrets used by bootstrap and environmental checks
secrets:
  identity:
    admin: barbican-keystone-admin
    barbican: barbican-keystone-user
  oslo_db:
    admin: barbican-db-admin
    barbican: barbican-db-user
  oslo_messaging:
    admin: barbican-rabbitmq-admin
    barbican: barbican-rabbitmq-user
  tls:
    key_manager:
      api:
        public: barbican-tls-public
        internal: barbican-tls-internal
  oci_image_registry:
    barbican: barbican-oci-image-registry

endpoints:
  cluster_domain_suffix: cluster.local
  local_image_registry:
    name: docker-registry
    namespace: docker-registry
    hosts:
      default: localhost
      internal: docker-registry
      node: localhost
    host_fqdn_override:
      default: null
    port:
      registry:
        node: 5000
  oci_image_registry:
    name: oci-image-registry
    namespace: oci-image-registry
    auth:
      enabled: false
      barbican:
        username: barbican
        password: password
    hosts:
      default: localhost
    host_fqdn_override:
      default: null
    port:
      registry:
        default: null
  identity:
    name: keystone
    auth:
      admin:
        region_name: RegionOne
        username: admin
        password: password
        project_name: admin
        user_domain_name: default
        project_domain_name: default
      barbican:
        role: admin
        region_name: RegionOne
        username: barbican
        password: password
        project_name: service
        user_domain_name: service
        project_domain_name: service
    hosts:
      default: keystone
      internal: keystone-api
    host_fqdn_override:
      default: null
    path:
      default: /v3
    scheme:
      default: http
    port:
      api:
        default: 80
        internal: 5000
  key_manager:
    name: barbican
    hosts:
      default: barbican-api
      public: barbican
    host_fqdn_override:
      default:
        tls:
          secretName: barbican-tls-internal
          issuerRef:
            kind: ClusterIssuer
            name: ca-clusterissuer
    path:
      default: /
      healthcheck: /healthcheck
    scheme:
      default: http
      service: http
    port:
      api:
        default: 9311
        public: 80
        service: 9311
  oslo_db:
    auth:
      admin:
        username: root
        password: password
        secret:
          tls:
            internal: mariadb-tls-direct
      barbican:
        username: barbican
        password: password
    hosts:
      default: mariadb
    host_fqdn_override:
      default: null
    path: /barbican
    scheme: mysql+pymysql
    port:
      mysql:
        default: 3306
  oslo_messaging:
    auth:
      admin:
        username: rabbitmq
        password: password
        secret:
          tls:
            internal: rabbitmq-tls-direct
      barbican:
        username: barbican
        password: password
    statefulset:
      replicas: 2
      name: rabbitmq-rabbitmq
    hosts:
      default: rabbitmq
    host_fqdn_override:
      default: null
    path: /barbican
    scheme: rabbit
    port:
      amqp:
        default: 5672
      http:
        default: 15672
  oslo_cache:
    auth:
      # NOTE(portdirect): this is used to define the value for keystone
      # authtoken cache encryption key, if not set it will be populated
      # automatically with a random value, but to take advantage of
      # this feature all services should be set to use the same key,
      # and memcache service.
      memcache_secret_key: null
    hosts:
      default: memcached
    host_fqdn_override:
      default: null
    port:
      memcache:
        default: 11211
  fluentd:
    namespace: null
    name: fluentd
    hosts:
      default: fluentd-logging
    host_fqdn_override:
      default: null
    path:
      default: null
    scheme: 'http'
    port:
      service:
        default: 24224
      metrics:
        default: 24220
  # NOTE(tp6510): these endpoints allow for things like DNS lookups and ingress
  # They are using to enable the Egress K8s network policy.
  kube_dns:
    namespace: kube-system
    name: kubernetes-dns
    hosts:
      default: kube-dns
    host_fqdn_override:
      default: null
    path:
      default: null
    scheme: http
    port:
      dns:
        default: 53
        protocol: UDP
  ingress:
    namespace: null
    name: ingress
    hosts:
      default: ingress
    port:
      ingress:
        default: 80

tls:
  identity: false
  oslo_messaging: false
  oslo_db: false

manifests:
  certificates: false
  configmap_bin: true
  configmap_etc: true
  deployment_api: true
  ingress_api: true
  job_bootstrap: true
  job_db_init: true
  job_db_sync: true
  job_db_drop: false
  job_image_repo_sync: true
  job_rabbit_init: true
  job_ks_endpoints: true
  job_ks_service: true
  job_ks_user: true
  pdb_api: true
  pod_test: true
  secret_db: true
  network_policy: false
  secret_ingress_tls: true
  secret_keystone: true
  secret_rabbitmq: true
  secret_registry: true
  service_ingress_api: true
  service_api: true

# -- Array of extra K8s manifests to deploy
## Note: Supports use of custom Helm templates
extraObjects: []
  # - apiVersion: secrets-store.csi.x-k8s.io/v1
  #   kind: SecretProviderClass
  #   metadata:
  #     name: osh-secrets-store
  #   spec:
  #     provider: aws
  #     parameters:
  #       objects: |
  #         - objectName: "osh"
  #           objectType: "secretsmanager"
  #           jmesPath:
  #               - path: "client_id"
  #                 objectAlias: "client_id"
  #               - path: "client_secret"
  #                 objectAlias: "client_secret"
  #     secretObjects:
  #     - data:
  #       - key: client_id
  #         objectName: client_id
  #       - key: client_secret
  #         objectName: client_secret
  #       secretName: osh-secrets-store
  #       type: Opaque
  #       labels:
  #         app.kubernetes.io/part-of: osh
...


================================================
FILE: bindep.txt
================================================
# This file facilitates OpenStack-CI package installation
# before the execution of any tests.

# Required to build language docs
gettext


================================================
FILE: blazar/Chart.yaml
================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

---
apiVersion: v2
appVersion: v1.0.0
description: OpenStack Resource Reservation Service
name: blazar
type: application
version: 2025.2.0
home: https://docs.openstack.org/blazar/
icon: https://openmetal.io/wp-content/uploads/2024/10/OpenStack_Project_Blazar-300x300.jpg
sources:
  - https://opendev.org/openstack/blazar
keywords:
  - openstack
  - reservation
  - helm
maintainers:
  - name: OpenStack Helm Team
    email: openstack-helm@lists.openstack.org
dependencies:
  - name: helm-toolkit
    repository: file://../helm-toolkit
    version: ">= 0.1.0"
...


================================================
FILE: blazar/templates/bin/_blazar_api.sh.tpl
================================================
#!/bin/bash

{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex
COMMAND="${@:-start}"

function start () {
  exec blazar-api \
        --config-file /etc/blazar/blazar.conf
}

function stop () {
  kill -TERM 1
}

$COMMAND


================================================
FILE: blazar/templates/bin/_blazar_manager.sh.tpl
================================================
#!/bin/bash

{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex

exec blazar-manager \
  --config-file /etc/blazar/blazar.conf


================================================
FILE: blazar/templates/bin/_db-sync.sh.tpl
================================================
#!/bin/bash

{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

set -ex

blazar-db-manage \
  --config-file /etc/blazar/blazar.conf \
  upgrade head


================================================
FILE: blazar/templates/configmap-bin.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if .Values.manifests.configmap_bin }}
{{- $envAll := . }}
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: blazar-bin
data:
{{- if .Values.images.local_registry.active }}
  image-repo-sync.sh: |
{{- include "helm-toolkit.scripts.image_repo_sync" . | indent 4 }}
{{- end }}
  rally-test.sh: |
{{ tuple .Values.conf.rally_tests | include "helm-toolkit.scripts.rally_test" | indent 4 }}
  db-init.py: |
{{- include "helm-toolkit.scripts.db_init" . | indent 4 }}
  db-sync.sh: |
{{ tuple "bin/_db-sync.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
  db-drop.py: |
{{- include "helm-toolkit.scripts.db_drop" . | indent 4 }}
  blazar-api.sh: |
{{ tuple "bin/_blazar_api.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
  blazar-manager.sh: |
{{ tuple "bin/_blazar_manager.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
  ks-service.sh: |
{{- include "helm-toolkit.scripts.keystone_service" . | indent 4 }}
  ks-endpoints.sh: |
{{- include "helm-toolkit.scripts.keystone_endpoints" . | indent 4 }}
  ks-user.sh: |
{{- include "helm-toolkit.scripts.keystone_user" . | indent 4 }}
{{- if .Values.manifests.job_rabbit_init }}
  rabbit-init.sh: |
{{- include "helm-toolkit.scripts.rabbit_init" . | indent 4 }}
{{- end }}
{{- end }}
...


================================================
FILE: blazar/templates/configmap-etc.yaml
================================================
{{/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/}}

{{- if (.Values.global).subchart_release_name }}
{{- $_ := set . "deployment_name" .Chart.Name }}
{{- else }}
{{- $_ := set . "deployment_name" .Release.Name }}
{{- end }}

{{- define "blazar.configmap.etc" }}
{{- $configMapName := index . 0 }}
{{- $envAll := index . 1 }}
{{- with $envAll }}

{{- if empty .Values.conf.blazar.keystone_authtoken.auth_uri -}}
{{- $_ := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup"| set .Values.conf.blazar.keystone_authtoken "auth_uri" -}}
{{- end -}}
{{- if empty .Values.conf.blazar.keystone_authtoken.auth_url -}}
{{- $_ := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup"| set .Values.conf.blazar.keystone_authtoken "auth_url" -}}
{{- end -}}
{{- if empty .Values.conf.blazar.keystone_authtoken.memcached_servers -}}
{{- $_ := tuple "oslo_cache" "internal" "memcache" . | include "helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup" | set .Values.conf.blazar.keystone_authtoken "memcached_servers" -}}
{{- end -}}
{{- if empty .Values.conf.blazar.keystone_authtoken.memcache_secret_key -}}
{{- $_ := set .Values.conf.blazar.keystone_authtoken "memcache_secret_key" ( default ( randAlphaNum 64 ) .Values.endpoints.oslo_cache.auth.memcache_secret_key ) -}}
{{- end -}}

{{- if and (not (kindIs "invalid" .Values.conf.blazar.database.connection)) (empty .Values.conf.blazar.database.connection) -}}
{{- $_ := tuple "oslo_db" "internal" "blazar" "mysql" . | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup"| set .Values.conf.blazar.database "connection" -}}
{{- end -}}
{{- if empty .Values.conf.blazar.DEFAULT.transport_url -}}
{{- $_ := tuple "oslo_messaging" "internal" "blazar" "amqp" . | include "helm-toolkit.endpoints.authenticated_transport_endpoint_uri_lookup" | set .Values.conf.blazar.DEFAULT "transport_url" -}}
{{- end -}}

{{- if and (empty .Values.conf.logging.handler_fluent) (has "fluent" .Values.conf.logging.handlers.keys) -}}
{{- $fluentd_host := tuple "fluentd" "internal" $envAll | include "helm-toolkit.endpoints.hostname_namespaced_endpoint_lookup" }}
{{- $fluentd_port := tuple "fluentd" "internal" "service" $envAll | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
{{- $fluent_args := printf "('%s.%s', '%s', %s)" .Release.Namespace .Release.Name $fluentd_host $fluentd_port }}
{{- $handler_fluent := dict "class" "fluent.handler.FluentHandler" "formatter" "fluent" "args" $fluent_args -}}
{{- $_ := set .Values.conf.logging "handler_fluent" $handler_fluent -}}
{{- end -}}

{{- if and (empty .Values.conf.logging.formatter_fluent) (has "fluent" .Values.conf.logging.formatters.keys) -}}
{{- $formatter_fluent := dict "class" "oslo_log.formatters.FluentFormatter" -}}
{{- $_ := set .Values.conf.logging "formatter_fluent" $formatter_fluent -}}
{{- end -}}
{{- if empty .Values.conf.blazar.oslo_messaging_notifications.transport_url -}}
{{- $_ := tuple "oslo_messaging" "internal" "blazar" "amqp" . | include "helm-toolkit.endpoints.authenticated_transport_endpoint_uri_lookup" | set .Values.conf.blazar.oslo_messaging_notifications "transport_url" -}}
{{- end -}}

{{/*
Openstack auth
*/}}
{{- if empty .Values.conf.blazar.DEFAULT.os_auth_host -}}
{{- $_ := tuple "identity" "internal" . | include "helm-toolkit.endpoints.endpoint_host_lookup" | set .Values.conf.blazar.DEFAULT "os_auth_host" -}}
{{- end -}}
{{- if empty .Values.conf.blazar.DEFAULT.os_auth_port -}}
{{- $_ := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" | set .Values.conf.blazar.DEFAULT "os_auth_port" -}}
{{- end -}}
{{- if empty .Values.conf.blazar.DEFAULT.os_auth_protocol -}}
{{- $_ := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_scheme_lookup" | set .Values.conf.blazar.DEFAULT "os_auth_protocol" -}}
{{- end -}}
{{- if empty .Values.conf.blazar.DEFAULT.os_region_name -}}
{{- $_ := set .Values.conf.blazar.DEFAULT "os_region_name" .Values.endpoints.identity.auth.admin.region
Download .txt
gitextract_9pqhdo10/

├── .gitignore
├── .gitreview
├── .pre-commit-config.yaml
├── CONTRIBUTING.rst
├── LICENSE
├── Makefile
├── README.rst
├── aodh/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _aodh-alarms-cleaner.sh.tpl
│   │   │   ├── _aodh-api.sh.tpl
│   │   │   ├── _aodh-evaluator.sh.tpl
│   │   │   ├── _aodh-listener.sh.tpl
│   │   │   ├── _aodh-notifier.sh.tpl
│   │   │   ├── _aodh-test.sh.tpl
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   └── _db-sync.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-alarms-cleaner.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-evaluator.yaml
│   │   ├── deployment-listener.yaml
│   │   ├── deployment-notifier.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-aodh-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── barbican/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _barbican-test.sh.tpl
│   │   │   ├── _barbican.sh.tpl
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   └── _simple_crypto_kek_rewrap.py.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── bindep.txt
├── blazar/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _blazar_api.sh.tpl
│   │   │   ├── _blazar_manager.sh.tpl
│   │   │   └── _db-sync.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-manager.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pdb-manager.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ks-etc.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── ca-clusterissuer/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── clusterissuer-ca.yaml
│   │   ├── extra-manifests.yaml
│   │   └── secret-ca.yaml
│   └── values.yaml
├── ca-issuer/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── extra-manifests.yaml
│   │   ├── issuer-ca.yaml
│   │   └── secret-ca.yaml
│   └── values.yaml
├── ceilometer/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _ceilometer-central.sh.tpl
│   │   │   ├── _ceilometer-compute.sh.tpl
│   │   │   ├── _ceilometer-ipmi.sh.tpl
│   │   │   ├── _ceilometer-notification.sh.tpl
│   │   │   └── _db-sync.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-compute.yaml
│   │   ├── daemonset-ipmi.yaml
│   │   ├── deployment-central.yaml
│   │   ├── deployment-notification.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── ceph-adapter-rook/
│   ├── Chart.yaml
│   ├── README.md
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _config-manager.sh.tpl
│   │   │   └── _key-manager.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc-client.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-namespace-client-ceph-config.yaml
│   │   └── job-namespace-client-key.yaml
│   └── values.yaml
├── ceph-client/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _helm-tests.sh.tpl
│   │   │   ├── _init-dirs.sh.tpl
│   │   │   ├── mds/
│   │   │   │   └── _start.sh.tpl
│   │   │   ├── pool/
│   │   │   │   ├── _calc.py.tpl
│   │   │   │   └── _init.sh.tpl
│   │   │   └── utils/
│   │   │       ├── _checkDNS.sh.tpl
│   │   │       ├── _checkDNS_start.sh.tpl
│   │   │       ├── _checkPGs.sh.tpl
│   │   │       └── _defragOSDs.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc-client.yaml
│   │   ├── cronjob-checkPGs.yaml
│   │   ├── cronjob-defragosds.yaml
│   │   ├── deployment-checkdns.yaml
│   │   ├── deployment-mds.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-rbd-pool.yaml
│   │   ├── pod-helm-tests.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── ceph-mon/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _init-dirs.sh.tpl
│   │   │   ├── _post-apply.sh.tpl
│   │   │   ├── keys/
│   │   │   │   ├── _bootstrap-keyring-generator.py.tpl
│   │   │   │   ├── _bootstrap-keyring-manager.sh.tpl
│   │   │   │   └── _storage-keyring-manager.sh.tpl
│   │   │   ├── mgr/
│   │   │   │   ├── _check.sh.tpl
│   │   │   │   └── _start.sh.tpl
│   │   │   ├── mon/
│   │   │   │   ├── _check.sh.tpl
│   │   │   │   ├── _start.sh.tpl
│   │   │   │   └── _stop.sh.tpl
│   │   │   ├── moncheck/
│   │   │   │   ├── _reap-zombies.py.tpl
│   │   │   │   └── _start.sh.tpl
│   │   │   └── utils/
│   │   │       ├── _checkDNS.sh.tpl
│   │   │       ├── _checkObjectReplication.py.tpl
│   │   │       └── _checkPGs.py.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── configmap-templates.yaml
│   │   ├── daemonset-mon.yaml
│   │   ├── deployment-mgr.yaml
│   │   ├── deployment-moncheck.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-keyring.yaml
│   │   ├── job-post-apply.yaml
│   │   ├── job-storage-admin-keys.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-mgr.yaml
│   │   ├── service-mon-discovery.yaml
│   │   ├── service-mon.yaml
│   │   ├── snippets/
│   │   │   └── _mon_host_from_k8s_ep.sh.tpl
│   │   └── utils/
│   │       └── _mon_daemonset_overrides.tpl
│   └── values.yaml
├── ceph-osd/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _helm-tests.sh.tpl
│   │   │   ├── _init-dirs.sh.tpl
│   │   │   ├── _post-apply.sh.tpl
│   │   │   ├── osd/
│   │   │   │   ├── _check.sh.tpl
│   │   │   │   ├── _config.sh.tpl
│   │   │   │   ├── _directory.sh.tpl
│   │   │   │   ├── _init.sh.tpl
│   │   │   │   ├── _log-runner-stop.sh.tpl
│   │   │   │   ├── _log-tail.sh.tpl
│   │   │   │   ├── _start.sh.tpl
│   │   │   │   ├── _stop.sh.tpl
│   │   │   │   └── ceph-volume/
│   │   │   │       ├── _block.sh.tpl
│   │   │   │       ├── _bluestore.sh.tpl
│   │   │   │       ├── _common.sh.tpl
│   │   │   │       ├── _init-ceph-volume-helper-block-logical.sh.tpl
│   │   │   │       ├── _init-ceph-volume-helper-bluestore.sh.tpl
│   │   │   │       ├── _init-ceph-volume-helper-directory.sh.tpl
│   │   │   │       └── _init-with-ceph-volume.sh.tpl
│   │   │   └── utils/
│   │   │       ├── _checkDNS.sh.tpl
│   │   │       ├── _defragOSDs.sh.tpl
│   │   │       └── _resolveLocations.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-osd.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-post-apply.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-registry.yaml
│   │   └── utils/
│   │       └── _osd_daemonset_overrides.tpl
│   └── values.yaml
├── ceph-provisioners/
│   ├── Chart.yaml
│   ├── crds/
│   │   ├── snapshot.storage.k8s.io_volumesnapshotclasses.yaml
│   │   ├── snapshot.storage.k8s.io_volumesnapshotcontents.yaml
│   │   └── snapshot.storage.k8s.io_volumesnapshots.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _helm-tests.sh.tpl
│   │   │   └── provisioner/
│   │   │       ├── cephfs/
│   │   │       │   ├── _client-key-manager.sh.tpl
│   │   │       │   └── _start.sh.tpl
│   │   │       └── rbd/
│   │   │           ├── _namespace-client-ceph-config-manager.sh.tpl
│   │   │           ├── _namespace-client-key-cleaner.sh.tpl
│   │   │           ├── _namespace-client-key-manager.sh.tpl
│   │   │           └── _start.sh.tpl
│   │   ├── configmap-bin-provisioner.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc-client.yaml
│   │   ├── configmap-etc-csi.yaml
│   │   ├── daemonset-csi-rbd-plugin.yaml
│   │   ├── deployment-csi-rbd-provisioner.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-cephfs-client-key.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-namespace-client-ceph-config.yaml
│   │   ├── job-namespace-client-key-cleaner.yaml
│   │   ├── job-namespace-client-key.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-registry.yaml
│   │   └── storageclass.yaml
│   └── values.yaml
├── ceph-rgw/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _ceph-admin-keyring.sh.tpl
│   │   │   ├── _ceph-rgw-storage-init.sh.tpl
│   │   │   ├── _create-rgw-placement-targets.sh.tpl
│   │   │   ├── _helm-tests.sh.tpl
│   │   │   ├── _init-dirs.sh.tpl
│   │   │   ├── _rgw-restart.sh.tpl
│   │   │   ├── rgw/
│   │   │   │   ├── _init.sh.tpl
│   │   │   │   ├── _rerun-pool-job.sh.tpl
│   │   │   │   └── _start.sh.tpl
│   │   │   └── utils/
│   │   │       └── _checkDNS.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin-ks.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-ceph-rgw-templates.yaml
│   │   ├── configmap-etc-client.yaml
│   │   ├── deployment-rgw.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-rgw.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rgw-placement-targets.yaml
│   │   ├── job-rgw-pool.yaml
│   │   ├── job-rgw-restart.yaml
│   │   ├── job-rgw-storage-init.yaml
│   │   ├── job-s3-admin.yaml
│   │   ├── network_policy.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone-rgw.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-s3-rgw.yaml
│   │   ├── service-ingress-rgw.yaml
│   │   └── service-rgw.yaml
│   └── values.yaml
├── cert-rotation/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _rotate-certs.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── cron-job-cert-rotate.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-cert-rotate.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── cinder/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _backup-storage-init.sh.tpl
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _ceph-admin-keyring.sh.tpl
│   │   │   ├── _ceph-keyring.sh.tpl
│   │   │   ├── _cinder-api.sh.tpl
│   │   │   ├── _cinder-backup.sh.tpl
│   │   │   ├── _cinder-scheduler.sh.tpl
│   │   │   ├── _cinder-volume.sh.tpl
│   │   │   ├── _clean-secrets.sh.tpl
│   │   │   ├── _create-internal-tenant-id.sh.tpl
│   │   │   ├── _db-purge.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _external-ceph-rbd-admin-keyring.sh.tpl
│   │   │   ├── _iscsiadm.tpl
│   │   │   ├── _multipath.tpl
│   │   │   ├── _multipathd.tpl
│   │   │   ├── _retrieve-internal-tenant-id.sh.tpl
│   │   │   ├── _storage-init.sh.tpl
│   │   │   └── _volume-usage-audit.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-cinder-db-purge.yaml
│   │   ├── cron-job-cinder-volume-usage-audit.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-backup.yaml
│   │   ├── deployment-scheduler.yaml
│   │   ├── deployment-volume.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-backup-storage-init.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-clean.yaml
│   │   ├── job-create-internal-tenant.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── job-storage-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── pvc-backup.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-external-ceph-keyring.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ks-etc.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── utils/
│   │       ├── _ceph_backend_list.tpl
│   │       ├── _has_ceph_backend.tpl
│   │       └── _is_ceph_backend.tpl
│   └── values.yaml
├── cloudkitty/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _cloudkitty-api.sh.tpl
│   │   │   ├── _cloudkitty-processor.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   └── _storage-init.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-processor.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbitmq-init.yaml
│   │   ├── job-storage-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pbd-api.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ks-etc.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   └── service-api.yaml
│   └── values.yaml
├── cyborg/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _cyborg-agent.sh.tpl
│   │   │   ├── _cyborg-api.sh.tpl
│   │   │   ├── _cyborg-conductor.sh.tpl
│   │   │   └── _db-sync.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-agent.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-conductor.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── designate/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _designate-api.sh.tpl
│   │   │   ├── _designate-central.sh.tpl
│   │   │   ├── _designate-mdns.sh.tpl
│   │   │   ├── _designate-producer.sh.tpl
│   │   │   ├── _designate-service-cleaner.sh.tpl
│   │   │   ├── _designate-sink.sh.tpl
│   │   │   └── _designate-worker.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-service.cleaner.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-central.yaml
│   │   ├── deployment-mdns.yaml
│   │   ├── deployment-producer.yaml
│   │   ├── deployment-sink.yaml
│   │   ├── deployment-worker.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pdb-central.yaml
│   │   ├── pdb-mdns.yaml
│   │   ├── pdb-producer.yaml
│   │   ├── pdb-sink.yaml
│   │   ├── pdb-worker.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── service-mdns.yaml
│   └── values.yaml
├── doc/
│   ├── helm-docs.rst.gotmpl
│   ├── requirements.txt
│   └── source/
│       ├── _exts/
│       │   └── helm_docs.py
│       ├── _static/
│       │   └── .placeholder
│       ├── chart/
│       │   ├── index.rst
│       │   ├── infra_charts.rst
│       │   └── openstack_charts.rst
│       ├── conf.py
│       ├── devref/
│       │   ├── endpoints.rst
│       │   ├── fluent-logging.rst
│       │   ├── images.rst
│       │   ├── index.rst
│       │   ├── networking.rst
│       │   ├── node-and-label-specific-configurations.rst
│       │   ├── oslo-config.rst
│       │   ├── pod-disruption-budgets.rst
│       │   └── upgrades.rst
│       ├── index.rst
│       ├── install/
│       │   ├── before_starting.rst
│       │   ├── index.rst
│       │   ├── kubernetes.rst
│       │   ├── openstack.rst
│       │   └── prerequisites.rst
│       ├── logging/
│       │   ├── elasticsearch.rst
│       │   ├── fluent-logging.rst
│       │   ├── index.rst
│       │   └── kibana.rst
│       ├── monitoring/
│       │   ├── grafana.rst
│       │   ├── index.rst
│       │   ├── nagios.rst
│       │   └── prometheus.rst
│       ├── readme.rst
│       ├── specs/
│       │   ├── 2025.1/
│       │   │   └── chart_versioning.rst
│       │   ├── 2025.2/
│       │   │   └── own_service_accounts.rst
│       │   ├── COPYME
│       │   ├── developer-environment.rst
│       │   ├── fluentbit-fluentd-architecture.rst
│       │   ├── index.rst
│       │   ├── multi-os.rst
│       │   ├── neutron-multiple-sdns.rst
│       │   ├── nginx-sidecar.rst
│       │   ├── osh-1.0-requirements.rst
│       │   ├── osh-lma-stack.rst
│       │   ├── support-OCI-image-registry-with-authentication-turned-on.rst
│       │   ├── support-linux-bridge-on-neutron.rst
│       │   ├── tenant-ceph.rst
│       │   └── values-ordering.rst
│       ├── testing/
│       │   ├── ceph-node-resiliency.rst
│       │   ├── ceph-resiliency/
│       │   │   ├── README.rst
│       │   │   ├── disk-failure.rst
│       │   │   ├── failure-domain.rst
│       │   │   ├── host-failure.rst
│       │   │   ├── index.rst
│       │   │   ├── monitor-failure.rst
│       │   │   ├── namespace-deletion.rst
│       │   │   ├── osd-failure.rst
│       │   │   └── validate-object-replication.rst
│       │   ├── ceph-upgrade.rst
│       │   ├── helm-tests.rst
│       │   └── index.rst
│       ├── troubleshooting/
│       │   ├── ceph.rst
│       │   ├── database.rst
│       │   ├── index.rst
│       │   ├── migrate-ceph-to-rook.rst
│       │   ├── persistent-storage.rst
│       │   └── ubuntu-hwe-kernel.rst
│       └── upgrade/
│           ├── index.rst
│           └── multiple-osd-releases.rst
├── elastic-apm-server/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-elasticsearch-creds.yaml
│   │   ├── secret-registry.yaml
│   │   └── service.yaml
│   └── values.yaml
├── elastic-filebeat/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-elasticsearch-creds.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── elastic-metricbeat/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-node-metrics.yaml
│   │   ├── deployment-modules.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-elasticsearch-creds.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── elastic-packetbeat/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-elasticsearch-creds.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── elasticsearch/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _apache.sh.tpl
│   │   │   ├── _ceph-admin-keyring.sh.tpl
│   │   │   ├── _create_s3_buckets.sh.tpl
│   │   │   ├── _create_s3_users.sh.tpl
│   │   │   ├── _create_template.sh.tpl
│   │   │   ├── _curator.sh.tpl
│   │   │   ├── _elasticsearch.sh.tpl
│   │   │   ├── _helm-tests.sh.tpl
│   │   │   └── _verify-repositories.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin-curator.yaml
│   │   ├── configmap-bin-elasticsearch.yaml
│   │   ├── configmap-etc-curator.yaml
│   │   ├── configmap-etc-elasticsearch.yaml
│   │   ├── cron-job-curator.yaml
│   │   ├── cron-job-verify-repositories.yaml
│   │   ├── deployment-client.yaml
│   │   ├── deployment-gateway.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-elasticsearch.yaml
│   │   ├── job-elasticsearch-template.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-s3-bucket.yaml
│   │   ├── job-s3-user.yaml
│   │   ├── monitoring/
│   │   │   └── prometheus/
│   │   │       ├── exporter-deployment.yaml
│   │   │       ├── exporter-network-policy.yaml
│   │   │       └── exporter-service.yaml
│   │   ├── network-policy.yaml
│   │   ├── object-bucket-claim.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-elasticsearch.yaml
│   │   ├── secret-environment.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-s3-user.yaml
│   │   ├── service-data.yaml
│   │   ├── service-discovery.yaml
│   │   ├── service-gateway.yaml
│   │   ├── service-ingress-elasticsearch.yaml
│   │   ├── service-logging.yaml
│   │   ├── statefulset-data.yaml
│   │   └── statefulset-master.yaml
│   └── values.yaml
├── etcd/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _etcd-db-compact.sh.tpl
│   │   │   ├── _etcd-healthcheck.sh.tpl
│   │   │   └── _etcd.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── cron-job-db-compact.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-discovery.yaml
│   │   ├── service.yaml
│   │   └── statefulset.yaml
│   └── values.yaml
├── fluentbit/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _fluent-bit.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-fluent-bit.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── fluentd/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _fluentd.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-elasticsearch-creds.yaml
│   │   ├── secret-fluentd.yaml
│   │   ├── secret-kafka-creds.yaml
│   │   ├── secret-registry.yaml
│   │   └── service-fluentd.yaml
│   └── values.yaml
├── freezer/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   └── _freezer-api.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── pdb-api.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── glance/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _ceph-admin-keyring.sh.tpl
│   │   │   ├── _ceph-keyring.sh.tpl
│   │   │   ├── _clean-image.sh.tpl
│   │   │   ├── _clean-secrets.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _glance-api.sh.tpl
│   │   │   ├── _iscsiadm.tpl
│   │   │   ├── _metadefs-load.sh.tpl
│   │   │   ├── _multipath.tpl
│   │   │   ├── _multipathd.tpl
│   │   │   ├── _nginx.sh.tpl
│   │   │   └── _storage-init.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-clean.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-metadefs-load.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── job-storage-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── pvc-images.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── gnocchi/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _ceph-admin-keyring.sh.tpl
│   │   │   ├── _ceph-keyring.sh.tpl
│   │   │   ├── _clean-secrets.sh.tpl
│   │   │   ├── _db-init.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _gnocchi-api.sh.tpl
│   │   │   ├── _gnocchi-metricd.sh.tpl
│   │   │   ├── _gnocchi-resources-cleaner.sh.tpl
│   │   │   ├── _gnocchi-statsd.sh.tpl
│   │   │   ├── _gnocchi-test.sh.tpl
│   │   │   └── _storage-init.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-resources-cleaner.yaml
│   │   ├── daemonset-metricd.yaml
│   │   ├── daemonset-statsd.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-clean.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init-indexer.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-storage-init.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-gnocchi-test.yaml
│   │   ├── secret-db-indexer.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── service-api.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── service-statsd.yaml
│   └── values.yaml
├── grafana/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _db-session-sync.py.tpl
│   │   │   ├── _grafana.sh.tpl
│   │   │   ├── _selenium-tests.py.tpl
│   │   │   └── _set-admin-password.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-dashboards.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-grafana.yaml
│   │   ├── job-db-init-session.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-session-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-run-migrator.yaml
│   │   ├── job-set-admin-user.yaml
│   │   ├── network_policy.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-admin-creds.yaml
│   │   ├── secret-db-session.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-prom-creds.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secrets/
│   │   │   └── _my.cnf.tpl
│   │   ├── service-ingress.yaml
│   │   └── service.yaml
│   └── values.yaml
├── heat/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _heat-api.sh.tpl
│   │   │   ├── _heat-cfn.sh.tpl
│   │   │   ├── _heat-engine-cleaner.sh.tpl
│   │   │   ├── _heat-engine.sh.tpl
│   │   │   ├── _heat-purge-deleted-active.sh.tpl
│   │   │   └── _trusts.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-engine-cleaner.yaml
│   │   ├── cron-job-purge-deleted.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-cfn.yaml
│   │   ├── deployment-engine.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── ingress-cfn.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user-domain.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── job-trusts.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pdb-cfn.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   ├── service-cfn.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── service-ingress-cfn.yaml
│   └── values.yaml
├── helm-toolkit/
│   ├── Chart.yaml
│   └── templates/
│       ├── endpoints/
│       │   ├── _authenticated_endpoint_uri_lookup.tpl
│       │   ├── _authenticated_transport_endpoint_uri_lookup.tpl
│       │   ├── _endpoint_host_lookup.tpl
│       │   ├── _endpoint_port_lookup.tpl
│       │   ├── _endpoint_token_lookup.tpl
│       │   ├── _host_and_port_endpoint_uri_lookup.tpl
│       │   ├── _hostname_fqdn_endpoint_lookup.tpl
│       │   ├── _hostname_namespaced_endpoint_lookup.tpl
│       │   ├── _hostname_namespaced_endpoint_namespace_lookup.tpl
│       │   ├── _hostname_short_endpoint_lookup.tpl
│       │   ├── _keystone_endpoint_name_lookup.tpl
│       │   ├── _keystone_endpoint_path_lookup.tpl
│       │   ├── _keystone_endpoint_scheme_lookup.tpl
│       │   ├── _keystone_endpoint_uri_lookup.tpl
│       │   └── _service_name_endpoint_with_namespace_lookup.tpl
│       ├── manifests/
│       │   ├── _ceph-storageclass.tpl
│       │   ├── _certificates.tpl
│       │   ├── _configmap-oslo-policy.tpl
│       │   ├── _ingress.tpl
│       │   ├── _job-bootstrap.tpl
│       │   ├── _job-db-drop-mysql.tpl
│       │   ├── _job-db-init-mysql.tpl
│       │   ├── _job-db-sync.tpl
│       │   ├── _job-ks-endpoints.tpl
│       │   ├── _job-ks-service.tpl
│       │   ├── _job-ks-user.yaml.tpl
│       │   ├── _job-rabbit-init.yaml.tpl
│       │   ├── _job-s3-bucket.yaml.tpl
│       │   ├── _job-s3-user.yaml.tpl
│       │   ├── _job_image_repo_sync.tpl
│       │   ├── _network_policy.tpl
│       │   ├── _secret-ks-etc.yaml.tpl
│       │   ├── _secret-registry.yaml.tpl
│       │   ├── _secret-tls.yaml.tpl
│       │   └── _service-ingress.tpl
│       ├── scripts/
│       │   ├── _create-s3-user.sh.tpl
│       │   ├── _db-drop.py.tpl
│       │   ├── _db-init.py.tpl
│       │   ├── _db-pg-init.sh.tpl
│       │   ├── _image-repo-sync.sh.tpl
│       │   ├── _ks-domain-user.sh.tpl
│       │   ├── _ks-endpoints.sh.tpl
│       │   ├── _ks-service.sh.tpl
│       │   ├── _ks-user.sh.tpl
│       │   ├── _rabbit-init.sh.tpl
│       │   ├── _rally_test.sh.tpl
│       │   └── db-backup-restore/
│       │       ├── _backup_main.sh.tpl
│       │       └── _restore_main.sh.tpl
│       ├── snippets/
│       │   ├── _custom_job_annotations.tpl
│       │   ├── _custom_pod_annotations.tpl
│       │   ├── _custom_secret_annotations.tpl
│       │   ├── _image.tpl
│       │   ├── _keystone_openrc_env_vars.tpl
│       │   ├── _keystone_openrc_failover_env_vars.tpl
│       │   ├── _keystone_secret_openrc.tpl
│       │   ├── _keystone_user_create_env_vars.tpl
│       │   ├── _kubernetes_apparmor_configmap.tpl
│       │   ├── _kubernetes_apparmor_loader_init_container.tpl
│       │   ├── _kubernetes_apparmor_volumes.tpl
│       │   ├── _kubernetes_container_security_context.tpl
│       │   ├── _kubernetes_entrypoint_init_container.tpl
│       │   ├── _kubernetes_kubectl_params.tpl
│       │   ├── _kubernetes_mandatory_access_control_annotation.tpl
│       │   ├── _kubernetes_metadata_labels.tpl
│       │   ├── _kubernetes_pod_anti_affinity.tpl
│       │   ├── _kubernetes_pod_image_pull_secret.tpl
│       │   ├── _kubernetes_pod_priority_class.tpl
│       │   ├── _kubernetes_pod_rbac_roles.tpl
│       │   ├── _kubernetes_pod_rbac_serviceaccount.tpl
│       │   ├── _kubernetes_pod_runtime_class.tpl
│       │   ├── _kubernetes_pod_security_context.tpl
│       │   ├── _kubernetes_probes.tpl
│       │   ├── _kubernetes_resources.tpl
│       │   ├── _kubernetes_seccomp_annotation.tpl
│       │   ├── _kubernetes_tolerations.tpl
│       │   ├── _kubernetes_upgrades_daemonset.tpl
│       │   ├── _kubernetes_upgrades_deployment.tpl
│       │   ├── _kubernetes_upgrades_statefulset.tpl
│       │   ├── _mon_host_from_k8s_ep.sh.tpl
│       │   ├── _prometheus_pod_annotations.tpl
│       │   ├── _prometheus_service_annotations.tpl
│       │   ├── _release_uuid.tpl
│       │   ├── _rgw_s3_admin_env_vars.tpl
│       │   ├── _rgw_s3_bucket_user_env_vars_rook.tpl
│       │   ├── _rgw_s3_secret_creds.tpl
│       │   ├── _rgw_s3_user_env_vars.tpl
│       │   ├── _service_params.tpl
│       │   ├── _tls_volume.tpl
│       │   ├── _tls_volume_mount.tpl
│       │   └── _values_template_renderer.tpl
│       ├── tls/
│       │   └── _tls_generate_certs.tpl
│       └── utils/
│           ├── _comma_joined_service_list.tpl
│           ├── _configmap_templater.tpl
│           ├── _daemonset_overrides.tpl
│           ├── _daemonset_overrides_root.tpl
│           ├── _dependency_jobs.tpl
│           ├── _dependency_resolver.tpl
│           ├── _hash.tpl
│           ├── _hash2.tpl
│           ├── _host_list.tpl
│           ├── _image_sync_list.tpl
│           ├── _joinListWithComma.tpl
│           ├── _joinListWithCommaAndSingleQuotes.tpl
│           ├── _joinListWithPrefix.tpl
│           ├── _joinListWithSpace.tpl
│           ├── _merge.tpl
│           ├── _template.tpl
│           ├── _to_ini.tpl
│           ├── _to_k8s_env_secret_vars.tpl
│           ├── _to_k8s_env_vars.tpl
│           ├── _to_kv_list.tpl
│           └── _to_oslo_conf.tpl
├── horizon/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── releasenotes/
│   │   └── notes/
│   │       ├── horizon-023da44e7958de05.yaml
│   │       └── horizon-4c5d5e3b58c700a0.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _django.wsgi.tpl
│   │   │   ├── _horizon.sh.tpl
│   │   │   ├── _manage.py.tpl
│   │   │   └── _selenium-test.py.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── configmap-logo.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress.yaml
│   │   └── service.yaml
│   └── values.yaml
├── ironic/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _ironic-api.sh.tpl
│   │   │   ├── _ironic-conductor-init.sh.tpl
│   │   │   ├── _ironic-conductor.sh.tpl
│   │   │   ├── _manage-cleaning-network.sh.tpl
│   │   │   └── _retreive-swift-config.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-manage-cleaning-network.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── statefulset-conductor.yaml
│   └── values.yaml
├── keystone/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _cred-clean.py.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _domain-manage-init.sh.tpl
│   │   │   ├── _domain-manage.py.tpl
│   │   │   ├── _domain-manage.sh.tpl
│   │   │   ├── _fernet-manage.py.tpl
│   │   │   └── _keystone-api.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-credential-rotate.yaml
│   │   ├── cron-job-fernet-rotate.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-credential-cleanup.yaml
│   │   ├── job-credential-setup.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-domain-manage.yaml
│   │   ├── job-fernet-setup.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-credential-keys.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-fernet-keys.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ldap-tls.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── kibana/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _apache.sh.tpl
│   │   │   ├── _create_kibana_index_patterns.sh.tpl
│   │   │   ├── _flush_kibana_metadata.sh.tpl
│   │   │   └── _kibana.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-kibana.yaml
│   │   ├── job-flush-kibana-metadata.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-register-kibana-indexes.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-elasticsearch-creds.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress-kibana.yaml
│   │   └── service.yaml
│   └── values.yaml
├── kube-dns/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-kube-dns.yaml
│   │   ├── deployment-kube-dns.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-kube-dns.yaml
│   │   └── serviceaccount-kube-dns.yaml
│   └── values.yaml
├── kubernetes-keystone-webhook/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _kubernetes-keystone-webhook-test.sh.tpl
│   │   │   └── _start.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress.yaml
│   │   ├── pod-test.yaml
│   │   ├── secret-certificates.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── service.yaml
│   └── values.yaml
├── kubernetes-node-problem-detector/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _node-problem-detector.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-registry.yaml
│   │   └── service.yaml
│   └── values.yaml
├── ldap/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── _helpers.tpl
│   │   ├── bin/
│   │   │   └── _bootstrap.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service.yaml
│   │   └── statefulset.yaml
│   └── values.yaml
├── libvirt/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── releasenotes/
│   │   └── notes/
│   │       └── libvirt-339936ca478fbf50.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _ceph-admin-keyring.sh.tpl
│   │   │   ├── _ceph-keyring.sh.tpl
│   │   │   └── _libvirt.sh.tpl
│   │   ├── configmap-apparmor.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-libvirt.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network-policy.yaml
│   │   ├── pod-monitor.yaml
│   │   ├── role-cert-manager.yaml
│   │   ├── secret-registry.yaml
│   │   └── utils/
│   │       └── _to_libvirt_conf.tpl
│   └── values.yaml
├── local-storage/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── extra-manifests.yaml
│   │   ├── persistent-volumes.yaml
│   │   └── storage-class.yaml
│   └── values.yaml
├── local-volume-provisioner/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _fakemount.py.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-lvp.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-registry.yaml
│   │   └── storageclasses.yaml
│   └── values.yaml
├── magnum/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _magnum-api.sh.tpl
│   │   │   ├── _magnum-conductor-init.sh.tpl
│   │   │   └── _magnum-conductor.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user-domain.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── kubeconfig.tpl
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── statefulset-conductor.yaml
│   └── values.yaml
├── manila/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _ceph-keyring.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _manila-api.sh.tpl
│   │   │   ├── _manila-data.sh.tpl
│   │   │   ├── _manila-scheduler.sh.tpl
│   │   │   ├── _manila-share-init.sh.tpl
│   │   │   └── _manila-share.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-data.yaml
│   │   ├── deployment-scheduler.yaml
│   │   ├── deployment-share.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── mariadb/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── README.rst
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _backup_mariadb.sh.tpl
│   │   │   ├── _health.sh.tpl
│   │   │   ├── _mariadb-wait-for-cluster.py.tpl
│   │   │   ├── _mariadb_controller.py.tpl
│   │   │   ├── _prometheus-create-mysql-user.sh.tpl
│   │   │   ├── _prometheus-mysqld-exporter.sh.tpl
│   │   │   ├── _restore_mariadb.sh.tpl
│   │   │   ├── _start.py.tpl
│   │   │   ├── _start_mariadb_verify_server.sh.tpl
│   │   │   └── _test.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── configmap-services-tcp.yaml
│   │   ├── cron-job-backup-mariadb.yaml
│   │   ├── deployment-controller.yaml
│   │   ├── exporter-configmap-bin.yaml
│   │   ├── exporter-job-create-user.yaml
│   │   ├── exporter-secrets-etc.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-cluster-wait.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── mariadb-backup-pvc.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-mariadb.yaml
│   │   ├── pod-test.yaml
│   │   ├── secret-backup-restore.yaml
│   │   ├── secret-dbadmin-password.yaml
│   │   ├── secret-dbaudit-password.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-rgw.yaml
│   │   ├── secret-sst-password.yaml
│   │   ├── secrets/
│   │   │   ├── _admin_user.cnf.tpl
│   │   │   ├── _admin_user_internal.cnf.tpl
│   │   │   └── _prometheus-exporter_user.cnf.tpl
│   │   ├── secrets-etc.yaml
│   │   ├── service-discovery.yaml
│   │   ├── service-master.yaml
│   │   ├── service.yaml
│   │   └── statefulset.yaml
│   └── values.yaml
├── mariadb-backup/
│   ├── Chart.yaml
│   ├── README.rst
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _backup_mariadb.sh.tpl
│   │   │   ├── _restore_mariadb.sh.tpl
│   │   │   └── _start_mariadb_verify_server.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-backup-mariadb.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── mariadb-backup-pvc.yaml
│   │   ├── secret-backup-restore.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-rgw.yaml
│   │   ├── secrets/
│   │   │   ├── _admin_user.cnf.tpl
│   │   │   └── _admin_user_internal.cnf.tpl
│   │   └── secrets-etc.yaml
│   └── values.yaml
├── mariadb-cluster/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── README.rst
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _liveness.sh.tpl
│   │   │   ├── _readiness.sh.tpl
│   │   │   └── _test.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-refresh-statefulset.yaml
│   │   ├── mariadb.yaml
│   │   ├── network_policy.yaml
│   │   ├── pod-test.yaml
│   │   ├── secret-dbadmin-password.yaml
│   │   ├── secret-dbaudit-password.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-sst-password.yaml
│   │   ├── secrets/
│   │   │   ├── _admin_user.cnf.tpl
│   │   │   ├── _admin_user_internal.cnf.tpl
│   │   │   └── _privileges.sql.tpl
│   │   └── secrets-etc.yaml
│   └── values.yaml
├── masakari/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _manage-db.sh.tpl
│   │   │   ├── _masakari-api.sh.tpl
│   │   │   ├── _masakari-engine.sh.tpl
│   │   │   ├── _masakari-host-monitor.sh.tpl
│   │   │   ├── _masakari-instance-monitor.sh.tpl
│   │   │   ├── _masakari-introspective-instance-monitor.sh.tpl
│   │   │   ├── _masakari-monitors-init.sh.tpl
│   │   │   └── _masakari-process-monitor.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-host-monitor.yaml
│   │   ├── daemonset-instance-monitor.yaml
│   │   ├── daemonset-introspective-instance-monitor.yaml
│   │   ├── daemonset-process-monitor.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-engine.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbitmq-init.yaml
│   │   ├── pbd-api.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   └── service-api.yaml
│   └── values.yaml
├── memcached/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _memcached.sh.tpl
│   │   ├── configmap-apparmor.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service.yaml
│   │   └── statefulset.yaml
│   └── values.yaml
├── mistral/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _mistral-api.sh.tpl
│   │   │   ├── _mistral-engine.sh.tpl
│   │   │   ├── _mistral-event-engine.sh.tpl
│   │   │   └── _mistral-executor.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-executor.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   ├── service-ingress-api.yaml
│   │   ├── statefulset-engine.yaml
│   │   └── statefulset-event-engine.yaml
│   └── values.yaml
├── nagios/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _apache.sh.tpl
│   │   │   ├── _nagios-readiness.sh.tpl
│   │   │   └── _selenium-tests.py.tpl
│   │   ├── configmap-additional-plugins.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-nagios.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-nagios.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress-nagios.yaml
│   │   └── service.yaml
│   └── values.yaml
├── namespace-config/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── extra-manifests.yaml
│   │   └── limit-range.yaml
│   └── values.yaml
├── neutron/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _health-probe.py.tpl
│   │   │   ├── _neutron-bagpipe-bgp-init.sh.tpl
│   │   │   ├── _neutron-bagpipe-bgp.sh.tpl
│   │   │   ├── _neutron-bgp-dragent.sh.tpl
│   │   │   ├── _neutron-dhcp-agent-init.sh.tpl
│   │   │   ├── _neutron-dhcp-agent.sh.tpl
│   │   │   ├── _neutron-ironic-agent-init.sh.tpl
│   │   │   ├── _neutron-ironic-agent.sh.tpl
│   │   │   ├── _neutron-l2gw-agent.sh.tpl
│   │   │   ├── _neutron-l3-agent-init.sh.tpl
│   │   │   ├── _neutron-l3-agent.sh.tpl
│   │   │   ├── _neutron-linuxbridge-agent-init-modules.sh.tpl
│   │   │   ├── _neutron-linuxbridge-agent-init.sh.tpl
│   │   │   ├── _neutron-linuxbridge-agent.sh.tpl
│   │   │   ├── _neutron-metadata-agent-init.sh.tpl
│   │   │   ├── _neutron-metadata-agent.sh.tpl
│   │   │   ├── _neutron-netns-cleanup-cron.sh.tpl
│   │   │   ├── _neutron-openvswitch-agent-init-modules.sh.tpl
│   │   │   ├── _neutron-openvswitch-agent-init-netoffload.sh.tpl
│   │   │   ├── _neutron-openvswitch-agent-init.sh.tpl
│   │   │   ├── _neutron-openvswitch-agent-liveness.sh.tpl
│   │   │   ├── _neutron-openvswitch-agent-readiness.sh.tpl
│   │   │   ├── _neutron-openvswitch-agent.sh.tpl
│   │   │   ├── _neutron-ovn-db-sync.sh.tpl
│   │   │   ├── _neutron-ovn-init.sh.tpl
│   │   │   ├── _neutron-ovn-metadata-agent.sh.tpl
│   │   │   ├── _neutron-ovn-vpn-agent-init.sh.tpl
│   │   │   ├── _neutron-ovn-vpn-agent.sh.tpl
│   │   │   ├── _neutron-rpc-server.sh.tpl
│   │   │   ├── _neutron-server.sh.tpl
│   │   │   ├── _neutron-sriov-agent-init.sh.tpl
│   │   │   ├── _neutron-sriov-agent.sh.tpl
│   │   │   ├── _neutron-test-force-cleanup.sh.tpl
│   │   │   └── _nginx.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-ovn-db-sync.yaml
│   │   ├── daemonset-bagpipe-bgp.yaml
│   │   ├── daemonset-bgp-dragent.yaml
│   │   ├── daemonset-dhcp-agent.yaml
│   │   ├── daemonset-l2gw-agent.yaml
│   │   ├── daemonset-l3-agent.yaml
│   │   ├── daemonset-lb-agent.yaml
│   │   ├── daemonset-metadata-agent.yaml
│   │   ├── daemonset-netns-cleanup-cron.yaml
│   │   ├── daemonset-neutron-ovn-vpn-agent.yaml
│   │   ├── daemonset-ovn-metadata-agent.yaml
│   │   ├── daemonset-ovs-agent.yaml
│   │   ├── daemonset-sriov-agent.yaml
│   │   ├── deployment-ironic-agent.yaml
│   │   ├── deployment-rpc_server.yaml
│   │   ├── deployment-server.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-server.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-server.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ks-etc.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress-neutron.yaml
│   │   └── service-server.yaml
│   └── values.yaml
├── nfs-provisioner/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-bin.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service.yaml
│   │   ├── storage_class.yaml
│   │   └── volume_claim.yaml
│   └── values.yaml
├── nova/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _cell-setup-init.sh.tpl
│   │   │   ├── _cell-setup.sh.tpl
│   │   │   ├── _ceph-admin-keyring.sh.tpl
│   │   │   ├── _ceph-keyring.sh.tpl
│   │   │   ├── _db-archive-deleted-row.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _fake-iptables.sh.tpl
│   │   │   ├── _health-probe.py.tpl
│   │   │   ├── _iscsiadm.tpl
│   │   │   ├── _multipath.tpl
│   │   │   ├── _multipathd.tpl
│   │   │   ├── _nova-api-metadata-init.sh.tpl
│   │   │   ├── _nova-api-metadata.sh.tpl
│   │   │   ├── _nova-api.sh.tpl
│   │   │   ├── _nova-compute-init.sh.tpl
│   │   │   ├── _nova-compute-ironic.sh.tpl
│   │   │   ├── _nova-compute.sh.tpl
│   │   │   ├── _nova-conductor.sh.tpl
│   │   │   ├── _nova-console-compute-init.sh.tpl
│   │   │   ├── _nova-console-proxy-init-assets.sh.tpl
│   │   │   ├── _nova-console-proxy-init.sh.tpl
│   │   │   ├── _nova-console-proxy.sh.tpl
│   │   │   ├── _nova-scheduler.sh.tpl
│   │   │   ├── _nova-service-cleaner.sh.tpl
│   │   │   ├── _ssh-init.sh.tpl
│   │   │   ├── _ssh-start.sh.tpl
│   │   │   ├── _storage-init.sh.tpl
│   │   │   └── _wait-for-computes-init.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-archive-deleted-rows.yaml
│   │   ├── cron-job-cell-setup.yaml
│   │   ├── cron-job-service-cleaner.yaml
│   │   ├── daemonset-compute.yaml
│   │   ├── deployment-api-metadata.yaml
│   │   ├── deployment-api-osapi.yaml
│   │   ├── deployment-conductor.yaml
│   │   ├── deployment-novncproxy.yaml
│   │   ├── deployment-scheduler.yaml
│   │   ├── deployment-serialproxy.yaml
│   │   ├── deployment-spiceproxy.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-metadata.yaml
│   │   ├── ingress-novncproxy.yaml
│   │   ├── ingress-osapi.yaml
│   │   ├── ingress-serialproxy.yaml
│   │   ├── ingress-spiceproxy.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-cell-setup.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-nova-storage-init.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── netpol-nova.yaml
│   │   ├── pdb-metadata.yaml
│   │   ├── pdb-osapi.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db-api.yaml
│   │   ├── secret-db-cell0.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ks-etc.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-ssh.yaml
│   │   ├── service-ingress-metadata.yaml
│   │   ├── service-ingress-novncproxy.yaml
│   │   ├── service-ingress-osapi.yaml
│   │   ├── service-ingress-serialproxy.yaml
│   │   ├── service-ingress-spiceproxy.yaml
│   │   ├── service-metadata.yaml
│   │   ├── service-novncproxy.yaml
│   │   ├── service-osapi.yaml
│   │   ├── service-serialproxy.yaml
│   │   ├── service-spiceproxy.yaml
│   │   ├── statefulset-compute-ironic.yaml
│   │   ├── statefulset-conductor.yaml
│   │   └── statefulset-scheduler.yaml
│   └── values.yaml
├── octavia/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _octavia-api.sh.tpl
│   │   │   ├── _octavia-driver-agent.sh.tpl
│   │   │   ├── _octavia-health-manager-get-port.sh.tpl
│   │   │   ├── _octavia-health-manager-nic-init.sh.tpl
│   │   │   ├── _octavia-health-manager.sh.tpl
│   │   │   ├── _octavia-housekeeping.sh.tpl
│   │   │   ├── _octavia-worker-get-port.sh.tpl
│   │   │   ├── _octavia-worker-nic-init.sh.tpl
│   │   │   └── _octavia-worker.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-health-manager.yaml
│   │   ├── daemonset-worker.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-driver-agent.yaml
│   │   ├── deployment-housekeeping.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoint.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── secret-db-persistence.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── openvswitch/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _openvswitch-db-server.sh.tpl
│   │   │   ├── _openvswitch-vswitchd-init-modules.sh.tpl
│   │   │   └── _openvswitch-vswitchd.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── daemonset.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network-policy.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── ovn/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _ovn-controller-init.sh.tpl
│   │   │   └── _ovn-network-logging-parser.sh.tpl
│   │   ├── clusterrole-controller.yaml
│   │   ├── clusterrolebinding-controller.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-controller.yaml
│   │   ├── deployment-northd.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── role-controller.yaml
│   │   ├── role-northd.yaml
│   │   ├── role-ovsdb.yaml
│   │   ├── rolebinding-controller.yaml
│   │   ├── rolebinding-northd.yaml
│   │   ├── rolebinding-ovsdb.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-vector.yaml
│   │   ├── service-ovsdb-nb.yaml
│   │   ├── service-ovsdb-sb.yaml
│   │   ├── statefulset-ovsdb-nb.yaml
│   │   └── statefulset-ovsdb-sb.yaml
│   └── values.yaml
├── placement/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _db-sync.sh.tpl
│   │   │   └── _placement-api.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ks-etc.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress.yaml
│   │   └── service.yaml
│   └── values.yaml
├── playbooks/
│   ├── build-chart.yaml
│   ├── collect-logs.yaml
│   ├── deploy-env-kubespray.yaml
│   ├── deploy-env.yaml
│   ├── enable-hugepages.yaml
│   ├── inject-keys.yaml
│   ├── lint.yaml
│   ├── mount-volumes.yaml
│   ├── osh-bandit.yaml
│   ├── prepare-hosts.yaml
│   ├── publish/
│   │   ├── post.yaml
│   │   └── run.yaml
│   └── run-scripts.yaml
├── postgresql/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _backup_postgresql.sh.tpl
│   │   │   ├── _common_backup_restore.sh.tpl
│   │   │   ├── _db_test.sh.tpl
│   │   │   ├── _postgresql_archive_cleanup.sh.tpl
│   │   │   ├── _readiness.sh.tpl
│   │   │   ├── _remote_retrieve_postgresql.sh.tpl
│   │   │   ├── _remote_store_postgresql.sh.tpl
│   │   │   ├── _restore_postgresql.sh.tpl
│   │   │   └── _start.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-backup-postgres.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── monitoring/
│   │   │   └── prometheus/
│   │   │       ├── bin/
│   │   │       │   └── _create-postgresql-exporter-user.sh.tpl
│   │   │       ├── exporter-configmap-bin.yaml
│   │   │       ├── exporter-configmap-etc.yaml
│   │   │       ├── exporter-deployment.yaml
│   │   │       ├── exporter-job-create-user.yaml
│   │   │       ├── exporter-secrets-etc.yaml
│   │   │       └── exporter-service.yaml
│   │   ├── network_policy.yaml
│   │   ├── pod-test.yaml
│   │   ├── postgresql-backup-pvc.yaml
│   │   ├── secret-admin.yaml
│   │   ├── secret-audit.yaml
│   │   ├── secret-backup-restore.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-rgw.yaml
│   │   ├── secrets/
│   │   │   └── _admin_user.conf.tpl
│   │   ├── secrets-etc.yaml
│   │   ├── service-postgres.yaml
│   │   ├── service-restapi.yaml
│   │   └── statefulset.yaml
│   └── values.yaml
├── powerdns/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _powerdns-mysql-sync.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-registry.yaml
│   │   └── service.yaml
│   └── values.yaml
├── prometheus/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _apache.sh.tpl
│   │   │   ├── _helm-tests.sh.tpl
│   │   │   └── _prometheus.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-prometheus.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── pod-helm-tests.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-prometheus.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret-tls-configs.yaml
│   │   ├── service-ingress-prometheus.yaml
│   │   ├── service.yaml
│   │   ├── statefulset.yaml
│   │   └── utils/
│   │       └── _command_line_flags.tpl
│   └── values.yaml
├── prometheus-alertmanager/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _alertmanager.sh.tpl
│   │   │   └── _apache.sh.tpl
│   │   ├── clusterrolebinding.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-alertmanager.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-admin-user.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-discovery.yaml
│   │   ├── service-ingress-alertmanager.yaml
│   │   ├── service.yaml
│   │   └── statefulset.yaml
│   └── values.yaml
├── prometheus-blackbox-exporter/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── secret-registry.yaml
│   │   ├── secret.yaml
│   │   └── service.yaml
│   └── values.yaml
├── prometheus-kube-state-metrics/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-bin.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-controller-manager.yaml
│   │   ├── service-kube-state-metrics.yaml
│   │   └── service-scheduler.yaml
│   └── values.yaml
├── prometheus-mysql-exporter/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── README.rst
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _create-mysql-user.sh.tpl
│   │   │   └── _mysqld-exporter.sh.tpl
│   │   ├── exporter-configmap-bin.yaml
│   │   ├── exporter-deployment.yaml
│   │   ├── exporter-job-create-user.yaml
│   │   ├── exporter-network-policy.yaml
│   │   ├── exporter-secrets-etc.yaml
│   │   ├── exporter-service.yaml
│   │   ├── extra-manifests.yaml
│   │   └── secrets/
│   │       └── _exporter_user.cnf.tpl
│   └── values.yaml
├── prometheus-node-exporter/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _node-exporter.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── daemonset.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── secret-registry.yaml
│   │   └── service.yaml
│   └── values.yaml
├── prometheus-openstack-exporter/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   └── _prometheus-openstack-exporter.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-registry.yaml
│   │   └── service.yaml
│   └── values.yaml
├── prometheus-process-exporter/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── daemonset.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── secret-registry.yaml
│   │   └── service.yaml
│   └── values.yaml
├── rabbitmq/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _rabbitmq-cookie.sh.tpl
│   │   │   ├── _rabbitmq-liveness.sh.tpl
│   │   │   ├── _rabbitmq-password-hash.py.tpl
│   │   │   ├── _rabbitmq-readiness.sh.tpl
│   │   │   ├── _rabbitmq-start.sh.tpl
│   │   │   ├── _rabbitmq-test.sh.tpl
│   │   │   └── _rabbitmq-wait-for-cluster.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── etc/
│   │   │   └── _enabled_plugins.tpl
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-management.yaml
│   │   ├── job-cluster-wait.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── network_policy.yaml
│   │   ├── pod-test.yaml
│   │   ├── secret-erlang-cookie.yaml
│   │   ├── secret-rabbit-admin.yaml
│   │   ├── secret-rabbitmq-users-credentials.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress-management.yaml
│   │   ├── service.yaml
│   │   ├── statefulset.yaml
│   │   └── utils/
│   │       └── _to_rabbit_config.tpl
│   └── values.yaml
├── rally/
│   ├── Chart.yaml
│   ├── README.rst
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _manage-db.sh.tpl
│   │   │   └── _run-task.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── configmap-tasks.yaml
│   │   ├── configmap-test-templates.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-manage-db.yaml
│   │   ├── job-run-task.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pvc-rally.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── redis/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── configmap-bin.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── pod_test.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service.yaml
│   │   └── test/
│   │       ├── _python_redis_tests.py.tpl
│   │       └── _redis_test.sh.tpl
│   └── values.yaml
├── registry/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _registry-proxy.sh.tpl
│   │   │   └── _registry.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-registry-proxy.yaml
│   │   ├── deployment-registry.yaml
│   │   ├── etc/
│   │   │   └── _default.conf.tpl
│   │   ├── extra-manifests.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── pvc-images.yaml
│   │   ├── secret-registry.yaml
│   │   └── service-registry.yaml
│   └── values.yaml
├── release.asc
├── releasenotes/
│   ├── config.yaml
│   ├── notes/
│   │   ├── added-nova-uid-parameter-to-ovs-chart-41d2b05b79300a31.yaml
│   │   ├── aodh-0fe345390dd08642.yaml
│   │   ├── aodh-1002dad350db1c60.yaml
│   │   ├── aodh-bb91c011b0c7d911.yaml
│   │   ├── aodh.yaml
│   │   ├── barbican-669168de73ab5847.yaml
│   │   ├── barbican-d291498fada9e601.yaml
│   │   ├── barbican-ead8061b2a6b1b1b.yaml
│   │   ├── barbican.yaml
│   │   ├── blazar-73cedded47699964.yaml
│   │   ├── blazar-a7b9b29ba15720c0.yaml
│   │   ├── blazar-b7fc5016b49c8f59.yaml
│   │   ├── ca-clusterissuer.yaml
│   │   ├── ca-issuer.yaml
│   │   ├── ceilometer-15768e1064d3339d.yaml
│   │   ├── ceilometer-8fc69d6664cdf101.yaml
│   │   ├── ceilometer-ab177a5c0aad98df.yaml
│   │   ├── ceilometer-b03ea218e1e61f90.yaml
│   │   ├── ceilometer-b86532145d088208.yaml
│   │   ├── ceilometer-c08f029ffa1e122f.yaml
│   │   ├── ceilometer.yaml
│   │   ├── ceph-adapter-rook-2fd83689f9bf78fb.yaml
│   │   ├── ceph-adapter-rook-f0855e8843fe615f.yaml
│   │   ├── ceph-adapter-rook.yaml
│   │   ├── ceph-client-055d675e86b2d0ea.yaml
│   │   ├── ceph-client-f4c8397a4313c53a.yaml
│   │   ├── ceph-client.yaml
│   │   ├── ceph-mon-1a1ecc38a96bfead.yaml
│   │   ├── ceph-mon-5ece5f0b0f571966.yaml
│   │   ├── ceph-mon-a1f450d714b90cfb.yaml
│   │   ├── ceph-mon-f029c2a86a0b7edd.yaml
│   │   ├── ceph-mon.yaml
│   │   ├── ceph-osd-294b73092b0b301b.yaml
│   │   ├── ceph-osd-c897b82dd8d0104b.yaml
│   │   ├── ceph-osd-e9bd9ab0cb036080.yaml
│   │   ├── ceph-osd.yaml
│   │   ├── ceph-provisioners-091a682dc01c219f.yaml
│   │   ├── ceph-provisioners-c4334743e1cadc04.yaml
│   │   ├── ceph-provisioners.yaml
│   │   ├── ceph-rgw-1dc7fd498ff7ed46.yaml
│   │   ├── ceph-rgw-9d99622a011584b0.yaml
│   │   ├── ceph-rgw.yaml
│   │   ├── cert-rotation-06fbf166bc55e372.yaml
│   │   ├── cert-rotation.yaml
│   │   ├── change-default-ovs-image-c1e24787f1b03170.yaml
│   │   ├── change-memcache-backend-2d85a3c75b32db39.yaml
│   │   ├── changed-ovs-dpdk-root-key-f8aaf3ad65189c8a.yaml
│   │   ├── cinder-1db248fbc00e56ff.yaml
│   │   ├── cinder-32aac095ffc09912.yaml
│   │   ├── cinder-48232b427a294d57.yaml
│   │   ├── cinder-4e17dd8ee84ca1a2.yaml
│   │   ├── cinder-8f8fd56d2c9a5d75.yaml
│   │   ├── cinder-92ee9aa061442690.yaml
│   │   ├── cinder-a25114bef0ed2f56.yaml
│   │   ├── cinder-a530fe90112c74d1.yaml
│   │   ├── cinder-aca94f2247bcddcd.yaml
│   │   ├── cinder-b605e2bc57b6d49f.yaml
│   │   ├── cinder-ddd3bb79dff72ba6.yaml
│   │   ├── cinder-ded5ec20ef58ac93.yaml
│   │   ├── cinder-f177532ecd78dcec.yaml
│   │   ├── cinder.yaml
│   │   ├── cloudkitty-a95de06fbfeac965.yaml
│   │   ├── cloudkitty-d61bea096f10b731.yaml
│   │   ├── cloudkitty.yaml
│   │   ├── common-695408be564c5d44.yaml
│   │   ├── common-76e452ae14eb3707.yaml
│   │   ├── common-8730c7058550f934.yaml
│   │   ├── common-d6d7b93fcc7296e9.yaml
│   │   ├── common-eb7338a63d83ad95.yaml
│   │   ├── common-f19dec4799b18756.yaml
│   │   ├── cyborg.yaml
│   │   ├── designate-9ed4257ab657b224.yaml
│   │   ├── designate-bc18055009645160.yaml
│   │   ├── designate.yaml
│   │   ├── elastic-apm-server.yaml
│   │   ├── elastic-filebeat.yaml
│   │   ├── elastic-metricbeat.yaml
│   │   ├── elastic-packetbeat.yaml
│   │   ├── elasticseach-625bc83028513f08.yaml
│   │   ├── elasticsearch-127e34013b70451d.yaml
│   │   ├── elasticsearch-1fb9cb9d0b6169a7.yaml
│   │   ├── elasticsearch-4a005ef3cec5f170.yaml
│   │   ├── elasticsearch-653d4b77cf26c277.yaml
│   │   ├── elasticsearch-ba314935c85c3b25.yaml
│   │   ├── elasticsearch-baf978b047efc111.yaml
│   │   ├── elasticsearch.yaml
│   │   ├── etcd.yaml
│   │   ├── fluentbit.yaml
│   │   ├── fluentd.yaml
│   │   ├── freezer-3272cc6ed891f5a3.yaml
│   │   ├── glance-1245a71c1694b79c.yaml
│   │   ├── glance-79dad0da1e27df42.yaml
│   │   ├── glance-9043d8c0a8119256.yaml
│   │   ├── glance-cb814fab2bccc95e.yaml
│   │   ├── glance-cbd61a1ae1e902b5.yaml
│   │   ├── glance-e528d9f2473763a1.yaml
│   │   ├── glance.yaml
│   │   ├── gnocchi-37ba93d527c7ba75.yaml
│   │   ├── gnocchi-71bec40a3416cb8a.yaml
│   │   ├── gnocchi.yaml
│   │   ├── grafana-b3fac6a311d115a6.yaml
│   │   ├── grafana-d1a2049e057fe878.yaml
│   │   ├── grafana.yaml
│   │   ├── heat-5e861ec1ee8e2784.yaml
│   │   ├── heat-7222563449ea848e.yaml
│   │   ├── heat-a584fab629e1c4fc.yaml
│   │   ├── heat.yaml
│   │   ├── helm-toolkit-04996581655d9952.yaml
│   │   ├── helm-toolkit-1ac16e62f779d907.yaml
│   │   ├── helm-toolkit-49593d58783c3a97.yaml
│   │   ├── helm-toolkit-5fa68b35be3378b3.yaml
│   │   ├── helm-toolkit-81cf091a301877ff.yaml
│   │   ├── helm-toolkit-9618f6c4379c13bc.yaml
│   │   ├── helm-toolkit-a2810391532bd64a.yaml
│   │   ├── helm-toolkit-acb954baa2fe7b2f.yaml
│   │   ├── helm-toolkit-e84e695df114929d.yaml
│   │   ├── helm-toolkit-fa49be61648b2d72.yaml
│   │   ├── helm-toolkit.yaml
│   │   ├── horizon-172a4ff3264fc495.yaml
│   │   ├── horizon.yaml
│   │   ├── increase-default-logging-31db0e9d3e51b429.yaml
│   │   ├── ingress.yaml
│   │   ├── ironic-0035b6286b1c6333.yaml
│   │   ├── ironic-022571f573f6c430.yaml
│   │   ├── ironic-2b9283c8924f8c63.yaml
│   │   ├── ironic-2fcd7c5ae98b55f4.yaml
│   │   ├── ironic-4963b8bfe3c212d0.yaml
│   │   ├── ironic-4a1d33f9e4147b79.yaml
│   │   ├── ironic-82bd78c64b57d2ce.yaml
│   │   ├── ironic-adbba9c6718cc0d6.yaml
│   │   ├── ironic-c0de8abe9970dca0.yaml
│   │   ├── ironic.yaml
│   │   ├── keystone-0e6674e1c443cd81.yaml
│   │   ├── keystone-12efe8927d1a0934.yaml
│   │   ├── keystone-17cdfeb53f6eb5dd.yaml
│   │   ├── keystone-1aaec51f0512e445.yaml
│   │   ├── keystone-56908951efdcc19e.yaml
│   │   ├── keystone-5dd1eca70f3382d8.yaml
│   │   ├── keystone-9bca09a40cc3dc68.yaml
│   │   ├── keystone-dab27a4eeaab96d1.yaml
│   │   ├── keystone-e2d6c0f6c85415ab.yaml
│   │   ├── keystone-fb00add9c87916a3.yaml
│   │   ├── keystone-healthcheck-1f72d266f886e735.yaml
│   │   ├── keystone.yaml
│   │   ├── kibana-053401293f7f508d.yaml
│   │   ├── kibana-add46185e9a8d6af.yaml
│   │   ├── kibana-c0b39f760a7c5b80.yaml
│   │   ├── kibana.yaml
│   │   ├── kube-dns.yaml
│   │   ├── kubernetes-keystone-webhook.yaml
│   │   ├── kubernetes-node-problem-detector.yaml
│   │   ├── ldap-4737a2ba0a8a499f.yaml
│   │   ├── ldap.yaml
│   │   ├── libvirt-5bf3185fc00a9938.yaml
│   │   ├── libvirt-85375c3ae369bc39.yaml
│   │   ├── libvirt-ac59444a6623ddb9.yaml
│   │   ├── libvirt-b5dc605552feb278.yaml
│   │   ├── libvirt-e8ba1d91a8ca4999.yaml
│   │   ├── libvirt-f81d6fc0b0094209.yaml
│   │   ├── libvirt.yaml
│   │   ├── local-storage.yaml
│   │   ├── local-volume-provisioner.yaml
│   │   ├── magnum.yaml
│   │   ├── manila-23590e37667d10a5.yaml
│   │   ├── manila-3a767553950629bd.yaml
│   │   ├── manila-7bf5ad7472dbf691.yaml
│   │   ├── manila-a5beeacdb577dd23.yaml
│   │   ├── manila-f7286f302a9372eb.yaml
│   │   ├── manila-f8ada2e675fcc308.yaml
│   │   ├── manila.yaml
│   │   ├── mariadb-0cb94bb0ae8cf38a.yaml
│   │   ├── mariadb-2d75f250c1fbcd73.yaml
│   │   ├── mariadb-7d8282a6eeb4d249.yaml
│   │   ├── mariadb-840fccbf8f0e9d39.yaml
│   │   ├── mariadb-b923ac9345734125.yaml
│   │   ├── mariadb-backup-58c8a77f9c03bae8.yaml
│   │   ├── mariadb-backup-af891fea0cfa3db5.yaml
│   │   ├── mariadb-backup-c27eb2dc0a56a7ed.yaml
│   │   ├── mariadb-backup.yaml
│   │   ├── mariadb-cluster-4672d16769afdb47.yaml
│   │   ├── mariadb-cluster.yaml
│   │   ├── mariadb-dcd35d40fcd4a749.yaml
│   │   ├── mariadb.yaml
│   │   ├── masakari-ea8acf2427bc9811.yaml
│   │   ├── masakari.yaml
│   │   ├── memcached-1ae10613b2e36813.yaml
│   │   ├── memcached.yaml
│   │   ├── mistral.yaml
│   │   ├── nagios-36a6b2cb6e9fc720.yaml
│   │   ├── nagios.yaml
│   │   ├── namespace-config.yaml
│   │   ├── neutron-00a56405067b123d.yaml
│   │   ├── neutron-013c9be46456b92c.yaml
│   │   ├── neutron-288ac8b37720832e.yaml
│   │   ├── neutron-2af36e49a0a377c3.yaml
│   │   ├── neutron-2bb975307f0d27f2.yaml
│   │   ├── neutron-2d4db97bc8900286.yaml
│   │   ├── neutron-315f825e54d3f34c.yaml
│   │   ├── neutron-32815761690bedf5.yaml
│   │   ├── neutron-3c11cf48f8c7c592.yaml
│   │   ├── neutron-3c33aea435f7ab8a.yaml
│   │   ├── neutron-42b77d74ce8fe287.yaml
│   │   ├── neutron-4f9263300df02c9b.yaml
│   │   ├── neutron-659f0c21af1feaa0.yaml
│   │   ├── neutron-670d4cd96f100dea.yaml
│   │   ├── neutron-96d95ffbdeaaf29a.yaml
│   │   ├── neutron-9dbb4250fd893743.yaml
│   │   ├── neutron-add-uwsgi-start-time-d73ba462e1157dd2.yaml
│   │   ├── neutron-b2247f89a5f258aa.yaml
│   │   ├── neutron-b225c11a5e1d522d.yaml
│   │   ├── neutron-c0c7ca4e49cbf03c.yaml
│   │   ├── neutron-c451a4129f97e891.yaml
│   │   ├── neutron-d39cc4643edac73c.yaml
│   │   ├── neutron-f0674e08d80fc203.yaml
│   │   ├── neutron-fca28403d7a0be3a.yaml
│   │   ├── neutron.yaml
│   │   ├── nfs-provisioner.yaml
│   │   ├── nova-1a7fb130b261f92d.yaml
│   │   ├── nova-29572c7b62b6ae0b.yaml
│   │   ├── nova-2c10ffbcf8d2f838.yaml
│   │   ├── nova-2e97a6de46b4c9b9.yaml
│   │   ├── nova-3493b35ba8c4479a.yaml
│   │   ├── nova-366b14dea33d416d.yaml
│   │   ├── nova-467e6c34e9fd1b05.yaml
│   │   ├── nova-476f40003a31bc77.yaml
│   │   ├── nova-495c648112a2b539.yaml
│   │   ├── nova-4b998ef222e57fd1.yaml
│   │   ├── nova-5bb93c130c2a280d.yaml
│   │   ├── nova-5d7903f3b97aa088.yaml
│   │   ├── nova-60c926ac61319ba1.yaml
│   │   ├── nova-69cb1a01b6f5c561.yaml
│   │   ├── nova-6b1d99fb5c67b2dd.yaml
│   │   ├── nova-7f3dbce1333752b8.yaml
│   │   ├── nova-9df2dfa1e3521305.yaml
│   │   ├── nova-b0749b6144e2b871.yaml
│   │   ├── nova-b2ce6bcc83029d1b.yaml
│   │   ├── nova-c59fc7469b3a8500.yaml
│   │   ├── nova-dd4188dbc489977c.yaml
│   │   ├── nova-e42deac3199480e6.yaml
│   │   ├── nova-e8350419e59bc440.yaml
│   │   ├── nova-fc00bda9bb69988e.yaml
│   │   ├── nova.yaml
│   │   ├── octavia-171c56de7891c86d.yaml
│   │   ├── octavia-3c13346818a743cc.yaml
│   │   ├── octavia-63cb483419410e3c.yaml
│   │   ├── octavia-73c0f7c8c13c00a1.yaml
│   │   ├── octavia-74938cd9ffae016b.yaml
│   │   ├── octavia-875ff6ae26e5586c.yaml
│   │   ├── octavia-a9a696fde141cd8b.yaml
│   │   ├── octavia-b40e89ec5e5b5568.yaml
│   │   ├── octavia-c0e8011e138832db.yaml
│   │   ├── octavia-c952d2266d5dbd62.yaml
│   │   ├── octavia-c9f2b0ece7ba8406.yaml
│   │   ├── octavia-d22c4az0a92b7d16.yaml
│   │   ├── octavia-f6afc93cf3ccc8f7.yaml
│   │   ├── octavia-health-manager-net-caps-49adc645e1d03456.yaml
│   │   ├── octavia.yaml
│   │   ├── openstack.yaml
│   │   ├── openvswitch-0b37403ffc75bb63.yaml
│   │   ├── openvswitch-3401ba2f0dc8e1f6.yaml
│   │   ├── openvswitch-3df8c5ca6034009f.yaml
│   │   ├── openvswitch-5c0d74ca4f420e56.yaml
│   │   ├── openvswitch-63f74f08815529dd.yaml
│   │   ├── openvswitch-c123b289b476575a.yaml
│   │   ├── openvswitch-e761d6733b84bdc7.yaml
│   │   ├── openvswitch-e888d02378d4d044.yaml
│   │   ├── openvswitch.yaml
│   │   ├── other-23a753cb53b10bb8.yaml
│   │   ├── ovn-3b9e82e5d469bc98.yaml
│   │   ├── ovn-3e576a7be97232fe.yaml
│   │   ├── ovn-50ba6d3611decff9.yaml
│   │   ├── ovn-53e7ddb42d51e7c9.yaml
│   │   ├── ovn-6c1c8afff28cf7f7.yaml
│   │   ├── ovn-73332b0bc5d647f2.yaml
│   │   ├── ovn-8b5cc103886f3b25.yaml
│   │   ├── ovn-a82eced671495a3d.yaml
│   │   ├── ovn-b172c29d8c0602b1.yaml
│   │   ├── ovn-d195851d81d68036.yaml
│   │   ├── ovn-ffd84bb8c9e73b64.yaml
│   │   ├── ovn.yaml
│   │   ├── panko.yaml
│   │   ├── placement-2b023904bc06028b.yaml
│   │   ├── placement-3115f3ce4c0801af.yaml
│   │   ├── placement-a180f4e88ed81d30.yaml
│   │   ├── placement.yaml
│   │   ├── podsecuritypolicy.yaml
│   │   ├── postgresql-4ee4e72706f17d8a.yaml
│   │   ├── postgresql-e1a02dbbe6601b0f.yaml
│   │   ├── postgresql.yaml
│   │   ├── powerdns.yaml
│   │   ├── prometeus-alertmanager-293616e8a47a12e8.yaml
│   │   ├── prometeus-e9a80f262470313c.yaml
│   │   ├── prometheus-alertmanager.yaml
│   │   ├── prometheus-blackbox-exporter.yaml
│   │   ├── prometheus-kube-state-metrics-b1fc3bf8e9109ae4.yaml
│   │   ├── prometheus-kube-state-metrics.yaml
│   │   ├── prometheus-mysql-exporter.yaml
│   │   ├── prometheus-node-exporter.yaml
│   │   ├── prometheus-openstack-exporter-39b2a7f52552033d.yaml
│   │   ├── prometheus-openstack-exporter-d95d286faa68ea98.yaml
│   │   ├── prometheus-openstack-exporter.yaml
│   │   ├── prometheus-process-exporter.yaml
│   │   ├── prometheus.yaml
│   │   ├── rabbitmq-04d68343d1f9dbec.yaml
│   │   ├── rabbitmq.yaml
│   │   ├── rally.yaml
│   │   ├── redis.yaml
│   │   ├── registry-daf63a0fbe9771cb.yaml
│   │   ├── registry.yaml
│   │   ├── remove-legacy-volume-apis-12d2d1abbb7fbe61.yaml
│   │   ├── remove-share-v1-api-d7b0b85e395bf131.yaml
│   │   ├── rename-ceph-rbd-pool-app-name.yaml
│   │   ├── skyline-0cc4caaea4f05714.yaml
│   │   ├── skyline-4763b3a9c14ace98.yaml
│   │   ├── skyline-794e9be9cc48f98d.yaml
│   │   ├── skyline-db-sync-image-b56ba0a4cad85c9c.yaml
│   │   ├── skyline-de744253bec9dfa3.yaml
│   │   ├── tacker.yaml
│   │   ├── tempest.yaml
│   │   ├── trove-a1b2c3d4e5f6g7h8.yaml
│   │   ├── trove.yaml
│   │   ├── watcher.yaml
│   │   └── zaqar-e43f9b2ace992d92.yaml
│   ├── requirements.txt
│   └── source/
│       ├── conf.py
│       ├── current.rst
│       ├── index.rst
│       └── locale/
│           └── en_GB/
│               └── LC_MESSAGES/
│                   └── releasenotes.po
├── roles/
│   ├── build-helm-packages/
│   │   ├── defaults/
│   │   │   └── main.yml
│   │   ├── tasks/
│   │   │   ├── main.yaml
│   │   │   └── setup-helm-serve.yaml
│   │   └── templates/
│   │       └── helm-serve.service.j2
│   ├── chart-testing/
│   │   ├── README.rst
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── clean-host/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── deploy-apparmor/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── deploy-docker/
│   │   ├── defaults/
│   │   │   └── main.yml
│   │   ├── tasks/
│   │   │   ├── deploy-ansible-docker-support.yaml
│   │   │   └── main.yaml
│   │   └── templates/
│   │       ├── centos-docker.service.j2
│   │       ├── fedora-docker.service.j2
│   │       ├── http-proxy.conf.j2
│   │       └── ubuntu-docker.service.j2
│   ├── deploy-env/
│   │   ├── README.md
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   ├── files/
│   │   │   ├── calico_patch.yaml
│   │   │   ├── cluster_resolv.conf
│   │   │   ├── containerd_config.toml
│   │   │   ├── daemon.json
│   │   │   ├── etc_default_kubelet.j2
│   │   │   ├── hosts
│   │   │   ├── hosts.toml
│   │   │   ├── kubeadm_config.yaml.j2
│   │   │   ├── loop-setup.service
│   │   │   ├── nginx_tcp_proxy.conf
│   │   │   ├── resolv.conf
│   │   │   └── ssh_config
│   │   ├── handlers/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       ├── buildset_registry_alias.yaml
│   │       ├── calico.yaml
│   │       ├── cilium.yaml
│   │       ├── client_cluster_ssh.yaml
│   │       ├── client_cluster_tunnel.yaml
│   │       ├── containerd.yaml
│   │       ├── coredns_resolver.yaml
│   │       ├── env_inventory.yaml
│   │       ├── flannel.yaml
│   │       ├── floating_network.yaml
│   │       ├── gatewayapi_envoy.yaml
│   │       ├── ingress_haproxy.yaml
│   │       ├── ingress_nginx.yaml
│   │       ├── k8s_client.yaml
│   │       ├── k8s_common.yaml
│   │       ├── k8s_control_plane.yaml
│   │       ├── loopback_devices.yaml
│   │       ├── loopback_devices_mount.yaml
│   │       ├── main.yaml
│   │       ├── metallb.yaml
│   │       ├── overlay.yaml
│   │       ├── prerequisites.yaml
│   │       └── public_endpoints.yaml
│   ├── deploy-jq/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── deploy-package/
│   │   ├── defaults/
│   │   │   └── main.yml
│   │   └── tasks/
│   │       ├── dist.yaml
│   │       └── pip.yaml
│   ├── deploy-python/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── deploy-python-pip/
│   │   ├── defaults/
│   │   │   └── main.yml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── deploy-selenium/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── describe-kubernetes-objects/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── disable-local-nameserver/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── enable-hugepages/
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── ensure-chart-testing/
│   │   ├── README.rst
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── gather-host-logs/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── gather-pod-logs/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── gather-prom-metrics/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── gather-selenium-data/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── helm-release-status/
│   │   └── tasks/
│   │       └── main.yaml
│   ├── mount-extra-volume/
│   │   ├── defaults/
│   │   │   └── main.yml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── osh-bandit/
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── osh-run-script/
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── osh-run-script-set/
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── override-images/
│   │   ├── defaults/
│   │   │   └── main.yaml
│   │   └── tasks/
│   │       └── main.yaml
│   ├── setup-firewall/
│   │   └── tasks/
│   │       └── main.yaml
│   └── upgrade-host/
│       ├── defaults/
│       │   └── main.yml
│       └── tasks/
│           └── main.yaml
├── skyline/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _skyline-apiserver-init.sh.tpl
│   │   │   └── _skyline-apiserver.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-ingress.yaml
│   │   └── service.yaml
│   └── values.yaml
├── swift/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _account-start.sh.tpl
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _container-start.sh.tpl
│   │   │   ├── _ks-endpoints.sh.tpl
│   │   │   ├── _ks-service.sh.tpl
│   │   │   ├── _ks-user.sh.tpl
│   │   │   ├── _object-start.sh.tpl
│   │   │   ├── _proxy-start.sh.tpl
│   │   │   ├── _ring-builder.sh.tpl
│   │   │   ├── _ring-copy.sh.tpl
│   │   │   ├── _storage-init.sh.tpl
│   │   │   ├── _storage-start.sh.tpl
│   │   │   └── _swift-test.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── daemonset-storage.yaml
│   │   ├── deployment-proxy.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-proxy.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-ring-builder.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-proxy.yaml
│   │   ├── pdb-storage.yaml
│   │   ├── pod-test.yaml
│   │   ├── pvc.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── service-ingress-proxy.yaml
│   │   └── service-proxy.yaml
│   └── values.yaml
├── tacker/
│   ├── .helmignore
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _tacker-test.sh.tpl
│   │   │   ├── _tacker_conductor.sh.tpl
│   │   │   └── _tacker_server.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-conductor.yaml
│   │   ├── deployment-server.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── pod-test.yaml
│   │   ├── pvc.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── service-api.yaml
│   │   ├── service-conductor.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── tempest/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── _helpers.tpl
│   │   ├── bin/
│   │   │   └── _run-tests.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-run-tests.yaml
│   │   ├── pvc-tempest.yaml
│   │   ├── secret-keystone.yaml
│   │   └── secret-registry.yaml
│   └── values.yaml
├── tests/
│   ├── dns-test.yaml
│   └── pvc-test.yaml
├── tools/
│   ├── changelog.py
│   ├── chart_version.sh
│   ├── debug_sleep.sh
│   ├── deployment/
│   │   ├── baremetal/
│   │   │   ├── 005-setup-nodes.sh
│   │   │   ├── 010-setup-client.sh
│   │   │   ├── 110-compute-kit.sh
│   │   │   ├── 800-create-baremetal-host-aggregate.sh
│   │   │   ├── 810-register-baremetal-nodes.sh
│   │   │   ├── 820-create-baremetal-flavor.sh
│   │   │   ├── 900-use-it.sh
│   │   │   ├── fake-baremetal-1.xml
│   │   │   └── heat-basic-bm-deployment.yaml
│   │   ├── ceph/
│   │   │   ├── ceph-adapter-rook.sh
│   │   │   ├── ceph-ns-activate.sh
│   │   │   ├── ceph-radosgw.sh
│   │   │   ├── ceph-rook.sh
│   │   │   ├── ceph.sh
│   │   │   ├── ceph_legacy.sh
│   │   │   ├── migrate-after.sh
│   │   │   ├── migrate-before.sh
│   │   │   ├── migrate-to-rook-ceph.sh
│   │   │   └── migrate-values.sh
│   │   ├── common/
│   │   │   ├── cert-manager.sh
│   │   │   ├── clean-it.sh
│   │   │   ├── deploy-docker-registry.sh
│   │   │   ├── env-variables.sh
│   │   │   ├── force-cronjob-run.sh
│   │   │   ├── heat-basic-vm-deployment.yaml
│   │   │   ├── heat-public-net-deployment.yaml
│   │   │   ├── heat-subnet-pool-deployment.yaml
│   │   │   ├── heat-vm-volume-attach.yaml
│   │   │   ├── namespace-config.sh
│   │   │   ├── prepare-bashrc.sh
│   │   │   ├── prepare-charts.sh
│   │   │   ├── prepare-helm-repos-local.sh
│   │   │   ├── prepare-helm-repos-public.sh
│   │   │   ├── prepare-k8s.sh
│   │   │   ├── pull-images.sh
│   │   │   ├── rally-reports.yaml
│   │   │   ├── run-helm-tests.sh
│   │   │   ├── setup-certificates.sh
│   │   │   ├── setup-client.sh
│   │   │   ├── sleep.sh
│   │   │   ├── test-networkpolicy.sh
│   │   │   └── use-it.sh
│   │   ├── component/
│   │   │   ├── aodh/
│   │   │   │   └── aodh.sh
│   │   │   ├── barbican/
│   │   │   │   └── barbican.sh
│   │   │   ├── blazar/
│   │   │   │   ├── blazar.sh
│   │   │   │   └── blazar_smoke_test.sh
│   │   │   ├── ceilometer/
│   │   │   │   └── ceilometer.sh
│   │   │   ├── cinder/
│   │   │   │   └── cinder.sh
│   │   │   ├── cloudkitty/
│   │   │   │   └── cloudkitty.sh
│   │   │   ├── common/
│   │   │   │   ├── ldap.sh
│   │   │   │   ├── memcached.sh
│   │   │   │   ├── openstack.sh
│   │   │   │   └── rabbitmq.sh
│   │   │   ├── compute-kit/
│   │   │   │   ├── compute-kit-sr-iov.sh
│   │   │   │   ├── compute-kit.sh
│   │   │   │   ├── libvirt.sh
│   │   │   │   └── openvswitch.sh
│   │   │   ├── freezer/
│   │   │   │   ├── freezer.sh
│   │   │   │   └── freezer_smoke_test.sh
│   │   │   ├── glance/
│   │   │   │   └── glance.sh
│   │   │   ├── heat/
│   │   │   │   └── heat.sh
│   │   │   ├── horizon/
│   │   │   │   └── horizon.sh
│   │   │   ├── keystone/
│   │   │   │   └── keystone.sh
│   │   │   ├── magnum/
│   │   │   │   └── magnum.sh
│   │   │   ├── manila/
│   │   │   │   └── manila.sh
│   │   │   ├── mistral/
│   │   │   │   └── mistral.sh
│   │   │   ├── nfs-provisioner/
│   │   │   │   └── nfs-provisioner.sh
│   │   │   ├── octavia/
│   │   │   │   ├── create_dual_intermediate_CA.sh
│   │   │   │   ├── heat_octavia_env.yaml
│   │   │   │   ├── octavia.sh
│   │   │   │   ├── octavia_certs.sh
│   │   │   │   ├── octavia_resources.sh
│   │   │   │   ├── octavia_test.sh
│   │   │   │   └── openssl.cnf
│   │   │   ├── ovn/
│   │   │   │   └── ovn.sh
│   │   │   ├── redis/
│   │   │   │   └── redis.sh
│   │   │   ├── skyline/
│   │   │   │   └── skyline.sh
│   │   │   ├── swift/
│   │   │   │   └── swift.sh
│   │   │   ├── tacker/
│   │   │   │   └── tacker.sh
│   │   │   ├── trove/
│   │   │   │   └── trove.sh
│   │   │   ├── watcher/
│   │   │   │   └── watcher.sh
│   │   │   └── zaqar/
│   │   │       ├── zaqar.sh
│   │   │       └── zaqar_smoke_test.sh
│   │   ├── db/
│   │   │   ├── mariadb-backup.sh
│   │   │   ├── mariadb-operator-cluster.sh
│   │   │   ├── mariadb.sh
│   │   │   └── postgresql.sh
│   │   ├── logging/
│   │   │   ├── elasticsearch.sh
│   │   │   ├── fluentbit.sh
│   │   │   ├── fluentd.sh
│   │   │   └── kibana.sh
│   │   ├── monitoring/
│   │   │   ├── alertmanager.sh
│   │   │   ├── blackbox-exporter.sh
│   │   │   ├── grafana.sh
│   │   │   ├── kube-state-metrics.sh
│   │   │   ├── mysql-exporter.sh
│   │   │   ├── nagios.sh
│   │   │   ├── node-exporter.sh
│   │   │   ├── node-problem-detector.sh
│   │   │   ├── openstack-exporter.sh
│   │   │   ├── process-exporter.sh
│   │   │   └── prometheus.sh
│   │   └── openstack/
│   │       └── keystone.sh
│   └── gate/
│       └── selenium/
│           ├── grafana-selenium.sh
│           ├── grafanaSelenium.py
│           ├── kibana-selenium.sh
│           ├── kibanaSelenium.py
│           ├── nagios-selenium.sh
│           ├── nagiosSelenium.py
│           ├── prometheus-selenium.sh
│           ├── prometheusSelenium.py
│           ├── seleniumtester.py
│           ├── skyline-selenium.sh
│           └── skylineSelenium.py
├── tox.ini
├── trove/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _db-purge.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _trove-api.sh.tpl
│   │   │   ├── _trove-conductor.sh.tpl
│   │   │   └── _trove-taskmanager.sh.tpl
│   │   ├── certificates.yaml
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── cron-job-trove-db-purge.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-conductor.yaml
│   │   ├── deployment-taskmanager.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
├── values_overrides/
│   ├── aodh/
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   └── mariadb-operator.yaml
│   ├── barbican/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── blazar/
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── mariadb-operator.yaml
│   ├── ceilometer/
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   └── annotations.yaml
│   ├── ceph-client/
│   │   └── apparmor.yaml
│   ├── ceph-mon/
│   │   └── apparmor.yaml
│   ├── ceph-osd/
│   │   └── apparmor.yaml
│   ├── ceph-provisioners/
│   │   └── apparmor.yaml
│   ├── ceph-rgw/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── netpol.yaml
│   │   └── tls.yaml
│   ├── cinder/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── backend_pure.yaml
│   │   ├── external-ceph-backend.yaml
│   │   ├── external-ceph-configmap.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── nfs-cinder-backup.yaml
│   │   ├── qos.yaml
│   │   ├── rabbitmq4.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── cloudkitty/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── mariadb-operator.yaml
│   ├── cyborg/
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   ├── mariadb-operator.yaml
│   │   └── rabbitmq4.yaml
│   ├── designate/
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   └── mariadb-operator.yaml
│   ├── elastic-apm-server/
│   │   └── apparmor.yaml
│   ├── elastic-filebeat/
│   │   └── apparmor.yaml
│   ├── elasticsearch/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── local-storage.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── remote-cluster.yaml
│   │   └── tls.yaml
│   ├── fluentd/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── tls.yaml
│   ├── freezer/
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── mariadb-operator.yaml
│   ├── glance/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── bootstrap-ubuntu-image.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── rabbitmq4.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── gnocchi/
│   │   ├── gateway.yaml
│   │   └── mariadb-operator.yaml
│   ├── grafana/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── calico.yaml
│   │   ├── ceph.yaml
│   │   ├── containers.yaml
│   │   ├── coredns.yaml
│   │   ├── elasticsearch.yaml
│   │   ├── gateway.yaml
│   │   ├── home_dashboard.yaml
│   │   ├── kubernetes.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── nginx.yaml
│   │   ├── nodes.yaml
│   │   ├── openstack.yaml
│   │   ├── persistentvolume.yaml
│   │   ├── prometheus.yaml
│   │   ├── sqlite3.yaml
│   │   └── tls.yaml
│   ├── heat/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── rabbitmq4.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── horizon/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── logo.yaml
│   │   ├── netpol.yaml
│   │   └── tls.yaml
│   ├── ironic/
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   ├── mariadb-operator.yaml
│   │   └── standalone.yaml
│   ├── keystone/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── internal-reverse-proxy.yaml
│   │   ├── ldap.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── rabbitmq4.yaml
│   │   ├── tls-custom.yaml
│   │   └── tls.yaml
│   ├── kibana/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── tls.yaml
│   ├── kubernetes-keystone-webhook/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   └── loci-2025.2-ubuntu_noble.yaml
│   ├── kubernetes-node-problem-detector/
│   │   └── apparmor.yaml
│   ├── libvirt/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── cinder-external-ceph-backend.yaml
│   │   ├── inovex_exporter.yaml
│   │   ├── netpol.yaml
│   │   ├── node_overrides.yaml
│   │   ├── ovn.yaml
│   │   ├── ssl.yaml
│   │   └── vexxhost_exporter.yaml
│   ├── local-storage/
│   │   └── local-storage.yaml
│   ├── magnum/
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   └── mariadb-operator.yaml
│   ├── manila/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── rabbitmq4.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── mariadb/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── backups.yaml
│   │   ├── local-storage.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── netpol.yaml
│   │   ├── remote_backups.yaml
│   │   ├── staggered-backups.yaml
│   │   ├── tls.yaml
│   │   └── wait-for-cluster.yaml
│   ├── mariadb-backup/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── backups.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── staggered-backups.yaml
│   │   └── tls.yaml
│   ├── mariadb-cluster/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── downscaled.yaml
│   │   ├── local-storage.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── netpol.yaml
│   │   ├── prometheus.yaml
│   │   ├── tls.yaml
│   │   └── upscaled.yaml
│   ├── masakari/
│   │   ├── annotations.yaml
│   │   └── mariadb-operator.yaml
│   ├── memcached/
│   │   ├── apparmor.yaml
│   │   ├── exporter.yaml
│   │   └── netpol.yaml
│   ├── mistral/
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   └── mariadb-operator.yaml
│   ├── nagios/
│   │   ├── apparmor.yaml
│   │   ├── elasticsearch-objects.yaml
│   │   ├── gateway.yaml
│   │   ├── openstack-objects.yaml
│   │   ├── postgresql-objects.yaml
│   │   └── tls.yaml
│   ├── neutron/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── bagpipe_bgp.yaml
│   │   ├── dpdk-bond.yaml
│   │   ├── dpdk.yaml
│   │   ├── gate.yaml
│   │   ├── gateway.yaml
│   │   ├── l2gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── ovn.yaml
│   │   ├── ovn_vpn.yaml
│   │   ├── rabbitmq4.yaml
│   │   ├── shared-sriov-ovs-dpdk-bond.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── nova/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── cntt.yaml
│   │   ├── dpdk.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── opensuse_15.yaml
│   │   ├── ovn.yaml
│   │   ├── rabbitmq4.yaml
│   │   ├── ssh.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── octavia/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── mariadb-operator.yaml
│   ├── openvswitch/
│   │   ├── apparmor.yaml
│   │   ├── dpdk-ubuntu_jammy.yaml
│   │   ├── dpdk-ubuntu_noble.yaml
│   │   ├── exporter.yaml
│   │   ├── netpol.yaml
│   │   ├── ovn.yaml
│   │   ├── ubuntu_jammy.yaml
│   │   ├── ubuntu_noble.yaml
│   │   └── vswitchd-probes.yaml
│   ├── ovn/
│   │   ├── ubuntu_jammy.yaml
│   │   └── ubuntu_noble.yaml
│   ├── placement/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── apparmor.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── mariadb-operator.yaml
│   │   ├── netpol.yaml
│   │   ├── tls-offloading.yaml
│   │   └── tls.yaml
│   ├── postgresql/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── backups.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── netpol.yaml
│   │   ├── staggered-backups.yaml
│   │   └── tls.yaml
│   ├── powerdns/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   └── loci-2025.2-ubuntu_noble.yaml
│   ├── prometheus/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── alertmanager.yaml
│   │   ├── apparmor.yaml
│   │   ├── ceph.yaml
│   │   ├── elasticsearch.yaml
│   │   ├── gateway.yaml
│   │   ├── kubernetes.yaml
│   │   ├── local-storage.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── nodes.yaml
│   │   ├── openstack.yaml
│   │   ├── postgresql.yaml
│   │   └── tls.yaml
│   ├── prometheus-alertmanager/
│   │   ├── apparmor.yaml
│   │   └── gateway.yaml
│   ├── prometheus-blackbox-exporter/
│   │   └── apparmor.yaml
│   ├── prometheus-kube-state-metrics/
│   │   └── apparmor.yaml
│   ├── prometheus-mysql-exporter/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── prometheus.yaml
│   │   └── tls.yaml
│   ├── prometheus-node-exporter/
│   │   └── apparmor.yaml
│   ├── prometheus-openstack-exporter/
│   │   ├── apparmor.yaml
│   │   ├── netpol.yaml
│   │   └── tls.yaml
│   ├── prometheus-process-exporter/
│   │   └── apparmor.yaml
│   ├── rabbitmq/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── apparmor.yaml
│   │   ├── builtin-metrics.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   ├── netpol.yaml
│   │   ├── rabbitmq-exporter.yaml
│   │   └── tls.yaml
│   ├── rally/
│   │   ├── annotations.yaml
│   │   ├── mariadb-operator.yaml
│   │   └── tls-offloading.yaml
│   ├── skyline/
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── gateway.yaml
│   │   └── loci-2025.2-ubuntu_noble.yaml
│   ├── swift/
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   └── gateway.yaml
│   ├── tacker/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── mariadb-operator.yaml
│   ├── tempest/
│   │   └── annotations.yaml
│   ├── trove/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── annotations.yaml
│   │   ├── gateway.yaml
│   │   └── mariadb-operator.yaml
│   ├── watcher/
│   │   ├── 2024.2-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_jammy.yaml
│   │   ├── 2025.1-ubuntu_noble.yaml
│   │   ├── 2025.2-ubuntu_noble.yaml
│   │   ├── gateway.yaml
│   │   ├── loci-2025.1-ubuntu_noble.yaml
│   │   ├── loci-2025.2-ubuntu_noble.yaml
│   │   └── mariadb-operator.yaml
│   └── zaqar/
│       ├── 2025.1-ubuntu_jammy.yaml
│       ├── 2025.1-ubuntu_noble.yaml
│       ├── 2025.2-ubuntu_noble.yaml
│       ├── gateway.yaml
│       ├── loci-2025.1-ubuntu_noble.yaml
│       └── loci-2025.2-ubuntu_noble.yaml
├── watcher/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _watcher-api.sh.tpl
│   │   │   ├── _watcher-applier.sh.tpl
│   │   │   └── _watcher-decision-engine.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── deployment-applier.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── job-rabbit-init.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-rabbitmq.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   ├── service-ingress-api.yaml
│   │   └── statefulset-decision-engine.yaml
│   └── values.yaml
├── yamllint-templates.conf
├── yamllint.conf
├── zaqar/
│   ├── Chart.yaml
│   ├── templates/
│   │   ├── bin/
│   │   │   ├── _bootstrap.sh.tpl
│   │   │   ├── _db-sync.sh.tpl
│   │   │   ├── _zaqar-test.sh.tpl
│   │   │   └── _zaqar_api.sh.tpl
│   │   ├── configmap-bin.yaml
│   │   ├── configmap-etc.yaml
│   │   ├── deployment-api.yaml
│   │   ├── extra-manifests.yaml
│   │   ├── ingress-api.yaml
│   │   ├── job-bootstrap.yaml
│   │   ├── job-db-drop.yaml
│   │   ├── job-db-init.yaml
│   │   ├── job-db-sync.yaml
│   │   ├── job-image-repo-sync.yaml
│   │   ├── job-ks-endpoints.yaml
│   │   ├── job-ks-service.yaml
│   │   ├── job-ks-user.yaml
│   │   ├── network_policy.yaml
│   │   ├── pdb-api.yaml
│   │   ├── pod-rally-test.yaml
│   │   ├── pod-test.yaml
│   │   ├── secret-db.yaml
│   │   ├── secret-ingress-tls.yaml
│   │   ├── secret-keystone.yaml
│   │   ├── secret-ks-etc.yaml
│   │   ├── secret-registry.yaml
│   │   ├── service-api.yaml
│   │   └── service-ingress-api.yaml
│   └── values.yaml
└── zuul.d/
    ├── 2024.2.yaml
    ├── 2025.1.yaml
    ├── 2025.2-ubuntu_noble.yaml
    ├── base.yaml
    ├── infra_jobs.yaml
    ├── nodesets.yaml
    └── project.yaml
Download .txt
SYMBOL INDEX (13 symbols across 3 files)

FILE: doc/source/_exts/helm_docs.py
  function _run_helm_docs (line 32) | def _run_helm_docs(
  function setup (line 53) | def setup(app: Sphinx) -> ExtensionMetadata:

FILE: tools/changelog.py
  function _indent_for_list (line 13) | def _indent_for_list(text, prefix='  '):
  function chart_reports (line 21) | def chart_reports(loader, config, versions_to_include, title=None, chart...
  function main (line 108) | def main():

FILE: tools/gate/selenium/seleniumtester.py
  class SeleniumTester (line 26) | class SeleniumTester():
    method __init__ (line 27) | def __init__(self, name):
    method get_logger (line 34) | def get_logger(self, name):
    method get_variable (line 48) | def get_variable(self, env_var):
    method get_browser (line 58) | def get_browser(self):
    method initialize_artifiacts_dir (line 67) | def initialize_artifiacts_dir(self):
    method click_link_by_name (line 74) | def click_link_by_name(self, link_name):
    method take_screenshot (line 87) | def take_screenshot(self, page_name):
Condensed preview — 3167 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (9,104K chars).
[
  {
    "path": ".gitignore",
    "chars": 998,
    "preview": "*.py[cod]\n\n# C extensions\n*.so\n\n# Packages\n*.egg*\n*.egg-info\ndist\nbuild\neggs\nparts\nvar\nsdist\ndevelop-eggs\n.installed.cfg"
  },
  {
    "path": ".gitreview",
    "chars": 81,
    "preview": "[gerrit]\nhost=review.opendev.org\nport=29418\nproject=openstack/openstack-helm.git\n"
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 433,
    "preview": "---\nrepos:\n  - repo: https://github.com/pre-commit/pre-commit-hooks\n    rev: v4.5.0\n    hooks:\n      - id: trailing-whit"
  },
  {
    "path": "CONTRIBUTING.rst",
    "chars": 468,
    "preview": "The source repository for this project can be found at:\n\n   https://opendev.org/openstack/openstack-helm.git\n\nPull reque"
  },
  {
    "path": "LICENSE",
    "chars": 11357,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "Makefile",
    "chars": 2893,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "README.rst",
    "chars": 3842,
    "preview": "==============\nOpenStack-Helm\n==============\n\nMission\n-------\n\nThe goal of OpenStack-Helm is to provide a collection of "
  },
  {
    "path": "aodh/Chart.yaml",
    "chars": 983,
    "preview": "# Copyright 2019 Wind River Systems, Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may "
  },
  {
    "path": "aodh/templates/bin/_aodh-alarms-cleaner.sh.tpl",
    "chars": 657,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "aodh/templates/bin/_aodh-api.sh.tpl",
    "chars": 1218,
    "preview": "#!/bin/bash\n\n{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\""
  },
  {
    "path": "aodh/templates/bin/_aodh-evaluator.sh.tpl",
    "chars": 700,
    "preview": "#!/bin/bash\n\n{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\""
  },
  {
    "path": "aodh/templates/bin/_aodh-listener.sh.tpl",
    "chars": 699,
    "preview": "#!/bin/bash\n\n{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\""
  },
  {
    "path": "aodh/templates/bin/_aodh-notifier.sh.tpl",
    "chars": 699,
    "preview": "#!/bin/bash\n\n{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\""
  },
  {
    "path": "aodh/templates/bin/_aodh-test.sh.tpl",
    "chars": 1391,
    "preview": "#!/bin/bash\n\n{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\""
  },
  {
    "path": "aodh/templates/bin/_bootstrap.sh.tpl",
    "chars": 659,
    "preview": "#!/bin/bash\n\n{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\""
  },
  {
    "path": "aodh/templates/bin/_db-sync.sh.tpl",
    "chars": 614,
    "preview": "#!/bin/bash\n\n{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\""
  },
  {
    "path": "aodh/templates/configmap-bin.yaml",
    "chars": 2300,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/configmap-etc.yaml",
    "chars": 6434,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/cron-job-alarms-cleaner.yaml",
    "chars": 4534,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/deployment-api.yaml",
    "chars": 6164,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/deployment-evaluator.yaml",
    "chars": 5470,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/deployment-listener.yaml",
    "chars": 5438,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/deployment-notifier.yaml",
    "chars": 5438,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/extra-manifests.yaml",
    "chars": 144,
    "preview": "{{ range .Values.extraObjects }}\n---\n{{ if typeIs \"string\" . }}\n    {{- tpl . $ }}\n{{- else }}\n    {{- tpl (toYaml .) $ "
  },
  {
    "path": "aodh/templates/ingress-api.yaml",
    "chars": 821,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/job-bootstrap.yaml",
    "chars": 948,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/job-db-drop.yaml",
    "chars": 870,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/job-db-init.yaml",
    "chars": 870,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/job-db-sync.yaml",
    "chars": 1059,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/job-image-repo-sync.yaml",
    "chars": 942,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/job-ks-endpoints.yaml",
    "chars": 919,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/job-ks-service.yaml",
    "chars": 915,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/job-ks-user.yaml",
    "chars": 864,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/job-rabbit-init.yaml",
    "chars": 875,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/network_policy.yaml",
    "chars": 733,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "aodh/templates/pdb-api.yaml",
    "chars": 941,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/pod-aodh-test.yaml",
    "chars": 2980,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/secret-db.yaml",
    "chars": 1150,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/secret-ingress-tls.yaml",
    "chars": 744,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/secret-keystone.yaml",
    "chars": 1114,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/secret-rabbitmq.yaml",
    "chars": 1181,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/secret-registry.yaml",
    "chars": 745,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "aodh/templates/service-api.yaml",
    "chars": 1359,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/templates/service-ingress-api.yaml",
    "chars": 829,
    "preview": "{{/*\nCopyright 2019 Wind River Systems, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may no"
  },
  {
    "path": "aodh/values.yaml",
    "chars": 19846,
    "preview": "# Copyright 2019 Wind River Systems, Inc.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may "
  },
  {
    "path": "barbican/.helmignore",
    "chars": 17,
    "preview": "values_overrides\n"
  },
  {
    "path": "barbican/Chart.yaml",
    "chars": 1076,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "barbican/templates/bin/_barbican-test.sh.tpl",
    "chars": 945,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "barbican/templates/bin/_barbican.sh.tpl",
    "chars": 703,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "barbican/templates/bin/_bootstrap.sh.tpl",
    "chars": 617,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "barbican/templates/bin/_db-sync.sh.tpl",
    "chars": 993,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "barbican/templates/bin/_simple_crypto_kek_rewrap.py.tpl",
    "chars": 6054,
    "preview": "#!/usr/bin/env python\n\n# Licensed under the Apache License, Version 2.0 (the \"License\"); you may\n# not use this file exc"
  },
  {
    "path": "barbican/templates/certificates.yaml",
    "chars": 700,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/configmap-bin.yaml",
    "chars": 1934,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/configmap-etc.yaml",
    "chars": 6234,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/deployment-api.yaml",
    "chars": 8664,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/extra-manifests.yaml",
    "chars": 144,
    "preview": "{{ range .Values.extraObjects }}\n---\n{{ if typeIs \"string\" . }}\n    {{- tpl . $ }}\n{{- else }}\n    {{- tpl (toYaml .) $ "
  },
  {
    "path": "barbican/templates/ingress-api.yaml",
    "chars": 783,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/job-bootstrap.yaml",
    "chars": 1351,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/job-db-drop.yaml",
    "chars": 996,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/job-db-init.yaml",
    "chars": 1226,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/job-db-sync.yaml",
    "chars": 1710,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/job-image-repo-sync.yaml",
    "chars": 1089,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/job-ks-endpoints.yaml",
    "chars": 1268,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/job-ks-service.yaml",
    "chars": 1260,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/job-ks-user.yaml",
    "chars": 1197,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/job-rabbit-init.yaml",
    "chars": 1276,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/network_policy.yaml",
    "chars": 761,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "barbican/templates/pdb-api.yaml",
    "chars": 908,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/pod-test.yaml",
    "chars": 3429,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/secret-db.yaml",
    "chars": 1406,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/secret-ingress-tls.yaml",
    "chars": 706,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/secret-keystone.yaml",
    "chars": 1077,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/secret-rabbitmq.yaml",
    "chars": 1144,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/secret-registry.yaml",
    "chars": 745,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/service-api.yaml",
    "chars": 1317,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/templates/service-ingress-api.yaml",
    "chars": 791,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "barbican/values.yaml",
    "chars": 21660,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "bindep.txt",
    "chars": 138,
    "preview": "# This file facilitates OpenStack-CI package installation\n# before the execution of any tests.\n\n# Required to build lang"
  },
  {
    "path": "blazar/Chart.yaml",
    "chars": 1108,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "blazar/templates/bin/_blazar_api.sh.tpl",
    "chars": 713,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "blazar/templates/bin/_blazar_manager.sh.tpl",
    "chars": 618,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "blazar/templates/bin/_db-sync.sh.tpl",
    "chars": 632,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "blazar/templates/configmap-bin.yaml",
    "chars": 1817,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/configmap-etc.yaml",
    "chars": 6241,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/deployment-api.yaml",
    "chars": 8277,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/deployment-manager.yaml",
    "chars": 5079,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/extra-manifests.yaml",
    "chars": 144,
    "preview": "{{ range .Values.extraObjects }}\n---\n{{ if typeIs \"string\" . }}\n    {{- tpl . $ }}\n{{- else }}\n    {{- tpl (toYaml .) $ "
  },
  {
    "path": "blazar/templates/ingress-api.yaml",
    "chars": 1306,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/job-bootstrap.yaml",
    "chars": 911,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/job-db-drop.yaml",
    "chars": 992,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/job-db-init.yaml",
    "chars": 1222,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/job-db-sync.yaml",
    "chars": 1360,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/job-ks-endpoints.yaml",
    "chars": 1305,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/job-ks-service.yaml",
    "chars": 1287,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/job-ks-user.yaml",
    "chars": 1222,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/job-rabbit-init.yaml",
    "chars": 1237,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/pdb-api.yaml",
    "chars": 1212,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/pdb-manager.yaml",
    "chars": 1240,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/pod-rally-test.yaml",
    "chars": 6300,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/secret-db.yaml",
    "chars": 1408,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/secret-keystone.yaml",
    "chars": 1096,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/secret-ks-etc.yaml",
    "chars": 900,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/secret-rabbitmq.yaml",
    "chars": 1361,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/service-api.yaml",
    "chars": 1336,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/templates/service-ingress-api.yaml",
    "chars": 791,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "blazar/values.yaml",
    "chars": 20500,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "ca-clusterissuer/Chart.yaml",
    "chars": 804,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "ca-clusterissuer/templates/clusterissuer-ca.yaml",
    "chars": 913,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ca-clusterissuer/templates/extra-manifests.yaml",
    "chars": 144,
    "preview": "{{ range .Values.extraObjects }}\n---\n{{ if typeIs \"string\" . }}\n    {{- tpl . $ }}\n{{- else }}\n    {{- tpl (toYaml .) $ "
  },
  {
    "path": "ca-clusterissuer/templates/secret-ca.yaml",
    "chars": 861,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ca-clusterissuer/values.yaml",
    "chars": 1683,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "ca-issuer/Chart.yaml",
    "chars": 797,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "ca-issuer/templates/extra-manifests.yaml",
    "chars": 144,
    "preview": "{{ range .Values.extraObjects }}\n---\n{{ if typeIs \"string\" . }}\n    {{- tpl . $ }}\n{{- else }}\n    {{- tpl (toYaml .) $ "
  },
  {
    "path": "ca-issuer/templates/issuer-ca.yaml",
    "chars": 1054,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ca-issuer/templates/secret-ca.yaml",
    "chars": 847,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ca-issuer/values.yaml",
    "chars": 1835,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "ceilometer/Chart.yaml",
    "chars": 963,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "ceilometer/templates/bin/_bootstrap.sh.tpl",
    "chars": 617,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceilometer/templates/bin/_ceilometer-central.sh.tpl",
    "chars": 714,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceilometer/templates/bin/_ceilometer-compute.sh.tpl",
    "chars": 714,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceilometer/templates/bin/_ceilometer-ipmi.sh.tpl",
    "chars": 711,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceilometer/templates/bin/_ceilometer-notification.sh.tpl",
    "chars": 692,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceilometer/templates/bin/_db-sync.sh.tpl",
    "chars": 580,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceilometer/templates/configmap-bin.yaml",
    "chars": 1636,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceilometer/templates/configmap-etc.yaml",
    "chars": 4394,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceilometer/templates/daemonset-compute.yaml",
    "chars": 6649,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceilometer/templates/daemonset-ipmi.yaml",
    "chars": 6067,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceilometer/templates/deployment-central.yaml",
    "chars": 5852,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceilometer/templates/deployment-notification.yaml",
    "chars": 6162,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceilometer/templates/extra-manifests.yaml",
    "chars": 144,
    "preview": "{{ range .Values.extraObjects }}\n---\n{{ if typeIs \"string\" . }}\n    {{- tpl . $ }}\n{{- else }}\n    {{- tpl (toYaml .) $ "
  },
  {
    "path": "ceilometer/templates/job-bootstrap.yaml",
    "chars": 919,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceilometer/templates/job-db-sync.yaml",
    "chars": 995,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceilometer/templates/job-image-repo-sync.yaml",
    "chars": 913,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceilometer/templates/job-ks-user.yaml",
    "chars": 835,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceilometer/templates/job-rabbit-init.yaml",
    "chars": 845,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceilometer/templates/network_policy.yaml",
    "chars": 763,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "ceilometer/templates/secret-keystone.yaml",
    "chars": 1086,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceilometer/templates/secret-rabbitmq.yaml",
    "chars": 1146,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceilometer/templates/secret-registry.yaml",
    "chars": 745,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceilometer/values.yaml",
    "chars": 51700,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "ceph-adapter-rook/Chart.yaml",
    "chars": 810,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "ceph-adapter-rook/README.md",
    "chars": 795,
    "preview": "# Summary\nThis is the minimal set of templates necessary to make the rest\nof Openstack-Helm charts work with Ceph cluste"
  },
  {
    "path": "ceph-adapter-rook/templates/bin/_config-manager.sh.tpl",
    "chars": 932,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-adapter-rook/templates/bin/_key-manager.sh.tpl",
    "chars": 1433,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-adapter-rook/templates/configmap-bin.yaml",
    "chars": 950,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-adapter-rook/templates/configmap-etc-client.yaml",
    "chars": 1542,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-adapter-rook/templates/extra-manifests.yaml",
    "chars": 144,
    "preview": "{{ range .Values.extraObjects }}\n---\n{{ if typeIs \"string\" . }}\n    {{- tpl . $ }}\n{{- else }}\n    {{- tpl (toYaml .) $ "
  },
  {
    "path": "ceph-adapter-rook/templates/job-namespace-client-ceph-config.yaml",
    "chars": 4802,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-adapter-rook/templates/job-namespace-client-key.yaml",
    "chars": 4773,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-adapter-rook/values.yaml",
    "chars": 2442,
    "preview": "---\nimages:\n  pull_policy: IfNotPresent\n  tags:\n    ceph_config_helper: 'quay.io/airshipit/ceph-config-helper:ubuntu_jam"
  },
  {
    "path": "ceph-client/Chart.yaml",
    "chars": 805,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "ceph-client/templates/bin/_bootstrap.sh.tpl",
    "chars": 617,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-client/templates/bin/_helm-tests.sh.tpl",
    "chars": 16042,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-client/templates/bin/_init-dirs.sh.tpl",
    "chars": 1340,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-client/templates/bin/mds/_start.sh.tpl",
    "chars": 3329,
    "preview": "#!/bin/bash\nset -ex\nexport LC_ALL=C\n: \"${HOSTNAME:=$(uname -n)}\"\n: \"${CEPHFS_CREATE:=0}\"\n: \"${CEPHFS_NAME:=cephfs}\"\n: \"$"
  },
  {
    "path": "ceph-client/templates/bin/pool/_calc.py.tpl",
    "chars": 1311,
    "preview": "#!/usr/bin/python\n# -*- coding: utf-8 -*-\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may "
  },
  {
    "path": "ceph-client/templates/bin/pool/_init.sh.tpl",
    "chars": 18598,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-client/templates/bin/utils/_checkDNS.sh.tpl",
    "chars": 1142,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-client/templates/bin/utils/_checkDNS_start.sh.tpl",
    "chars": 2263,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-client/templates/bin/utils/_checkPGs.sh.tpl",
    "chars": 841,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-client/templates/bin/utils/_defragOSDs.sh.tpl",
    "chars": 910,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-client/templates/configmap-bin.yaml",
    "chars": 2044,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-client/templates/configmap-etc-client.yaml",
    "chars": 1565,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-client/templates/cronjob-checkPGs.yaml",
    "chars": 5363,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-client/templates/cronjob-defragosds.yaml",
    "chars": 3782,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-client/templates/deployment-checkdns.yaml",
    "chars": 5233,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-client/templates/deployment-mds.yaml",
    "chars": 7482,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-client/templates/extra-manifests.yaml",
    "chars": 144,
    "preview": "{{ range .Values.extraObjects }}\n---\n{{ if typeIs \"string\" . }}\n    {{- tpl . $ }}\n{{- else }}\n    {{- tpl (toYaml .) $ "
  },
  {
    "path": "ceph-client/templates/job-bootstrap.yaml",
    "chars": 3553,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-client/templates/job-image-repo-sync.yaml",
    "chars": 786,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-client/templates/job-rbd-pool.yaml",
    "chars": 4783,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-client/templates/pod-helm-tests.yaml",
    "chars": 3825,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-client/templates/secret-registry.yaml",
    "chars": 745,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-client/values.yaml",
    "chars": 18454,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "ceph-mon/Chart.yaml",
    "chars": 792,
    "preview": "# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with "
  },
  {
    "path": "ceph-mon/templates/bin/_bootstrap.sh.tpl",
    "chars": 617,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-mon/templates/bin/_init-dirs.sh.tpl",
    "chars": 1357,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-mon/templates/bin/_post-apply.sh.tpl",
    "chars": 4644,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-mon/templates/bin/keys/_bootstrap-keyring-generator.py.tpl",
    "chars": 367,
    "preview": "#!/bin/python\nimport os\nimport struct\nimport time\nimport base64\nkey = os.urandom(16)\nheader = struct.pack(\n    '<hiih',\n"
  },
  {
    "path": "ceph-mon/templates/bin/keys/_bootstrap-keyring-manager.sh.tpl",
    "chars": 1788,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-mon/templates/bin/keys/_storage-keyring-manager.sh.tpl",
    "chars": 3169,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-mon/templates/bin/mgr/_check.sh.tpl",
    "chars": 1019,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-mon/templates/bin/mgr/_start.sh.tpl",
    "chars": 2642,
    "preview": "#!/bin/bash\nset -ex\n: \"${CEPH_GET_ADMIN_KEY:=0}\"\n: \"${MGR_NAME:=$(uname -n)}\"\n: \"${MGR_KEYRING:=/var/lib/ceph/mgr/${CLUS"
  },
  {
    "path": "ceph-mon/templates/bin/mon/_check.sh.tpl",
    "chars": 1758,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-mon/templates/bin/mon/_start.sh.tpl",
    "chars": 4396,
    "preview": "#!/bin/bash\nset -ex\nexport LC_ALL=C\n: \"${K8S_HOST_NETWORK:=0}\"\n: \"${MON_KEYRING:=/etc/ceph/${CLUSTER}.mon.keyring}\"\n: \"$"
  },
  {
    "path": "ceph-mon/templates/bin/mon/_stop.sh.tpl",
    "chars": 338,
    "preview": "#!/bin/bash\n\nset -ex\n\nNUMBER_OF_MONS=$(ceph mon stat | awk '$3 == \"mons\" {print $2}')\nif [[ \"${NUMBER_OF_MONS}\" -gt \"3\" "
  },
  {
    "path": "ceph-mon/templates/bin/moncheck/_reap-zombies.py.tpl",
    "chars": 2491,
    "preview": "#!/usr/bin/python\nimport re\nimport os\nimport subprocess  # nosec\nimport json\n\nMON_REGEX = r\"^\\d: \\[((v\\d+:([0-9\\.]*):\\d+"
  },
  {
    "path": "ceph-mon/templates/bin/moncheck/_start.sh.tpl",
    "chars": 2574,
    "preview": "#!/bin/bash\nset -ex\nexport LC_ALL=C\n: \"${CEPH_CONF:=\"/etc/ceph/${CLUSTER}.conf\"}\"\n\n{{ include \"helm-toolkit.snippets.mon"
  },
  {
    "path": "ceph-mon/templates/bin/utils/_checkDNS.sh.tpl",
    "chars": 1142,
    "preview": "#!/bin/bash\n\n{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in co"
  },
  {
    "path": "ceph-mon/templates/bin/utils/_checkObjectReplication.py.tpl",
    "chars": 1137,
    "preview": "#!/usr/bin/python3\n\nimport subprocess  # nosec\nimport json\nimport sys\nimport collections\n\nif (int(len(sys.argv)) == 1):\n"
  },
  {
    "path": "ceph-mon/templates/bin/utils/_checkPGs.py.tpl",
    "chars": 10864,
    "preview": "#!/usr/bin/python\n\nimport subprocess  # nosec\nimport json\nimport sys\nfrom argparse import *\n\nclass cephCRUSH():\n    \"\"\"\n"
  },
  {
    "path": "ceph-mon/templates/configmap-bin.yaml",
    "chars": 2885,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-mon/templates/configmap-etc.yaml",
    "chars": 1709,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-mon/templates/configmap-templates.yaml",
    "chars": 1182,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-mon/templates/daemonset-mon.yaml",
    "chars": 11641,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-mon/templates/deployment-mgr.yaml",
    "chars": 8866,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-mon/templates/deployment-moncheck.yaml",
    "chars": 5552,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  },
  {
    "path": "ceph-mon/templates/extra-manifests.yaml",
    "chars": 144,
    "preview": "{{ range .Values.extraObjects }}\n---\n{{ if typeIs \"string\" . }}\n    {{- tpl . $ }}\n{{- else }}\n    {{- tpl (toYaml .) $ "
  },
  {
    "path": "ceph-mon/templates/job-bootstrap.yaml",
    "chars": 3659,
    "preview": "{{/*\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with"
  }
]

// ... and 2967 more files (download for full content)

About this extraction

This page contains the full source code of the openstack/openstack-helm GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3167 files (8.1 MB), approximately 2.3M tokens, and a symbol index with 13 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!