Add 'manage_service_maintenance'. Don't manage services scheduling while upgrading.

For some special cases, don't manage services scheduling both enable and
disable before and after upgrade procedure.

Change-Id: Id0c2c2fed0ae27912e8490d82ba9dc30819adc06
Related-Prod: PROD-30156
diff --git a/README.rst b/README.rst
index 44ee5f1..9abb02c 100644
--- a/README.rst
+++ b/README.rst
@@ -1029,3 +1029,20 @@
 |                               | operations, verify do not have dead network          |
 |                               | agents/compute services)                             |
 +-------------------------------+------------------------------------------------------+
+
+
+Don't manage services scheduling while upgrade
+----------------------------------------------
+For some special cases, don't manage services scheduling both enable and disable
+before and after upgrade procedure.
+
+If 'manage_service_maintenance: true' or not present - default behavior, disable services
+before upgrade and enable it after upgrade.
+If 'manage_service_maintenance: false' - don't disable and don't enable upgraded services
+scheduling before and after upgrade.
+
+.. code-block:: yaml
+
+    cinder:
+      upgrade:
+        manage_service_maintenance: false
diff --git a/cinder/upgrade/upgrade/post.sls b/cinder/upgrade/upgrade/post.sls
index 7add350..8b86ebf 100644
--- a/cinder/upgrade/upgrade/post.sls
+++ b/cinder/upgrade/upgrade/post.sls
@@ -1,4 +1,4 @@
-{%- from "cinder/map.jinja" import controller, volume with context %}
+{%- from "cinder/map.jinja" import controller, volume, upgrade with context %}
 
 cinder_upgrade_upgrade_post:
   test.show_notification:
@@ -8,6 +8,7 @@
 {% set host_id = salt['network.get_hostname']() %}
 
 {%- if controller.get('enabled') %}
+  {%- if upgrade.get('manage_service_maintenance', true) %}
 
 cinder_controller_service_enabled:
   cinderv3.service_enabled:
@@ -15,9 +16,11 @@
   - cloud_name: admin_identity
   - name: {{ host_id }}
 
+  {%- endif %}
 {%- endif %}
 
 {%- if volume.get('enabled') %}
+  {%- if upgrade.get('manage_service_maintenance', true) %}
 
 cinder_volume_service_enabled:
   cinderv3.service_enabled:
@@ -25,4 +28,5 @@
   - cloud_name: admin_identity
   - name: {{ host_id }}
 
+  {%- endif %}
 {%- endif %}
diff --git a/cinder/upgrade/upgrade/pre.sls b/cinder/upgrade/upgrade/pre.sls
index 9ec451c..ce65d86 100644
--- a/cinder/upgrade/upgrade/pre.sls
+++ b/cinder/upgrade/upgrade/pre.sls
@@ -1,4 +1,4 @@
-{%- from "cinder/map.jinja" import controller, volume with context %}
+{%- from "cinder/map.jinja" import controller, volume, upgrade with context %}
 
 cinder_upgrade_upgrade_pre:
   test.show_notification:
@@ -8,6 +8,7 @@
 {% set host_id = salt['network.get_hostname']() %}
 
 {%- if controller.get('enabled') %}
+  {%- if upgrade.get('manage_service_maintenance', true) %}
 
 cinder_controller_service_disabled:
   cinderv3.service_disabled:
@@ -16,9 +17,11 @@
   - name: {{ host_id }}
   - disabled_reason: "Disabled for upgrade"
 
+  {%- endif %}
 {%- endif %}
 
 {%- if volume.get('enabled') %}
+  {%- if upgrade.get('manage_service_maintenance', true) %}
 
 cinder_volume_service_disabled:
   cinderv3.service_disabled:
@@ -27,4 +30,5 @@
   - name: {{ host_id }}
   - disabled_reason: "Disabled for upgrade"
 
+  {%- endif %}
 {%- endif %}