Mohammed Naser | 313085b | 2022-09-19 21:46:16 -0400 | [diff] [blame] | 1 | from taskflow.patterns import graph_flow |
Mohammed Naser | 124a9bc | 2022-09-19 15:13:16 -0400 | [diff] [blame] | 2 | |
| 3 | from atmosphere.config import CONF |
Mohammed Naser | 313085b | 2022-09-19 21:46:16 -0400 | [diff] [blame] | 4 | from atmosphere.tasks import flux, kubernetes, openstack_helm |
Mohammed Naser | 124a9bc | 2022-09-19 15:13:16 -0400 | [diff] [blame] | 5 | |
Mohammed Naser | 55d348d | 2022-09-20 00:25:09 -0400 | [diff] [blame^] | 6 | HELM_REPOSITORIES_BY_NAMESPACE = { |
| 7 | "openstack": { |
| 8 | "openstack-helm-infra": "https://tarballs.opendev.org/openstack/openstack-helm-infra/", |
| 9 | } |
| 10 | } |
| 11 | |
| 12 | OPENSTACK_HELM_CHARTS_BY_NAMESPACE = { |
| 13 | "openstack": ["memcached"], |
| 14 | } |
| 15 | |
Mohammed Naser | 124a9bc | 2022-09-19 15:13:16 -0400 | [diff] [blame] | 16 | |
| 17 | def 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 Naser | 55d348d | 2022-09-20 00:25:09 -0400 | [diff] [blame^] | 29 | def 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 | |
| 47 | DEPLOY = get_deployment_flow() |