From 098d90ab453835be0715fb97935e9d6b41fbd040 Mon Sep 17 00:00:00 2001
From: Arie Peterson <arie@greenhost.nl>
Date: Tue, 24 Mar 2020 15:32:20 +0100
Subject: [PATCH] Enable apps in settings configmap

---
 ansible/group_vars/all/oas.yml                | 11 +++++++++
 ansible/roles/apps/tasks/cert-manager.yml     |  2 +-
 ansible/roles/apps/tasks/flux_secret.yml      |  5 ++--
 ansible/roles/apps/tasks/local-storage.yml    |  2 +-
 ansible/roles/apps/tasks/nextcloud.yml        |  2 +-
 ansible/roles/apps/tasks/nginx.yml            |  2 +-
 ansible/roles/apps/tasks/prometheus.yml       |  2 +-
 ansible/roles/apps/tasks/rocketchat.yml       |  2 +-
 ansible/roles/apps/tasks/single-sign-on.yml   |  2 +-
 ansible/roles/apps/tasks/wordpress.yml        |  2 +-
 .../cert-manager.yaml}                        |  0
 .../ingress.yaml}                             |  0
 .../local-storage.yaml}                       |  0
 .../monitoring.yaml}                          |  0
 .../nextcloud.yaml}                           |  0
 .../rocketchat.yaml}                          |  0
 .../single-sign-on.yaml}                      |  0
 .../wordpress.yaml}                           |  0
 flux/.flux.yaml                               | 24 ++++++++++---------
 flux/{apps => oas-apps}/nextcloud.yaml        |  0
 flux/{apps => oas-apps}/rocketchat.yaml       |  0
 flux/{apps => oas-apps}/wordpress.yaml        |  0
 flux/{system => oas}/cert-manager.yaml        |  0
 flux/{system => oas}/local-storage.yaml       |  0
 flux/{system => oas}/loki-stack.yaml          |  0
 flux/{system => oas}/monitoring.yaml          |  0
 flux/{system => oas}/nginx.yaml               |  0
 flux/{system => oas}/single-sign-on.yaml      |  0
 28 files changed, 35 insertions(+), 21 deletions(-)
 rename ansible/roles/apps/templates/{cert-manager-settings.yaml => settings/cert-manager.yaml} (100%)
 rename ansible/roles/apps/templates/{ingress-settings.yaml => settings/ingress.yaml} (100%)
 rename ansible/roles/apps/templates/{local-storage-settings.yaml => settings/local-storage.yaml} (100%)
 rename ansible/roles/apps/templates/{monitoring-settings.yaml => settings/monitoring.yaml} (100%)
 rename ansible/roles/apps/templates/{nextcloud-settings.yaml => settings/nextcloud.yaml} (100%)
 rename ansible/roles/apps/templates/{rocketchat-settings.yaml => settings/rocketchat.yaml} (100%)
 rename ansible/roles/apps/templates/{single-sign-on-settings.yaml => settings/single-sign-on.yaml} (100%)
 rename ansible/roles/apps/templates/{wordpress-settings.yaml => settings/wordpress.yaml} (100%)
 rename flux/{apps => oas-apps}/nextcloud.yaml (100%)
 rename flux/{apps => oas-apps}/rocketchat.yaml (100%)
 rename flux/{apps => oas-apps}/wordpress.yaml (100%)
 rename flux/{system => oas}/cert-manager.yaml (100%)
 rename flux/{system => oas}/local-storage.yaml (100%)
 rename flux/{system => oas}/loki-stack.yaml (100%)
 rename flux/{system => oas}/monitoring.yaml (100%)
 rename flux/{system => oas}/nginx.yaml (100%)
 rename flux/{system => oas}/single-sign-on.yaml (100%)

diff --git a/ansible/group_vars/all/oas.yml b/ansible/group_vars/all/oas.yml
index de93837a6..0e1c478ce 100644
--- a/ansible/group_vars/all/oas.yml
+++ b/ansible/group_vars/all/oas.yml
@@ -86,3 +86,14 @@ local_flux: false
 flux_source:
   repo: "https://open.greenhost.net/openappstack/openappstack"
   branch: "master"
+
+# A whitelist of applications that will be enabled.
+enabled_applications:
+  - 'cert-manager'
+  - 'ingress'
+  - 'local-storage'
+  - 'monitoring'
+  - 'nextcloud'
+  - 'rocketchat'
+  - 'single-sign-on'
+  - 'wordpress'
diff --git a/ansible/roles/apps/tasks/cert-manager.yml b/ansible/roles/apps/tasks/cert-manager.yml
index 055cb85c4..24a0b1d2c 100644
--- a/ansible/roles/apps/tasks/cert-manager.yml
+++ b/ansible/roles/apps/tasks/cert-manager.yml
@@ -52,7 +52,7 @@
     - cert-manager
   vars:
     flux:
-      name: "cert-manager-settings"
+      name: "cert-manager"
       namespace: "oas"
   include_tasks:
     file: flux_secret.yml
diff --git a/ansible/roles/apps/tasks/flux_secret.yml b/ansible/roles/apps/tasks/flux_secret.yml
index 23cac6b5b..2342d6f91 100644
--- a/ansible/roles/apps/tasks/flux_secret.yml
+++ b/ansible/roles/apps/tasks/flux_secret.yml
@@ -11,6 +11,7 @@
       kind: Secret
       metadata:
         namespace: "{{ flux.namespace | default('oas-apps') }}"
-        name: "{{ flux.name }}"
+        name: "{{ flux.name }}-settings"
       data:
-        values.yaml: "{{ lookup('template','{{ flux.name }}.yaml') | b64encode }}"
+        values.yaml: "{{ lookup('template','settings/{{ flux.name }}.yaml') | b64encode }}"
+        enabled: "{{ (flux.name in enabled_applications) | ternary('true', 'false') | b64encode }}"
diff --git a/ansible/roles/apps/tasks/local-storage.yml b/ansible/roles/apps/tasks/local-storage.yml
index 22e9c1325..be37099ca 100644
--- a/ansible/roles/apps/tasks/local-storage.yml
+++ b/ansible/roles/apps/tasks/local-storage.yml
@@ -6,7 +6,7 @@
     - local-storage
   vars:
     flux:
-      name: "local-storage-settings"
+      name: "local-storage"
       namespace: "oas"
   include_tasks:
     file: flux_secret.yml
diff --git a/ansible/roles/apps/tasks/nextcloud.yml b/ansible/roles/apps/tasks/nextcloud.yml
index a591e63c5..942e2ee87 100644
--- a/ansible/roles/apps/tasks/nextcloud.yml
+++ b/ansible/roles/apps/tasks/nextcloud.yml
@@ -6,7 +6,7 @@
     - nextcloud
   vars:
     flux:
-      name: "nextcloud-settings"
+      name: "nextcloud"
   include_tasks:
     file: flux_secret.yml
     apply:
diff --git a/ansible/roles/apps/tasks/nginx.yml b/ansible/roles/apps/tasks/nginx.yml
index 99c019ba8..20c5e04c8 100644
--- a/ansible/roles/apps/tasks/nginx.yml
+++ b/ansible/roles/apps/tasks/nginx.yml
@@ -7,7 +7,7 @@
     - nginx
   vars:
     flux:
-      name: "ingress-settings"
+      name: "ingress"
       namespace: "oas"
   include_tasks:
     file: flux_secret.yml
diff --git a/ansible/roles/apps/tasks/prometheus.yml b/ansible/roles/apps/tasks/prometheus.yml
index af180c975..574519001 100644
--- a/ansible/roles/apps/tasks/prometheus.yml
+++ b/ansible/roles/apps/tasks/prometheus.yml
@@ -38,7 +38,7 @@
     - prometheus
   vars:
     flux:
-      name: "monitoring-settings"
+      name: "monitoring"
       namespace: "oas"
   include_tasks:
     file: flux_secret.yml
diff --git a/ansible/roles/apps/tasks/rocketchat.yml b/ansible/roles/apps/tasks/rocketchat.yml
index 5efe0efd3..8f9c9b40c 100644
--- a/ansible/roles/apps/tasks/rocketchat.yml
+++ b/ansible/roles/apps/tasks/rocketchat.yml
@@ -7,7 +7,7 @@
     - rocketchat
   vars:
     flux:
-      name: "rocketchat-settings"
+      name: "rocketchat"
   include_tasks:
     file: flux_secret.yml
     apply:
diff --git a/ansible/roles/apps/tasks/single-sign-on.yml b/ansible/roles/apps/tasks/single-sign-on.yml
index 69a5c9698..0b7f0760f 100644
--- a/ansible/roles/apps/tasks/single-sign-on.yml
+++ b/ansible/roles/apps/tasks/single-sign-on.yml
@@ -7,7 +7,7 @@
     - single-sign-on
   vars:
     flux:
-      name: "single-sign-on-settings"
+      name: "single-sign-on"
       namespace: "oas"
   include_tasks:
     file: flux_secret.yml
diff --git a/ansible/roles/apps/tasks/wordpress.yml b/ansible/roles/apps/tasks/wordpress.yml
index 65f54fc0f..f641ffd85 100644
--- a/ansible/roles/apps/tasks/wordpress.yml
+++ b/ansible/roles/apps/tasks/wordpress.yml
@@ -6,7 +6,7 @@
     - wordpress
   vars:
     flux:
-      name: "wordpress-settings"
+      name: "wordpress"
   include_tasks:
     file: flux_secret.yml
     apply:
diff --git a/ansible/roles/apps/templates/cert-manager-settings.yaml b/ansible/roles/apps/templates/settings/cert-manager.yaml
similarity index 100%
rename from ansible/roles/apps/templates/cert-manager-settings.yaml
rename to ansible/roles/apps/templates/settings/cert-manager.yaml
diff --git a/ansible/roles/apps/templates/ingress-settings.yaml b/ansible/roles/apps/templates/settings/ingress.yaml
similarity index 100%
rename from ansible/roles/apps/templates/ingress-settings.yaml
rename to ansible/roles/apps/templates/settings/ingress.yaml
diff --git a/ansible/roles/apps/templates/local-storage-settings.yaml b/ansible/roles/apps/templates/settings/local-storage.yaml
similarity index 100%
rename from ansible/roles/apps/templates/local-storage-settings.yaml
rename to ansible/roles/apps/templates/settings/local-storage.yaml
diff --git a/ansible/roles/apps/templates/monitoring-settings.yaml b/ansible/roles/apps/templates/settings/monitoring.yaml
similarity index 100%
rename from ansible/roles/apps/templates/monitoring-settings.yaml
rename to ansible/roles/apps/templates/settings/monitoring.yaml
diff --git a/ansible/roles/apps/templates/nextcloud-settings.yaml b/ansible/roles/apps/templates/settings/nextcloud.yaml
similarity index 100%
rename from ansible/roles/apps/templates/nextcloud-settings.yaml
rename to ansible/roles/apps/templates/settings/nextcloud.yaml
diff --git a/ansible/roles/apps/templates/rocketchat-settings.yaml b/ansible/roles/apps/templates/settings/rocketchat.yaml
similarity index 100%
rename from ansible/roles/apps/templates/rocketchat-settings.yaml
rename to ansible/roles/apps/templates/settings/rocketchat.yaml
diff --git a/ansible/roles/apps/templates/single-sign-on-settings.yaml b/ansible/roles/apps/templates/settings/single-sign-on.yaml
similarity index 100%
rename from ansible/roles/apps/templates/single-sign-on-settings.yaml
rename to ansible/roles/apps/templates/settings/single-sign-on.yaml
diff --git a/ansible/roles/apps/templates/wordpress-settings.yaml b/ansible/roles/apps/templates/settings/wordpress.yaml
similarity index 100%
rename from ansible/roles/apps/templates/wordpress-settings.yaml
rename to ansible/roles/apps/templates/settings/wordpress.yaml
diff --git a/flux/.flux.yaml b/flux/.flux.yaml
index 49ce67f96..348946f27 100644
--- a/flux/.flux.yaml
+++ b/flux/.flux.yaml
@@ -1,17 +1,19 @@
 version: 1
 commandUpdated:
   generators:
-  # Find all yaml files in this directory (recursively). Ignore ones with
-  # filename starting with a dot. For each of them, check if the
-  # `application-list` configmap has blacklisted the app in the form of an
-  # entry with key the app name and value "false", and skip it if so.
+  # Find all yaml files (recursively) in the directories oas and oas-apps.
+  # Ignore ones with filename starting with a dot. For each of them, check if
+  # the corresponding settings configmap has disabled the app by having a key
+  # "enabled" with value "false", and skip it in that case.
   - command: >
-      for path in $(find . -type f \( -name '*.yaml' -o -name '*.yml' \) -a ! -name '.*'); do
-        filename=$(basename $path);
-        name="${filename%.*}";
-        userOverride=$(kubectl get cm -n oas application-list -o jsonpath="{.data.$name}");
-        if [ "$userOverride" == "false" ]; then continue; fi;
-        echo '---';
-        cat $path;
+      for namespace in "oas" "oas-apps"; do
+        for path in $(find "$namespace" -type f \( -name '*.yaml' -o -name '*.yml' \) -a ! -name '.*'); do
+          filename=$(basename $path);
+          name="${filename%.*}";
+          enabled=$(kubectl get secret -n "$namespace" "${name}-settings" -o jsonpath="{.data.enabled}");
+          if [ "$enabled" == "false" ]; then continue; fi;
+          echo '---';
+          cat $path;
+        done;
       done
   updaters:
diff --git a/flux/apps/nextcloud.yaml b/flux/oas-apps/nextcloud.yaml
similarity index 100%
rename from flux/apps/nextcloud.yaml
rename to flux/oas-apps/nextcloud.yaml
diff --git a/flux/apps/rocketchat.yaml b/flux/oas-apps/rocketchat.yaml
similarity index 100%
rename from flux/apps/rocketchat.yaml
rename to flux/oas-apps/rocketchat.yaml
diff --git a/flux/apps/wordpress.yaml b/flux/oas-apps/wordpress.yaml
similarity index 100%
rename from flux/apps/wordpress.yaml
rename to flux/oas-apps/wordpress.yaml
diff --git a/flux/system/cert-manager.yaml b/flux/oas/cert-manager.yaml
similarity index 100%
rename from flux/system/cert-manager.yaml
rename to flux/oas/cert-manager.yaml
diff --git a/flux/system/local-storage.yaml b/flux/oas/local-storage.yaml
similarity index 100%
rename from flux/system/local-storage.yaml
rename to flux/oas/local-storage.yaml
diff --git a/flux/system/loki-stack.yaml b/flux/oas/loki-stack.yaml
similarity index 100%
rename from flux/system/loki-stack.yaml
rename to flux/oas/loki-stack.yaml
diff --git a/flux/system/monitoring.yaml b/flux/oas/monitoring.yaml
similarity index 100%
rename from flux/system/monitoring.yaml
rename to flux/oas/monitoring.yaml
diff --git a/flux/system/nginx.yaml b/flux/oas/nginx.yaml
similarity index 100%
rename from flux/system/nginx.yaml
rename to flux/oas/nginx.yaml
diff --git a/flux/system/single-sign-on.yaml b/flux/oas/single-sign-on.yaml
similarity index 100%
rename from flux/system/single-sign-on.yaml
rename to flux/oas/single-sign-on.yaml
-- 
GitLab