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: Ie83cfe33943ac7a2ef10d569c60274f9cd003df2
Related-Prod: PROD-21267
diff --git a/ironic/api.sls b/ironic/api.sls
index dcf247d..da1c539 100644
--- a/ironic/api.sls
+++ b/ironic/api.sls
@@ -2,25 +2,21 @@
{%- if api.enabled %}
include:
- ironic._common
+ - ironic.db.offline_sync
ironic_api_packages:
pkg.installed:
- names: {{ api.pkgs }}
- install_recommends: False
-
-{%- if api.api_type not in ["deploy"] %}
-ironic_install_database:
- cmd.run:
- - names:
- - ironic-dbsync --config-file /etc/ironic/ironic.conf upgrade
- - require:
- - file: /etc/ironic/ironic.conf
-{%- endif %}
+ - require_in:
+ - sls: ironic.db.offline_sync
{{ api.service }}:
service.running:
- enable: true
- full_restart: true
+ - require:
+ - sls: ironic.db.offline_sync
- watch:
- file: /etc/ironic/ironic.conf
- file: /etc/ironic/policy.json
diff --git a/ironic/db/offline_sync.sls b/ironic/db/offline_sync.sls
new file mode 100644
index 0000000..5008575
--- /dev/null
+++ b/ironic/db/offline_sync.sls
@@ -0,0 +1,8 @@
+{%- from "ironic/map.jinja" import api with context %}
+
+ironic_install_database:
+ cmd.run:
+ - name: ironic-dbsync --config-file /etc/ironic/ironic.conf upgrade
+ {%- if grains.get('noservices') or ( api.api_type in ["deploy"] and api.get('role', 'primary') == 'secondary' ) %}
+ - onlyif: /bin/false
+ {%- endif %}
diff --git a/ironic/db/online_sync.sls b/ironic/db/online_sync.sls
new file mode 100644
index 0000000..9008da9
--- /dev/null
+++ b/ironic/db/online_sync.sls
@@ -0,0 +1,8 @@
+{%- from "ironic/map.jinja" import api with context %}
+
+ironic_online_data_migrations:
+ cmd.run:
+ - name: ironic-dbsync online_data_migrations
+ {%- if grains.get('noservices') or ( api.api_type in ["deploy"] and api.get('role', 'primary') == 'secondary' ) %}
+ - onlyif: /bin/false
+ {%- endif %}