b4dd5cf42c
This validation approach is no longer needed and less effective than static one, so it should be deleted to not consume additional time and resources during the validation process. Change-Id: I88603723d9a423955bd88d23e7b8e2a8275d9dde Signed-off-by: Ruslan Aliev <raliev@mirantis.com> Closes: #543
91 lines
3.1 KiB
Bash
Executable File
91 lines
3.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# The makefile entrypoint driver for document validation
|
|
# Expected to be run from the project root
|
|
set -xe
|
|
|
|
# The root of the manifest structure to be validated.
|
|
# This corresponds to the targetPath in an airshipctl config
|
|
: ${MANIFEST_ROOT:="$(dirname "${PWD}")"}
|
|
# The space-separated locations of sites whose manifests should be validated.
|
|
# These are relative to MANIFEST_ROOT above
|
|
: ${MANIFEST_PATH:="manifests/site"}
|
|
: ${SITE_ROOTS:="$(basename "${PWD}")/${MANIFEST_PATH}"}
|
|
: ${MANIFEST_REPO_URL:="https://review.opendev.org/airship/airshipctl"}
|
|
|
|
# Name of specific site to be validated
|
|
SITE_NAME=${SITE_NAME:-$1}
|
|
TMP=$(mktemp -d)
|
|
|
|
# TODO: use `airshipctl config` to do this once all the needed knobs are exposed
|
|
function generate_airshipconf() {
|
|
cat <<EOL >"${TMP}/$1.cfg"
|
|
apiVersion: airshipit.org/v1alpha1
|
|
contexts:
|
|
default_context:
|
|
manifest: default_manifest
|
|
managementConfiguration: default_mgmt_config
|
|
currentContext: default_context
|
|
kind: Config
|
|
managementConfiguration:
|
|
default_mgmt_config:
|
|
insecure: true
|
|
systemActionRetries: 30
|
|
systemRebootDelay: 30
|
|
type: redfish
|
|
manifests:
|
|
default_manifest:
|
|
phaseRepositoryName: primary
|
|
repositories:
|
|
primary:
|
|
checkout:
|
|
branch: master
|
|
commitHash: ""
|
|
force: false
|
|
tag: ""
|
|
url: ${MANIFEST_REPO_URL}
|
|
targetPath: ${MANIFEST_ROOT}
|
|
metadataPath: ${MANIFEST_PATH}/$1/metadata.yaml
|
|
EOL
|
|
}
|
|
|
|
for site_root in ${SITE_ROOTS}; do
|
|
for site in $(ls ${MANIFEST_ROOT}/${site_root}); do
|
|
# TODO (raliev) remove this condition later
|
|
# Temporary solution to disable validation for outdated sites, this list will be removed eventually
|
|
sites_to_skip=(az-test-site docker-test-site gcp-test-site openstack-test-site)
|
|
if [[ " ${sites_to_skip[@]} " =~ " ${site} " ]]; then
|
|
continue
|
|
fi
|
|
|
|
# Validate only specific site if set
|
|
if [ ! -z "$SITE_NAME" ] && [ "$site" != "$SITE_NAME" ]; then
|
|
continue
|
|
fi
|
|
|
|
echo -e "\nValidating site: ${MANIFEST_ROOT}/${site_root}/${site}\n****************"
|
|
generate_airshipconf $site
|
|
phase_plans=$(airshipctl --airshipconf "${TMP}/$site.cfg" plan list | awk -F'/' '/PhasePlan/ {print $2}' | awk '{print $1}')
|
|
for plan in $phase_plans; do
|
|
# Perform static validation, add support of all plans later
|
|
# TODO (raliev) remove this condition later
|
|
if [ "$plan" = "phasePlan" ]; then
|
|
airshipctl --airshipconf "${TMP}/$site.cfg" plan validate $plan
|
|
fi
|
|
echo "Validation of site ${site} is successful!"
|
|
done
|
|
done
|
|
done
|