kexec-tools/kdump-anaconda-addon/com_redhat_kdump/common.py
Arthur Zou 5669f6bbe0 Add a anaconda addon to configurate kdump in the system installation process
Currently this work is done by firstboot. Now we move to anaconda addon
to configurate in the system installation process.

Signed-off-by: Arthur Zou <zzou@redhat.com>
Acked-by: Dave Young <dyoung@redhat.com>
2014-05-20 16:05:54 +08:00

89 lines
2.8 KiB
Python

# Kdump configuration common methods
#
# Copyright (C) 2014 Red Hat, Inc.
#
# This copyrighted material is made available to anyone wishing to use,
# modify, copy, or redistribute it subject to the terms and conditions of
# the GNU General Public License v.2, or (at your option) any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY expressed or implied, including the implied warranties of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
# Public License for more details. You should have received a copy of the
# GNU General Public License along with this program; if not, write to the
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA. Any Red Hat trademarks that are incorporated in the
# source code or documentation are not subject to the GNU General Public
# License and may only be used or replicated with the express permission of
# Red Hat, Inc.
#
# Red Hat Author(s): David Shea <dshea@redhat.com>
#
import os
__all__ = ["getReservedMemory", "getTotalMemory", "getMemoryBounds", "getOS"]
from pyanaconda.isys import total_memory
from pyanaconda.flags import flags
from com_redhat_kdump.constants import OS_RELEASE
_reservedMemory = None
def getReservedMemory():
"""Return the amount of memory currently reserved for kdump in MB."""
global _reservedMemory
# Check if the value has already been read
if _reservedMemory is not None:
return _reservedMemory
try:
with open("/sys/kernel/kexec_crash_size", "r") as fobj:
_reservedMemory = int(fobj.read()) / (1024*1024)
return _reservedMemory
except (ValueError, IOError):
return 0
def getTotalMemory():
"""Return the total amount of system memory in MB
This is the amount reported by /proc/meminfo plus the aount
currently reserved for kdump.
"""
# total_memory return memory in KB, convert to MB
availMem = total_memory() / 1024
return availMem + getReservedMemory()
def getMemoryBounds():
"""Return a tuple of (lower, upper, step) for kdump reservation limits.
If there is not enough memory available to use kdump, both lower and
upper will be 0.
"""
totalMemory = getTotalMemory()
if flags.targetarch == 'ppc64':
lowerBound = 256
minUsable = 1024
step = 1
else:
lowerBound = 128
minUsable = 256
step = 1
upperBound = (totalMemory - minUsable) - (totalMemory % step)
if upperBound < lowerBound:
upperBound = lowerBound = 0
return (lowerBound, upperBound, step)
def getOS():
with open(os.path.normpath(OS_RELEASE), "r") as fobj:
line = fobj.readline()
if not "Fedora" in line:
return "redhat"
else:
return "fedora"