MAAS helm test improvement
- Add an improved helm test for MaaS to validate that there are available images for bootstrapping and that at least one rack controller is available - Improve idempotence of the import images job for more resilient chart upgrades Change-Id: Id1b07981f13636fcd3b5b1d0bf5fb2ce0f3e5216
This commit is contained in:
parent
9ea2358c7f
commit
57e8557eb1
|
@ -23,6 +23,14 @@ JOB_TIMEOUT=${JOB_TIMEOUT:-900}
|
||||||
RETRY_TIMER=${RETRY_TIMER:-30}
|
RETRY_TIMER=${RETRY_TIMER:-30}
|
||||||
|
|
||||||
function start_import {
|
function start_import {
|
||||||
|
check_for_download
|
||||||
|
|
||||||
|
if [[ $? -eq 0 ]]
|
||||||
|
then
|
||||||
|
echo "Already have images, skipping import."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
while [[ ${import_tries} -lt $TRY_LIMIT ]]
|
while [[ ${import_tries} -lt $TRY_LIMIT ]]
|
||||||
do
|
do
|
||||||
import_tries=$(($import_tries + 1))
|
import_tries=$(($import_tries + 1))
|
||||||
|
@ -62,27 +70,45 @@ function check_for_download {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function check_then_set {
|
||||||
|
option=$1
|
||||||
|
value=$2
|
||||||
|
|
||||||
|
cur_val=$(maas ${ADMIN_USERNAME} maas get-config name=${option} | tail -1 | tr -d '"')
|
||||||
|
desired_val=$(echo ${value} | tr -d '"')
|
||||||
|
|
||||||
|
if [[ $cur_val != $desired_val ]]
|
||||||
|
then
|
||||||
|
echo "Setting MAAS option ${option} to ${desired_val}"
|
||||||
|
maas ${ADMIN_USERNAME} maas set-config name=${option} value=${desired_val}
|
||||||
|
return $?
|
||||||
|
else
|
||||||
|
echo "MAAS option ${option} already set to ${cur_val}"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function configure_proxy {
|
function configure_proxy {
|
||||||
maas ${ADMIN_USERNAME} maas set-config name=enable_http_proxy value=${MAAS_PROXY_ENABLED}
|
check_then_set enable_http_proxy ${MAAS_PROXY_ENABLED}
|
||||||
maas ${ADMIN_USERNAME} maas set-config name=use_peer_proxy value=${MAAS_PEER_PROXY_ENABLED}
|
check_then_set use_peer_proxy ${MAAS_PEER_PROXY_ENABLED}
|
||||||
maas ${ADMIN_USERNAME} maas set-config name=http_proxy value=${MAAS_PROXY_SERVER}
|
check_then_set http_proxy ${MAAS_PROXY_SERVER}
|
||||||
}
|
}
|
||||||
|
|
||||||
function configure_ntp {
|
function configure_ntp {
|
||||||
maas ${ADMIN_USERNAME} maas set-config name=ntp_servers value=${MAAS_NTP_SERVERS}
|
check_then_set ntp_servers ${MAAS_NTP_SERVERS}
|
||||||
maas ${ADMIN_USERNAME} maas set-config name=ntp_external_only value=${MAAS_NTP_EXTERNAL_ONLY}
|
check_then_set ntp_external_only ${MAAS_NTP_EXTERNAL_ONLY}
|
||||||
}
|
}
|
||||||
|
|
||||||
function configure_dns {
|
function configure_dns {
|
||||||
maas ${ADMIN_USERNAME} maas set-config name=dnssec_validation value=${MAAS_DNS_DNSSEC_REQUIRED}
|
check_then_set dnssec_validation ${MAAS_DNS_DNSSEC_REQUIRED}
|
||||||
maas ${ADMIN_USERNAME} maas set-config name=upstream_dns value=${MAAS_DNS_SERVERS}
|
check_then_set upstream_dns ${MAAS_DNS_SERVERS}
|
||||||
}
|
}
|
||||||
|
|
||||||
function configure_images {
|
function configure_images {
|
||||||
maas ${ADMIN_USERNAME} maas set-config name=default_osystem value=${MAAS_DEFAULT_OS}
|
check_then_set default_osystem ${MAAS_DEFAULT_OS}
|
||||||
maas ${ADMIN_USERNAME} maas set-config name=commissioning_distro_series value=${MAAS_DEFAULT_DISTRO}
|
check_then_set commissioning_distro_series ${MAAS_DEFAULT_DISTRO}
|
||||||
maas ${ADMIN_USERNAME} maas set-config name=default_distro_series value=${MAAS_DEFAULT_DISTRO}
|
check_then_set default_distro_series ${MAAS_DEFAULT_DISTRO}
|
||||||
maas ${ADMIN_USERNAME} maas set-config name=default_min_hwe_kernel value=${MAAS_DEFAULT_KERNEL}
|
check_then_set default_min_hwe_kernel ${MAAS_DEFAULT_KERNEL}
|
||||||
}
|
}
|
||||||
|
|
||||||
function configure_boot_sources {
|
function configure_boot_sources {
|
||||||
|
@ -90,7 +116,7 @@ function configure_boot_sources {
|
||||||
then
|
then
|
||||||
maas ${ADMIN_USERNAME} boot-source update 1 url=http://localhost:8888/maas/images/ephemeral-v3/daily/
|
maas ${ADMIN_USERNAME} boot-source update 1 url=http://localhost:8888/maas/images/ephemeral-v3/daily/
|
||||||
fi
|
fi
|
||||||
maas ${ADMIN_USERNAME} maas set-config name=http_boot value=${MAAS_HTTP_BOOT}
|
check_then_set http_boot ${MAAS_HTTP_BOOT}
|
||||||
}
|
}
|
||||||
|
|
||||||
KEY=$(maas-region apikey --username=${ADMIN_USERNAME})
|
KEY=$(maas-region apikey --username=${ADMIN_USERNAME})
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
{{/*
|
{{/*
|
||||||
# Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
|
# Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
|
||||||
#
|
#
|
||||||
|
@ -16,5 +17,62 @@
|
||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
maas login local ${MAAS_URL} $MAAS_API_KEY
|
function check_boot_images {
|
||||||
echo $?
|
if maas local boot-resources is-importing | grep -q 'true';
|
||||||
|
then
|
||||||
|
echo -e '\nBoot resources currently importing\n'
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
synced_imgs=$(maas local boot-resources read | tr -d '\n' | grep -oE '{[^}]+}' | grep ubuntu | grep -c Synced)
|
||||||
|
if [[ $synced_imgs -gt 0 ]]
|
||||||
|
then
|
||||||
|
echo 'Boot resources have completed importing'
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_rack_controllers {
|
||||||
|
rack_cnt=$(maas local rack-controllers read | grep -c hostname)
|
||||||
|
if [[ $rack_cnt -gt 0 ]]
|
||||||
|
then
|
||||||
|
echo "Found $rack_cnt rack controllers."
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function establish_session {
|
||||||
|
maas login local ${MAAS_URL} ${MAAS_API_KEY}
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
establish_session
|
||||||
|
|
||||||
|
if [[ $? -ne 0 ]]
|
||||||
|
then
|
||||||
|
echo "MAAS API login FAILED!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
check_boot_images
|
||||||
|
|
||||||
|
if [[ $? -eq 1 ]]
|
||||||
|
then
|
||||||
|
echo "Image import test FAILED!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
check_rack_controllers
|
||||||
|
|
||||||
|
if [[ $? -eq 1 ]]
|
||||||
|
then
|
||||||
|
echo "Rack controller query FAILED!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "MAAS Validation SUCCESS!"
|
||||||
|
exit 0
|
||||||
|
|
|
@ -13,7 +13,8 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License. */}}
|
# limitations under the License. */}}
|
||||||
{{/*
|
{{/*
|
||||||
Test that the API is up and can be logged into */}}
|
Test that the API is up and can be logged into
|
||||||
|
and that an boot image and rack controller are available*/}}
|
||||||
{{- if .Values.manifests.test_maas_api }}
|
{{- if .Values.manifests.test_maas_api }}
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
Loading…
Reference in New Issue