From 3633a6ec84350baa1ace9e134bc086883589657e Mon Sep 17 00:00:00 2001
From: Alexander Weidinger <aw@sz9i.net>
Date: Tue, 9 Apr 2019 23:59:44 +0200
Subject: [PATCH] Allow to remove DB

---
 mysql/database.sls | 20 +++++++++++++++-----
 pillar.example     |  3 +++
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/mysql/database.sls b/mysql/database.sls
index 977a052..c3f5dd3 100644
--- a/mysql/database.sls
+++ b/mysql/database.sls
@@ -13,19 +13,29 @@ include:
 
 {% for database_obj in salt['pillar.get']('mysql:database', []) %}
 {% set state_id = 'mysql_db_' ~ loop.index0 %}
-{% set database = database_obj.get('name') if database_obj is mapping else database_obj %}
+{% if database_obj is mapping %}
+{%   set database = database_obj.get('name') %}
+{%   set present = database_obj.get('present', True) %}
+{% else %}
+{%   set database = database_obj %}
+{%   set present = True %}
+{% endif %}
 {{ state_id }}:
+  {%- if present %}
   mysql_database.present:
+    {% if database_obj is mapping %}
+    - character_set: {{ database_obj.get('character_set', '') }}
+    - collate: {{ database_obj.get('collate', '') }}
+    {% endif %}
+  {% else %}
+  mysql_database.absent:
+  {% endif %}
     - name: {{ database }}
     - connection_host: '{{ mysql_host }}'
     - connection_user: '{{ mysql_salt_user }}'
     {% if mysql_salt_pass %}
     - connection_pass: '{{ mysql_salt_pass }}'
     {% endif %}
-    {% if database_obj is mapping %}
-    - character_set: {{ database_obj.get('character_set', '') }}
-    - collate: {{ database_obj.get('collate', '') }}
-    {% endif %}
     - connection_charset: utf8
 
 {% if salt['pillar.get'](['mysql', 'schema', database, 'load']|join(':'), False) %}
diff --git a/pillar.example b/pillar.example
index bcdbf82..112d542 100644
--- a/pillar.example
+++ b/pillar.example
@@ -72,6 +72,9 @@ mysql:
     - name: bar
       character_set: utf8
       collate: utf8_general_ci
+    # Delete DB
+    - name: obsolete_db
+      present: False
   schema:
     foo:
       load: True
-- 
GitLab