aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ansible/group_vars/all.yml11
-rw-r--r--ansible/roles/aodh/defaults/main.yml3
-rw-r--r--ansible/roles/barbican/defaults/main.yml3
-rw-r--r--ansible/roles/blazar/defaults/main.yml3
-rw-r--r--ansible/roles/cinder/defaults/main.yml3
-rw-r--r--ansible/roles/cloudkitty/defaults/main.yml3
-rw-r--r--ansible/roles/cyborg/defaults/main.yml3
-rw-r--r--ansible/roles/designate/defaults/main.yml3
-rw-r--r--ansible/roles/glance/defaults/main.yml3
-rw-r--r--ansible/roles/gnocchi/defaults/main.yml3
-rw-r--r--ansible/roles/grafana/defaults/main.yml3
-rw-r--r--ansible/roles/heat/defaults/main.yml3
-rw-r--r--ansible/roles/horizon/defaults/main.yml3
-rw-r--r--ansible/roles/ironic/defaults/main.yml9
-rw-r--r--ansible/roles/keystone/defaults/main.yml3
-rw-r--r--ansible/roles/magnum/defaults/main.yml3
-rw-r--r--ansible/roles/manila/defaults/main.yml3
-rw-r--r--ansible/roles/masakari/defaults/main.yml3
-rw-r--r--ansible/roles/mistral/defaults/main.yml3
-rw-r--r--ansible/roles/neutron/defaults/main.yml3
-rw-r--r--ansible/roles/nova-cell/defaults/main.yml40
-rw-r--r--ansible/roles/nova/defaults/main.yml19
-rw-r--r--ansible/roles/octavia/defaults/main.yml6
-rw-r--r--ansible/roles/placement/defaults/main.yml3
-rw-r--r--ansible/roles/proxysql-config/templates/rules.yaml.j28
-rw-r--r--ansible/roles/skyline/defaults/main.yml3
-rw-r--r--ansible/roles/tacker/defaults/main.yml3
-rw-r--r--ansible/roles/trove/defaults/main.yml3
-rw-r--r--ansible/roles/venus/defaults/main.yml3
-rw-r--r--ansible/roles/watcher/defaults/main.yml3
-rw-r--r--ansible/roles/zun/defaults/main.yml3
-rw-r--r--releasenotes/notes/bug-2112339-3f67eefc7f0062cc.yaml10
-rw-r--r--zuul.d/base.yaml1
33 files changed, 157 insertions, 22 deletions
diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index 038cfcee6..f80f9463e 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -1212,6 +1212,17 @@ nova_console: "novnc"
# Nova Database
#######################
nova_database_shard_id: "{{ mariadb_default_database_shard_id | int }}"
+nova_cell0_database_shard_id: "{{ nova_database_shard_id | int }}"
+
+# These are kept for backwards compatibility, as cell0 references them.
+nova_database_name: "nova"
+nova_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}nova{% endif %}"
+nova_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
+
+nova_cell0_database_name: "{{ nova_database_name }}_cell0"
+nova_cell0_database_user: "{{ nova_database_user }}"
+nova_cell0_database_address: "{{ nova_database_address }}"
+nova_cell0_database_password: "{{ nova_database_password }}"
#######################
# Horizon options
diff --git a/ansible/roles/aodh/defaults/main.yml b/ansible/roles/aodh/defaults/main.yml
index c6836f94d..1ea63f5ce 100644
--- a/ansible/roles/aodh/defaults/main.yml
+++ b/ansible/roles/aodh/defaults/main.yml
@@ -83,9 +83,12 @@ aodh_database_shard:
users:
- user: "{{ aodh_database_user }}"
password: "{{ aodh_database_password }}"
+ shard_id: "{{ aodh_database_shard_id }}"
rules:
- schema: "{{ aodh_database_name }}"
shard_id: "{{ aodh_database_shard_id }}"
+ - user: "{{ aodh_database_user }}"
+ shard_id: "{{ aodh_database_shard_id }}"
####################
diff --git a/ansible/roles/barbican/defaults/main.yml b/ansible/roles/barbican/defaults/main.yml
index 4c2ab6604..34887bc81 100644
--- a/ansible/roles/barbican/defaults/main.yml
+++ b/ansible/roles/barbican/defaults/main.yml
@@ -68,9 +68,12 @@ barbican_database_shard:
users:
- user: "{{ barbican_database_user }}"
password: "{{ barbican_database_password }}"
+ shard_id: "{{ barbican_database_shard_id }}"
rules:
- schema: "{{ barbican_database_name }}"
shard_id: "{{ barbican_database_shard_id }}"
+ - user: "{{ barbican_database_user }}"
+ shard_id: "{{ barbican_database_shard_id }}"
####################
diff --git a/ansible/roles/blazar/defaults/main.yml b/ansible/roles/blazar/defaults/main.yml
index 1b2ebc750..654e89dec 100644
--- a/ansible/roles/blazar/defaults/main.yml
+++ b/ansible/roles/blazar/defaults/main.yml
@@ -70,9 +70,12 @@ blazar_database_shard:
users:
- user: "{{ blazar_database_user }}"
password: "{{ blazar_database_password }}"
+ shard_id: "{{ blazar_database_shard_id }}"
rules:
- schema: "{{ blazar_database_name }}"
shard_id: "{{ blazar_database_shard_id }}"
+ - user: "{{ blazar_database_user }}"
+ shard_id: "{{ blazar_database_shard_id }}"
####################
diff --git a/ansible/roles/cinder/defaults/main.yml b/ansible/roles/cinder/defaults/main.yml
index a1b0f321f..db5215628 100644
--- a/ansible/roles/cinder/defaults/main.yml
+++ b/ansible/roles/cinder/defaults/main.yml
@@ -81,9 +81,12 @@ cinder_database_shard:
users:
- user: "{{ cinder_database_user }}"
password: "{{ cinder_database_password }}"
+ shard_id: "{{ cinder_database_shard_id }}"
rules:
- schema: "{{ cinder_database_name }}"
shard_id: "{{ cinder_database_shard_id }}"
+ - user: "{{ cinder_database_user }}"
+ shard_id: "{{ cinder_database_shard_id }}"
####################
diff --git a/ansible/roles/cloudkitty/defaults/main.yml b/ansible/roles/cloudkitty/defaults/main.yml
index 98ffe3fbd..b5e6549f6 100644
--- a/ansible/roles/cloudkitty/defaults/main.yml
+++ b/ansible/roles/cloudkitty/defaults/main.yml
@@ -58,9 +58,12 @@ cloudkitty_database_shard:
users:
- user: "{{ cloudkitty_database_user }}"
password: "{{ cloudkitty_database_password }}"
+ shard_id: "{{ cloudkitty_database_shard_id }}"
rules:
- schema: "{{ cloudkitty_database_name }}"
shard_id: "{{ cloudkitty_database_shard_id }}"
+ - user: "{{ cloudkitty_database_user }}"
+ shard_id: "{{ cloudkitty_database_shard_id }}"
####################
diff --git a/ansible/roles/cyborg/defaults/main.yml b/ansible/roles/cyborg/defaults/main.yml
index 17ac35877..3b67d0c28 100644
--- a/ansible/roles/cyborg/defaults/main.yml
+++ b/ansible/roles/cyborg/defaults/main.yml
@@ -63,9 +63,12 @@ cyborg_database_shard:
users:
- user: "{{ cyborg_database_user }}"
password: "{{ cyborg_database_password }}"
+ shard_id: "{{ cyborg_database_shard_id }}"
rules:
- schema: "{{ cyborg_database_name }}"
shard_id: "{{ cyborg_database_shard_id }}"
+ - user: "{{ cyborg_database_user }}"
+ shard_id: "{{ cyborg_database_shard_id }}"
####################
diff --git a/ansible/roles/designate/defaults/main.yml b/ansible/roles/designate/defaults/main.yml
index b7d85bca2..7072d0d9a 100644
--- a/ansible/roles/designate/defaults/main.yml
+++ b/ansible/roles/designate/defaults/main.yml
@@ -98,9 +98,12 @@ designate_database_shard:
users:
- user: "{{ designate_database_user }}"
password: "{{ designate_database_password }}"
+ shard_id: "{{ designate_database_shard_id }}"
rules:
- schema: "{{ designate_database_name }}"
shard_id: "{{ designate_database_shard_id }}"
+ - user: "{{ designate_database_user }}"
+ shard_id: "{{ designate_database_shard_id }}"
####################
diff --git a/ansible/roles/glance/defaults/main.yml b/ansible/roles/glance/defaults/main.yml
index 9f3e41068..86eca172f 100644
--- a/ansible/roles/glance/defaults/main.yml
+++ b/ansible/roles/glance/defaults/main.yml
@@ -132,9 +132,12 @@ glance_database_shard:
users:
- user: "{{ glance_database_user }}"
password: "{{ glance_database_password }}"
+ shard_id: "{{ glance_database_shard_id }}"
rules:
- schema: "{{ glance_database_name }}"
shard_id: "{{ glance_database_shard_id }}"
+ - user: "{{ glance_database_user }}"
+ shard_id: "{{ glance_database_shard_id }}"
####################
diff --git a/ansible/roles/gnocchi/defaults/main.yml b/ansible/roles/gnocchi/defaults/main.yml
index af469e803..31a355db5 100644
--- a/ansible/roles/gnocchi/defaults/main.yml
+++ b/ansible/roles/gnocchi/defaults/main.yml
@@ -66,9 +66,12 @@ gnocchi_database_shard:
users:
- user: "{{ gnocchi_database_user }}"
password: "{{ gnocchi_database_password }}"
+ shard_id: "{{ gnocchi_database_shard_id }}"
rules:
- schema: "{{ gnocchi_database_name }}"
shard_id: "{{ gnocchi_database_shard_id }}"
+ - user: "{{ gnocchi_database_user }}"
+ shard_id: "{{ gnocchi_database_shard_id }}"
####################
diff --git a/ansible/roles/grafana/defaults/main.yml b/ansible/roles/grafana/defaults/main.yml
index 1b0fee3f1..f0094f2db 100644
--- a/ansible/roles/grafana/defaults/main.yml
+++ b/ansible/roles/grafana/defaults/main.yml
@@ -42,9 +42,12 @@ grafana_database_shard:
users:
- user: "{{ grafana_database_user }}"
password: "{{ grafana_database_password }}"
+ shard_id: "{{ grafana_database_shard_id }}"
rules:
- schema: "{{ grafana_database_name }}"
shard_id: "{{ grafana_database_shard_id }}"
+ - user: "{{ grafana_database_user }}"
+ shard_id: "{{ grafana_database_shard_id }}"
####################
diff --git a/ansible/roles/heat/defaults/main.yml b/ansible/roles/heat/defaults/main.yml
index a4e2eb717..355fb090d 100644
--- a/ansible/roles/heat/defaults/main.yml
+++ b/ansible/roles/heat/defaults/main.yml
@@ -88,9 +88,12 @@ heat_database_shard:
users:
- user: "{{ heat_database_user }}"
password: "{{ heat_database_password }}"
+ shard_id: "{{ heat_database_shard_id }}"
rules:
- schema: "{{ heat_database_name }}"
shard_id: "{{ heat_database_shard_id }}"
+ - user: "{{ heat_database_user }}"
+ shard_id: "{{ heat_database_shard_id }}"
####################
diff --git a/ansible/roles/horizon/defaults/main.yml b/ansible/roles/horizon/defaults/main.yml
index ada512ddf..52d931ec0 100644
--- a/ansible/roles/horizon/defaults/main.yml
+++ b/ansible/roles/horizon/defaults/main.yml
@@ -96,9 +96,12 @@ horizon_database_shard:
users:
- user: "{{ horizon_database_user }}"
password: "{{ horizon_database_password }}"
+ shard_id: "{{ horizon_database_shard_id }}"
rules:
- schema: "{{ horizon_database_name }}"
shard_id: "{{ horizon_database_shard_id }}"
+ - user: "{{ horizon_database_user }}"
+ shard_id: "{{ horizon_database_shard_id }}"
####################
diff --git a/ansible/roles/ironic/defaults/main.yml b/ansible/roles/ironic/defaults/main.yml
index 62e52cea5..cf746a787 100644
--- a/ansible/roles/ironic/defaults/main.yml
+++ b/ansible/roles/ironic/defaults/main.yml
@@ -125,17 +125,24 @@ ironic_inspector_database_address: "{{ database_address | put_address_in_context
####################
ironic_database_shard_root_user: "{% if enable_proxysql | bool %}root_shard_{{ ironic_database_shard_id }}{% else %}{{ database_user }}{% endif %}"
ironic_database_shard_id: "{{ mariadb_default_database_shard_id | int }}"
+ironic_inspector_database_shard_id: "{{ ironic_database_shard_id | int }}"
ironic_database_shard:
users:
- user: "{{ ironic_database_user }}"
password: "{{ ironic_database_password }}"
+ shard_id: "{{ ironic_database_shard_id }}"
- user: "{{ ironic_inspector_database_user }}"
password: "{{ ironic_inspector_database_password }}"
+ shard_id: "{{ ironic_inspector_database_shard_id }}"
rules:
- schema: "{{ ironic_database_name }}"
shard_id: "{{ ironic_database_shard_id }}"
- - schema: "{{ ironic_inspector_database_name }}"
+ - user: "{{ ironic_database_user }}"
shard_id: "{{ ironic_database_shard_id }}"
+ - schema: "{{ ironic_inspector_database_name }}"
+ shard_id: "{{ ironic_inspector_database_shard_id }}"
+ - user: "{{ ironic_inspector_database_user }}"
+ shard_id: "{{ ironic_inspector_database_shard_id }}"
####################
diff --git a/ansible/roles/keystone/defaults/main.yml b/ansible/roles/keystone/defaults/main.yml
index 5c1775dca..b6a4dcf3d 100644
--- a/ansible/roles/keystone/defaults/main.yml
+++ b/ansible/roles/keystone/defaults/main.yml
@@ -80,9 +80,12 @@ keystone_database_shard:
users:
- user: "{{ keystone_database_user }}"
password: "{{ keystone_database_password }}"
+ shard_id: "{{ keystone_database_shard_id }}"
rules:
- schema: "{{ keystone_database_name }}"
shard_id: "{{ keystone_database_shard_id }}"
+ - user: "{{ keystone_database_user }}"
+ shard_id: "{{ keystone_database_shard_id }}"
####################
diff --git a/ansible/roles/magnum/defaults/main.yml b/ansible/roles/magnum/defaults/main.yml
index 1ae383b53..c9103ffbf 100644
--- a/ansible/roles/magnum/defaults/main.yml
+++ b/ansible/roles/magnum/defaults/main.yml
@@ -61,9 +61,12 @@ magnum_database_shard:
users:
- user: "{{ magnum_database_user }}"
password: "{{ magnum_database_password }}"
+ shard_id: "{{ magnum_database_shard_id }}"
rules:
- schema: "{{ magnum_database_name }}"
shard_id: "{{ magnum_database_shard_id }}"
+ - user: "{{ magnum_database_user }}"
+ shard_id: "{{ magnum_database_shard_id }}"
####################
diff --git a/ansible/roles/manila/defaults/main.yml b/ansible/roles/manila/defaults/main.yml
index 198b3def5..1252921bd 100644
--- a/ansible/roles/manila/defaults/main.yml
+++ b/ansible/roles/manila/defaults/main.yml
@@ -76,9 +76,12 @@ manila_database_shard:
users:
- user: "{{ manila_database_user }}"
password: "{{ manila_database_password }}"
+ shard_id: "{{ manila_database_shard_id }}"
rules:
- schema: "{{ manila_database_name }}"
shard_id: "{{ manila_database_shard_id }}"
+ - user: "{{ manila_database_user }}"
+ shard_id: "{{ manila_database_shard_id }}"
#####################
diff --git a/ansible/roles/masakari/defaults/main.yml b/ansible/roles/masakari/defaults/main.yml
index 3e6edde3a..031388fb6 100644
--- a/ansible/roles/masakari/defaults/main.yml
+++ b/ansible/roles/masakari/defaults/main.yml
@@ -72,9 +72,12 @@ masakari_database_shard:
users:
- user: "{{ masakari_database_user }}"
password: "{{ masakari_database_password }}"
+ shard_id: "{{ masakari_database_shard_id }}"
rules:
- schema: "{{ masakari_database_name }}"
shard_id: "{{ masakari_database_shard_id }}"
+ - user: "{{ masakari_database_user }}"
+ shard_id: "{{ masakari_database_shard_id }}"
####################
diff --git a/ansible/roles/mistral/defaults/main.yml b/ansible/roles/mistral/defaults/main.yml
index 686dda05d..c0ee2f980 100644
--- a/ansible/roles/mistral/defaults/main.yml
+++ b/ansible/roles/mistral/defaults/main.yml
@@ -74,9 +74,12 @@ mistral_database_shard:
users:
- user: "{{ mistral_database_user }}"
password: "{{ mistral_database_password }}"
+ shard_id: "{{ mistral_database_shard_id }}"
rules:
- schema: "{{ mistral_database_name }}"
shard_id: "{{ mistral_database_shard_id }}"
+ - user: "{{ mistral_database_user }}"
+ shard_id: "{{ mistral_database_shard_id }}"
####################
diff --git a/ansible/roles/neutron/defaults/main.yml b/ansible/roles/neutron/defaults/main.yml
index e7a00ccad..b679ab74b 100644
--- a/ansible/roles/neutron/defaults/main.yml
+++ b/ansible/roles/neutron/defaults/main.yml
@@ -268,9 +268,12 @@ neutron_database_shard:
users:
- user: "{{ neutron_database_user }}"
password: "{{ neutron_database_password }}"
+ shard_id: "{{ neutron_database_shard_id }}"
rules:
- schema: "{{ neutron_database_name }}"
shard_id: "{{ neutron_database_shard_id }}"
+ - user: "{{ neutron_database_user }}"
+ shard_id: "{{ neutron_database_shard_id }}"
####################
diff --git a/ansible/roles/nova-cell/defaults/main.yml b/ansible/roles/nova-cell/defaults/main.yml
index 4b023df20..fe7c7e00c 100644
--- a/ansible/roles/nova-cell/defaults/main.yml
+++ b/ansible/roles/nova-cell/defaults/main.yml
@@ -158,7 +158,7 @@ nova_cell_database_admin_user: "{{ nova_cell_database_shard_root_user }}"
nova_cell_database_admin_password: "{{ database_password }}"
nova_cell_database_name: "{{ 'nova_' ~ nova_cell_name if nova_cell_name else 'nova' }}"
-nova_cell_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}nova{% endif %}"
+nova_cell_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% elif nova_cell_name %}nova_{{ nova_cell_name }}{% else %}nova{% endif %}"
nova_cell_database_password: '{{ nova_database_password }}'
nova_cell_database_address: "{% if nova_cell_database_group is defined %}{{ 'api' | kolla_address(groups[nova_cell_database_group][0]) }}{% else %}{{ database_address }}{% endif %}"
nova_cell_database_port: '{{ database_port }}'
@@ -185,11 +185,41 @@ nova_api_database_address: "{{ database_address | put_address_in_context('url')
# through proxysql shards are same:
# - nova_cell_database_shard_id = nova_database_shard_id
nova_cell_database_shard_root_user: "{% if enable_proxysql | bool %}root_shard_{{ nova_cell_database_shard_id | default(nova_database_shard_id) }}{% else %}{{ database_user }}{% endif %}"
-nova_cell_database_shard:
+
+nova_cell0_and_default_cell_database_shard:
users:
- - user: "{{ nova_cell_database_user }}"
- password: "{{ nova_cell_database_password }}"
- rules: "{% set rules = [] %}{% for host in groups['nova-conductor'] %}{{ rules.append({'schema': 'nova_' ~ hostvars[host]['nova_cell_name'] if hostvars[host]['nova_cell_name'] is defined else 'nova', 'shard_id': hostvars[host]['nova_cell_database_shard_id'] if (hostvars[host]['nova_cell_name'] is defined and hostvars[host]['nova_cell_database_shard_id'] is defined ) else nova_database_shard_id}) }}{% endfor %}{{ rules }}"
+ - user: "{{ nova_cell0_database_user }}"
+ password: "{{ nova_cell0_database_password }}"
+ shard_id: "{{ nova_cell0_database_shard_id }}"
+ rules:
+ - schema: "{{ nova_cell0_database_name }}"
+ shard_id: "{{ nova_cell0_database_shard_id }}"
+ - user: "{{ nova_cell0_database_user }}"
+ shard_id: "{{ nova_cell0_database_shard_id }}"
+
+nova_cell_dynamic_users: |
+ {% set result = [] %}
+ {% for host in groups['nova-conductor'] %}
+ {% if hostvars[host]['nova_cell_name'] is defined and hostvars[host]['nova_cell_database_shard_id'] is defined %}
+ {% set _ = result.append({'user': 'nova_' ~ hostvars[host]['nova_cell_name'], 'password': nova_cell_database_password, 'shard_id': hostvars[host]['nova_cell_database_shard_id']}) %}
+ {% endif %}
+ {% endfor %}
+ {{ result }}
+
+nova_cell_dynamic_rules: |
+ {% set result = [] %}
+ {% for host in groups['nova-conductor'] %}
+ {% if hostvars[host]['nova_cell_name'] is defined and hostvars[host]['nova_cell_database_shard_id'] is defined %}
+ {% set _ = result.append({'schema': 'nova_' ~ hostvars[host]['nova_cell_name'], 'shard_id': hostvars[host]['nova_cell_database_shard_id']}) %}
+ {% set _ = result.append({'user': 'nova_' ~ hostvars[host]['nova_cell_name'], 'shard_id': hostvars[host]['nova_cell_database_shard_id']}) %}
+ {% endif %}
+ {% endfor %}
+ {{ result }}
+
+nova_cell_database_shard:
+ users: "{{ nova_cell0_and_default_cell_database_shard.users + (nova_cell_dynamic_users | from_yaml | default([])) }}"
+ rules: "{{ nova_cell0_and_default_cell_database_shard.rules + (nova_cell_dynamic_rules | from_yaml | default([])) }}"
+
####################
# RabbitMQ
diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml
index 780d262f3..e445e2cd1 100644
--- a/ansible/roles/nova/defaults/main.yml
+++ b/ansible/roles/nova/defaults/main.yml
@@ -86,16 +86,6 @@ nova_config_validation:
####################
# Database
####################
-# These are kept for backwards compatibility, as cell0 references them.
-nova_database_name: "nova"
-nova_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}nova{% endif %}"
-nova_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
-
-nova_cell0_database_name: "{{ nova_database_name }}_cell0"
-nova_cell0_database_user: "{{ nova_database_user }}"
-nova_cell0_database_address: "{{ nova_database_address }}"
-nova_cell0_database_password: "{{ nova_database_password }}"
-
nova_api_database_name: "nova_api"
nova_api_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}nova_api{% endif %}"
nova_api_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
@@ -106,17 +96,14 @@ nova_api_database_address: "{{ database_address | put_address_in_context('url')
nova_database_shard_root_user: "{% if enable_proxysql | bool %}root_shard_{{ nova_database_shard_id }}{% else %}{{ database_user }}{% endif %}"
nova_database_shard:
users:
- - user: "{{ nova_database_user }}"
- password: "{{ nova_database_password }}"
- user: "{{ nova_api_database_user }}"
password: "{{ nova_api_database_password }}"
- rules:
- - schema: "{{ nova_database_name }}"
- shard_id: "{{ nova_database_shard_id }}"
- - schema: "{{ nova_cell0_database_name }}"
shard_id: "{{ nova_database_shard_id }}"
+ rules:
- schema: "{{ nova_api_database_name }}"
shard_id: "{{ nova_database_shard_id }}"
+ - user: "{{ nova_api_database_user }}"
+ shard_id: "{{ nova_database_shard_id }}"
####################
diff --git a/ansible/roles/octavia/defaults/main.yml b/ansible/roles/octavia/defaults/main.yml
index 3085f0084..2fd28bd1f 100644
--- a/ansible/roles/octavia/defaults/main.yml
+++ b/ansible/roles/octavia/defaults/main.yml
@@ -92,13 +92,19 @@ octavia_database_shard:
users:
- user: "{{ octavia_database_user }}"
password: "{{ octavia_database_password }}"
+ shard_id: "{{ octavia_database_shard_id }}"
- user: "{{ octavia_persistence_database_user }}"
password: "{{ octavia_persistence_database_password }}"
+ shard_id: "{{ octavia_persistence_database_shard_id }}"
rules:
- schema: "{{ octavia_database_name }}"
shard_id: "{{ octavia_database_shard_id }}"
+ - user: "{{ octavia_database_user }}"
+ shard_id: "{{ octavia_database_shard_id }}"
- schema: "{{ octavia_persistence_database_name }}"
shard_id: "{{ octavia_persistence_database_shard_id }}"
+ - user: "{{ octavia_persistence_database_user }}"
+ shard_id: "{{ octavia_persistence_database_shard_id }}"
####################
diff --git a/ansible/roles/placement/defaults/main.yml b/ansible/roles/placement/defaults/main.yml
index 6c58c3339..c09deccee 100644
--- a/ansible/roles/placement/defaults/main.yml
+++ b/ansible/roles/placement/defaults/main.yml
@@ -53,9 +53,12 @@ placement_database_shard:
users:
- user: "{{ placement_database_user }}"
password: "{{ placement_database_password }}"
+ shard_id: "{{ placement_database_shard_id }}"
rules:
- schema: "{{ placement_database_name }}"
shard_id: "{{ placement_database_shard_id }}"
+ - user: "{{ placement_database_user }}"
+ shard_id: "{{ placement_database_shard_id }}"
####################
diff --git a/ansible/roles/proxysql-config/templates/rules.yaml.j2 b/ansible/roles/proxysql-config/templates/rules.yaml.j2
index 18d443b8e..c4ff11e4e 100644
--- a/ansible/roles/proxysql-config/templates/rules.yaml.j2
+++ b/ansible/roles/proxysql-config/templates/rules.yaml.j2
@@ -11,8 +11,16 @@
mysql_query_rules:
{% for rule in proxysql_project_database_shard['rules'] %}
{% set WRITER_GROUP = rule['shard_id'] | int * 10 %}
+{% if rule['schema'] is defined %}
- schemaname: "{{ rule['schema'] }}"
destination_hostgroup: {{ WRITER_GROUP }}
apply: 1
active: 1
+{% endif %}
+{% if rule['user'] is defined %}
+ - username: "{{ rule['user'] }}"
+ destination_hostgroup: {{ WRITER_GROUP }}
+ apply: 1
+ active: 1
+{% endif %}
{% endfor %}
diff --git a/ansible/roles/skyline/defaults/main.yml b/ansible/roles/skyline/defaults/main.yml
index 1363748b9..a567f5c7a 100644
--- a/ansible/roles/skyline/defaults/main.yml
+++ b/ansible/roles/skyline/defaults/main.yml
@@ -73,9 +73,12 @@ skyline_database_shard:
users:
- user: "{{ skyline_database_user }}"
password: "{{ skyline_database_password }}"
+ shard_id: "{{ skyline_database_shard_id }}"
rules:
- schema: "{{ skyline_database_name }}"
shard_id: "{{ skyline_database_shard_id }}"
+ - user: "{{ skyline_database_user }}"
+ shard_id: "{{ skyline_database_shard_id }}"
####################
# Docker
diff --git a/ansible/roles/tacker/defaults/main.yml b/ansible/roles/tacker/defaults/main.yml
index 111e00d88..58b351921 100644
--- a/ansible/roles/tacker/defaults/main.yml
+++ b/ansible/roles/tacker/defaults/main.yml
@@ -58,9 +58,12 @@ tacker_database_shard:
users:
- user: "{{ tacker_database_user }}"
password: "{{ tacker_database_password }}"
+ shard_id: "{{ tacker_database_shard_id }}"
rules:
- schema: "{{ tacker_database_name }}"
shard_id: "{{ tacker_database_shard_id }}"
+ - user: "{{ tacker_database_user }}"
+ shard_id: "{{ tacker_database_shard_id }}"
########
diff --git a/ansible/roles/trove/defaults/main.yml b/ansible/roles/trove/defaults/main.yml
index e1987b708..05767346b 100644
--- a/ansible/roles/trove/defaults/main.yml
+++ b/ansible/roles/trove/defaults/main.yml
@@ -68,9 +68,12 @@ trove_database_shard:
users:
- user: "{{ trove_database_user }}"
password: "{{ trove_database_password }}"
+ shard_id: "{{ trove_database_shard_id }}"
rules:
- schema: "{{ trove_database_name }}"
shard_id: "{{ trove_database_shard_id }}"
+ - user: "{{ trove_database_user }}"
+ shard_id: "{{ trove_database_shard_id }}"
####################
diff --git a/ansible/roles/venus/defaults/main.yml b/ansible/roles/venus/defaults/main.yml
index f9da371d7..193b7580b 100644
--- a/ansible/roles/venus/defaults/main.yml
+++ b/ansible/roles/venus/defaults/main.yml
@@ -55,9 +55,12 @@ venus_database_shard:
users:
- user: "{{ venus_database_user }}"
password: "{{ venus_database_password }}"
+ shard_id: "{{ venus_database_shard_id }}"
rules:
- schema: "{{ venus_database_name }}"
shard_id: "{{ venus_database_shard_id }}"
+ - user: "{{ venus_database_user }}"
+ shard_id: "{{ venus_database_shard_id }}"
####################
diff --git a/ansible/roles/watcher/defaults/main.yml b/ansible/roles/watcher/defaults/main.yml
index 1cd9ccd2b..480a5f00b 100644
--- a/ansible/roles/watcher/defaults/main.yml
+++ b/ansible/roles/watcher/defaults/main.yml
@@ -66,9 +66,12 @@ watcher_database_shard:
users:
- user: "{{ watcher_database_user }}"
password: "{{ watcher_database_password }}"
+ shard_id: "{{ watcher_database_shard_id }}"
rules:
- schema: "{{ watcher_database_name }}"
shard_id: "{{ watcher_database_shard_id }}"
+ - user: "{{ watcher_database_user }}"
+ shard_id: "{{ watcher_database_shard_id }}"
####################
diff --git a/ansible/roles/zun/defaults/main.yml b/ansible/roles/zun/defaults/main.yml
index d01eafbd3..82bb6e4cc 100644
--- a/ansible/roles/zun/defaults/main.yml
+++ b/ansible/roles/zun/defaults/main.yml
@@ -87,9 +87,12 @@ zun_database_shard:
users:
- user: "{{ zun_database_user }}"
password: "{{ zun_database_password }}"
+ shard_id: "{{ zun_database_shard_id }}"
rules:
- schema: "{{ zun_database_name }}"
shard_id: "{{ zun_database_shard_id }}"
+ - user: "{{ zun_database_user }}"
+ shard_id: "{{ zun_database_shard_id }}"
####################
diff --git a/releasenotes/notes/bug-2112339-3f67eefc7f0062cc.yaml b/releasenotes/notes/bug-2112339-3f67eefc7f0062cc.yaml
new file mode 100644
index 000000000..d01515854
--- /dev/null
+++ b/releasenotes/notes/bug-2112339-3f67eefc7f0062cc.yaml
@@ -0,0 +1,10 @@
+---
+fixes:
+ - |
+ Improves query routing in ProxySQL by setting ``default_hostgroup``
+ for all database users and by adding user-based routing rules in
+ addition to schema-based rules. This enhancement also fixes incorrect
+ routing of queries that are executed before a schema is selected,
+ such as ``SET AUTOCOMMIT`` or ``ROLLBACK``, which could otherwise be sent
+ to a non-existent hostgroup.
+ `LP#2112339 <https://launchpad.net/bugs/2112339>`__
diff --git a/zuul.d/base.yaml b/zuul.d/base.yaml
index 5cad12e14..1b771b621 100644
--- a/zuul.d/base.yaml
+++ b/zuul.d/base.yaml
@@ -210,6 +210,7 @@
voting: false
files: !inherit
- ^ansible/roles/nova/
+ - ^ansible/roles/nova-cell/
- ^ansible/roles/loadbalancer/
- ^tests/test-core-openstack.sh
- ^tests/test-proxysql.sh