summaryrefslogtreecommitdiffstats
path: root/remote/modules/vmchooser/data/opt/openslx/bin/xmlfilter.sh
blob: 67e49d3e190596bb646ac09ce6d14d09df082e2a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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