Merge "Change query for mysql cluster size"
diff --git a/README.rst b/README.rst
index 4873cfa..872aca0 100644
--- a/README.rst
+++ b/README.rst
@@ -101,6 +101,24 @@
                 - grants:
                   - all privileges
 
+Additional mysql SSL grants:
+
+.. code-block:: yaml
+
+    mysql:
+      server:
+        users:
+          - name: clustercheck
+            password: clustercheck
+            database: '*.*'
+            grants: PROCESS
+            ssl_option:
+              - SSL: True
+              - X509: True
+              - SUBJECT: <subject>
+              - ISSUER: <issuer>
+              - CIPHER: <cipher>
+
 Additional check params:
 ========================
 
diff --git a/galera/master.sls b/galera/master.sls
index 871124d..a4fa680 100644
--- a/galera/master.sls
+++ b/galera/master.sls
@@ -132,7 +132,7 @@
       service: {{ master|yaml }}
   - template: jinja
 
-{%- if salt['cmd.run']('test -e /var/lib/mysql/.galera_bootstrap; echo $?') != '0'  %}
+{%- if salt['cmd.shell']('test -e /var/lib/mysql/.galera_bootstrap; echo $?') != '0'  %}
 
 # Enforce config before package installation
 galera_pre_config:
diff --git a/galera/meta/collectd.yml b/galera/meta/collectd.yml
index 4533ad0..9aeb35b 100644
--- a/galera/meta/collectd.yml
+++ b/galera/meta/collectd.yml
@@ -1,29 +1,25 @@
-{%- if pillar.galera is defined  %}
-{%- if pillar.galera.master is defined %}
-{%- from "galera/map.jinja" import master with context %}
-{%- set server = master %}
-{%- elif pillar.galera.slave is defined %}
-{%- from "galera/map.jinja" import slave with context %}
-{%- set server = slave %}
+{%- from "galera/map.jinja" import master, slave with context %}
+{%- if master.get('enabled', False) %}
+  {%- set service = master %}
+{%-  elif slave.get('enabled', False) %}
+  {%- set service = slave %}
 {%- endif %}
-{%- endif %}
-
-{%- if server is defined %}
+{%- if service is defined %}
 local_plugin:
   mysql:
     template: galera/files/collectd_mysql.conf
-    socket: {{ server.socket }}
-    password: {{ server.admin.password }}
-    username: {{ server.admin.user }}
+    socket: {{ service.socket }}
+    password: {{ service.admin.password }}
+    username: {{ service.admin.user }}
   mysql_status:
     template: galera/files/collectd_mysql_status.conf
-    socket: {{ server.socket }}
-    password: {{ server.admin.password }}
-    username: {{ server.admin.user }}
+    socket: {{ service.socket }}
+    password: {{ service.admin.password }}
+    username: {{ service.admin.user }}
   mysql_check:
     plugin: python
     template: galera/files/collectd_mysql_check.conf
-    socket: {{ server.socket }}
-    password: {{ server.admin.password }}
-    username: {{ server.admin.user }}
+    socket: {{ service.socket }}
+    password: {{ service.admin.password }}
+    username: {{ service.admin.user }}
 {%- endif %}
diff --git a/galera/meta/telegraf.yml b/galera/meta/telegraf.yml
index 0361455..5869765 100644
--- a/galera/meta/telegraf.yml
+++ b/galera/meta/telegraf.yml
@@ -1,19 +1,16 @@
-{%- if pillar.galera is defined  %}
-{%- if pillar.galera.master is defined %}
-{%- from "galera/map.jinja" import master with context %}
-{%- set server = master %}
-{%- elif pillar.galera.slave is defined %}
-{%- from "galera/map.jinja" import slave with context %}
-{%- set server = slave %}
-{%- endif %}
+{%- from "galera/map.jinja" import master, slave with context %}
+{%- if master.get('enabled', False) %}
+  {%- set service = master %}
+{%-  elif slave.get('enabled', False) %}
+  {%- set service = slave %}
 {%- endif %}
 
-{%- if server is defined %}
+{%- if service is defined %}
 agent:
   input:
     mysql:
-      address: {{ server.socket }}
-      username: {{ server.admin.user }}
-      password: {{ server.admin.password }}
-      tagexclude: [server]
+      address: {{ service.socket }}
+      username: {{ service.admin.user }}
+      password: {{ service.admin.password }}
+      tagexclude: [service]
 {%- endif %}
diff --git a/galera/server.sls b/galera/server.sls
index 4b84654..7d070d4 100644
--- a/galera/server.sls
+++ b/galera/server.sls
@@ -38,6 +38,7 @@
   - database: '{{ database_name }}.*'
   - user: '{{ user.name }}'
   - host: '{{ user.host }}'
+  - ssl_option: {{ user.get('ssl_option', False) }}
   #- connection_user: {{ connection.user }}
   #- connection_pass: {{ connection.password }}
   #- connection_charset: {{ connection.charset }}
@@ -58,7 +59,7 @@
   - defaults:
     database_name: {{ database_name }}
     database: {{ database }}
-  - require: 
+  - require:
     - file: mysql_dirs
     - mysql_database: mysql_database_{{ database_name }}
 
@@ -92,7 +93,7 @@
   {%- if grains.get('noservices') %}
   - onlyif: /bin/false
   {%- endif %}
-  
+
 {%- if 'grants' in user %}
 mysql_user_{{ user.name }}_{{ host }}_grants:
   mysql_grants.present:
@@ -102,6 +103,7 @@
     - grant_option: {{ user['grant_option'] | default(False) }}
     - user: {{ user.name }}
     - host: '{{ host }}'
+    - ssl_option: {{ user.get('ssl_option', False) }}
     #- connection_user: {{ connection.user }}
     #- connection_pass: {{ connection.password }}
     #- connection_charset: {{ connection.charset }}
@@ -122,6 +124,7 @@
     - grant_option: {{ db['grant_option'] | default(False) }}
     - user: {{ user.name }}
     - host: '{{ host }}'
+    - ssl_option: {{ db.get('ssl_option', False) }}
     #- connection_user: {{ connection.user }}
     #- connection_pass: {{ connection.password }}
     #- connection_charset: {{ connection.charset }}
diff --git a/galera/slave.sls b/galera/slave.sls
index 6d9f0d3..2a70672 100644
--- a/galera/slave.sls
+++ b/galera/slave.sls
@@ -130,7 +130,7 @@
   - source: salt://galera/files/bootstrap.sh
   - template: jinja
 
-{%- if salt['cmd.run']('test -e /var/lib/mysql/.galera_bootstrap; echo $?') != '0'  %}
+{%- if salt['cmd.shell']('test -e /var/lib/mysql/.galera_bootstrap; echo $?') != '0'  %}
 
 # Enforce config before package installation
 galera_pre_config:
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
index 4ee4e0f..9761585 100755
--- a/tests/run_tests.sh
+++ b/tests/run_tests.sh
@@ -39,7 +39,7 @@
     log_info "Setting up Python virtualenv"
     virtualenv $VENV_DIR
     source ${VENV_DIR}/bin/activate
-    pip install salt${PIP_SALT_VERSION}
+    python -m pip install salt${PIP_SALT_VERSION}
 }
 
 setup_mock_bin() {
@@ -125,7 +125,7 @@
 
 salt_run() {
     [ -e ${VENV_DIR}/bin/activate ] && source ${VENV_DIR}/bin/activate
-    salt-call ${SALT_OPTS} $*
+    python $(which salt-call) ${SALT_OPTS} $*
 }
 
 prepare() {