X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=env%2Flib%2Fcommon.sh;h=af54d237462701ba9e1b890412093350c493b114;hb=00ee6025d0bcd56f5a55f06c76c97cc864534b20;hp=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391;hpb=308b84a2851e9a16458e5aebfd9f0341ca7530bd;p=icn.git diff --git a/env/lib/common.sh b/env/lib/common.sh old mode 100644 new mode 100755 index e69de29..af54d23 --- a/env/lib/common.sh +++ b/env/lib/common.sh @@ -0,0 +1,292 @@ +#!/usr/bin/env bash +set -eu -o pipefail + +IRONIC_DATA_DIR=${IRONIC_DATA_DIR:-"/opt/ironic"} +NODES_FILE=${NODES_FILE:-"${IRONIC_DATA_DIR}/nodes.json"} +#IRONIC_PROVISIONING_INTERFACE is required to be provisioning, don't change it +IRONIC_INTERFACE=${IRONIC_INTERFACE:-} +IRONIC_PROVISIONING_INTERFACE=${IRONIC_PROVISIONING_INTERFACE:-"provisioning"} +IRONIC_PROVISIONING_INTERFACE_IP=${IRONIC_PROVISIONING_INTERFACE_IP:-"172.22.0.1"} +BM_IMAGE_URL=${BM_IMAGE_URL:-"https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img"} +BM_IMAGE=${BM_IMAGE:-"focal-server-cloudimg-amd64.img"} + +#Baremetal operator repository URL +BMOREPO="${BMOREPO:-https://github.com/metal3-io/baremetal-operator.git}" +#Path to clone the baremetal operator repo +BMOPATH="/opt/src/github.com/metal3-io/baremetal-operator" +#Bare Metal Operator version to use +# If changing this, the value in deploy/ironic/icn/kustomization.yaml +# must also be changed +BMO_VERSION="capm3-v0.5.1" + +#KuD repository URL +KUDREPO="${KUDREPO:-https://github.com/onap/multicloud-k8s.git}" +#Path to clone the KuD repo +KUDPATH="/opt/src/github.com/onap/multicloud-k8s" +#KuD version to use +KUD_VERSION="8157bf63753839ce4e9006978816fad3f63ca2de" + +#EMCO repository URL +EMCOREPO="${EMCOREPO:-https://gitlab.com/project-emco/core/emco-base.git}" +#Path to clone the EMCO repo +EMCOPATH="/opt/src/emco-base" +#EMCO version to use +EMCO_VERSION="v21.12" + +#Discard existing repo directory +FORCE_REPO_UPDATE="${FORCE_REPO_UPDATE:-false}" + +# The kustomize version to use +KUSTOMIZE_VERSION="v4.3.0" + +#Cluster API version to use +CAPI_VERSION="v0.4.3" + +#Cluster API version to use +CAPM3_VERSION="v0.5.1" + +#The flux version to use +FLUX_VERSION="0.25.3" + +#The sops version to use +SOPS_VERSION="v3.7.1" + +#refered from onap +function call_api { + #Runs curl with passed flags and provides + #additional error handling and debug information + + #Function outputs server response body + #and performs validation of http_code + + local status + local curl_response_file="$(mktemp -p /tmp)" + local curl_common_flags=(-s -w "%{http_code}" -o "${curl_response_file}") + local command=(curl "${curl_common_flags[@]}" "$@") + + echo "[INFO] Running '${command[@]}'" >&2 + if ! status="$("${command[@]}")"; then + echo "[ERROR] Internal curl error! '$status'" >&2 + cat "${curl_response_file}" + rm "${curl_response_file}" + return 2 + else + echo "[INFO] Server replied with status: ${status}" >&2 + cat "${curl_response_file}" + rm "${curl_response_file}" + if [[ "${status:0:1}" =~ [45] ]]; then + return 1 + else + return 0 + fi + fi +} + +function list_nodes { + if [ ! -f "$NODES_FILE" ]; then + exit 1 + fi + + # The boot MAC address must be specified when a port is included + # in the IPMI driver address (i.e when using the VirtualBMC + # controller). Note that the below is a bit of a hack as it only + # checks the first entry in NODES_FILE for the port. + if cat "$NODES_FILE" | + jq -r '.nodes[0].ipmi_driver_info.address' | grep -c ':[0-9]\+$' >/dev/null; then + BOOT_LINK=$(cat "$NODES_FILE" | + jq -r '.nodes[0].net.links | map(.id=="provisioning_nic") | index(true)') + cat "$NODES_FILE" | + jq -r --argjson BOOT_LINK $BOOT_LINK '.nodes[] | [ + .name, + .ipmi_driver_info.username, + .ipmi_driver_info.password, + .ipmi_driver_info.address, + .net.links[$BOOT_LINK].ethernet_mac_address, + .os.username, + .os.password, + .os.image_name + ] | @csv' | + sed 's/"//g' + else + cat "$NODES_FILE" | + jq -r '.nodes[] | [ + .name, + .ipmi_driver_info.username, + .ipmi_driver_info.password, + .ipmi_driver_info.address, + "", + .os.username, + .os.password, + .os.image_name + ] | @csv' | + sed 's/"//g' + fi +} + +function node_userdata { + name="$1" + username="$2" + password="$3" + COMPUTE_NODE_FQDN="$name.akraino.icn.org" + + # validate that the user isn't expecting the deprecated + # COMPUTE_NODE_PASSWORD to be used + if [ "$password" != "${COMPUTE_NODE_PASSWORD:-$password}" ]; then + cat < ${BM_IMAGE}.md5sum + fi + popd + fi +}