From 9158ec52b32e5d95ddcb02b2c575518e0312856e Mon Sep 17 00:00:00 2001 From: Dmitry Nikishov Date: Mon, 24 Oct 2016 11:41:43 +0300 Subject: [PATCH] Added missing upgrade-db attributes to cluster Change-Id: I78e48de4f44921ef4af7b9a6c0f2625f9003101c --- .../octane_tasks/graphs/orig/upgrade-db.yaml | 24 +++++++++++++++++- .../octane_tasks/graphs/seed/upgrade-db.yaml | 24 +++++++++++++++++- octane/commands/upgrade_db.py | 25 +++++++++++++++++++ octane/tests/test_upgrade_db.py | 6 +++++ 4 files changed, 77 insertions(+), 2 deletions(-) diff --git a/deployment/puppet/octane_tasks/graphs/orig/upgrade-db.yaml b/deployment/puppet/octane_tasks/graphs/orig/upgrade-db.yaml index eb4e716c..0b555917 100644 --- a/deployment/puppet/octane_tasks/graphs/orig/upgrade-db.yaml +++ b/deployment/puppet/octane_tasks/graphs/orig/upgrade-db.yaml @@ -5,6 +5,18 @@ fault_tolerance: 0 # TASKS +- id: add_hiera_override + type: upload_file + version: 2.1.0 + groups: [primary-controller] + requires: [] + required_for: [] + parameters: + path: /etc/hiera/override/common.yaml + data: + yaql_exp: > + ({"upgrade" => $.upgrade}.toYaml()) + - id: rsync_octane type: sync version: 2.1.0 @@ -20,7 +32,7 @@ type: puppet version: 2.1.0 groups: [primary-controller] - requires: [rsync_octane] + requires: [rsync_octane, add_hiera_override] required_for: [] parameters: puppet_manifest: /etc/fuel/octane/puppet/octane_tasks/modular/nova_db_migrate_flavor_data_70.pp @@ -60,3 +72,13 @@ src: /var/tmp/dbs.original.sql.gz.enc dst: rsync://{MASTER_IP}:/octane_data/ timeout: 180 + +- id: remove_hiera_override + type: shell + version: 2.1.0 + groups: [primary-controller] + requires: [mysqldump_upload_to_master] + required_for: [] + parameters: + cmd: rm /etc/hiera/override/common.yaml || true + timeout: 60 diff --git a/deployment/puppet/octane_tasks/graphs/seed/upgrade-db.yaml b/deployment/puppet/octane_tasks/graphs/seed/upgrade-db.yaml index abac53ec..12d3261c 100644 --- a/deployment/puppet/octane_tasks/graphs/seed/upgrade-db.yaml +++ b/deployment/puppet/octane_tasks/graphs/seed/upgrade-db.yaml @@ -10,6 +10,18 @@ fault_tolerance: 0 # TASKS +- id: add_hiera_override + type: upload_file + version: 2.1.0 + groups: [primary-controller, controller] + requires: [] + required_for: [] + parameters: + path: /etc/hiera/override/common.yaml + data: + yaql_exp: > + ({"upgrade" => $.upgrade}.toYaml()) + - id: rsync_octane type: sync version: 2.1.0 @@ -38,7 +50,7 @@ type: puppet version: 2.1.0 groups: [primary-controller, controller] - requires: [rsync_octane, delete_fuel_resources] + requires: [rsync_octane, delete_fuel_resources, add_hiera_override] required_for: [] parameters: puppet_manifest: /etc/fuel/octane/puppet/octane_tasks/modular/stop_controller_services.pp @@ -92,3 +104,13 @@ puppet_manifest: /etc/fuel/octane/puppet/octane_tasks/modular/neutron_migrations_for_fuel_8.pp puppet_modules: /etc/fuel/octane/puppet:/etc/puppet/modules timeout: 360 + +- id: remove_hiera_override + type: shell + version: 2.1.0 + groups: [primary-controller, controller] + requires: [neutron_migrations_for_fuel_8, stop_controller_services] + required_for: [] + parameters: + cmd: rm /etc/hiera/override/common.yaml || true + timeout: 60 diff --git a/octane/commands/upgrade_db.py b/octane/commands/upgrade_db.py index ae47e318..8c131e68 100644 --- a/octane/commands/upgrade_db.py +++ b/octane/commands/upgrade_db.py @@ -62,8 +62,33 @@ def upgrade_db(orig_id, seed_id, db_role_name): db.cinder_volume_update_host(orig_env, seed_env) +def add_upgrade_attrs_to_settings(orig_env, seed_env): + upgrade_hash = { + 'relation_info': { + 'orig_cluster_version': orig_env.data['fuel_version'], + 'seed_cluster_version': seed_env.data['fuel_version'] + } + } + + orig_attrs = orig_env.get_settings_data() + orig_upgrade = orig_attrs['editable']['common'].get('upgrade', {}) + orig_upgrade.update(upgrade_hash) + orig_attrs['editable']['common']['upgrade'] = orig_upgrade + orig_env.set_settings_data(orig_attrs) + + seed_attrs = seed_env.get_settings_data() + seed_upgrade = seed_attrs['editable']['common'].get('upgrade', {}) + seed_upgrade.update(upgrade_hash) + seed_attrs['editable']['common']['upgrade'] = seed_upgrade + seed_env.set_settings_data(seed_attrs) + + def upgrade_db_with_graph(orig_id, seed_id): """Upgrade db using deployment graphs.""" + orig_env = environment_obj.Environment(orig_id) + seed_env = environment_obj.Environment(seed_id) + add_upgrade_attrs_to_settings(orig_env, seed_env) + # Upload all graphs deploy.upload_graphs(orig_id, seed_id) diff --git a/octane/tests/test_upgrade_db.py b/octane/tests/test_upgrade_db.py index c0ff408c..bb4dd775 100644 --- a/octane/tests/test_upgrade_db.py +++ b/octane/tests/test_upgrade_db.py @@ -126,11 +126,17 @@ def test_upgrade_db_with_graph(mocker, calls, graph_names, catch): if catch is not None: expected_exception = results[catch] + mock_settings_hash = {'editable': {'common': {}}} mocker.patch("octane.util.deployment.upload_graphs") mocker.patch("octane.util.deployment.execute_graph_and_wait", side_effect=execute_graph) mocker.patch("octane.util.deployment.get_cluster_graph_names", return_value=graph_names) + mocker.patch("fuelclient.objects.Environment.get_settings_data", + return_value=mock_settings_hash) + mocker.patch("fuelclient.objects.Environment.set_settings_data") + mocker.patch("fuelclient.objects.BaseObject.data", + return_value=mock_settings_hash) if expected_exception is not None: with pytest.raises(ExecutionError) as excinfo: