From 2d967da0b00c8cd0c6a9d99f535b1d106420e4d0 Mon Sep 17 00:00:00 2001
From: Arie Peterson <arie@greenhost.nl>
Date: Tue, 5 Oct 2021 15:20:11 +0200
Subject: [PATCH] Replace custom status checks by flux health assessment

---
 .gitlab-ci.yml                                | 171 +-----------------
 flux2/cluster/base/core.yaml                  |  12 ++
 flux2/cluster/base/infrastructure.yaml        |   8 +
 .../optional/monitoring/monitoring.yaml       |  16 ++
 .../cluster/optional/nextcloud/nextcloud.yaml |   8 +
 .../optional/rocketchat/rocketchat.yaml       |   4 +
 flux2/cluster/optional/wekan/wekan.yaml       |   4 +
 .../cluster/optional/wordpress/wordpress.yaml |   4 +
 8 files changed, 62 insertions(+), 165 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 623a8d2e0..4688eb837 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -433,165 +433,6 @@ enable-wordpress:
     - .enable_app_template
     - .wordpress_rules
 
-# Stage: apps-ready
-# ======================
-#
-# Tests apps for readiness state
-
-.apps-deployment:
-  stage: apps-ready
-  script:
-    - *debug_information
-    - cd ansible/
-    - export KUBECONFIG="${PWD}/../clusters/${HOSTNAME}/kube_config_cluster.yml"
-    - pytest -v -s -m 'deployments' --resource="$RESOURCE" --namespace="$NAMESPACE" --connection=ansible --ansible-inventory=../${CLUSTER_DIR}/inventory.yml --hosts='ansible://*' --reruns 120 --reruns-delay 10
-  extends:
-    - .ssh_setup
-  interruptible: true
-
-.apps-statefulset:
-  stage: apps-ready
-  script:
-    - *debug_information
-    - cd ansible/
-    - export KUBECONFIG="${PWD}/../clusters/${HOSTNAME}/kube_config_cluster.yml"
-    - pytest -v -s -m 'statefulsets' --resource="$RESOURCE" --namespace="$NAMESPACE" --connection=ansible --ansible-inventory=../${CLUSTER_DIR}/inventory.yml --hosts='ansible://*' --reruns 120 --reruns-delay 10
-  extends:
-    - .ssh_setup
-  interruptible: true
-
-.apps-daemonset:
-  stage: apps-ready
-  script:
-    - *debug_information
-    - cd ansible/
-    - export KUBECONFIG="${PWD}/../clusters/${HOSTNAME}/kube_config_cluster.yml"
-    - pytest -v -s -m 'daemonsets' --resource="$RESOURCE" --namespace="$NAMESPACE" --connection=ansible --ansible-inventory=../${CLUSTER_DIR}/inventory.yml --hosts='ansible://*' --reruns 120 --reruns-delay 10
-  extends:
-    - .ssh_setup
-  interruptible: true
-
-cert-manager-deployment:
-  variables:
-    RESOURCE: "cert-manager"
-    NAMESPACE: "cert-manager"
-  needs:
-    - job: infrastructure-kustomizations-ready
-    - job: setup-openappstack  # Needs makes sure the artifacts from that job are downloaded
-  extends:
-    - .apps-deployment
-    - .cert_manager_rules
-
-eventrouter-deployment:
-  variables:
-    RESOURCE: "eventrouter"
-    NAMESPACE: "oas"
-  needs:
-    - job: enable-monitoring
-    - job: setup-openappstack
-  extends:
-    - .apps-deployment
-    - .eventrouter_rules
-
-local-path-provisioner-deployment:
-  variables:
-    RESOURCE: "local-path-provisioner"
-    NAMESPACE: "kube-system"
-  needs:
-    - job: infrastructure-kustomizations-ready
-    - job: setup-openappstack
-  extends:
-    - .apps-deployment
-    - .local_path_provisioner_rules
-
-loki-statefulset:
-  variables:
-    RESOURCE: "loki"
-    NAMESPACE: "oas"
-  needs:
-    - job: enable-monitoring
-    - job: setup-openappstack
-  extends:
-    - .apps-statefulset
-    - .loki_rules
-
-promtail-daemonset:
-  variables:
-    RESOURCE: "promtail"
-    NAMESPACE: "oas"
-  needs:
-    - job: enable-monitoring
-    - job: setup-openappstack
-  extends:
-    - .apps-daemonset
-    - .promtail_rules
-
-nextcloud-deployment:
-  variables:
-    RESOURCE: "nextcloud"
-    NAMESPACE: "oas-apps"
-  needs:
-    - job: enable-nextcloud
-    - job: setup-openappstack
-  extends:
-    - .apps-deployment
-    - .nextcloud_rules
-
-kube-prometheus-stack-deployment:
-  variables:
-    RESOURCE: "kube-prometheus-stack"
-    NAMESPACE: "oas"
-  needs:
-    - job: enable-monitoring
-    - job: setup-openappstack
-  extends:
-    - .apps-deployment
-    - .kube_prometheus_stack_rules
-
-rocketchat-deployment:
-  variables:
-    RESOURCE: "rocketchat"
-    NAMESPACE: "oas-apps"
-  needs:
-    - job: enable-rocketchat
-    - job: setup-openappstack
-  extends:
-    - .apps-deployment
-    - .rocketchat_rules
-
-single-sign-on-deployment:
-  variables:
-    RESOURCE: "single-sign-on"
-    NAMESPACE: "oas"
-  needs:
-    - job: core-kustomizations-ready
-    - job: setup-openappstack
-  extends:
-    - .apps-deployment
-    - .single_sign_on_rules
-
-wekan-deployment:
-  variables:
-    RESOURCE: "wekan"
-    NAMESPACE: "oas-apps"
-  needs:
-    - job: enable-wekan
-    - job: setup-openappstack
-  extends:
-    - .apps-deployment
-    - .wekan_rules
-
-wordpress-statefulset:
-  variables:
-    RESOURCE: "wordpress"
-    NAMESPACE: "oas-apps"
-  needs:
-    - job: enable-wordpress
-    - job: setup-openappstack
-  extends:
-    - .apps-statefulset
-    - .wordpress_rules
-
 # Stage: certs
 # ================
 #
@@ -611,7 +452,7 @@ nextcloud-cert:
   variables:
     RESOURCE: "nextcloud"
   needs:
-    - job: nextcloud-deployment
+    - job: enable-nextcloud
     - job: setup-openappstack
   extends:
     - .apps-cert
@@ -621,7 +462,7 @@ kube-prometheus-stack-cert:
   variables:
     RESOURCE: "kube-prometheus-stack"
   needs:
-    - job: kube-prometheus-stack-deployment
+    - job: enable-monitoring
     - job: setup-openappstack
   extends:
     - .apps-cert
@@ -631,7 +472,7 @@ rocketchat-cert:
   variables:
     RESOURCE: "rocketchat"
   needs:
-    - job: rocketchat-deployment
+    - job: enable-rocketchat
     - job: setup-openappstack
   extends:
     - .apps-cert
@@ -641,7 +482,7 @@ single-sign-on-cert:
   variables:
     RESOURCE: "single-sign-on"
   needs:
-    - job: single-sign-on-deployment
+    - job: core-kustomizations-ready
     - job: setup-openappstack
   extends:
     - .apps-cert
@@ -651,7 +492,7 @@ wekan-cert:
   variables:
     RESOURCE: "wekan"
   needs:
-    - job: wekan-deployment
+    - job: enable-wekan
     - job: setup-openappstack
   extends:
     - .apps-cert
@@ -661,7 +502,7 @@ wordpress-cert:
   variables:
     RESOURCE: "wordpress"
   needs:
-    - job: wordpress-statefulset
+    - job: enable-wordpress
     - job: setup-openappstack
   extends:
     - .apps-cert
diff --git a/flux2/cluster/base/core.yaml b/flux2/cluster/base/core.yaml
index 1ab369502..7a12c2e19 100644
--- a/flux2/cluster/base/core.yaml
+++ b/flux2/cluster/base/core.yaml
@@ -35,3 +35,15 @@ spec:
       kind: HelmRelease
       name: single-sign-on
       namespace: oas
+    - apiVersion: apps/v1
+      kind: Deployment
+      name: single-sign-on-userbackend
+      namespace: oas
+    - apiVersion: apps/v1
+      kind: Deployment
+      name: single-sign-on-hydra
+      namespace: oas
+    - apiVersion: apps/v1
+      kind: Deployment
+      name: single-sign-on-login
+      namespace: oas
diff --git a/flux2/cluster/base/infrastructure.yaml b/flux2/cluster/base/infrastructure.yaml
index 53c949da1..51ba9edbe 100644
--- a/flux2/cluster/base/infrastructure.yaml
+++ b/flux2/cluster/base/infrastructure.yaml
@@ -21,3 +21,11 @@ spec:
       kind: HelmRelease
       name: local-path-provisioner
       namespace: kube-system
+    - apiVersion: apps/v1
+      kind: Deployment
+      name: cert-manager
+      namespace: cert-manager
+    - apiVersion: apps/v1
+      kind: Deployment
+      name: local-path-provisioner
+      namespace: kube-system
diff --git a/flux2/cluster/optional/monitoring/monitoring.yaml b/flux2/cluster/optional/monitoring/monitoring.yaml
index a0fb7bc82..c0c529412 100644
--- a/flux2/cluster/optional/monitoring/monitoring.yaml
+++ b/flux2/cluster/optional/monitoring/monitoring.yaml
@@ -32,6 +32,22 @@ spec:
       kind: HelmRelease
       name: promtail
       namespace: oas
+    - apiVersion: apps/v1
+      kind: Deployment
+      name: eventrouter
+      namespace: oas
+    - apiVersion: apps/v1
+      kind: StatefulSet
+      name: loki
+      namespace: oas
+    - apiVersion: apps/v1
+      kind: DaemonSet
+      name: promtail
+      namespace: oas
+    - apiVersion: apps/v1
+      kind: StatefulSet
+      name: prometheus-kube-prometheus-stack-prometheus
+      namespace: oas
   postBuild:
     substituteFrom:
       - kind: Secret
diff --git a/flux2/cluster/optional/nextcloud/nextcloud.yaml b/flux2/cluster/optional/nextcloud/nextcloud.yaml
index 0059d0312..07fac76dd 100644
--- a/flux2/cluster/optional/nextcloud/nextcloud.yaml
+++ b/flux2/cluster/optional/nextcloud/nextcloud.yaml
@@ -20,6 +20,14 @@ spec:
       kind: HelmRelease
       name: nextcloud
       namespace: oas-apps
+    - apiVersion: apps/v1
+      kind: Deployment
+      name: nc-nextcloud
+      namespace: oas-apps
+    - apiVersion: apps/v1
+      kind: Deployment
+      name: nc-onlyoffice-documentserver
+      namespace: oas-apps
   postBuild:
     substituteFrom:
       - kind: Secret
diff --git a/flux2/cluster/optional/rocketchat/rocketchat.yaml b/flux2/cluster/optional/rocketchat/rocketchat.yaml
index 4cd176485..5b597db0a 100644
--- a/flux2/cluster/optional/rocketchat/rocketchat.yaml
+++ b/flux2/cluster/optional/rocketchat/rocketchat.yaml
@@ -20,6 +20,10 @@ spec:
       kind: HelmRelease
       name: rocketchat
       namespace: oas-apps
+    - apiVersion: apps/v1
+      kind: Deployment
+      name: rocketchat-rocketchat
+      namespace: oas-apps
   postBuild:
     substituteFrom:
       - kind: Secret
diff --git a/flux2/cluster/optional/wekan/wekan.yaml b/flux2/cluster/optional/wekan/wekan.yaml
index 858bd489f..92cdf331d 100644
--- a/flux2/cluster/optional/wekan/wekan.yaml
+++ b/flux2/cluster/optional/wekan/wekan.yaml
@@ -20,6 +20,10 @@ spec:
       kind: HelmRelease
       name: wekan
       namespace: oas-apps
+    - apiVersion: apps/v1
+      kind: Deployment
+      name: wekan
+      namespace: oas-apps
   postBuild:
     substituteFrom:
       - kind: Secret
diff --git a/flux2/cluster/optional/wordpress/wordpress.yaml b/flux2/cluster/optional/wordpress/wordpress.yaml
index 49abd36ce..9bb1cff0b 100644
--- a/flux2/cluster/optional/wordpress/wordpress.yaml
+++ b/flux2/cluster/optional/wordpress/wordpress.yaml
@@ -20,6 +20,10 @@ spec:
       kind: HelmRelease
       name: wordpress
       namespace: oas-apps
+    - apiVersion: apps/v1
+      kind: StatefulSet
+      name: wordpress
+      namespace: oas-apps
   postBuild:
     substituteFrom:
       - kind: Secret
-- 
GitLab