summaryrefslogtreecommitdiffstats
path: root/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-xml_filter
diff options
context:
space:
mode:
Diffstat (limited to 'remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-xml_filter')
-rwxr-xr-xremote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-xml_filter64
1 files changed, 64 insertions, 0 deletions
diff --git a/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-xml_filter b/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-xml_filter
new file mode 100755
index 00000000..67e49d3e
--- /dev/null
+++ b/remote/modules/vmchooser/data/opt/openslx/scripts/vmchooser-xml_filter
@@ -0,0 +1,64 @@
+#!/bin/bash
+# -----------------------------------------------------------------------------
+# Copyright (c) 2007..2009 - RZ Uni FR
+# Copyright (c) 2007..2011 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your suggestions, praise, or complaints to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org/
+# -----------------------------------------------------------------------------
+# xmlfilter.sh
+# - This script is invoked by the vmchooser tool. It simply filters xml-
+# files (taking the path to these files in $1). You might modify it in any
+# way to match your needs, e.g. ask some database instead. You can re-
+# implement it in any other programming language too. You simply have to
+# return a list of proper xml files to be interpreted by the vmchooser
+# binary). Please check for vmchooser.sh too ...
+# -----------------------------------------------------------------------------
+
+# This script .
+#
+# currently:
+# - filter for slxgrp (which comes from /etc/machine-setup)
+#
+
+# include default directories
+. /etc/opt/openslx/openslx.conf
+
+if [ -f ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser/vmchooser.conf ]; then
+ . ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser/vmchooser.conf
+fi
+
+function handlePersistentVM() {
+ if [[ "$(grep --extended-regexp \
+ "<persistent param=\"(|.+:)$USER(|:.+)\"" "$1")" ]]; then
+ # If this virtual machine is useable as persistent version for current
+ # user we provide an additional persistent version.
+ local persistentConfigVersionFilePath="$(mktemp --directory)/$(basename "${1}-persistent")"
+ /opt/openslx/plugin-repo/vmchooser/clc.bash "$1" \
+ "$persistentConfigVersionFilePath" --create-persistent-config && \
+ echo "$persistentConfigVersionFilePath"
+ fi
+}
+
+for FILE in $(find -L "$1" -iname "*.xml"); do
+ # filter all xmls which aren't set active
+ if [ $(grep "<active param=.*true.*" "$FILE" | wc -l) -eq 1 ]; then
+ if [ -n "${vmchooser_env}" ]; then
+ # filter all xmls with pool-param not equal to vmchooser::env
+ if [ $(grep "<pools param=\"${vmchooser_env}\"" "$FILE" | wc -l) -eq 1 ]
+ then
+ handlePersistentVM "$FILE"
+ echo "$FILE"
+ fi
+ else
+ handlePersistentVM "$FILE"
+ # if there is no pool set, just take all available xmls
+ echo "$FILE"
+ fi
+ fi
+done