From c8238e9dbe6abf779fab85c43a448396e4c905c3 Mon Sep 17 00:00:00 2001
From: s3lph <account-gitlab-ideynizv@kernelpanic.lol>
Date: Wed, 3 Nov 2021 00:45:03 +0100
Subject: [PATCH] postfixadmin: make setup.php invocations idempotent and
 error-aware

---
 roles/postfixadmin/tasks/bootstrap.yml | 6 +-----
 roles/postfixadmin/tasks/config.yml    | 5 ++++-
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/roles/postfixadmin/tasks/bootstrap.yml b/roles/postfixadmin/tasks/bootstrap.yml
index 4f3bcef..f41731b 100644
--- a/roles/postfixadmin/tasks/bootstrap.yml
+++ b/roles/postfixadmin/tasks/bootstrap.yml
@@ -50,8 +50,4 @@
       submit: 'Add Admin'
     return_content: yes
   changed_when: yes
-  register: postfixadmin_register_boostrap_create_admin
-
-- name: print the response of setup.php since the status code is inaccurate
-  ansible.builtin.debug:
-    var: postfixadmin_register_boostrap_create_admin.content
+  failed_when: '"Admin addition failed" in postfixadmin_register_boostrap_create_admin.content or postfixadmin_register_boostrap_create_admin.status != 200'
diff --git a/roles/postfixadmin/tasks/config.yml b/roles/postfixadmin/tasks/config.yml
index 532bc49..fadcc26 100644
--- a/roles/postfixadmin/tasks/config.yml
+++ b/roles/postfixadmin/tasks/config.yml
@@ -13,4 +13,7 @@
     url: "{{ postfixadmin_bootstrap_base_url }}/setup.php"
     return_content: yes
   register: postfixadmin_register_setup_upgrade
-  changed_when: "' &nbsp; done' in postfixadmin_register_setup_upgrade.content"
+  changed_when:
+    - "'Database is up to date' not in postfixadmin_register_setup_upgrade.content"
+    - "' &nbsp; done' in postfixadmin_register_setup_upgrade.content"
+  failed_when: '"Something went wrong while trying to apply database updates" in postfixadmin_register_setup_upgrade.content or postfixadmin_register_setup_upgrade.status != 200'