summaryrefslogblamecommitdiffstats
path: root/os-plugins/plugins/vmchooser/init-hooks/80-after-plugins/virtualization.sh
blob: 73a65ac53048391b237d611a5d380eff7739aa8f (plain) (tree)
1
2

                                      
























                                                                          
                                             
                                               
                                          

                       
                                                           













                                                                     
 
                                         
 

                                                                                

                                        
                                                    









                                                                    
                                                

















                                                                             
      
    























                                                                         
             




                                                                       
 














                                                               




                                                                     

                         
                

                         
                    
  
# 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