Wait for a while when peers are probed

Change-Id: Ica916a491659e4254087d15691fbf0477a1de4cc
diff --git a/glusterfs/server/setup.sls b/glusterfs/server/setup.sls
index 8e96822..b029ba5 100644
--- a/glusterfs/server/setup.sls
+++ b/glusterfs/server/setup.sls
@@ -16,10 +16,21 @@
 {%- if server.peers is defined %}
 
 glusterfs_peers:
-    glusterfs.peered:
-      - names: {{ server.peers }}
-      - require:
-        - service: glusterfs_service
+  glusterfs.peered:
+    - names: {{ server.peers }}
+    - require:
+      - service: glusterfs_service
+
+{#-
+  `gluster peer probe` seems to be async, we need to give Gluster some time to
+  settle, especially on slower deployments. Otherwise later volume creations
+  may fail.
+#}
+glusterfs_peers_wait:
+  cmd.wait:
+    - name: sleep 5
+    - watch_in:
+      - glusterfs: glusterfs_peers
 
 {%- endif %}
 
@@ -36,6 +47,8 @@
         {%- if volume.stripe is defined %} stripe {{ volume.stripe }} \{% endif %}
         {{ volume.bricks|join(' ') }} force
     - unless: "gluster volume info {{ name }}"
+    - require:
+      - cmd: glusterfs_peers_wait
 
 {%- else %}
 
@@ -52,7 +65,7 @@
     - force: true
     - start: true
     - require:
-      - glusterfs: glusterfs_peers
+      - cmd: glusterfs_peers_wait
       - file: {{ volume.storage }}
 
 {%- endif %}