X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=env%2Flib%2Fcommon.sh;h=af54d237462701ba9e1b890412093350c493b114;hb=00ee6025d0bcd56f5a55f06c76c97cc864534b20;hp=9ac1431a3036409bff762a4f8ec7132387d44cb0;hpb=fb8a0fe0cb2c32037ec16ad2b377aa63a42b114a;p=icn.git diff --git a/env/lib/common.sh b/env/lib/common.sh index 9ac1431..af54d23 100755 --- a/env/lib/common.sh +++ b/env/lib/common.sh @@ -1,29 +1,55 @@ #!/usr/bin/env bash set -eu -o pipefail -DOWNLOAD_PATH=${DOWNLOAD_PATH:-/opt/icn} - -#Ironic variables -IRONIC_IMAGE=${IRONIC_IMAGE:-"integratedcloudnative/ironic:v1.0-icn"} -IRONIC_INSPECTOR_IMAGE=${IRONIC_INSPECTOR_IMAGE:-"integratedcloudnative/ironic-inspector:v1.0-icn"} -IRONIC_BAREMETAL_IMAGE=${IRONIC_BAREMETAL_IMAGE:-"integratedcloudnative/baremetal-operator:v2.0-icn"} -IPA_DOWNLOADER_IMAGE=${IPA_DOWNLOADER_IMAGE:-"integratedcloudnative/ironic-ipa-downloader:v1.0-icn"} - 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_IPMI_INTERFACE=${IRONIC_IPMI_INTERFACE:-} IRONIC_PROVISIONING_INTERFACE_IP=${IRONIC_PROVISIONING_INTERFACE_IP:-"172.22.0.1"} -BM_IMAGE_URL=${BM_IMAGE_URL:-"https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img"} -BM_IMAGE=${BM_IMAGE:-"bionic-server-cloudimg-amd64.img"} +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}" -#Baremetal operator repository branch to checkout -BMOBRANCH="${BMOBRANCH:-10eb5aa3e614d0fdc6315026ebab061cbae6b929}" -#Discard existing baremetal operator repo directory -FORCE_REPO_UPDATE="${FORCE_REPO_UPDATE:-true}" +#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 { @@ -57,33 +83,210 @@ function call_api { } function list_nodes { - NODES_FILE="${IRONIC_DATA_DIR}/nodes.json" - if [ ! -f "$NODES_FILE" ]; then exit 1 fi - 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' + # 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_networkdata { +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 }