diff --git a/atmosphere/flows.py b/atmosphere/flows.py
index 649e038..bd44234 100644
--- a/atmosphere/flows.py
+++ b/atmosphere/flows.py
@@ -3,6 +3,16 @@
 from atmosphere.config import CONF
 from atmosphere.tasks import flux, kubernetes, openstack_helm
 
+HELM_REPOSITORIES_BY_NAMESPACE = {
+    "openstack": {
+        "openstack-helm-infra": "https://tarballs.opendev.org/openstack/openstack-helm-infra/",
+    }
+}
+
+OPENSTACK_HELM_CHARTS_BY_NAMESPACE = {
+    "openstack": ["memcached"],
+}
+
 
 def generate_for_openstack_helm_chart(chart):
     flow = graph_flow.Flow(chart)
@@ -16,14 +26,22 @@
     return flow
 
 
-DEPLOY = graph_flow.Flow("deploy").add(
-    flux.EnsureHelmRepositoryTask(
-        provides="openstack-helm-infra",
-        inject={
-            "namespace": "openstack",
-            "name": "openstack-helm-infra",
-            "url": "https://tarballs.opendev.org/openstack/openstack-helm-infra/",
-        },
-    ),
-    generate_for_openstack_helm_chart("memcached"),
-)
+def get_deployment_flow():
+    flow = graph_flow.Flow("deploy")
+
+    for namespace, repos in HELM_REPOSITORIES_BY_NAMESPACE.items():
+        for repo, url in repos.items():
+            task = flux.EnsureHelmRepositoryTask(
+                inject={"namespace": namespace, "name": repo, "url": url},
+                provides=f"helm-repository-{repo}",
+            )
+            flow.add(task)
+
+    for namespace, charts in OPENSTACK_HELM_CHARTS_BY_NAMESPACE.items():
+        for chart in charts:
+            flow.add(generate_for_openstack_helm_chart(chart))
+
+    return flow
+
+
+DEPLOY = get_deployment_flow()
