From db49764ef1af145e9469f5dcd888a2b2779b04f3 Mon Sep 17 00:00:00 2001
From: Imran Iqbal <iqbalmy@hotmail.com>
Date: Tue, 21 Apr 2020 08:19:40 +0100
Subject: [PATCH] refactor: standardise structure from the `template-formula`

---
 tomcat/map.jinja        | 22 +++++++++++-----
 tomcat/osarchmap.yaml   | 35 ++++++++++++++++++++++++++
 tomcat/osfamilymap.yaml | 27 +++++++++++++-------
 tomcat/osfingermap.yaml | 56 ++++++++++++++++++++++++++++++++---------
 tomcat/osmap.yaml       | 33 ++++++++++++++++++++++++
 5 files changed, 146 insertions(+), 27 deletions(-)
 create mode 100644 tomcat/osarchmap.yaml
 create mode 100644 tomcat/osmap.yaml

diff --git a/tomcat/map.jinja b/tomcat/map.jinja
index ba7902d..d1fcea5 100644
--- a/tomcat/map.jinja
+++ b/tomcat/map.jinja
@@ -5,7 +5,9 @@
 {%- set tplroot = tpldir.split('/')[0] %}
 {#- Start imports as #}
 {%- import_yaml tplroot ~ "/defaults.yaml" as default_settings %}
+{%- import_yaml tplroot ~ "/osarchmap.yaml" as osarchmap %}
 {%- import_yaml tplroot ~ "/osfamilymap.yaml" as osfamilymap %}
+{%- import_yaml tplroot ~ "/osmap.yaml" as osmap %}
 {%- import_yaml tplroot ~ "/osfingermap.yaml" as osfingermap %}
 
 {#- Retrieve the config dict only once #}
@@ -15,14 +17,22 @@
       default_settings,
       default=tplroot,
       merge=salt['grains.filter_by'](
-        osfamilymap,
-        grain='os_family',
+        osarchmap,
+        grain='osarch',
         merge=salt['grains.filter_by'](
-          osfingermap,
-          grain='osfinger',
+          osfamilymap,
+          grain='os_family',
           merge=salt['grains.filter_by'](
-            _config,
-            default='lookup'
+            osmap,
+            grain='os',
+            merge=salt['grains.filter_by'](
+              osfingermap,
+              grain='osfinger',
+              merge=salt['grains.filter_by'](
+                _config,
+                default='lookup'
+              )
+            )
           )
         )
       )
diff --git a/tomcat/osarchmap.yaml b/tomcat/osarchmap.yaml
new file mode 100644
index 0000000..ab3bc1f
--- /dev/null
+++ b/tomcat/osarchmap.yaml
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+# vim: ft=yaml
+#
+# Setup variables using grains['osarch'] based logic.
+# You just need to add the key:values for an `osarch` that differ
+# from `defaults.yaml`.
+# Only add an `osarch` which is/will be supported by the formula.
+#
+# If you do not need to provide defaults via the `osarch` grain,
+# you will need to provide at least an empty dict in this file, e.g.
+# osarch: {}
+---
+amd64:
+  arch: amd64
+
+x86_64:
+  arch: amd64
+
+386:
+  arch: 386
+
+arm64:
+  arch: arm64
+
+armv6l:
+  arch: armv6l
+
+armv7l:
+  arch: armv7l
+
+ppc64le:
+  arch: ppc64le
+
+s390x:
+  arch: s390x
diff --git a/tomcat/osfamilymap.yaml b/tomcat/osfamilymap.yaml
index e86ac6b..bdec0c6 100644
--- a/tomcat/osfamilymap.yaml
+++ b/tomcat/osfamilymap.yaml
@@ -15,24 +15,20 @@ Debian:
   user: tomcat8
   group: tomcat8
   java_home: /usr/lib/jvm/default-java
+
 RedHat:
   native_pkg: tomcat-native
   manager_pkg: tomcat-admin-webapps
   main_config_template: salt://tomcat/files/tomcat-default-CentOS.template
-openSUSE:
-  ver: 8
-  native_pkg: libtcnative-1-0
-  manager_pkg: tomcat-admin-webapps
-  main_config_template: salt://tomcat/files/tomcat-default-CentOS.template
+
 Suse:
   ver: 8
   native_pkg: libtcnative-1-0
   manager_pkg: tomcat-admin-webapps
   main_config_template: salt://tomcat/files/tomcat-default-CentOS.template
-FreeBSD:
-  native_pkg: tomcat-native
-  ini_config: /etc/rc.conf
-  java_home: /usr
+
+Gentoo: {}
+
 Arch:
   pkg: tomcat8
   ver: 8
@@ -51,6 +47,19 @@ Arch:
   # Not used on Arch
   manager_pkg: ''
 
+Alpine: {}
+
+FreeBSD:
+  native_pkg: tomcat-native
+  ini_config: /etc/rc.conf
+  java_home: /usr
+
+OpenBSD: {}
+
+Solaris: {}
+
+Windows: {}
+
 {%- if grains.os == 'MacOS' %}
 {%-   if salt['cmd.run']('/usr/libexec/java_home -F', output_loglevel="quiet") == 0 %}
 {%-     set darwin_javahome = salt['cmd.run']('/usr/libexec/java_home') %}
diff --git a/tomcat/osfingermap.yaml b/tomcat/osfingermap.yaml
index 16188aa..f1e70a6 100644
--- a/tomcat/osfingermap.yaml
+++ b/tomcat/osfingermap.yaml
@@ -1,8 +1,19 @@
 # -*- coding: utf-8 -*-
 # vim: ft=yaml
 ---
-Ubuntu-14.04:
-  ver: 7
+# os: Debian
+Debian-10:
+  ver: 9
+  pkg: tomcat9
+  manager_pkg: tomcat9-admin
+  conf_dir: /etc/tomcat9
+  main_config: /etc/default/tomcat9
+  service: tomcat9
+  user: tomcat
+  group: tomcat
+Debian-9: {}
+Debian-8: {}
+Debian-7:
   pkg: tomcat7
   manager_pkg: tomcat7-admin
   conf_dir: /etc/tomcat7
@@ -11,7 +22,12 @@ Ubuntu-14.04:
   service: tomcat7
   user: tomcat7
   group: tomcat7
-Debian-7:
+
+# os: Ubuntu
+Ubuntu-18.04: {}
+Ubuntu-16.04: {}
+Ubuntu-14.04:
+  ver: 7
   pkg: tomcat7
   manager_pkg: tomcat7-admin
   conf_dir: /etc/tomcat7
@@ -20,12 +36,28 @@ Debian-7:
   service: tomcat7
   user: tomcat7
   group: tomcat7
-Debian-10:
-  ver: 9
-  pkg: tomcat9
-  manager_pkg: tomcat9-admin
-  conf_dir: /etc/tomcat9
-  main_config: /etc/default/tomcat9
-  service: tomcat9
-  user: tomcat
-  group: tomcat
+
+# os: Fedora
+Fedora-31: {}
+Fedora-30: {}
+
+# os: CentOS
+CentOS Linux-8: {}
+CentOS Linux-7: {}
+CentOS-6: {}
+
+# os: Amazon
+Amazon Linux-2: {}
+Amazon Linux AMI-2018: {}
+
+# os: SUSE
+Leap-15: {}
+
+# os: FreeBSD
+FreeBSD-12: {}
+
+# os: Windows
+Windows-8.1: {}
+
+# os: Gentoo
+Gentoo-2: {}
diff --git a/tomcat/osmap.yaml b/tomcat/osmap.yaml
new file mode 100644
index 0000000..de11a67
--- /dev/null
+++ b/tomcat/osmap.yaml
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+# vim: ft=yaml
+#
+# Setup variables using grains['os'] based logic.
+# You just need to add the key:values for an `os` that differ
+# from `defaults.yaml` + `osarch.yaml` + `os_family.yaml`.
+# Only add an `os` which is/will be supported by the formula.
+#
+# If you do not need to provide defaults via the `os` grain,
+# you will need to provide at least an empty dict in this file, e.g.
+# osmap: {}
+---
+# os_family: Debian
+Ubuntu: {}
+Raspbian: {}
+
+# os_family: RedHat
+Fedora: {}
+CentOS: {}
+Amazon: {}
+
+# os_family: Suse
+SUSE: {}
+openSUSE: {}
+
+# os_family: Gentoo
+Funtoo: {}
+
+# os_family: Arch
+Manjaro: {}
+
+# os_family: Solaris
+SmartOS: {}
-- 
GitLab