set new model url in model
We are not longer using salt-models/training and all models should be
updated to salt-models/mcp-virtual-lab
Change-Id: Ie49ff2fe216eae2e533b68502d2bc206cea506e0
diff --git a/classes/cluster/virtual-mcp05-dvr/infra/config.yml b/classes/cluster/virtual-mcp05-dvr/infra/config.yml
index 464f3b6..1626f1a 100644
--- a/classes/cluster/virtual-mcp05-dvr/infra/config.yml
+++ b/classes/cluster/virtual-mcp05-dvr/infra/config.yml
@@ -23,7 +23,7 @@
- cluster.virtual-mcp05-dvr
parameters:
_param:
- reclass_data_repository: https://gerrit.mcp.mirantis.net/salt-models/training
+ reclass_data_repository: https://gerrit.mcp.mirantis.net/salt-models/mcp-virtual-lab
reclass_data_revision: master
salt_master_environment_repository: "https://github.com/tcpcloud"
salt_master_environment_revision: master
diff --git a/classes/cluster/virtual-mcp05-ovs/infra/config.yml b/classes/cluster/virtual-mcp05-ovs/infra/config.yml
index 2e5a1f5..231babf 100644
--- a/classes/cluster/virtual-mcp05-ovs/infra/config.yml
+++ b/classes/cluster/virtual-mcp05-ovs/infra/config.yml
@@ -23,7 +23,7 @@
- cluster.virtual-mcp05-ovs
parameters:
_param:
- reclass_data_repository: https://gerrit.mcp.mirantis.net/salt-models/training
+ reclass_data_repository: https://gerrit.mcp.mirantis.net/salt-models/mcp-virtual-lab
reclass_data_revision: master
salt_master_environment_repository: "https://github.com/tcpcloud"
salt_master_environment_revision: master
diff --git a/classes/cluster/virtual-mcp10-contrail/infra/config.yml b/classes/cluster/virtual-mcp10-contrail/infra/config.yml
index 832514d..6563a6b 100755
--- a/classes/cluster/virtual-mcp10-contrail/infra/config.yml
+++ b/classes/cluster/virtual-mcp10-contrail/infra/config.yml
@@ -24,7 +24,7 @@
- cluster.virtual-mcp10-contrail
parameters:
_param:
- reclass_data_repository: "https://gerrit.mcp.mirantis.net/salt-models/training"
+ reclass_data_repository: "https://gerrit.mcp.mirantis.net/salt-models/mcp-virtual-lab"
reclass_data_revision: master
reclass_config_master: 192.168.10.100
single_address: 172.16.10.100
diff --git a/classes/cluster/virtual-mcp10-dvr/infra/config.yml b/classes/cluster/virtual-mcp10-dvr/infra/config.yml
index e2fe62e..4c09279 100644
--- a/classes/cluster/virtual-mcp10-dvr/infra/config.yml
+++ b/classes/cluster/virtual-mcp10-dvr/infra/config.yml
@@ -23,7 +23,7 @@
- cluster.virtual-mcp10-dvr
parameters:
_param:
- reclass_data_repository: https://gerrit.mcp.mirantis.net/salt-models/training
+ reclass_data_repository: https://gerrit.mcp.mirantis.net/salt-models/mcp-virtual-lab
reclass_data_revision: master
salt_master_environment_repository: "https://github.com/tcpcloud"
salt_master_environment_revision: master
diff --git a/classes/cluster/virtual-mcp10-ovs/infra/config.yml b/classes/cluster/virtual-mcp10-ovs/infra/config.yml
index 3d0c87e..951ba2b 100644
--- a/classes/cluster/virtual-mcp10-ovs/infra/config.yml
+++ b/classes/cluster/virtual-mcp10-ovs/infra/config.yml
@@ -23,7 +23,7 @@
- cluster.virtual-mcp10-ovs
parameters:
_param:
- reclass_data_repository: https://gerrit.mcp.mirantis.net/salt-models/training
+ reclass_data_repository: https://gerrit.mcp.mirantis.net/salt-models/mcp-virtual-lab
reclass_data_revision: master
salt_master_environment_repository: "https://github.com/tcpcloud"
salt_master_environment_revision: master
diff --git a/scripts/test_reclass.sh b/scripts/test_reclass.sh
new file mode 100755
index 0000000..9ea80ec
--- /dev/null
+++ b/scripts/test_reclass.sh
@@ -0,0 +1,157 @@
+#!/usr/bin/env bash
+
+set -e
+if [[ $DEBUG =~ ^(True|true|1|yes)$ ]]; then
+ set -x
+fi
+
+## Overrideable options
+DOCKER_IMAGE=${DOCKER_IMAGE:-"ubuntu:16.04"}
+DIST=${DIST:-xenial}
+RECLASS_ROOT=${RECLASS_ROOT:-$(pwd)}
+SALT_OPTS="${SALT_OPTS} --retcode-passthrough --force-color"
+DOCKER_OPTS="${DOCKER_OPTS} -e DEBIAN_FRONTEND=noninteractive"
+SKIP_CLEANUP=${SKIP_CLEANUP:-0}
+
+declare -a CONTAINERS
+
+## Functions
+log_info() {
+ echo "[INFO] $*"
+}
+
+log_err() {
+ echo "[ERROR] $*" >&2
+}
+
+docker_exec() {
+ if [[ $DETACH =~ ^(True|true|1|yes)$ ]]; then
+ exec_opts="-d"
+ else
+ exec_opts=""
+ fi
+
+ docker exec ${exec_opts} ${CONTAINER} /bin/bash -c "$*"
+}
+
+_atexit() {
+ RETVAL=$?
+ trap true INT TERM EXIT
+ if [ $SKIP_CLEANUP -eq 1 ]; then
+ return $RETVAL
+ fi
+
+ log_info "Cleaning up"
+
+ for container in ${CONTAINERS[@]}; do
+ CONTAINER=$container docker_exec "chown -R $(id -u):$(id -g) /srv/salt/reclass" || true
+ docker rm -f $container >/dev/null || true
+ done
+
+ if [ $RETVAL -ne 0 ]; then
+ log_err "Execution failed"
+ else
+ log_info "Execution successful"
+ fi
+
+ return $RETVAL
+}
+
+run_container() {
+ MASTER_HOSTNAME=$1
+ CONTAINER=$(docker run ${DOCKER_OPTS} --name ${MASTER_HOSTNAME} -h $(echo ${MASTER_HOSTNAME}|cut -d . -f 1) -v ${RECLASS_ROOT}:/srv/salt/reclass -i -t -d ${DOCKER_IMAGE})
+ echo $CONTAINER
+}
+
+test_master() {
+ MASTER_HOSTNAME=$1
+ log_info "Installing packages"
+ docker_exec "which wget >/dev/null || (apt-get update; apt-get install -y wget)"
+ docker_exec "echo 'deb [arch=amd64] http://apt-mk.mirantis.com/${DIST}/ nightly salt salt-latest' > /etc/apt/sources.list.d/apt-mk.list"
+ docker_exec "wget -O - http://apt-mk.mirantis.com/public.gpg | apt-key add -"
+
+ docker_exec "apt-get update"
+ docker_exec "apt-get install -y salt-master python-psutil iproute2 curl reclass salt-formula-*"
+
+ log_info "Setting up Salt master"
+ # TODO: remove grains.d hack when fixed in formula
+ docker_exec "mkdir -p /etc/salt/grains.d && touch /etc/salt/grains.d/dummy"
+ docker_exec "[ ! -d /etc/salt/pki/minion ] && mkdir -p /etc/salt/pki/minion"
+ docker_exec "[ ! -d /etc/salt/master.d ] && mkdir -p /etc/salt/master.d || true"
+ docker_exec "cat << 'EOF' >> /etc/salt/master.d/master.conf
+file_roots:
+ base:
+ - /usr/share/salt-formulas/env
+pillar_opts: False
+open_mode: True
+reclass: &reclass
+ storage_type: yaml_fs
+ inventory_base_uri: /srv/salt/reclass
+ext_pillar:
+ - reclass: *reclass
+master_tops:
+ reclass: *reclass
+EOF"
+
+ log_info "Setting up reclass"
+ docker_exec "[ -d /srv/salt/reclass/classes/service ] || mkdir -p /srv/salt/reclass/classes/service || true"
+ docker_exec "for i in /usr/share/salt-formulas/reclass/service/*; do
+ [ -e /srv/salt/reclass/classes/service/\$(basename \$i) ] || ln -s \$i /srv/salt/reclass/classes/service/\$(basename \$i)
+ done"
+
+ docker_exec "[ ! -d /etc/reclass ] && mkdir /etc/reclass || true"
+ docker_exec "cat << 'EOF' >> /etc/reclass/reclass-config.yml
+storage_type: yaml_fs
+pretty_print: True
+output: yaml
+inventory_base_uri: /srv/salt/reclass
+EOF"
+
+ log_info "Setting up Salt minion"
+ docker_exec "apt-get install -y salt-minion"
+ docker_exec "[ ! -d /etc/salt/minion.d ] && mkdir -p /etc/salt/minion.d || true"
+ docker_exec "cat << EOF >> /etc/salt/minion.d/minion.conf
+id: ${MASTER_HOSTNAME}
+master: localhost
+EOF"
+
+ log_info "Starting Salt master service"
+ DETACH=1 docker_exec "/usr/bin/salt-master"
+ sleep 3
+
+ docker_exec "salt-call saltutil.sync_all"
+ log_info "Running states to finish Salt master setup"
+ docker_exec "reclass --nodeinfo ${MASTER_HOSTNAME} >/dev/null"
+ docker_exec "salt-call ${SALT_OPTS} state.show_top"
+
+ if [[ $SALT_MASTER_FULL =~ ^(True|true|1|yes)$ ]]; then
+ # TODO: can fail on "hostname: you must be root to change the host name"
+ docker_exec "salt-call ${SALT_OPTS} state.sls linux,openssh" || true
+ docker_exec "salt-call ${SALT_OPTS} state.sls salt,reclass"
+ else
+ docker_exec "salt-call ${SALT_OPTS} state.sls reclass.storage.node" || true
+ fi
+
+ NODES=$(docker_exec "find /srv/salt/reclass/nodes -type f -name *.yml ! -name cfg*")
+ for node in ${NODES}; do
+ node=$(basename $node .yml)
+ log_info "Testing node ${node}"
+ docker_exec "reclass --nodeinfo ${node} >/dev/null"
+ docker_exec "salt-call ${SALT_OPTS} --id=${node} state.show_top"
+ docker_exec "salt-call ${SALT_OPTS} --id=${node} state.show_lowstate >/dev/null"
+ done
+}
+
+
+## Main
+trap _atexit INT TERM EXIT
+
+masters=$(find nodes -type f -name cfg*.yml)
+for master in ${masters[@]}; do
+ master=$(basename $master .yml)
+ log_info "Testing Salt master ${master}"
+ log_info "Creating docker container from image ${DOCKER_IMAGE}"
+ CONTAINER=$(run_container $master)
+ CONTAINERS+=(${CONTAINER})
+ test_master $master
+done