Re-order database migrations
The database migration sequence currently implemented were required for Newton->Ocata as cells v2 was being implemented. Now that cells are in place already, we can simplify the sequence of tasks. This also now happens to be necessary due to changes in the Rocky API database. Change-Id: I101e75f70a7c99ceb1129c9c224f6a303dfae771 Related-Bug: #1761775
This commit is contained in:
parent
00a6aba589
commit
68f51e9486
|
@ -13,42 +13,23 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
- name: Get the api_db version
|
||||
command: "{{ nova_bin }}/nova-manage api_db version"
|
||||
become: yes
|
||||
become_user: "{{ nova_system_user_name }}"
|
||||
register: nova_api_db_version
|
||||
changed_when: false
|
||||
|
||||
- name: Perform a Nova API DB sync
|
||||
command: "{{ nova_bin }}/nova-manage api_db sync"
|
||||
become: yes
|
||||
become_user: "{{ nova_system_user_name }}"
|
||||
changed_when: false
|
||||
when:
|
||||
- nova_api_db_version.stdout == "0"
|
||||
|
||||
- name: Perform cell_v2 map cell0
|
||||
command: "{{ nova_bin }}/nova-manage cell_v2 map_cell0 --database_connection mysql+pymysql://{{ nova_api_galera_user }}:{{ nova_api_container_mysql_password }}@{{ nova_api_galera_address }}/{{ nova_cell0_database }}?charset=utf8"
|
||||
become: yes
|
||||
become_user: "{{ nova_system_user_name }}"
|
||||
changed_when: false
|
||||
|
||||
- name: Perform cell_v2 initial cell setup
|
||||
command: "{{ nova_bin }}/nova-manage cell_v2 create_cell --name {{ nova_cell1_name }} --database_connection mysql+pymysql://{{ nova_galera_user }}:{{ nova_container_mysql_password }}@{{ nova_galera_address }}/{{ nova_galera_database }}?charset=utf8 --transport-url rabbit://{% for host in nova_rabbitmq_servers.split(',') %}{{ nova_rabbitmq_userid }}:{{ nova_rabbitmq_password }}@{{ host }}:{{ nova_rabbitmq_port }}{% if not loop.last %},{% else %}/{{ nova_rabbitmq_vhost }}{% endif %}{% endfor %}"
|
||||
become: yes
|
||||
become_user: "{{ nova_system_user_name }}"
|
||||
register: nova_cell1_create
|
||||
failed_when: "nova_cell1_create.rc not in [0, 2]"
|
||||
changed_when: "nova_cell1_create.rc == 0"
|
||||
|
||||
- name: Perform a Nova API DB sync
|
||||
- name: Synchronize the nova API DB schema
|
||||
command: "{{ nova_bin }}/nova-manage api_db sync"
|
||||
become: yes
|
||||
become_user: "{{ nova_system_user_name }}"
|
||||
changed_when: false
|
||||
|
||||
- name: Perform a Nova DB sync
|
||||
# This is idempotent and therefore safe for greenfield
|
||||
# and brownfield installations.
|
||||
- name: Create the cell0 mapping entry in the nova API DB
|
||||
command: >-
|
||||
{{ nova_bin }}/nova-manage cell_v2 map_cell0
|
||||
--database_connection mysql+pymysql://{{ nova_api_galera_user }}:{{ nova_api_container_mysql_password }}@{{ nova_api_galera_address }}/{{ nova_cell0_database }}?charset=utf8
|
||||
become: yes
|
||||
become_user: "{{ nova_system_user_name }}"
|
||||
changed_when: false
|
||||
|
||||
- name: Synchronize the nova DB schema
|
||||
command: "{{ nova_bin }}/nova-manage db sync"
|
||||
become: yes
|
||||
become_user: "{{ nova_system_user_name }}"
|
||||
|
@ -74,6 +55,25 @@
|
|||
- not data_migrations | skipped
|
||||
- data_migrations | succeeded
|
||||
|
||||
- name: Create the cell1 mapping entry in the nova API DB
|
||||
command: >-
|
||||
{{ nova_bin }}/nova-manage cell_v2 create_cell
|
||||
--name {{ nova_cell1_name }}
|
||||
--database_connection mysql+pymysql://{{ nova_galera_user }}:{{ nova_container_mysql_password }}@{{ nova_galera_address }}/{{ nova_galera_database }}?charset=utf8
|
||||
--transport-url rabbit://{% for host in nova_rabbitmq_servers.split(',') %}{{ nova_rabbitmq_userid }}:{{ nova_rabbitmq_password }}@{{ host }}:{{ nova_rabbitmq_port }}{% if not loop.last %},{% else %}/{{ nova_rabbitmq_vhost }}{% endif %}{% endfor %}
|
||||
become: yes
|
||||
become_user: "{{ nova_system_user_name }}"
|
||||
register: nova_cell1_create
|
||||
# When upgrading, cell1 will already exist and nova-manage will
|
||||
# give a return code of 2, so we therefore know that if the
|
||||
# return code is:
|
||||
# 0: the cell mapping record in the nova API database was
|
||||
# successfully implemented (greenfield install)
|
||||
# 2: the cell mapping record in the nova API database already
|
||||
# exists (brownfield install)
|
||||
failed_when: "nova_cell1_create.rc not in [0, 2]"
|
||||
changed_when: "nova_cell1_create.rc == 0"
|
||||
|
||||
# When upgrading we need to map existing instances to the new cell1
|
||||
# To do this we need the cell UUID.
|
||||
- name: Get UUID of new Nova Cell
|
||||
|
|
Loading…
Reference in New Issue