Refactor upgrade checks.
[apex-tripleo-heat-templates.git] / extraconfig / tasks / major_upgrade_pacemaker.yaml
index 12268b0..13f8614 100644 (file)
@@ -16,7 +16,52 @@ parameters:
     type: json
     description: input values for the software deployments
 
+  UpgradeLevelNovaCompute:
+    type: string
+    description: Nova Compute upgrade level
+    default: ''
+  MySqlMajorUpgrade:
+    type: string
+    description: Can be auto,yes,no and influences if the major upgrade should do or detect an automatic mysql upgrade
+    constraints:
+    - allowed_values: ['auto', 'yes', 'no']
+    default: 'auto'
+  IgnoreCephUpgradeWarnings:
+    type: boolean
+    default: false
+    description: If enabled, Ceph upgrade will be forced even though cluster or PGs status is not clean
+
 resources:
+  # 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
+
+  CephMonUpgradeConfig:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config:
+        list_join:
+        - ''
+        - - str_replace:
+              template: |
+                #!/bin/bash
+                ignore_ceph_upgrade_warnings='IGNORE_CEPH_UPGRADE_WARNINGS'
+              params:
+                IGNORE_CEPH_UPGRADE_WARNINGS: {get_param: IgnoreCephUpgradeWarnings}
+          - get_file: major_upgrade_ceph_mon.sh
+
+  CephMonUpgradeDeployment:
+    type: OS::Heat::SoftwareDeploymentGroup
+    properties:
+      servers: {get_param: controller_servers}
+      config: {get_resource: CephMonUpgradeConfig}
+      input_values: {get_param: input_values}
+      batch_create:
+        max_batch_size: 1
+      rolling_update:
+        max_batch_size: 1
+
   ControllerPacemakerUpgradeConfig_Step1:
     type: OS::Heat::SoftwareConfig
     properties:
@@ -24,16 +69,45 @@ resources:
       config:
         list_join:
         - ''
-        - - get_file: pacemaker_common_functions.sh
+        - - str_replace:
+              template: |
+                #!/bin/bash
+                upgrade_level_nova_compute='UPGRADE_LEVEL_NOVA_COMPUTE'
+              params:
+                UPGRADE_LEVEL_NOVA_COMPUTE: {get_param: UpgradeLevelNovaCompute}
+          - str_replace:
+              template: |
+                #!/bin/bash
+                mariadb_do_major_upgrade='MYSQL_MAJOR_UPGRADE'
+              params:
+                MYSQL_MAJOR_UPGRADE: {get_param: MySqlMajorUpgrade}
+          - get_file: pacemaker_common_functions.sh
+          - get_file: major_upgrade_check.sh
+          - get_file: major_upgrade_pacemaker_migrations.sh
           - get_file: major_upgrade_controller_pacemaker_1.sh
 
   ControllerPacemakerUpgradeDeployment_Step1:
     type: OS::Heat::SoftwareDeploymentGroup
+    depends_on: CephMonUpgradeDeployment
     properties:
       servers:  {get_param: controller_servers}
       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:
@@ -42,12 +116,14 @@ resources:
         list_join:
         - ''
         - - get_file: pacemaker_common_functions.sh
+          - get_file: major_upgrade_pacemaker_migrations.sh
           - get_file: major_upgrade_controller_pacemaker_2.sh
 
   ControllerPacemakerUpgradeDeployment_Step2:
     type: OS::Heat::SoftwareDeploymentGroup
-    depends_on: ControllerPacemakerUpgradeDeployment_Step1
+    depends_on: BlockStorageUpgradeDeployment
     properties:
       servers:  {get_param: controller_servers}
       config: {get_resource: ControllerPacemakerUpgradeConfig_Step2}
       input_values: {get_param: input_values}
+