From 640bdeeb332aeb42f0c694fb60cf868afb139233 Mon Sep 17 00:00:00 2001 From: Mark Goddard Date: Thu, 27 Dec 2018 11:15:58 +0000 Subject: [PATCH] Perform ironic online data migrations Online data migrations are necessary for performing an upgrade of ironic. Without this change, an error such as the following may be seen in task 'bifrost-ironic-install : Upgrade ironic DB Schema'. The database is not compatible with this release of ironic (10.1.7). Please run "ironic-dbsync online_data_migrations" using the previous release. Change-Id: I685efd14bf3567a126311b676a50b0abb0f043db Story: 2004670 Task: 28658 (cherry picked from commit 705a58f6ebbc0948a703648952dfc1301334c75c) --- .../bifrost-ironic-install/defaults/main.yml | 2 ++ .../bifrost-ironic-install/tasks/main.yml | 4 ++++ .../tasks/migrations.yml | 22 +++++++++++++++++++ ...ic-online-migrations-092aef2b4c2ec75f.yaml | 4 ++++ 4 files changed, 32 insertions(+) create mode 100644 playbooks/roles/bifrost-ironic-install/tasks/migrations.yml create mode 100644 releasenotes/notes/ironic-online-migrations-092aef2b4c2ec75f.yaml diff --git a/playbooks/roles/bifrost-ironic-install/defaults/main.yml b/playbooks/roles/bifrost-ironic-install/defaults/main.yml index 224dd3885..621052716 100644 --- a/playbooks/roles/bifrost-ironic-install/defaults/main.yml +++ b/playbooks/roles/bifrost-ironic-install/defaults/main.yml @@ -29,6 +29,8 @@ skip_package_install: False skip_bootstrap: False # set to true to skip starting ironic services and dependencies skip_start: False +# set to true to skip performing online data migrations +skip_migrations: "{{ skip_bootstrap }}" # Default network interface that bifrost will be attached to. # This is used in ipa_* so it must be before diff --git a/playbooks/roles/bifrost-ironic-install/tasks/main.yml b/playbooks/roles/bifrost-ironic-install/tasks/main.yml index f728310c8..d6e9fa234 100644 --- a/playbooks/roles/bifrost-ironic-install/tasks/main.yml +++ b/playbooks/roles/bifrost-ironic-install/tasks/main.yml @@ -62,3 +62,7 @@ - name: "Start Ironic services" include: start.yml when: skip_start | bool != True + +- name: "Perform online data migrations" + include: migrations.yml + when: skip_migrations | bool != True diff --git a/playbooks/roles/bifrost-ironic-install/tasks/migrations.yml b/playbooks/roles/bifrost-ironic-install/tasks/migrations.yml new file mode 100644 index 000000000..05f194339 --- /dev/null +++ b/playbooks/roles/bifrost-ironic-install/tasks/migrations.yml @@ -0,0 +1,22 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. +--- +- name: "If VENV is set in the environment, enable installation into venv" + set_fact: + enable_venv: true + when: lookup('env', 'VENV') | length > 0 + +- name: "Perform ironic online data migrations" + command: ironic-dbsync --config-file /etc/ironic/ironic.conf online_data_migrations + environment: "{{ bifrost_venv_env if enable_venv else {} }}" + when: ironic.database.host != 'localhost' diff --git a/releasenotes/notes/ironic-online-migrations-092aef2b4c2ec75f.yaml b/releasenotes/notes/ironic-online-migrations-092aef2b4c2ec75f.yaml new file mode 100644 index 000000000..5b8f008aa --- /dev/null +++ b/releasenotes/notes/ironic-online-migrations-092aef2b4c2ec75f.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Adds support for performing ironic online data migrations.