From 4323ad1c94837a1de61aad1b61db25c646980924 Mon Sep 17 00:00:00 2001 From: Jiri Stransky Date: Wed, 9 Mar 2016 11:18:40 +0100 Subject: [PATCH] Upgrades: initialization command/snippet This allows to run a command or a script snippet on all overcloud nodes at the beginning of the upgrade. The intended use is to switch to a new set of repositories on the overcloud. This is done differently in different contexts (e.g. upstream vs. downstream), but generally it should be simple enough to not warrant creation of switchable "UpgradeInit" resource in the resource registry, and a string command/snippet parameter should suffice. Change-Id: I72271170d3f53a5179b3212ec9bae9a6204e29e6 --- ...yaml => major-upgrade-pacemaker-init.yaml} | 2 +- ...yaml => major_upgrade_pacemaker_init.yaml} | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) rename environments/{major-upgrade-script-delivery.yaml => major-upgrade-pacemaker-init.yaml} (94%) rename extraconfig/tasks/{major_upgrade_script_delivery.yaml => major_upgrade_pacemaker_init.yaml} (58%) diff --git a/environments/major-upgrade-script-delivery.yaml b/environments/major-upgrade-pacemaker-init.yaml similarity index 94% rename from environments/major-upgrade-script-delivery.yaml rename to environments/major-upgrade-pacemaker-init.yaml index ba128d840c..d98a9cdd64 100644 --- a/environments/major-upgrade-script-delivery.yaml +++ b/environments/major-upgrade-pacemaker-init.yaml @@ -2,7 +2,7 @@ parameter_defaults: UpgradeLevelNovaCompute: liberty resource_registry: - OS::TripleO::Tasks::UpdateWorkflow: ../extraconfig/tasks/major_upgrade_script_delivery.yaml + OS::TripleO::Tasks::UpdateWorkflow: ../extraconfig/tasks/major_upgrade_pacemaker_init.yaml OS::TripleO::Tasks::PackageUpdate: ../extraconfig/tasks/yum_update_noop.yaml OS::TripleO::ControllerPostDeployment: OS::Heat::None OS::TripleO::ComputePostDeployment: OS::Heat::None diff --git a/extraconfig/tasks/major_upgrade_script_delivery.yaml b/extraconfig/tasks/major_upgrade_pacemaker_init.yaml similarity index 58% rename from extraconfig/tasks/major_upgrade_script_delivery.yaml rename to extraconfig/tasks/major_upgrade_pacemaker_init.yaml index e3b1e2094b..f662bc3def 100644 --- a/extraconfig/tasks/major_upgrade_script_delivery.yaml +++ b/extraconfig/tasks/major_upgrade_pacemaker_init.yaml @@ -17,12 +17,64 @@ parameters: type: json description: input values for the software deployments + UpgradeInitCommand: + type: string + description: | + Command or script snippet to run on all overcloud nodes to + initialize the upgrade process. E.g. a repository switch. + default: '' UpgradeLevelNovaCompute: type: string description: Nova Compute upgrade level default: '' resources: + + UpgradeInitConfig: + type: OS::Heat::SoftwareConfig + properties: + group: script + config: + list_join: + - '' + - - "#!/bin/bash\n\n" + - get_param: UpgradeInitCommand + + UpgradeInitControllerDeployment: + type: OS::Heat::SoftwareDeploymentGroup + properties: + servers: {get_param: controller_servers} + config: {get_resource: UpgradeInitConfig} + input_values: {get_param: input_values} + + UpgradeInitComputeDeployment: + type: OS::Heat::SoftwareDeploymentGroup + properties: + servers: {get_param: compute_servers} + config: {get_resource: UpgradeInitConfig} + input_values: {get_param: input_values} + + UpgradeInitBlockStorageDeployment: + type: OS::Heat::SoftwareDeploymentGroup + properties: + servers: {get_param: blockstorage_servers} + config: {get_resource: UpgradeInitConfig} + input_values: {get_param: input_values} + + UpgradeInitObjectStorageDeployment: + type: OS::Heat::SoftwareDeploymentGroup + properties: + servers: {get_param: objectstorage_servers} + config: {get_resource: UpgradeInitConfig} + input_values: {get_param: input_values} + + UpgradeInitCephStorageDeployment: + type: OS::Heat::SoftwareDeploymentGroup + properties: + servers: {get_param: cephstorage_servers} + config: {get_resource: UpgradeInitConfig} + input_values: {get_param: input_values} + # TODO(jistr): for Mitaka->Newton upgrades and further we can use # map_merge with input_values instead of feeding params into scripts # via str_replace on bash snippets