Merge "Local voplume provisioner enabled on tempest node"
diff --git a/de/heat-templates/fragments/SrvInstancesBM.yaml b/de/heat-templates/fragments/SrvInstancesBM.yaml
index 5599d11..5307e16 100644
--- a/de/heat-templates/fragments/SrvInstancesBM.yaml
+++ b/de/heat-templates/fragments/SrvInstancesBM.yaml
@@ -52,6 +52,8 @@
     type: string
   docker_default_address_pool:
     type: string
+  binary_base_url:
+    type: string
   hardware_metadata:
     description: The content of lab metadata.
     default: ''
@@ -77,6 +79,7 @@
             $docker_ee_release: { get_param: docker_ee_release }
             $ucp_master_host: { get_param: ucp_master_host }
             $docker_ucp_image: { get_param: docker_ucp_image }
+            $binary_base_url: { get_param: binary_base_url }
             $docker_default_address_pool: { get_param: docker_default_address_pool }
             $node_metadata: { get_param: metadata }
             $control_network_cidr: { get_param: control_network_cidr }
diff --git a/de/heat-templates/fragments/SrvInstancesBMCeph.yaml b/de/heat-templates/fragments/SrvInstancesBMCeph.yaml
index 7c6a76d..caa3ff5 100644
--- a/de/heat-templates/fragments/SrvInstancesBMCeph.yaml
+++ b/de/heat-templates/fragments/SrvInstancesBMCeph.yaml
@@ -63,6 +63,8 @@
     type: string
   docker_default_address_pool:
     type: string
+  binary_base_url:
+    type: string
   public_net_id:
     type: string
     default: ''
@@ -92,6 +94,7 @@
             $wait_condition_notify: { get_attr: [ wait_handle, curl_cli ] }
             $docker_ee_url: { get_param: docker_ee_url }
             $docker_ee_release: { get_param: docker_ee_release }
+            $binary_base_url: { get_param: binary_base_url }
             $ucp_master_host: { get_param: ucp_master_host }
             $docker_ucp_image: { get_param: docker_ucp_image }
             $docker_default_address_pool: { get_param: docker_default_address_pool }
diff --git a/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml b/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml
index 4fa2615..d143f7d 100644
--- a/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml
+++ b/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml
@@ -77,6 +77,8 @@
     type: string
   docker_default_address_pool:
     type: string
+  binary_base_url:
+    type: string
   public_net_id:
     type: string
     default: ''
@@ -116,6 +118,7 @@
             $ucp_master_host: { get_param: ucp_master_host }
             $docker_ucp_image: { get_param: docker_ucp_image }
             $docker_default_address_pool: { get_param: docker_default_address_pool }
+            $binary_base_url: { get_param: binary_base_url }
             $node_metadata: { get_param: metadata }
             $control_network_cidr: { get_param: control_network_cidr }
             $private_floating_interface: { get_param: private_floating_interface }
diff --git a/de/heat-templates/fragments/SrvInstancesVM.yaml b/de/heat-templates/fragments/SrvInstancesVM.yaml
index f4158a2..cd08194 100644
--- a/de/heat-templates/fragments/SrvInstancesVM.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVM.yaml
@@ -55,6 +55,8 @@
     default: 4789
   docker_default_address_pool:
     type: string
+  binary_base_url:
+    type: string
   hardware_metadata:
     description: The content of lab metadata.
     default: ''
@@ -104,6 +106,7 @@
             $docker_ucp_image: { get_param: docker_ucp_image }
             $docker_ucp_swarm_data_port: { get_param: docker_ucp_swarm_data_port }
             $docker_default_address_pool: { get_param: docker_default_address_pool }
+            $binary_base_url: { get_param: binary_base_url }
             $single_node: { get_param: single_node }
             $secure_overlay_enabled: { get_param: secure_overlay_enabled }
             $kubectl_version: { get_param: kubectl_version }
diff --git a/de/heat-templates/fragments/SrvInstancesVMCeph.yaml b/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
index 0d72696..128ea7a 100644
--- a/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
@@ -63,6 +63,8 @@
     type: string
   docker_default_address_pool:
     type: string
+  binary_base_url:
+    type: string
   public_net_id:
     type: string
   docker_ee_release:
@@ -106,6 +108,7 @@
             $ucp_master_host: { get_param: ucp_master_host }
             $docker_ucp_image: { get_param: docker_ucp_image }
             $docker_default_address_pool: { get_param: docker_default_address_pool }
+            $binary_base_url: { get_param: binary_base_url }
             $node_metadata: { get_param: metadata }
             $control_network_cidr: { get_param: control_network_cidr }
             $private_floating_interface: { get_param: private_floating_interface }
diff --git a/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml b/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
index 31f544b..9c62210 100644
--- a/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
@@ -77,6 +77,8 @@
     type: string
   docker_default_address_pool:
     type: string
+  binary_base_url:
+    type: string
   public_net_id:
     type: string
   docker_ee_release:
@@ -139,6 +141,7 @@
             $ucp_master_host: { get_param: ucp_master_host }
             $docker_ucp_image: { get_param: docker_ucp_image }
             $docker_default_address_pool: { get_param: docker_default_address_pool }
+            $binary_base_url: { get_param: binary_base_url }
             $node_metadata: { get_param: metadata }
             $control_network_cidr: { get_param: control_network_cidr }
             $private_floating_interface: { get_param: private_floating_interface }
diff --git a/de/heat-templates/multirack.yaml b/de/heat-templates/multirack.yaml
index abcae03..321fabd 100644
--- a/de/heat-templates/multirack.yaml
+++ b/de/heat-templates/multirack.yaml
@@ -135,6 +135,9 @@
     type: string
     description: Default address pool for Docker ucp specific local networks
     default: '10.10.1.0/16'
+  binary_base_url:
+    type: string
+    default: 'http://binary.mirantis.com'
   tunnel_interface:
     type: string
     default: ''
diff --git a/de/heat-templates/scripts/instance_boot.sh b/de/heat-templates/scripts/instance_boot.sh
index a763877..3f92e8b 100644
--- a/de/heat-templates/scripts/instance_boot.sh
+++ b/de/heat-templates/scripts/instance_boot.sh
@@ -49,6 +49,7 @@
 DOCKER_EE_URL=${DOCKER_EE_URL:-$docker_ee_url}
 DOCKER_EE_RELEASE=${DOCKER_EE_RELEASE:-$docker_ee_release}
 DOCKER_UCP_IMAGE=${DOCKER_UCP_IMAGE:-$docker_ucp_image}
+BINARY_BASE_URL=${BINARY_BASE_URL:-$binary_base_url}
 UCP_DOCKER_SWARM_DATA_PORT=${UCP_DOCKER_SWARM_DATA_PORT:-$docker_ucp_swarm_data_port}
 FLOATING_NETWORK_PREFIXES=${FLOATING_NETWORK_PREFIXES:-$private_floating_network_cidr}
 IRONIC_MT_ENABLED=${IRONIC_MT_ENABLED:-$ironic_mt_enabled}
@@ -79,6 +80,7 @@
     DOCKER_RELEASE="${DOCKER_EE_RELEASE}"
     DOCKER_PACKAGES="${DOCKER_EE_PACKAGES}"
 fi
+BINARY_BASE_URL=${BINARY_BASE_URL:-"http://binary.mirantis.com"}
 
 ### COMMON FUNCTIONS ###
 function get_interface_prefix {
@@ -221,7 +223,7 @@
         apt update
         export DEBIAN_FRONTEND=noninteractive; apt install -y $pkg_list
         # Since version 4 yq uses another syntax
-        curl --retry 6 --retry-delay 5 -L https://github.com/mikefarah/yq/releases/download/3.3.2/yq_linux_amd64 -o /usr/bin/yq
+        curl --retry 6 --retry-delay 5 -L ${BINARY_BASE_URL}/openstack/bin/utils/yq/yq-v3.3.2 -o /usr/bin/yq
         chmod +x /usr/bin/yq
     }
     retry 10 "Failed to install required packages" install_retry
@@ -320,7 +322,7 @@
 
     local image_prefix=${DOCKER_UCP_IMAGE%/*}
     local image_name=${DOCKER_UCP_IMAGE##*/}
-    if [[ "$image_name" =~ .*3.3.* ]]; then
+    if [[ "$image_name" =~ .*3.3.* || "$image_name" =~ .*3.5.* ]]; then
         for image in $(docker container run --rm --name ucp -v /var/run/docker.sock:/var/run/docker.sock ${DOCKER_UCP_IMAGE} images --list); do
             pull_image "${image_prefix}/${image##*/}"
             docker tag ${image_prefix}/${image##*/} ${image}
@@ -493,7 +495,7 @@
 
 function install_kubectl {
     local kubectl=/usr/local/bin/kubectl
-    curl --retry 6 --retry-delay 5 -L http://binary.mirantis.com/openstack/bin/utils/kubectl/kubectl-${KUBECTL_VERSION}-linux -o ${kubectl}
+    curl --retry 6 --retry-delay 5 -L ${BINARY_BASE_URL}/openstack/bin/utils/kubectl/kubectl-${KUBECTL_VERSION}-linux -o ${kubectl}
     chmod +x ${kubectl}
 cat << EOF >> ~/.bashrc
 source /usr/share/bash-completion/bash_completion
diff --git a/de/heat-templates/top.yaml b/de/heat-templates/top.yaml
index 6bef70d..27cb0a7 100644
--- a/de/heat-templates/top.yaml
+++ b/de/heat-templates/top.yaml
@@ -323,6 +323,9 @@
   docker_ucp_swarm_data_port:
     type: string
     default: 4789
+  binary_base_url:
+    type: string
+    default: 'http://binary.mirantis.com'
   tunnel_interface:
     type: string
     default: ''
@@ -534,6 +537,7 @@
       docker_ucp_image: { get_param: docker_ucp_image}
       docker_ucp_swarm_data_port: { get_param: docker_ucp_swarm_data_port }
       docker_default_address_pool: { get_param: docker_default_address_pool }
+      binary_base_url: { get_param: binary_base_url }
       node_type: "ucp"
       kubernetes_installer: { get_param: kubernetes_installer }
       key_name: { get_attr: [keypair_name, value] }
@@ -573,6 +577,7 @@
           docker_ee_release: { get_param: docker_ee_release }
           docker_ucp_image: { get_param: docker_ucp_image}
           docker_default_address_pool: { get_param: docker_default_address_pool }
+          binary_base_url: { get_param: binary_base_url }
           accessible_network: { get_attr: [accessible_network, public_network] }
           private_floating_network: { get_attr: [private_floating_network, private_floating_network_id] }
           private_floating_subnet_id: { get_attr: [private_floating_network, private_floating_subnet_id] }
@@ -606,6 +611,7 @@
           docker_ee_release: { get_param: docker_ee_release }
           docker_ucp_image: { get_param: docker_ucp_image}
           docker_default_address_pool: { get_param: docker_default_address_pool }
+          binary_base_url: { get_param: binary_base_url }
           accessible_network: { get_attr: [accessible_network, public_network] }
           private_floating_network: { get_attr: [private_floating_network, private_floating_network_id] }
           private_floating_subnet_id: { get_attr: [private_floating_network, private_floating_subnet_id] }
@@ -657,6 +663,7 @@
           docker_ee_release: { get_param: docker_ee_release }
           docker_ucp_image: { get_param: docker_ucp_image}
           docker_default_address_pool: { get_param: docker_default_address_pool }
+          binary_base_url: { get_param: binary_base_url }
           accessible_network: { get_attr: [accessible_network, public_network] }
           private_floating_network: { get_attr: [private_floating_network, private_floating_network_id] }
           private_floating_subnet_id: { get_attr: [private_floating_network, private_floating_subnet_id] }
@@ -708,6 +715,7 @@
           docker_ee_release: { get_param: docker_ee_release }
           docker_ucp_image: { get_param: docker_ucp_image}
           docker_default_address_pool: { get_param: docker_default_address_pool }
+          binary_base_url: { get_param: binary_base_url }
           accessible_network: { get_attr: [accessible_network, public_network] }
           private_floating_network: { get_attr: [private_floating_network, private_floating_network_id] }
           private_floating_subnet_id: { get_attr: [private_floating_network, private_floating_subnet_id] }
@@ -760,6 +768,7 @@
           docker_ee_release: { get_param: docker_ee_release }
           docker_ucp_image: { get_param: docker_ucp_image}
           docker_default_address_pool: { get_param: docker_default_address_pool }
+          binary_base_url: { get_param: binary_base_url }
           accessible_network: { get_attr: [accessible_network, public_network] }
           private_floating_network: { get_attr: [private_floating_network, private_floating_network_id] }
           private_floating_subnet_id: { get_attr: [private_floating_network, private_floating_subnet_id] }
@@ -802,6 +811,7 @@
           docker_ee_release: { get_param: docker_ee_release }
           docker_ucp_image: { get_param: docker_ucp_image}
           docker_default_address_pool: { get_param: docker_default_address_pool }
+          binary_base_url: { get_param: binary_base_url }
           accessible_network: { get_attr: [accessible_network, public_network] }
           private_floating_network: { get_attr: [private_floating_network, private_floating_network_id] }
           private_floating_subnet_id: { get_attr: [private_floating_network, private_floating_subnet_id] }
@@ -844,6 +854,7 @@
           docker_ee_release: { get_param: docker_ee_release }
           docker_ucp_image: { get_param: docker_ucp_image}
           docker_default_address_pool: { get_param: docker_default_address_pool }
+          binary_base_url: { get_param: binary_base_url }
           accessible_network: { get_attr: [accessible_network, public_network] }
           private_floating_network: { get_attr: [private_floating_network, private_floating_network_id] }
           private_floating_subnet_id: { get_attr: [private_floating_network, private_floating_subnet_id] }
@@ -894,6 +905,7 @@
           docker_ee_release: { get_param: docker_ee_release }
           docker_ucp_image: { get_param: docker_ucp_image}
           docker_default_address_pool: { get_param: docker_default_address_pool }
+          binary_base_url: { get_param: binary_base_url }
           accessible_network: { get_attr: [accessible_network, public_network] }
           private_floating_network: { get_attr: [private_floating_network, private_floating_network_id] }
           private_floating_subnet_id: { get_attr: [private_floating_network, private_floating_subnet_id] }
@@ -943,6 +955,7 @@
           docker_ee_release: { get_param: docker_ee_release }
           docker_ucp_image: { get_param: docker_ucp_image}
           docker_default_address_pool: { get_param: docker_default_address_pool }
+          binary_base_url: { get_param: binary_base_url }
           accessible_network: { get_attr: [accessible_network, public_network] }
           private_floating_network: { get_attr: [private_floating_network, private_floating_network_id] }
           private_floating_subnet_id: { get_attr: [private_floating_network, private_floating_subnet_id] }
@@ -992,6 +1005,7 @@
           docker_ee_release: { get_param: docker_ee_release }
           docker_ucp_image: { get_param: docker_ucp_image}
           docker_default_address_pool: { get_param: docker_default_address_pool }
+          binary_base_url: { get_param: binary_base_url }
           accessible_network: { get_attr: [accessible_network, public_network] }
           private_floating_network: { get_attr: [private_floating_network, private_floating_network_id] }
           private_floating_subnet_id: { get_attr: [private_floating_network, private_floating_subnet_id] }
@@ -1034,6 +1048,7 @@
           docker_ee_release: { get_param: docker_ee_release }
           docker_ucp_image: { get_param: docker_ucp_image}
           docker_default_address_pool: { get_param: docker_default_address_pool }
+          binary_base_url: { get_param: binary_base_url }
           accessible_network: { get_attr: [accessible_network, public_network] }
           private_floating_network: { get_attr: [private_floating_network, private_floating_network_id] }
           private_floating_subnet_id: { get_attr: [private_floating_network, private_floating_subnet_id] }