airshipctl/tools/validate_docs
Ruslan Aliev b4dd5cf42c Remove Kind-based validation with dry-run of phases
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
2021-05-13 16:45:26 -05:00

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