Upgrade of Cinder block storage nodes
authorJiri Stransky <jistr@redhat.com>
Thu, 3 Mar 2016 10:36:02 +0000 (11:36 +0100)
committerJiri Stransky <jistr@redhat.com>
Thu, 3 Mar 2016 10:49:34 +0000 (11:49 +0100)
This introduces upgrades for Cinder block storage nodes. Currently
Cinder doesn't support upgrade level pinning and cannot safely deal with
version skew. This means that we have to upgrade Cinder storage nodes in
sync with controller nodes (after they were taken down for upgrade,
before they are brought back up) to ensure that Cinder services perform
AMQP communication only within the same major version of Cinder.

According to our current knowledge, Cinder block storage nodes are the
only node type that will have to be upgraded in sync with controllers.

Change-Id: Icec913c015eff744b0f31b513176b4b657df43af

extraconfig/tasks/major_upgrade_block_storage.sh [new file with mode: 0644]
extraconfig/tasks/major_upgrade_pacemaker.yaml

diff --git a/extraconfig/tasks/major_upgrade_block_storage.sh b/extraconfig/tasks/major_upgrade_block_storage.sh
new file mode 100644 (file)
index 0000000..d3d0e67
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/bash
+#
+# This runs an upgrade of Cinder Block Storage nodes.
+#
+set -eu
+
+yum -y install python-zaqarclient  # needed for os-collect-config
+yum -y update
index 5a11bae..9c2bf60 100644 (file)
@@ -49,6 +49,20 @@ resources:
       config: {get_resource: ControllerPacemakerUpgradeConfig_Step1}
       input_values: {get_param: input_values}
 
+  BlockStorageUpgradeConfig:
+    type: OS::Heat::SoftwareConfig
+    depends_on: ControllerPacemakerUpgradeDeployment_Step1
+    properties:
+      group: script
+      config: {get_file: major_upgrade_block_storage.sh}
+
+  BlockStorageUpgradeDeployment:
+    type: OS::Heat::SoftwareDeploymentGroup
+    properties:
+      servers:  {get_param: blockstorage_servers}
+      config: {get_resource: BlockStorageUpgradeConfig}
+      input_values: {get_param: input_values}
+
   ControllerPacemakerUpgradeConfig_Step2:
     type: OS::Heat::SoftwareConfig
     properties:
@@ -61,7 +75,7 @@ resources:
 
   ControllerPacemakerUpgradeDeployment_Step2:
     type: OS::Heat::SoftwareDeploymentGroup
-    depends_on: ControllerPacemakerUpgradeDeployment_Step1
+    depends_on: BlockStorageUpgradeDeployment
     properties:
       servers:  {get_param: controller_servers}
       config: {get_resource: ControllerPacemakerUpgradeConfig_Step2}