Compatibility with older salt, fix first deploy
diff --git a/README.rst b/README.rst
index 34b4dab..97d0d98 100644
--- a/README.rst
+++ b/README.rst
@@ -13,7 +13,17 @@
``glusterfs.server``
--------------------
-Setup GlusterFS server
+Setup GlusterFS server (including both service and setup)
+
+``glusterfs.server.service``
+----------------------------
+
+Setup and start GlusterFS server service
+
+``glusterfs.server.setup``
+----------------------------
+
+Setup GlusterFS peers and volumes
``glusterfs.client``
--------------------
diff --git a/glusterfs/server.sls b/glusterfs/server.sls
deleted file mode 100644
index 7cb8d6e..0000000
--- a/glusterfs/server.sls
+++ /dev/null
@@ -1,73 +0,0 @@
-{% from "glusterfs/map.jinja" import server with context %}
-
-{%- if server.enabled %}
-
-glusterfs_packages:
- pkg.installed:
- - names: {{ server.pkgs }}
-
-glusterfs_service:
- service.running:
- - name: {{ server.service }}
- - require:
- - pkg: glusterfs_packages
-
-{%- if server.peers is defined %}
-
-glusterfs_peers:
- glusterfs.peered:
- - names: {{ server.peers }}
- - require:
- - service: glusterfs_service
-
-{%- endif %}
-
-{%- if server.volumes is defined %}
-{%- for name, volume in server.volumes.iteritems() %}
-
-{{ volume.storage }}:
- file.directory:
- - makedirs: true
-
-glusterfs_vol_{{ name }}:
- glusterfs.created:
- - name: {{ name }}
- {%- if volume.replica is defined %}
- - replica: {{ volume.replica }}
- {%- endif %}
- {%- if volume.stripe is defined %}
- - stripe: {{ volume.stripe }}
- {%- endif %}
- - bricks: {{ volume.bricks }}
- {# Parameter force doesn't exist in Salt 2015.5.2 and without it creation
- will fail when brick is on root disk #}
- - force: true
- - require:
- - glusterfs: glusterfs_peers
- - file: {{ volume.storage }}
-
-glusterfs_vol_{{ name }}_start:
- glusterfs.started:
- - name: {{ name }}
- - require:
- - glusterfs: glusterfs_vol_{{ name }}
-
-{%- if volume.options is defined %}
-{%- for key, value in volume.options.iteritems() %}
-
-glusterfs_vol_{{ name }}_{{ key }}:
- cmd.run:
- - name: "gluster volume set '{{ name }}' '{{ key }}' '{{ value }}'"
- - unless: "gluster volume info '{{ name }}' | grep '{{ key }}: {{ value }}'"
- - require:
- - glusterfs: glusterfs_vol_{{ name }}
- - require_in:
- - glusterfs: glusterfs_vol_{{ name }}_start
-
-{%- endfor %}
-{%- endif %}
-
-{%- endfor %}
-{%- endif %}
-
-{%- endif %}
diff --git a/glusterfs/server/init.sls b/glusterfs/server/init.sls
new file mode 100644
index 0000000..695008c
--- /dev/null
+++ b/glusterfs/server/init.sls
@@ -0,0 +1,3 @@
+include:
+- glusterfs.server.service
+- glusterfs.server.setup
diff --git a/glusterfs/server/service.sls b/glusterfs/server/service.sls
new file mode 100644
index 0000000..1e39540
--- /dev/null
+++ b/glusterfs/server/service.sls
@@ -0,0 +1,25 @@
+{% from "glusterfs/map.jinja" import server with context %}
+
+{%- if server.enabled %}
+
+glusterfs_packages:
+ pkg.installed:
+ - names: {{ server.pkgs }}
+
+glusterfs_service:
+ service.running:
+ - name: {{ server.service }}
+ - require:
+ - pkg: glusterfs_packages
+
+{%- if server.volumes is defined %}
+{%- for name, volume in server.volumes.iteritems() %}
+
+{{ volume.storage }}:
+ file.directory:
+ - makedirs: true
+
+{%- endfor %}
+{%- endif %}
+
+{%- endif %}
diff --git a/glusterfs/server/setup.sls b/glusterfs/server/setup.sls
new file mode 100644
index 0000000..93af261
--- /dev/null
+++ b/glusterfs/server/setup.sls
@@ -0,0 +1,91 @@
+{% from "glusterfs/map.jinja" import server with context %}
+
+{%- if grains['saltversion'] < "2015.5.4" %}
+{# Parameter force doesn't exist in Salt 2015.5.3 and without it volume
+creation will fail when brick is on root partition #}
+{% set force_compatibility = True %}
+{%- else %}
+{% set force_compatibility = False %}
+{%- endif %}
+
+{%- if server.enabled %}
+
+include:
+- glusterfs.server.service
+
+{%- if server.peers is defined %}
+
+glusterfs_peers:
+ glusterfs.peered:
+ - names: {{ server.peers }}
+ - require:
+ - service: glusterfs_service
+
+{%- endif %}
+
+{%- if server.volumes is defined %}
+{%- for name, volume in server.volumes.iteritems() %}
+
+{%- if force_compatibility %}
+
+glusterfs_vol_{{ name }}:
+ cmd.run:
+ - name: |
+ gluster volume create {{ name }}
+ {%- if volume.replica is defined %} replica {{ volume.replica }} \{% endif %}
+ {%- if volume.stripe is defined %} stripe {{ volume.stripe }} \{% endif %}
+ {{ volume.bricks|join(' ') }} force
+ - unless: "gluster volume info {{ name }}"
+
+{%- else %}
+
+glusterfs_vol_{{ name }}:
+ glusterfs.created:
+ - name: {{ name }}
+ {%- if volume.replica is defined %}
+ - replica: {{ volume.replica }}
+ {%- endif %}
+ {%- if volume.stripe is defined %}
+ - stripe: {{ volume.stripe }}
+ {%- endif %}
+ - bricks: {{ volume.bricks }}
+ - force: true
+ - require:
+ - glusterfs: glusterfs_peers
+ - file: {{ volume.storage }}
+
+{%- endif %}
+
+glusterfs_vol_{{ name }}_start:
+ glusterfs.started:
+ - name: {{ name }}
+ - require:
+ {%- if force_compatibility %}
+ - cmd: glusterfs_vol_{{ name }}
+ {%- else %}
+ - glusterfs: glusterfs_vol_{{ name }}
+ {%- endif %}
+
+{%- if volume.options is defined %}
+{%- for key, value in volume.options.iteritems() %}
+
+glusterfs_vol_{{ name }}_{{ key }}:
+ cmd.run:
+ - name: "gluster volume set '{{ name }}' '{{ key }}' '{{ value }}'"
+ - unless: "gluster volume info '{{ name }}' | grep '{{ key }}: {{ value }}'"
+ - require:
+ {%- if force_compatibility %}
+ - cmd: glusterfs_vol_{{ name }}
+ {%- else %}
+ - glusterfs: glusterfs_vol_{{ name }}
+ {%- endif %}
+ - require_in:
+ - glusterfs: glusterfs_vol_{{ name }}_start
+
+{%- endfor %}
+{%- endif %}
+
+{%- endfor %}
+{%- endif %}
+
+{%- endif %}