X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=env%2Flib%2Fcommon.sh;h=7a91208d06cdf94e86f88fad747f663ab432cd28;hb=818ebd97b869309fefa0cc102ab0a9f067f9a51d;hp=ad8a2564ec3a56f65c3acd0138ed7b1d5cc7a582;hpb=99ab423be0ac03c1c23e1129a96b75b3ce7269ce;p=icn.git diff --git a/env/lib/common.sh b/env/lib/common.sh index ad8a256..7a91208 100755 --- a/env/lib/common.sh +++ b/env/lib/common.sh @@ -1,59 +1,55 @@ #!/usr/bin/env bash set -eu -o pipefail -#supported OS version -UBUNTU_BIONIC=${UBUNTU_BIONIC:-Ubuntu 18.04.2 LTS} - -#offline mode variable -DOWNLOAD_PATH=${DOWNLOAD_PATH:-/opt/icn} -LOCAL_APT_REPO=${LOCAL_APT_REPO:-$DOWNLOAD_PATH/apt} -PIP_CACHE_DIR=${PIP_CACHE_DIR:-$DOWNLOAD_PATH/pip-cache-dir} -BUILD_DIR=${BUILD_DIR:-$DOWNLOAD_PATH/build-dir} -CONTAINER_IMAGES_DIR=${CONTAINER_IMAGES_DIR:-$DOWNLOAD_PATH/docker-dir} - -#set variables -#Todo include over all variables here -KUBE_VERSION=${KUBE_VERSION:-"v1.15.0"} -POD_NETWORK_CIDR=${POD_NETWORK_CIDR:-"10.244.0.0/16"} -PODMAN_CNI_CONFLIST=${PODMAN_CNI_CONFLIST:-"https://raw.githubusercontent.com/containers/libpod/v1.4.4/cni/87-podman-bridge.conflist"} - -#Bootstrap K8s cluster -BS_DHCP_INTERFACE=${BS_DHCP_INTERFACE:-} -BS_DHCP_INTERFACE_IP=${BS_DHCP_INTERFACE_IP:-} -BS_DHCP_DIR=${BS_DHCP_DIR:-$DOWNLOAD_PATH/dhcp} - -#User Provider Network configuration -PROVIDER_NETWORK_GATEWAY=${PROVIDER_NETWORK_GATEWAY:-} -PROVIDER_NETWORK_DNS=${PROVIDER_NETWORK_DNS:-} - -#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_BAREMETAL_SOCAT_IMAGE=${IRONIC_BAREMETAL_SOCAT_IMAGE:-"alpine/socat:latest"} - 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"} -IRONIC_IPMI_INTERFACE_IP=${IRONIC_IPMI_INTERFACE_IP:-} -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"} -#Path to clone the metal3 dev env repo -M3PATH="$(go env GOPATH)/src/github.com/metal3-io" -#Path to clone the baremetal operator repo -BMOPATH="${M3PATH}/baremetal-operator" #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 +#Path to clone the baremetal operator repo +BMOPATH="/opt/src/github.com/metal3-io/baremetal-operator" +#Bare Metal Operator version to use +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="ed96bca7fe415f1636d82c26af15d7474bdfe876" + +#EMCO repository URL +EMCOREPO="${EMCOREPO:-https://github.com/open-ness/EMCO.git}" +#Path to clone the EMCO repo +EMCOPATH="/opt/src/github.com/open-ness/EMCO" +#EMCO version to use +EMCO_VERSION="openness-21.03.06" + +#Discard existing repo directory FORCE_REPO_UPDATE="${FORCE_REPO_UPDATE:-true}" +# 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.20.0" + +#The sops version to use +SOPS_VERSION="v3.7.1" + #refered from onap function call_api { #Runs curl with passed flags and provides @@ -86,22 +82,244 @@ function call_api { } function list_nodes { - NODES_FILE="${IRONIC_DATA_DIR}/nodes.json" + 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 +}