PROD-35900 Conditional deployment of the empty node

Change-Id: If8dec13efbb862d14f6d8ff0108ee18b9795234e
diff --git a/tcp_tests/managers/envmanager_heat.py b/tcp_tests/managers/envmanager_heat.py
index 1d5c852..5fe143a 100644
--- a/tcp_tests/managers/envmanager_heat.py
+++ b/tcp_tests/managers/envmanager_heat.py
@@ -557,6 +557,7 @@
             'parameters': {
                 'mcp_version': mcp_version,
                 'env_name': settings.ENV_NAME,
+                'deploy_empty_node': bool(settings.DEPLOY_EMPTY_NODE)
             }
         }
 
diff --git a/tcp_tests/settings.py b/tcp_tests/settings.py
index 5e60b86..18548fb 100644
--- a/tcp_tests/settings.py
+++ b/tcp_tests/settings.py
@@ -33,6 +33,7 @@
 ENV_NAME = os.environ.get("ENV_NAME", None)
 MAKE_SNAPSHOT_STAGES = get_var_as_bool("MAKE_SNAPSHOT_STAGES", True)
 SHUTDOWN_ENV_ON_TEARDOWN = get_var_as_bool('SHUTDOWN_ENV_ON_TEARDOWN', True)
+DEPLOY_EMPTY_NODE = get_var_as_bool('DEPLOY_EMPTY_NODE', False)
 
 LAB_CONFIG_NAME = os.environ.get('LAB_CONFIG_NAME', 'mk22-lab-basic')
 DOMAIN_NAME = os.environ.get('DOMAIN_NAME',
diff --git a/tcp_tests/templates/heat-cicd-pike-dvr-sl/salt.yaml b/tcp_tests/templates/heat-cicd-pike-dvr-sl/salt.yaml
index 8fa87c5..4796bf0 100644
--- a/tcp_tests/templates/heat-cicd-pike-dvr-sl/salt.yaml
+++ b/tcp_tests/templates/heat-cicd-pike-dvr-sl/salt.yaml
@@ -15,6 +15,7 @@
 {{SHARED.MACRO_CHECK_SALT_VERSION_ON_NODES()}}
 
 {{SHARED.MACRO_IPFLUSH_TENANTS_IFACES()}}
+{{SHARED.DISABLE_EMPTY_NODE()}}
 
 {{SHARED_TEST_TOOLS.MACRO_INSTALL_RECLASS_TOOLS()}}
 
diff --git a/tcp_tests/templates/heat-cicd-pike-dvr-sl/underlay.hot b/tcp_tests/templates/heat-cicd-pike-dvr-sl/underlay.hot
index 4c5e949..c7f6ea6 100644
--- a/tcp_tests/templates/heat-cicd-pike-dvr-sl/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-pike-dvr-sl/underlay.hot
@@ -39,6 +39,9 @@
   salt_master_control_ip:
     type: string
     default: 10.6.0.15
+  deploy_empty_node:
+    type: boolean
+    default: False
 
   key_pair:
     type: string
@@ -1065,6 +1068,35 @@
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
+  empty_node:
+    type: MCP::SingleInstance2Volumes
+    depends_on: [cfg01_node]
+    condition: { get_param: deploy_empty_node }
+    properties:
+      env_name: { get_param: env_name }
+      mcp_version: { get_param: mcp_version }
+      instance_domain: {get_param: instance_domain}
+      instance_name: xtra
+      role: none
+      instance_flavor: {get_param: osd_flavor}
+      availability_zone: { get_param: vm_availability_zone }
+      underlay_userdata: { get_file: ./underlay-userdata.yaml }
+      control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, control_net_prefix] }, '205' ]
+      tenant_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '205' ]
+      external_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, external_net_prefix] }, '205' ]
+
+      instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+
 outputs:
   foundation_public_ip:
     description: foundation node IP address (floating) from external network
diff --git a/tcp_tests/templates/heat-cicd-queens-contrail41-sl/salt.yaml b/tcp_tests/templates/heat-cicd-queens-contrail41-sl/salt.yaml
index b5958c1..8a1000e 100644
--- a/tcp_tests/templates/heat-cicd-queens-contrail41-sl/salt.yaml
+++ b/tcp_tests/templates/heat-cicd-queens-contrail41-sl/salt.yaml
@@ -10,6 +10,7 @@
 {{ SHARED.MACRO_INSTALL_SALT_MINIONS() }}
 
 {{SHARED.MACRO_CHECK_SALT_VERSION_SERVICES_ON_CFG()}}
+{{SHARED.DISABLE_EMPTY_NODE()}}
 
 {{SHARED.MACRO_CHECK_SALT_VERSION_ON_NODES()}}
 
diff --git a/tcp_tests/templates/heat-cicd-queens-contrail41-sl/underlay.hot b/tcp_tests/templates/heat-cicd-queens-contrail41-sl/underlay.hot
index e00f801..0c92b47 100644
--- a/tcp_tests/templates/heat-cicd-queens-contrail41-sl/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-queens-contrail41-sl/underlay.hot
@@ -39,6 +39,9 @@
   salt_master_control_ip:
     type: string
     default: 10.6.0.15
+  deploy_empty_node:
+    type: boolean
+    default: False
 
   key_pair:
     type: string
@@ -983,6 +986,35 @@
         - [ { get_attr: [subnets, external_net_prefix] }, '220' ]
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
+  empty_node:
+    type: MCP::SingleInstance2Volumes
+    depends_on: [cfg01_node]
+    condition: { get_param: deploy_empty_node }
+    properties:
+      env_name: { get_param: env_name }
+      mcp_version: { get_param: mcp_version }
+      instance_domain: {get_param: instance_domain}
+      instance_name: xtra
+      role: none
+      instance_flavor: {get_param: osd_flavor}
+      availability_zone: { get_param: vm_availability_zone }
+      underlay_userdata: { get_file: ./underlay-userdata.yaml }
+      control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, control_net_prefix] }, '205' ]
+      tenant_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '205' ]
+      external_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, external_net_prefix] }, '205' ]
+
+      instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+
 outputs:
   foundation_public_ip:
     description: foundation node IP address (floating) from external network
diff --git a/tcp_tests/templates/heat-cicd-queens-dvr-sl/underlay.hot b/tcp_tests/templates/heat-cicd-queens-dvr-sl/underlay.hot
index c3e09fa..5775174 100644
--- a/tcp_tests/templates/heat-cicd-queens-dvr-sl/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-queens-dvr-sl/underlay.hot
@@ -7,7 +7,7 @@
 parameters:
   instance_domain:
     type: string
-    default: heat-cicd-queens-dvr-sl.local
+    default: heat-cicd-queens-dvr-sl-test.local
   mcp_version:
     type: string
   env_name:
@@ -39,6 +39,9 @@
   salt_master_control_ip:
     type: string
     default: 10.6.0.15
+  deploy_empty_node:
+    type: boolean
+    default: False
 
   key_pair:
     type: string
@@ -1068,6 +1071,7 @@
   empty_node:
     type: MCP::SingleInstance2Volumes
     depends_on: [cfg01_node]
+    condition: { get_param: deploy_empty_node }
     properties:
       env_name: { get_param: env_name }
       mcp_version: { get_param: mcp_version }
diff --git a/tcp_tests/templates/released-heat-cicd-pike-contrail41-sl/salt.yaml b/tcp_tests/templates/released-heat-cicd-pike-contrail41-sl/salt.yaml
index 710f01d..ad307da 100644
--- a/tcp_tests/templates/released-heat-cicd-pike-contrail41-sl/salt.yaml
+++ b/tcp_tests/templates/released-heat-cicd-pike-contrail41-sl/salt.yaml
@@ -12,5 +12,6 @@
 {{ SHARED.MACRO_CHECK_SALT_VERSION_SERVICES_ON_CFG() }}
 
 {{ SHARED.MACRO_CHECK_SALT_VERSION_ON_NODES() }}
+{{SHARED.DISABLE_EMPTY_NODE()}}
 
 {{ SHARED_TEST_TOOLS.MACRO_INSTALL_RECLASS_TOOLS() }}
diff --git a/tcp_tests/templates/released-heat-cicd-pike-contrail41-sl/underlay.hot b/tcp_tests/templates/released-heat-cicd-pike-contrail41-sl/underlay.hot
index 789f6a5..8fc50af 100644
--- a/tcp_tests/templates/released-heat-cicd-pike-contrail41-sl/underlay.hot
+++ b/tcp_tests/templates/released-heat-cicd-pike-contrail41-sl/underlay.hot
@@ -39,6 +39,9 @@
   salt_master_control_ip:
     type: string
     default: 10.6.0.15
+  deploy_empty_node:
+    type: boolean
+    default: False
 
   key_pair:
     type: string
@@ -983,6 +986,35 @@
         - [ { get_attr: [subnets, external_net_prefix] }, '220' ]
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
+  empty_node:
+    type: MCP::SingleInstance2Volumes
+    depends_on: [cfg01_node]
+    condition: { get_param: deploy_empty_node }
+    properties:
+      env_name: { get_param: env_name }
+      mcp_version: { get_param: mcp_version }
+      instance_domain: {get_param: instance_domain}
+      instance_name: xtra
+      role: none
+      instance_flavor: {get_param: osd_flavor}
+      availability_zone: { get_param: vm_availability_zone }
+      underlay_userdata: { get_file: ./underlay-userdata.yaml }
+      control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, control_net_prefix] }, '205' ]
+      tenant_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '205' ]
+      external_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, external_net_prefix] }, '205' ]
+
+      instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+
 outputs:
   foundation_public_ip:
     description: foundation node IP address (floating) from external network
diff --git a/tcp_tests/templates/released-heat-cicd-pike-dvr-sl/salt.yaml b/tcp_tests/templates/released-heat-cicd-pike-dvr-sl/salt.yaml
index 9e648aa..fd3eac2 100644
--- a/tcp_tests/templates/released-heat-cicd-pike-dvr-sl/salt.yaml
+++ b/tcp_tests/templates/released-heat-cicd-pike-dvr-sl/salt.yaml
@@ -15,6 +15,7 @@
 {{ SHARED.MACRO_CHECK_SALT_VERSION_ON_NODES() }}
 
 {{ SHARED.MACRO_IPFLUSH_TENANTS_IFACES() }}
+{{SHARED.DISABLE_EMPTY_NODE()}}
 
 {{ SHARED_TEST_TOOLS.MACRO_INSTALL_RECLASS_TOOLS() }}
 {{ SHARED_WORKAROUNDS.MACRO_CEPH_SET_PGNUM() }}
\ No newline at end of file
diff --git a/tcp_tests/templates/released-heat-cicd-pike-dvr-sl/underlay.hot b/tcp_tests/templates/released-heat-cicd-pike-dvr-sl/underlay.hot
index 6d4be47..95fc69e 100644
--- a/tcp_tests/templates/released-heat-cicd-pike-dvr-sl/underlay.hot
+++ b/tcp_tests/templates/released-heat-cicd-pike-dvr-sl/underlay.hot
@@ -39,6 +39,9 @@
   salt_master_control_ip:
     type: string
     default: 10.6.0.15
+  deploy_empty_node:
+    type: boolean
+    default: False
 
   key_pair:
     type: string
@@ -1065,6 +1068,35 @@
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
+  empty_node:
+    type: MCP::SingleInstance2Volumes
+    depends_on: [cfg01_node]
+    condition: { get_param: deploy_empty_node }
+    properties:
+      env_name: { get_param: env_name }
+      mcp_version: { get_param: mcp_version }
+      instance_domain: {get_param: instance_domain}
+      instance_name: xtra
+      role: none
+      instance_flavor: {get_param: osd_flavor}
+      availability_zone: { get_param: vm_availability_zone }
+      underlay_userdata: { get_file: ./underlay-userdata.yaml }
+      control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, control_net_prefix] }, '205' ]
+      tenant_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '205' ]
+      external_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, external_net_prefix] }, '205' ]
+
+      instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+
 outputs:
   foundation_public_ip:
     description: foundation node IP address (floating) from external network
diff --git a/tcp_tests/templates/released-heat-cicd-queens-contrail41-sl/salt.yaml b/tcp_tests/templates/released-heat-cicd-queens-contrail41-sl/salt.yaml
index de5cfac..f68e844 100644
--- a/tcp_tests/templates/released-heat-cicd-queens-contrail41-sl/salt.yaml
+++ b/tcp_tests/templates/released-heat-cicd-queens-contrail41-sl/salt.yaml
@@ -12,5 +12,6 @@
 {{ SHARED.MACRO_CHECK_SALT_VERSION_SERVICES_ON_CFG() }}
 
 {{ SHARED.MACRO_CHECK_SALT_VERSION_ON_NODES() }}
+{{SHARED.DISABLE_EMPTY_NODE()}}
 
 {{ SHARED_TEST_TOOLS.MACRO_INSTALL_RECLASS_TOOLS() }}
\ No newline at end of file
diff --git a/tcp_tests/templates/released-heat-cicd-queens-contrail41-sl/underlay.hot b/tcp_tests/templates/released-heat-cicd-queens-contrail41-sl/underlay.hot
index e860b6b..d9da3dd 100644
--- a/tcp_tests/templates/released-heat-cicd-queens-contrail41-sl/underlay.hot
+++ b/tcp_tests/templates/released-heat-cicd-queens-contrail41-sl/underlay.hot
@@ -39,6 +39,9 @@
   salt_master_control_ip:
     type: string
     default: 10.6.0.15
+  deploy_empty_node:
+    type: boolean
+    default: False
 
   key_pair:
     type: string
@@ -983,6 +986,35 @@
         - [ { get_attr: [subnets, external_net_prefix] }, '220' ]
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
+  empty_node:
+    type: MCP::SingleInstance2Volumes
+    depends_on: [cfg01_node]
+    condition: { get_param: deploy_empty_node }
+    properties:
+      env_name: { get_param: env_name }
+      mcp_version: { get_param: mcp_version }
+      instance_domain: {get_param: instance_domain}
+      instance_name: xtra
+      role: none
+      instance_flavor: {get_param: osd_flavor}
+      availability_zone: { get_param: vm_availability_zone }
+      underlay_userdata: { get_file: ./underlay-userdata.yaml }
+      control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, control_net_prefix] }, '205' ]
+      tenant_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '205' ]
+      external_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, external_net_prefix] }, '205' ]
+
+      instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+
 outputs:
   foundation_public_ip:
     description: foundation node IP address (floating) from external network
diff --git a/tcp_tests/templates/released-heat-cicd-queens-dvr-sl/salt.yaml b/tcp_tests/templates/released-heat-cicd-queens-dvr-sl/salt.yaml
index d4eeaac..2a94e69 100644
--- a/tcp_tests/templates/released-heat-cicd-queens-dvr-sl/salt.yaml
+++ b/tcp_tests/templates/released-heat-cicd-queens-dvr-sl/salt.yaml
@@ -13,5 +13,6 @@
 {{ SHARED.MACRO_CHECK_SALT_VERSION_ON_NODES() }}
 
 {{ SHARED.MACRO_IPFLUSH_TENANTS_IFACES() }}
+{{SHARED.DISABLE_EMPTY_NODE()}}
 
 {{ SHARED_TEST_TOOLS.MACRO_INSTALL_RECLASS_TOOLS() }}
diff --git a/tcp_tests/templates/released-heat-cicd-queens-dvr-sl/underlay.hot b/tcp_tests/templates/released-heat-cicd-queens-dvr-sl/underlay.hot
index 5ecf130..88997d7 100644
--- a/tcp_tests/templates/released-heat-cicd-queens-dvr-sl/underlay.hot
+++ b/tcp_tests/templates/released-heat-cicd-queens-dvr-sl/underlay.hot
@@ -39,6 +39,9 @@
   salt_master_control_ip:
     type: string
     default: 10.6.0.15
+  deploy_empty_node:
+    type: boolean
+    default: False
 
   key_pair:
     type: string
@@ -1065,6 +1068,35 @@
 
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
+  empty_node:
+    type: MCP::SingleInstance2Volumes
+    depends_on: [cfg01_node]
+    condition: { get_param: deploy_empty_node }
+    properties:
+      env_name: { get_param: env_name }
+      mcp_version: { get_param: mcp_version }
+      instance_domain: {get_param: instance_domain}
+      instance_name: xtra
+      role: none
+      instance_flavor: {get_param: osd_flavor}
+      availability_zone: { get_param: vm_availability_zone }
+      underlay_userdata: { get_file: ./underlay-userdata.yaml }
+      control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, control_net_prefix] }, '205' ]
+      tenant_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, tenant_net_prefix] }, '205' ]
+      external_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [subnets, external_net_prefix] }, '205' ]
+
+      instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+
 outputs:
   foundation_public_ip:
     description: foundation node IP address (floating) from external network