summaryrefslogblamecommitdiffstats
path: root/os-plugins/plugins/vmgrid/init-hooks/80-after-plugins/virtualization.sh
blob: 5fa046d96b913f5dc25de2ffa967071c18e41e85 (plain) (tree)































                                                                          
                                                                   


























































                                                                                


                                                                       
















                                                               
                

                         
                    
  
# Copyright (c) 2008..2010 - RZ Uni Freiburg
# Copyright (c) 2008..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}
[ -n "${CONFFILEVMCHOOSER}" ] && active=1
[ -f ${CONFFILEVMGRID} ] && . ${CONFFILEVMGRID}
[ -n "${CONFFILEVMGRID}" ] && active=1

[ $DEBUGLEVEL -gt 0 ] \
  && echo -e "Executing the virtual '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 [ ${vmgrid_active} -ne 0 ]; then
    totalmemtest=$(expr $(echo ${vmgrid_memratio} \
                  | awk -F ',' '{print $1" + "$2" + "$3" + "$4" + "$5" + "$6}'))
    if [ ${totalmemtest} -le 100 2>/dev/null ]; then
      # get hostmem
      freememper=$(expr 100 - $(echo ${vmgrid_memratio} \
                   | awk -F ',' '{print $1" - "$2" - "$3" - "$4}'))
      freemem=$(expr ${totalmem} \* ${freememper} / 100)
      echo "freemem=${freemem}" \
        >> ${PLUGINCONFDIR}/virtualization.conf
    else
      # more than 100% memory assigned stupid!
      # vmgrid will get this as well and exit!
      # so we have theoretically 100% free
      echo "freemem=${totalmem}" \
        >> ${PLUGINCONFDIR}/virtualization.conf
    fi
  else
    echo "freemem=${totalmem}" \
      >> ${PLUGINCONFDIR}/virtualization.conf
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 "machostaddr=${macaddr}" >> ${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

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