Update local kitchen-salt, model validation scripts
Change-Id: I98883734817044e8aa599d745ca6c57af2d1b999
diff --git a/.kitchen-verify.sh b/.kitchen-verify.sh
new file mode 100755
index 0000000..8db3819
--- /dev/null
+++ b/.kitchen-verify.sh
@@ -0,0 +1,82 @@
+#!/bin/bash
+
+## -----------------------------------------------------------------------------
+# PREREQ
+if [ -e /tmp/kitchen ]; then
+ rsync -avh --force --exclude "**/.kitchen" /tmp/kitchen/ /srv/salt/reclass
+fi
+source /srv/salt/bootstrap.sh
+source_local_envs
+
+# FULL BOOTSTRAP
+# make sure everything is set-up and exactly as in the model
+if [[ $BOOTSTRAP =~ ^(True|true|1|yes)$ ]]; then
+ cd /srv/salt/reclass
+ if [[ -e .gitmodules ]] && [[ ! -e classes/system/linux ]]; then
+ git submodule update --init --recursive --remote || true
+ fi
+ /srv/salt/bootstrap.sh &&\
+ if [[ -e /tmp/kitchen ]]; then sed -i '/BOOTSTRAP=/d' /kitchen.env; fi || exit 1
+else
+# JUST CONFIGURE AND START SALT-MASTER
+# minimal setup to speed up, good-enough for model validation
+ mkdir -p /srv/salt/reclass/nodes/_generated;
+ cat <<-EOF > /srv/salt/reclass/nodes/_generated/cfg01.$CLUSTER_NAME.local.yml
+ classes:
+ - cluster.$CLUSTER_NAME.infra.config
+ parameters:
+ _param:
+ linux_system_codename: xenial
+ reclass_data_revision:
+ reclass_data_repository:
+ cluster_name: $CLUSTER_NAME
+ cluster_domain: local
+ linux:
+ system:
+ name: cfg01
+ domain: $CLUSTER_NAME.local
+ reclass:
+ storage:
+ data_source:
+ engine: local
+ EOF
+# RECLASS PREREQUISITES
+# remove lock if you need (re)configure salt-master, reclass 2nd time
+ if [ ! -e /tmp/.reclass-prerequisite-once.lock ]; then
+ # link services (subject of future changes)
+ if [ ! -e /srv/salt/reclass/classes/service -a -e /usr/share/salt-formulas/reclass/service ]; then
+ rm -rf /srv/salt/reclass/classes/service || true;
+ ln -sf /usr/share/salt-formulas/reclass/service /srv/salt/reclass/classes
+ fi &&\
+ # reload
+ service salt-master force-reload &&\
+ service salt-minion force-reload &&\
+ retry salt-call saltutil.sync_all &&\
+ # generate static nodes
+ PILLAR='{"reclass":{"storage":{"data_source":{"engine":"local"}}} }' &&\
+ salt-call state.apply reclass.storage.node pillar="$PILLAR" &&\
+ # generate/mockup dynamic nodes (uses fn from bootstrap.sh)
+ mockup_node_registration &&\
+ touch /tmp/.salt-services-reload-once.lock || exit 1
+ fi
+fi
+
+
+
+## -----------------------------------------------------------------------------
+## VERIFY MASTER AND MINIONS
+
+if [[ ! -e /tmp/.verify-prerequisite-once.lock && ! $RECLASS_IGNORE_CLASS_NOTFOUND =~ ^(True|true|1|yes)$ ]]; then
+ sed -i 's/ignore_class_notfound:\s*True.*/ignore_class_notfound: False/' /etc/salt/master.d/reclass.conf
+ sed -i 's/ignore_class_notfound:\s*True.*/ignore_class_notfound: False/' /etc/reclass/reclass-config.yml
+ service salt-master force-reload
+ retry salt-call test.ping
+fi
+
+cd /srv/salt/reclass &&\
+if [[ -z "$1" ]] ; then
+ verify_salt_master &&\
+ verify_salt_minions
+else
+ verify_salt_minion "$1"
+fi