blob: bd44234fbf5d7125ab736e1c76f13a7b67d3cb8a [file] [log] [blame]
Mohammed Naser313085b2022-09-19 21:46:16 -04001from taskflow.patterns import graph_flow
Mohammed Naser124a9bc2022-09-19 15:13:16 -04002
3from atmosphere.config import CONF
Mohammed Naser313085b2022-09-19 21:46:16 -04004from atmosphere.tasks import flux, kubernetes, openstack_helm
Mohammed Naser124a9bc2022-09-19 15:13:16 -04005
Mohammed Naser55d348d2022-09-20 00:25:09 -04006HELM_REPOSITORIES_BY_NAMESPACE = {
7 "openstack": {
8 "openstack-helm-infra": "https://tarballs.opendev.org/openstack/openstack-helm-infra/",
9 }
10}
11
12OPENSTACK_HELM_CHARTS_BY_NAMESPACE = {
13 "openstack": ["memcached"],
14}
15
Mohammed Naser124a9bc2022-09-19 15:13:16 -040016
17def generate_for_openstack_helm_chart(chart):
18 flow = graph_flow.Flow(chart)
19
20 if getattr(CONF, chart).enabled:
21 flow.add(
22 openstack_helm.GenerateReleaseSecretTask(inject={"chart": chart}),
23 kubernetes.EnsureSecretTask(),
24 )
25
26 return flow
27
28
Mohammed Naser55d348d2022-09-20 00:25:09 -040029def get_deployment_flow():
30 flow = graph_flow.Flow("deploy")
31
32 for namespace, repos in HELM_REPOSITORIES_BY_NAMESPACE.items():
33 for repo, url in repos.items():
34 task = flux.EnsureHelmRepositoryTask(
35 inject={"namespace": namespace, "name": repo, "url": url},
36 provides=f"helm-repository-{repo}",
37 )
38 flow.add(task)
39
40 for namespace, charts in OPENSTACK_HELM_CHARTS_BY_NAMESPACE.items():
41 for chart in charts:
42 flow.add(generate_for_openstack_helm_chart(chart))
43
44 return flow
45
46
47DEPLOY = get_deployment_flow()