Skip to content

Commit 488ad0d

Browse files
committed
[Airgap] fix channel extraction for 1.7 version
Signed-off-by: Loic Devulder <ldevulder@suse.com>
1 parent b7f7089 commit 488ad0d

1 file changed

Lines changed: 40 additions & 28 deletions

File tree

scripts/elemental-airgap.sh

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ get_chart_val() {
207207
local local_fail=${3:-"true"}
208208
local local_condition="[[ \"\$$local_var\" == \"null\" ]]"
209209

210-
eval $local_var=$(helm show values $CHART_NAME_OPERATOR | eval yq eval '.${local_val}' | sed s/\"//g 2>&1)
210+
eval $local_var='$(helm show values $CHART_NAME_OPERATOR | eval yq eval '.${local_val}' | sed s/\"//g 2>&1)'
211211
if eval $local_condition; then
212212
if [[ "$local_fail" == "false" ]]; then
213213
log_debug "cannot find $local_val in $CHART_NAME_OPERATOR"
@@ -357,7 +357,7 @@ pull_image() {
357357

358358
build_os_channel() {
359359
local channel_img
360-
local channel_tag
360+
local channel_tag="latest"
361361
local channel_repo
362362
local channel_list
363363

@@ -367,33 +367,45 @@ build_os_channel() {
367367
CHANNEL_IMAGE_NAME="rancher/elemental-channel-${LOCAL_REGISTRY%:*}"
368368
fi
369369

370-
# channel.repository was changed to channel.image around 1.4 - 1.5 versions
371-
# channel.image contains the full URL (with registry) while channel.repository not (full URL by prepending with registryUrl)
372-
# example, full image URL: registry.suse.com/rancher/elemental-channel
373-
# - operator < v1.4
374-
# . channel.repository = "rancher/elemental-channel"
375-
# . registryUrl = "registry.suse.com"
376-
# - operator > v1.4
377-
# . channel.image = "registry.suse.com/rancher/elemental-channel"
378-
#
379-
# we want in channel_img the full image URL for both cases
380-
get_chart_val channel_img "channel.image" "false"
381-
382-
if [[ -z "$channel_img" ]]; then
383-
# legacy chart
384-
get_chart_val channel_img "channel.repository"
385-
get_chart_val channel_repo "registryUrl"
386-
channel_img=${channel_repo}/${channel_img}
387-
CHANNEL_IMAGE_VAR="channel.repository"
388-
CHANNEL_IMAGE_VAL=${CHANNEL_IMAGE_NAME}
370+
# defaultChannels has been introduced in 1.7 version
371+
# we can directly add the images in channel_list
372+
get_chart_val channel_list "defaultChannels.*.image" "false"
373+
374+
if [[ -z "$channel_list" ]]; then
375+
# v1.4+ chart
376+
#
377+
# channel.repository was changed to channel.image around 1.4 - 1.5 versions
378+
# channel.image contains the full URL (with registry) while channel.repository not (full URL by prepending with registryUrl)
379+
# example, full image URL: registry.suse.com/rancher/elemental-channel
380+
# - operator < v1.4
381+
# . channel.repository = "rancher/elemental-channel"
382+
# . registryUrl = "registry.suse.com"
383+
# - operator > v1.4
384+
# . channel.image = "registry.suse.com/rancher/elemental-channel"
385+
#
386+
# we want in channel_img the full image URL for both cases
387+
get_chart_val channel_img "channel.image" "false"
388+
389+
if [[ -z "$channel_img" ]]; then
390+
# legacy chart
391+
get_chart_val channel_img "channel.repository"
392+
get_chart_val channel_repo "registryUrl"
393+
channel_img=${channel_repo}/${channel_img}
394+
CHANNEL_IMAGE_VAR="channel.repository"
395+
CHANNEL_IMAGE_VAL=${CHANNEL_IMAGE_NAME}
396+
else
397+
CHANNEL_IMAGE_VAR="channel.image"
398+
CHANNEL_IMAGE_VAL=${LOCAL_REGISTRY}/${CHANNEL_IMAGE_NAME}
399+
fi
400+
401+
get_chart_val channel_tag "channel.tag"
402+
channel_list+="${channel_img}:${channel_tag} "
389403
else
404+
# This defined the local channel image
390405
CHANNEL_IMAGE_VAR="channel.image"
391406
CHANNEL_IMAGE_VAL=${LOCAL_REGISTRY}/${CHANNEL_IMAGE_NAME}
392407
fi
393408

394-
get_chart_val channel_tag "channel.tag"
395-
channel_list+="${channel_img}:${channel_tag} "
396-
397409
# we can have OS channels added in templates, so we have to sync them if needed
398410
if [[ "$ALL_CHANNELS" == "true" ]]; then
399411
# get all ManagedOSVersionChannel, so the already extracted one is in, we can overwrite channel_list
@@ -413,13 +425,13 @@ build_os_channel() {
413425

414426
# loop on the channel list
415427
for channel in ${channel_list}; do
416-
channel_img=${channel%:*}
417-
channel_tag=${channel#*:}
428+
local_channel_img=${channel%:*}
429+
local_channel_tag=${channel#*:}
418430

419-
log_info "Found channel image: ${channel_img}:${channel_tag}"
431+
log_info "Found channel image: ${local_channel_img}:${local_channel_tag}"
420432

421433
# extract the channel.json
422-
if ! docker run --entrypoint busybox ${channel_img}:${channel_tag} cat channel.json > channel_${channel_img//\//_}.json; then
434+
if ! docker run --entrypoint busybox ${local_channel_img}:${local_channel_tag} cat channel.json > channel_${local_channel_img//\//_}_${local_channel_tag}.json; then
423435
exit_error "cannot extract OS images"
424436
fi
425437
done

0 commit comments

Comments
 (0)