Run dbsync on primary node only

Move dbsync to separate file.
Run only on primary node.

Change-Id: Iff51d7b3d3949d959aee2d24ddb338df685a582e
Related-Prod: PROD-21267
diff --git a/cinder/controller.sls b/cinder/controller.sls
index f094282..6ee10e1 100644
--- a/cinder/controller.sls
+++ b/cinder/controller.sls
@@ -1,6 +1,12 @@
 {%- from "cinder/map.jinja" import controller with context %}
 {%- if controller.get('enabled', False) %}
 
+include:
+  {%- if controller.version not in ['mitaka','newton'] %}
+ - apache
+  {%- endif %}
+ - cinder.db.offline_sync
+
 {%- set user = controller %}
 {%- include "cinder/user.sls" %}
 
@@ -11,6 +17,8 @@
 cinder_controller_packages:
   pkg.installed:
   - names: {{ controller.pkgs }}
+  - require_in:
+    - sls: cinder.db.offline_sync
 
 /etc/cinder/cinder.conf:
   file.managed:
@@ -18,6 +26,8 @@
   - template: jinja
   - require:
     - pkg: cinder_controller_packages
+  - require_in:
+    - sls: cinder.db.offline_sync
 
 /etc/cinder/api-paste.ini:
   file.managed:
@@ -25,6 +35,8 @@
   - template: jinja
   - require:
     - pkg: cinder_controller_packages
+  - require_in:
+    - sls: cinder.db.offline_sync
 
 {%- if controller.backup.engine != None %}
   {%- set cinder_log_services = controller.services + controller.backup.services %}
@@ -145,20 +157,7 @@
 
 {%- endfor %}
 
-cinder_syncdb:
-  cmd.run:
-  - name: 'cinder-manage db sync; sleep 5;'
-  {%- if grains.get('noservices') %}
-  - onlyif: /bin/false
-  {%- endif %}
-  - require:
-    - pkg: cinder_controller_packages
-  - require_in:
-    - service: cinder_controller_services
-
 {%- if controller.version not in ['mitaka','newton'] %}
-include:
-  - apache
 {#- Creation of sites using templates is deprecated, sites should be generated by apache pillar, and enabled by cinder formula #}
 {%- if pillar.get('apache', {}).get('server', {}).get('site', {}).cinder is not defined %}
 
@@ -214,6 +213,7 @@
   - require:
     - pkg: cinder_controller_packages
     - service: cinder_api_service_dead
+    - sls: cinder.db.offline_sync
   - watch:
     {%- if controller.message_queue.get('ssl',{}).get('enabled', False) %}
     - file: rabbitmq_ca_cinder_controller
@@ -237,6 +237,7 @@
   {%- endif %}
   - require:
     - pkg: cinder_controller_packages
+    - sls: cinder.db.offline_sync
   - watch:
     {%- if controller.message_queue.get('ssl',{}).get('enabled', False) %}
     - file: rabbitmq_ca_cinder_controller
@@ -270,6 +271,7 @@
   {%- endif %}
   - require:
     - pkg: cinder_controller_packages
+    - sls: cinder.db.offline_sync
   - watch:
     {%- if controller.message_queue.get('ssl',{}).get('enabled', False) %}
     - file: rabbitmq_ca_cinder_controller
diff --git a/cinder/db/offline_sync.sls b/cinder/db/offline_sync.sls
new file mode 100644
index 0000000..33da95e
--- /dev/null
+++ b/cinder/db/offline_sync.sls
@@ -0,0 +1,8 @@
+{%- from "cinder/map.jinja" import controller with context %}
+
+cinder_syncdb:
+  cmd.run:
+  - name: 'cinder-manage db sync; sleep 5;'
+  {%- if grains.get('noservices') or controller.get('role', 'primary') == 'secondary' %}
+  - onlyif: /bin/false
+  {%- endif %}
diff --git a/cinder/db/online_sync.sls b/cinder/db/online_sync.sls
new file mode 100644
index 0000000..bdc1082
--- /dev/null
+++ b/cinder/db/online_sync.sls
@@ -0,0 +1,8 @@
+{% from "cinder/map.jinja" import controller with context %}
+
+cinder_controller_online_data_migrations:
+  cmd.run:
+  - name: cinder-manage db online_data_migrations
+  {%- if grains.get('noservices') or controller.get('role', 'primary') == 'secondary' %}
+  - onlyif: /bin/false
+  {%- endif %}