summaryrefslogtreecommitdiffstats
path: root/src/os-plugins/plugins/vmchooser/init-hooks/80-after-plugins/virtualization.sh
blob: 73a65ac53048391b237d611a5d380eff7739aa8f (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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# Copyright (c) 2010 - RZ Uni Freiburg
# Copyright (c) 2010 - OpenSLX GmbH
#
# This program/file 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 feedback to feedback@openslx.org
#
# General information about OpenSLX can be found at http://openslx.org
#
# script is included from init via the "." load function - thus it has all
# variables and functions available

# virtual virtualization plugin
# make sure that this file is the same in vmgrid and vmchooser plugin!

# include default directories
. /etc/openslx.conf

CONFFILEVMCHOOSER="/initramfs/plugin-conf/vmchooser.conf"
CONFFILEVMGRID="/initramfs/plugin-conf/vmgrid.conf"
PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/virtualization

# check if plugins available
active=0
[ -f ${CONFFILEVMCHOOSER} ] && . ${CONFFILEVMCHOOSER}
[ "x${vmchooser_active}" = "x1" ] && active=1
[ -f ${CONFFILEVMGRID} ] && . ${CONFFILEVMGRID}
[ "x${vmgrid_active}" = "x1" ] && active=1

[ $DEBUGLEVEL -gt 0 ] \
  && echo -e "Executing the 'virtualization' plugin ... \c"

if [ ${active} -ne 0 ] ; then

  # load general configuration
  . /etc/initramfs-setup
  # include functions
  . /etc/functions

  testmkd ${PLUGINCONFDIR}

  # check if vmgrid active and change free mem
  totalmem=$(expr $(grep -i "memtotal" /proc/meminfo \
             | awk '{print $2}') / 1024)
  echo "totalmem=${totalmem}" >> ${PLUGINCONFDIR}/virtualization.conf

  if [ "x${vmgrid_active}" = "x1" ]; then

    totalmemtest=$(expr $(echo ${vmgrid_memratio} \
                  | awk -F ',' '{print $1" + "$2" + "$3" + "$4" + "$5" + "$6}'))

    # not more than 100% memory assigned
    if [ ${totalmemtest} -le 100 2>/dev/null ]; then

      # host mem
      hostratio=$(echo ${vmgrid_memratio} | awk -F ',' '{print $6}')
      hostmem=$(expr ${totalmem} \* ${hostratio} / 100 2>/dev/null)
      if [ ${hostmem} -lt 256 2>/dev/null ]; then
        # min. 256 MB for host
        hostmem=256
      fi

      # main vm mem (vmchooser)
      if [ "x${vmchooser_active}" = "x1" ]; then
        mainvirtratio=$(echo ${vmgrid_memratio} | awk -F ',' '{print $5}')
        mainvirtmem=$(expr ${totalmem} \* ${mainvirtratio} / 100 2>/dev/null)
        if [ ${mainvirtmem} -lt 512 2>/dev/null ]; then
          # min. 512 for vmchooser
          mainvirtmem=512
        fi
      else
        mainvirtratio=0
        mainvirtmem=0
      fi

      cat << EOF >> ${PLUGINCONFDIR}/virtualization.conf
hostratio=${hostratio}
hostmem=${hostmem}
mainvirtratio=${mainvirtratio}
mainvirtmem=${mainvirtmem}
EOF

    fi
  fi

  # cpu cores
  CPU_CORES=$(grep 'processor.*:' /proc/cpuinfo | wc -l)
  if [ "${CPU_CORES}" -gt "1" 2>/dev/null ]; then
    echo "cpu_cores=${CPU_CORES}" \
      >> ${PLUGINCONFDIR}/virtualization.conf
  else
    echo 'cpu_cores=1' >> ${PLUGINCONFDIR}/virtualization.conf
  fi

  # arch
  echo "host_arch=$(uname -m)" >> ${PLUGINCONFDIR}/virtualization.conf

  # VT enabled cpu?
  if grep -q ^flags.*\\\<vmx\\\> /proc/cpuinfo; then
    echo "vtflag=1" >> ${PLUGINCONFDIR}/virtualization.conf
    echo 'kvm_module="kvm_intel"' >> ${PLUGINCONFDIR}/virtualization.conf
  elif grep -q ^flags.*\\\<svm\\\> /proc/cpuinfo; then
    echo "vtflag=1" >> ${PLUGINCONFDIR}/virtualization.conf
    echo 'kvm_module="kvm_amd"' >> ${PLUGINCONFDIR}/virtualization.conf
  else
    echo "vtflag=0" >> ${PLUGINCONFDIR}/virtualization.conf
  fi

  # write mac
  echo "hostmacaddr=${macaddr}" >> ${PLUGINCONFDIR}/virtualization.conf
  # ip addr
  echo "hostip=${clientip}" >> ${PLUGINCONFDIR}/virtualization.conf
  # hostname
  echo "hostname=${host_name}" >> ${PLUGINCONFDIR}/virtualization.conf

  # get further hw information
  waitfor /etc/hwinfo.cdrom
  j=0
  for i in $(cat /etc/hwinfo.cdrom); do
    echo "cdrom_$j=$i" >> ${PLUGINCONFDIR}/virtualization.conf
    j=$(expr $j + 1)
  done

  waitfor /etc/hwinfo.floppy
  j=0
  for i in $(cat /etc/hwinfo.floppy); do
    echo "floppy_$j=$i" >> ${PLUGINCONFDIR}/virtualization.conf
    j=$(expr $j + 1)
  done

  # copy host information to rwshare of vmgrid plugin
  if [ "x${vmgrid_active}" = "x1" ]; then
    cp ${PLUGINCONFDIR}/virtualization.conf ${vmgrid_rwmnt}/host.conf
  fi

  # finished ...
  [ $DEBUGLEVEL -gt 0 ] \
    && echo "ok"
else
  [ $DEBUGLEVEL -gt 0 ] \
    && echo "failed"
fi