Run dbsync on primary node only

Move dbsync to separate file.
Run only on primary node.
Do not run redundant versioned dbsyncs.
Run online dbsync when services are online.

Change-Id: I3962204114bd7007be705fc3c6872903f376a4b6
Related-Prod: PROD-21267
diff --git a/designate/db/offline_sync.sls b/designate/db/offline_sync.sls
new file mode 100644
index 0000000..fd49a7f
--- /dev/null
+++ b/designate/db/offline_sync.sls
@@ -0,0 +1,8 @@
+{%- from "designate/map.jinja" import server with context %}
+
+designate_syncdb:
+  cmd.run:
+    - name: designate-manage database sync
+    {%- if grains.get('noservices') or server.get('role', 'primary') == 'secondary' %}
+    - onlyif: /bin/false
+    {%- endif %}
diff --git a/designate/server.sls b/designate/server.sls
index 4f53f27..fed7379 100644
--- a/designate/server.sls
+++ b/designate/server.sls
@@ -1,6 +1,9 @@
 {%- from "designate/map.jinja" import server with context %}
 {%- if server.enabled %}
 
+include:
+ - designate.db.offline_sync
+
 {%- if server.backend is defined %}
 
 {%- if server.backend.bind9 is defined %}
@@ -98,6 +101,8 @@
 designate_server_packages:
   pkg.installed:
     - names: {{ server.pkgs }}
+    - require_in:
+      - sls: designate.db.offline_sync
 
 /etc/designate/designate.conf:
   file.managed:
@@ -105,6 +110,8 @@
   - template: jinja
   - require:
     - pkg: designate_server_packages
+  - require_in:
+      - sls: designate.db.offline_sync
 
 /etc/designate/api-paste.ini:
   file.managed:
@@ -112,15 +119,8 @@
   - template: jinja
   - require:
     - pkg: designate_server_packages
-
-designate_syncdb:
-  cmd.run:
-    - name: designate-manage database sync
-    {%- if grains.get('noservices') %}
-    - onlyif: /bin/false
-    {%- endif %}
-    - require:
-      - file: /etc/designate/designate.conf
+  - require_in:
+      - sls: designate.db.offline_sync
 
 designate_pool_sync:
   cmd.run:
@@ -139,7 +139,7 @@
     - onlyif: /bin/false
     {%- endif %}
     - require:
-      - cmd: designate_syncdb
+      - sls: designate.db.offline_sync
       - cmd: designate_pool_sync
     - watch:
       - file: /etc/designate/designate.conf