Fix: Use lf-activate-venv to install openstack dep
[releng/global-jjb.git] / shell / openstack-kubernetes-create.sh
index 5ee05b0..5aef45d 100755 (executable)
@@ -13,6 +13,30 @@ echo "---> Creating kubernetes cluster"
 
 set -eux -o pipefail
 
+# shellcheck disable=SC1090
+source ~/lf-env.sh
+
+# Check if openstack venv was previously created
+if [ -f "/tmp/.os_lf_venv" ]; then
+    os_lf_venv=$(cat "/tmp/.os_lf_venv")
+fi
+
+if [ -d "${os_lf_venv}" ] && [ -f "${os_lf_venv}/bin/openstack" ]; then
+    echo "Re-use existing venv: ${os_lf_venv}"
+    PATH=$os_lf_venv/bin:$PATH
+else
+    lf-activate-venv --python python3 "cryptography<3.4" \
+        "lftools[openstack]" \
+        kubernetes \
+        "niet~=1.4.2" \
+        python-heatclient \
+        python-openstackclient \
+        python-magnumclient \
+        setuptools \
+        "openstacksdk<0.99" \
+        yq
+fi
+
 os_cloud="${OS_CLOUD:-vex}"
 fixed_network="${FIXED_NETWORK}"
 fixed_subnet="${FIXED_SUBNET}"
@@ -32,49 +56,52 @@ cluster_settle_time="${CLUSTER_SETTLE_TIME:-1m}"
 
 # Create the template for the cluster first. Returns the cluster ID as $template_uuid
 template_uuid=$(openstack coe cluster template create "$cluster_template_name" \
-  --os-cloud "$os_cloud" \
-  --image "$base_image" \
-  --keypair "$keypair" \
-  --external-network public \
-  --fixed-network "$fixed_network" \
-  --fixed-subnet "$fixed_subnet" \
-  --floating-ip-disabled \
-  --master-flavor "$master_flavor" \
-  --flavor "$node_flavor" \
-  --docker-volume-size "$docker_volume_size" \
-  --network-driver flannel \
-  --master-lb-enabled \
-  --volume-driver cinder \
-  --labels boot_volume_type=ssd,boot_volume_size="${boot_volume_size}",kube_version="${k8s_version}",kube_tag="${k8s_version}" \
-  --coe kubernetes \
-  -f value -c uuid | tail -1)
+    --os-cloud "$os_cloud" \
+    --image "$base_image" \
+    --keypair "$keypair" \
+    --external-network public \
+    --fixed-network "$fixed_network" \
+    --fixed-subnet "$fixed_subnet" \
+    --floating-ip-disabled \
+    --master-flavor "$master_flavor" \
+    --flavor "$node_flavor" \
+    --docker-volume-size "$docker_volume_size" \
+    --network-driver flannel \
+    --master-lb-enabled \
+    --volume-driver cinder \
+    --labels \
+boot_volume_type=ssd,boot_volume_size="${boot_volume_size}",\
+kube_version="${k8s_version}",kube_tag="${k8s_version}" \
+    --coe kubernetes \
+    -f value -c uuid | tail -1)
 
 # Create the kubernetes cluster
 cluster_uuid=$(openstack coe cluster create "$cluster_name" \
-  --os-cloud "$os_cloud" \
-  --master-count "$master_count" \
-  --node-count "$node_count" \
-  --cluster-template "$template_uuid" | awk -F ' ' '{print $5}')
+    --os-cloud "$os_cloud" \
+    --master-count "$master_count" \
+    --node-count "$node_count" \
+    --cluster-template "$template_uuid" | awk -F ' ' '{print $5}')
 
 # Sleep for a little, because sometimes OpenStack has to catch up with itself
 sleep 15
 
-while [ "$(openstack --os-cloud "$os_cloud" coe cluster show "$cluster_uuid" -c status -f value)" == "CREATE_IN_PROGRESS" ]
-do
-  # echo "sleeping $(date)"
-  sleep 2m
+while \
+[ "$(openstack --os-cloud "$os_cloud" coe cluster show "$cluster_uuid" \
+-c status -f value)" == "CREATE_IN_PROGRESS" ]; do
+    # echo "sleeping $(date)"
+    sleep 2m
 done
 
-if [ "$(openstack --os-cloud "$os_cloud" coe cluster show "$cluster_uuid" -c status -f value)" == "CREATE_FAILED" ]
-then
-  echo "Failed to create cluster: $cluster_uuid $(date)"
-  openstack --os-cloud "$os_cloud" coe cluster delete "$cluster_uuid"
-  sleep 5m
-  openstack --os-cloud "$os_cloud" coe cluster template delete "$template_uuid"
-  exit 1
+if [ "$(openstack --os-cloud "$os_cloud" coe cluster show "$cluster_uuid" \
+-c status -f value)" == "CREATE_FAILED" ]; then
+    echo "Failed to create cluster: $cluster_uuid $(date)"
+    openstack --os-cloud "$os_cloud" coe cluster delete "$cluster_uuid"
+    sleep 5m
+    openstack --os-cloud "$os_cloud" coe cluster template delete "$template_uuid"
+    exit 1
 fi
 
-if [ "$(openstack --os-cloud "$os_cloud" coe cluster show "$cluster_uuid" -c status -f value)" == "CREATE_COMPLETE" ]
-then
-  echo "Successfully created cluster: $cluster_uuid."
+if [ "$(openstack --os-cloud "$os_cloud" coe cluster show "$cluster_uuid" \
+-c status -f value)" == "CREATE_COMPLETE" ]; then
+    echo "Successfully created cluster: $cluster_uuid."
 fi