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: I0a20f7e507f0cdf6f58982d5992224d65a5931ce
Related-Prod: PROD-21267
diff --git a/.travis.yml b/.travis.yml
index 0ec0a3d..f58cc31 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -17,23 +17,23 @@
- bundle install
env:
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=compute-dpdk
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=compute-dvr
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=compute-legacy
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=compute-sriov
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=compute-qos
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=control-cluster
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=control-nodvr
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=control-lbaas-octavia
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=control-fwaas-v1
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=control-l2gw
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=control-opendaylight
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=control-ovn
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=gateway-dvr
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=gateway-legacy
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=gateway-legacy-fwaas-v1
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=gateway-legacy-l2gw
- - PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2016.3 SUITE=gateway-legacy-opendaylight
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=compute-dpdk
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=compute-dvr
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=compute-legacy
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=compute-sriov
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=compute-qos
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=control-cluster
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=control-nodvr
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=control-lbaas-octavia
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=control-fwaas-v1
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=control-l2gw
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=control-opendaylight
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=control-ovn
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=gateway-dvr
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=gateway-legacy
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=gateway-legacy-fwaas-v1
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=gateway-legacy-l2gw
+ - PLATFORM=epcim/salt-formulas:saltstack-ubuntu-xenial-salt-2016.3 SUITE=gateway-legacy-opendaylight
- PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=compute-dpdk
- PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=compute-dvr-fwaas-v1
- PLATFORM=epcim/salt:saltstack-ubuntu-xenial-salt-2017.7 SUITE=compute-nonexternal-dvr
diff --git a/neutron/db/offline_sync.sls b/neutron/db/offline_sync.sls
new file mode 100644
index 0000000..a646814
--- /dev/null
+++ b/neutron/db/offline_sync.sls
@@ -0,0 +1,26 @@
+{%- from "neutron/map.jinja" import server, fwaas with context %}
+
+include:
+ - neutron.db.plugins.midonet
+ - neutron.db.plugins.service.bgpvpn
+
+{#- TODO(vsaienko): move this to map.jinja or pillars that should be included for specific plugins #}
+{%- set config_files = ['/etc/neutron/neutron.conf'] %}
+{%- if server.backend.engine in ["ml2", "ovn"] %}
+{%- do config_files.append('/etc/neutron/plugins/ml2/ml2_conf.ini') %}
+{%- elif server.backend.engine == "midonet" %}
+{%- do config_files.append('/etc/neutron/plugins/midonet/midonet.ini') %}
+{%- elif server.backend.engine == "vmware" %}
+{%- do config_files.append('/etc/neutron/plugins/vmware/nsx.ini') %}
+{%- endif %}
+
+
+neutron_db_manage:
+ cmd.run:
+ - name: neutron-db-manage --config-file {{ ' --config-file '.join(config_files) }} upgrade head
+ {%- if grains.get('noservices') or server.get('role', 'primary') == 'secondary' %}
+ - onlyif: /bin/false
+ {%- endif %}
+ - require_in:
+ - sls: neutron.db.plugins.service.bgpvpn
+ - sls: neutron.db.plugins.midonet
diff --git a/neutron/db/plugins/midonet.sls b/neutron/db/plugins/midonet.sls
new file mode 100644
index 0000000..e7087a2
--- /dev/null
+++ b/neutron/db/plugins/midonet.sls
@@ -0,0 +1,22 @@
+{%- from "neutron/map.jinja" import server with context %}
+
+{%- set should_run = '/bin/false' %}
+{%- if not grains.get('noservices') and server.get('role', 'primary') == 'primary' and server.backend.engine == "midonet" %}
+ {%- set should_run = '/bin/true' %}
+{%- endif %}
+
+ {%- if server.version == "kilo" %}
+
+midonet-db-manage:
+ cmd.run:
+ - name: midonet-db-manage upgrade head
+ - onlyif: {{ should_run }}
+
+ {%- else %}
+
+midonet-db-manage:
+ cmd.run:
+ - name: neutron-db-manage --subproject networking-midonet upgrade head
+ - onlyif: {{ should_run }}
+
+ {%- endif %}
diff --git a/neutron/db/plugins/service/bgpvpn.sls b/neutron/db/plugins/service/bgpvpn.sls
new file mode 100644
index 0000000..4441ce8
--- /dev/null
+++ b/neutron/db/plugins/service/bgpvpn.sls
@@ -0,0 +1,11 @@
+{%- from "neutron/map.jinja" import server with context %}
+
+{%- set should_run = '/bin/false' %}
+{%- if not grains.get('noservices') and server.get('role', 'primary') == 'primary' and server.get('bgp_vpn', {}).get('enabled', False) %}
+{%- set should_run = '/bin/true' %}
+{%- endif %}
+
+bgpvpn_db_manage:
+ cmd.run:
+ - name: neutron-db-manage --config-file /etc/neutron/neutron.conf --subproject networking-bgpvpn upgrade head
+ - onlyif: {{ should_run }}
diff --git a/neutron/server.sls b/neutron/server.sls
index 0b4c877..fa115d2 100644
--- a/neutron/server.sls
+++ b/neutron/server.sls
@@ -1,9 +1,8 @@
{%- from "neutron/map.jinja" import server, fwaas with context %}
-{%- if fwaas.get('enabled', False) %}
include:
-- neutron.fwaas
-{%- endif %}
+ - neutron.db.offline_sync
+ - neutron.fwaas
{%- if server.get('enabled', False) %}
{% if grains.os_family == 'Debian' %}
@@ -88,6 +87,8 @@
- require:
- pkg: neutron_server_packages
- pkg: ml2_packages
+ - require_in:
+ - sls: neutron.db.offline_sync
- watch_in:
- service: neutron_server_services
@@ -99,16 +100,6 @@
- require:
- file: /etc/neutron/plugins/ml2/ml2_conf.ini
-neutron_db_manage:
- cmd.run:
- - name: neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head
- {%- if grains.get('noservices') %}
- - onlyif: /bin/false
- {%- endif %}
- - require:
- - file: /etc/neutron/neutron.conf
- - file: /etc/neutron/plugins/ml2/ml2_conf.ini
-
{%- endif %}
{%- if server.l2gw is defined %}
@@ -131,6 +122,8 @@
{%- if server.database.get('ssl',{}).get('enabled', False) %}
- file: mysql_ca_neutron_server
{%- endif %}
+ - require_in:
+ - sls: neutron.db.offline_sync
/etc/neutron/api-paste.ini:
file.managed:
@@ -230,7 +223,7 @@
pkg.installed:
- names: {{ server.pkgs_ovn }}
- require_in:
- - cmd: neutron_db_manage
+ - sls: neutron.db.offline_sync
{%- if not grains.get('noservices', False) %}
@@ -282,16 +275,8 @@
- makedirs: true
- dir_mode: 755
- template: jinja
-
-neutron_db_manage:
- cmd.run:
- - name: neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/midonet/midonet.ini upgrade head
- {%- if grains.get('noservices') %}
- - onlyif: /bin/false
- {%- endif %}
- - require:
- - file: /etc/neutron/neutron.conf
- - file: /etc/neutron/plugins/midonet/midonet.ini
+ - require_in:
+ - sls: neutron.db.offline_sync
{%- if server.version == "kilo" %}
@@ -301,10 +286,6 @@
- python-neutron-plugin-midonet
- python-neutron-lbaas
-midonet-db-manage:
- cmd.run:
- - name: midonet-db-manage upgrade head
-
{%- else %}
midonet_neutron_packages:
@@ -314,16 +295,6 @@
- python-neutron-lbaas
- python-neutron-fwaas
-neutron_db_manage:
- cmd.run:
- - name: neutron-db-manage --subproject networking-midonet upgrade head
- {%- if grains.get('noservices') %}
- - onlyif: /bin/false
- {%- endif %}
- - require:
- - file: /etc/neutron/neutron.conf
- - file: /etc/neutron/plugins/midonet/midonet.ini
-
{%- endif %}
{%- endif %}
@@ -345,16 +316,8 @@
- template: jinja
- require:
- pkg: vmware_neutron_packages
-
-neutron_db_manage:
- cmd.run:
- - name: neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/vmware/nsx.ini upgrade head
- {%- if grains.get('noservices') %}
- - onlyif: /bin/false
- {%- endif %}
- - require:
- - file: /etc/neutron/neutron.conf
- - file: /etc/neutron/plugins/vmware/nsx.ini
+ - require_in:
+ - sls: neutron.db.offline_sync
{%- endif %}
@@ -364,13 +327,6 @@
pkg.installed:
- names: {{ server.pkgs_bgpvpn }}
-bgpvpn_db_manage:
- cmd.run:
- - name: neutron-db-manage --config-file /etc/neutron/neutron.conf --subproject networking-bgpvpn upgrade head
- - require:
- - file: /etc/neutron/neutron.conf
- - pkg: bgpvpn_packages
-
{% if server.bgp_vpn.driver == "bagpipe" %}
bagpipe_packages: