lib.sh: Validate pdf/idf with pharos schema 43/52843/4
authorGuillermo Herrero <guillermo.herrero@enea.com>
Wed, 28 Feb 2018 15:30:19 +0000 (16:30 +0100)
committerGuillermo Herrero <guillermo.herrero@enea.com>
Wed, 28 Feb 2018 17:18:39 +0000 (18:18 +0100)
Run the pharos yaml schema validation for configuration files
before expanding them

JIRA: FUEL-341

Change-Id: Ia1d69f53265876683a1b6674665a9594ba7dae16
Signed-off-by: Guillermo Herrero <guillermo.herrero@enea.com>
mcp/scripts/lib.sh

index eb0ad88..c9159ff 100644 (file)
@@ -540,6 +540,9 @@ function do_templates() {
   PHAROS_GEN_CFG="./pharos/config/utils/generate_config.py"
   PHAROS_INSTALLER_ADAPTER="./pharos/config/installers/fuel/pod_config.yml.j2"
   PHAROS_INSTALLER_NETMAP="$(dirname "${PHAROS_INSTALLER_ADAPTER}")/net_map.j2"
+  PHAROS_VALIDATE_SCHEMA_SCRIPT="./pharos/config/utils/validate_schema.py"
+  PHAROS_SCHEMA_PDF="./pharos/config/pdf/pod1.schema.yaml"
+  PHAROS_SCHEMA_IDF="./pharos/config/pdf/idf-pod1.schema.yaml"
   BASE_CONFIG_PDF="${lab_config_uri}/labs/${target_lab}/${target_pod}.yaml"
   BASE_CONFIG_IDF="${lab_config_uri}/labs/${target_lab}/idf-${target_pod}.yaml"
   LOCAL_PDF="${image_dir}/$(basename "${BASE_CONFIG_PDF}")"
@@ -555,7 +558,18 @@ function do_templates() {
       notify_e "[ERROR] Could not retrieve PDF (Pod Descriptor File)!"
     elif ! curl -o "${LOCAL_IDF}" "${BASE_CONFIG_IDF}"; then
       notify_e "[ERROR] Could not retrieve IDF (Installer Descriptor File)!"
-    elif ! "${PHAROS_GEN_CFG}" -y "${LOCAL_PDF}" \
+    fi
+    # Check first if configuration files are valid
+    if [[ ! "$target_pod" =~ "virtual" ]]; then
+      if ! "${PHAROS_VALIDATE_SCHEMA_SCRIPT}" -y "${LOCAL_PDF}" \
+        -s "${PHAROS_SCHEMA_PDF}"; then
+        notify_e "[ERROR] PDF does not match yaml schema!\n" 1>&2
+      elif ! "${PHAROS_VALIDATE_SCHEMA_SCRIPT}" -y "${LOCAL_IDF}" \
+        -s "${PHAROS_SCHEMA_IDF}"; then
+        notify_e "[ERROR] IDF does not match yaml schema!\n" 1>&2
+      fi
+    fi
+    if ! "${PHAROS_GEN_CFG}" -y "${LOCAL_PDF}" \
         -j "${PHAROS_INSTALLER_ADAPTER}" > "${image_dir}/pod_config.yml"; then
       notify_e "[ERROR] Could not convert PDF+IDF to reclass model input!"
     fi