From 965e897c71b378ee895d2ca6a00d0a892df6177e Mon Sep 17 00:00:00 2001 From: Delfino Curado Date: Mon, 8 Nov 2021 17:29:23 -0500 Subject: [PATCH] Add priority to repositories in base-image Now it's possible to add a priority for each repo through --repo-priority on command line and cfg file as well. This is need because of the usage of ceph mirror and to force the images to use ceph packages on that repo. Test plan: Docker images build succeeded. stx-openstack apply succeeded. Closes-Bug: #1949518 Signed-off-by: Delfino Curado Change-Id: I202904dccdd727a05bb4d621c4ad735f60221b81 --- .../base-image-build-centos-dev.cfg | 3 +- .../base-image-build-centos-stable.cfg | 3 +- .../build-docker-images/build-stx-base.sh | 50 ++++++++++++------- .../stx-centos/Dockerfile.dev | 2 + .../stx-centos/Dockerfile.stable | 2 + 5 files changed, 41 insertions(+), 19 deletions(-) diff --git a/build-tools/build-docker-images/base-image-build-centos-dev.cfg b/build-tools/build-docker-images/base-image-build-centos-dev.cfg index 9ad98ff2..a08f1a2c 100644 --- a/build-tools/build-docker-images/base-image-build-centos-dev.cfg +++ b/build-tools/build-docker-images/base-image-build-centos-dev.cfg @@ -1,2 +1,3 @@ -repo=ussuri-ceph,http://mirror.starlingx.cengn.ca:80/mirror/centos/download.ceph.com/rpm-mimic/el7/x86_64/ +repo=ussuri-ceph,http://mirror.starlingx.cengn.ca/mirror/centos/download.ceph.com/rpm-nautilus/el7/x86_64/ +repo-priority=ussuri-ceph,1 repo=ussuri-wsgi,http://mirror.starlingx.cengn.ca:80/mirror/centos/centos/mirror.centos.org/centos/7/sclo/x86_64/rh/ diff --git a/build-tools/build-docker-images/base-image-build-centos-stable.cfg b/build-tools/build-docker-images/base-image-build-centos-stable.cfg index 9ad98ff2..a08f1a2c 100644 --- a/build-tools/build-docker-images/base-image-build-centos-stable.cfg +++ b/build-tools/build-docker-images/base-image-build-centos-stable.cfg @@ -1,2 +1,3 @@ -repo=ussuri-ceph,http://mirror.starlingx.cengn.ca:80/mirror/centos/download.ceph.com/rpm-mimic/el7/x86_64/ +repo=ussuri-ceph,http://mirror.starlingx.cengn.ca/mirror/centos/download.ceph.com/rpm-nautilus/el7/x86_64/ +repo-priority=ussuri-ceph,1 repo=ussuri-wsgi,http://mirror.starlingx.cengn.ca:80/mirror/centos/centos/mirror.centos.org/centos/7/sclo/x86_64/rh/ diff --git a/build-tools/build-docker-images/build-stx-base.sh b/build-tools/build-docker-images/build-stx-base.sh index a3cbe6bc..82c252cd 100755 --- a/build-tools/build-docker-images/build-stx-base.sh +++ b/build-tools/build-docker-images/build-stx-base.sh @@ -37,6 +37,7 @@ TAG_LATEST=no LATEST_TAG=latest HOST=${HOSTNAME} declare -i MAX_ATTEMPTS=1 +declare -A REPO_PRIORITY_LIST function usage { cat >&2 <: - --latest: Add a 'latest' tag when pushing - --latest-tag: Use the provided tag when pushing latest. - --user: Docker repo userid - --registry: Docker registry - --clean: Remove image(s) from local registry - --hostname: build repo host - --attempts: Max attempts, in case of failure (default: 1) - --config-file:Specify a path to a config file which will specify additional arguments to be passed into the command + --os: Specify base OS (valid options: ${SUPPORTED_OS_ARGS[@]}) + --os-version: Specify OS version + --version: Specify version for output image + --stream: Build stream, stable or dev (default: stable) + --repo: Software repository (Format: name,baseurl), can be specified multiple times + --repo-priority: Define priority for added repo (Format: name,priority). The priority must be an integer from 1 to 99 (The default is 99). The lowest number have the highest priority. + --local: Use local build for software repository (cannot be used with --repo) + --push: Push to docker repo + --proxy: Set proxy : + --latest: Add a 'latest' tag when pushing + --latest-tag: Use the provided tag when pushing latest. + --user: Docker repo userid + --registry: Docker registry + --clean: Remove image(s) from local registry + --hostname: build repo host + --attempts: Max attempts, in case of failure (default: 1) + --config-file: Specify a path to a config file which will specify additional arguments to be passed into the command EOF } @@ -98,11 +100,15 @@ function get_args_from_file { repo) REPO_LIST+=(${config_items[1]}) ;; + repo-priority) + priority_value=(${config_items[1]//,/ }) + REPO_PRIORITY_LIST[${priority_value[0]}]=${priority_value[1]} + ;; esac done } -OPTS=$(getopt -o h -l help,os:,os-version:,version:,stream:,release:,repo:,push,proxy:,latest,latest-tag:,user:,registry:,local,clean,hostname:,attempts:,config-file: -- "$@") +OPTS=$(getopt -o h -l help,os:,os-version:,version:,stream:,release:,repo:,repo-priority:,push,proxy:,latest,latest-tag:,user:,registry:,local,clean,hostname:,attempts:,config-file: -- "$@") if [ $? -ne 0 ]; then usage exit 1 @@ -186,6 +192,11 @@ while true; do CONFIG_FILE=$2 shift 2 ;; + --repo-priority) + priority_value=(${2//,/ }) + REPO_PRIORITY_LIST[${priority_value[0]}]=${priority_value[1]} + shift 2 + ;; -h | --help ) usage exit 1 @@ -267,6 +278,10 @@ STX_REPO_FILE=${BUILDDIR}/stx.repo for repo in ${REPO_LIST[@]}; do repo_name=$(echo $repo | awk -F, '{print $1}') repo_baseurl=$(echo $repo | awk -F, '{print $2}') + priority='' + if [[ ! -z "${REPO_PRIORITY_LIST[$repo_name]}" ]] ; then + priority="priority=${REPO_PRIORITY_LIST[$repo_name]}" + fi if [ -z "${repo_name}" -o -z "${repo_baseurl}" ]; then echo "Invalid repo specified: ${repo}" >&2 @@ -282,6 +297,7 @@ enabled=1 gpgcheck=0 skip_if_unavailable=1 metadata_expire=0 +${priority} EOF diff --git a/build-tools/build-docker-images/stx-centos/Dockerfile.dev b/build-tools/build-docker-images/stx-centos/Dockerfile.dev index af30a6b6..64c55f5f 100644 --- a/build-tools/build-docker-images/stx-centos/Dockerfile.dev +++ b/build-tools/build-docker-images/stx-centos/Dockerfile.dev @@ -6,6 +6,8 @@ FROM centos:${RELEASE} RUN set -ex ;\ sed -i '/\[main\]/ atimeout=120' /etc/yum.conf ;\ + yum install --disablerepo=* ${REPO_OPTS} -y \ + yum-priorities ;\ yum install -y centos-release-openstack-stein ;\ rm -rf \ /var/log/* \ diff --git a/build-tools/build-docker-images/stx-centos/Dockerfile.stable b/build-tools/build-docker-images/stx-centos/Dockerfile.stable index b30f615a..3716ee19 100644 --- a/build-tools/build-docker-images/stx-centos/Dockerfile.stable +++ b/build-tools/build-docker-images/stx-centos/Dockerfile.stable @@ -14,6 +14,8 @@ RUN set -ex ;\ sed -i '/\[main\]/ atimeout=120' /etc/yum.conf ;\ mv /stx.repo /etc/yum.repos.d/ ;\ yum upgrade --disablerepo=* ${REPO_OPTS} -y ;\ + yum install --disablerepo=* ${REPO_OPTS} -y \ + yum-priorities ;\ yum install --disablerepo=* ${REPO_OPTS} -y \ qemu-img \ openssh-clients \