You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
3.6 KiB

#
# powerel.py
#
# (c) copyright 2016, VanTosh, All rights reserved.
# Author: Toshaan Bharvani <toshaan@vantosh.com>
# License: GNU General Public License v2
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty 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, see <http://www.gnu.org/licenses/>.
#
from pyanaconda.installclass import BaseInstallClass
from pyanaconda.constants import *
from pyanaconda.product import *
from pyanaconda.kickstart import getAvailableDiskSpace
from pyanaconda import network
from pyanaconda import nm
from blivet.partspec import PartSpec
from blivet.platform import platform
from blivet.devicelibs import swap
from blivet.size import Size
import types
class InstallClass(BaseInstallClass):
id = "powerel"
name = "PowerEL"
sortPriority = 20000
if not productName.startswith("PowerEL"):
hidden = True
defaultFS = "xfs"
bootloaderTimeoutDefault = 5
# where did this come from ?
#bootloaderExtraArgs = []
ignoredPackages = [ ]
installUpdates = False
_l10n_domain = "comps"
efi_dir = "powerel"
help_placeholder = "PowerELPlaceholder.html"
help_placeholder_with_links = "PowerELPlaceholderWithLinks.html"
def configure(self, anaconda):
BaseInstallClass.configure(self, anaconda)
BaseInstallClass.setDefaultPartitioning(self, anaconda.storage)
def setNetworkOnbootDefault(self, ksdata):
if ksdata.method.method not in ("url", "nfs"):
return
if network.has_some_wired_autoconnect_device():
return
# choose the device used during installation
# (ie for majority of cases the one having the default route)
dev = network.default_route_device() or network.default_route_device(family="inet6")
if not dev:
return
# ignore wireless (its ifcfgs would need to be handled differently)
if nm.nm_device_type_is_wifi(dev):
return
network.update_onboot_value(dev, "yes", ksdata)
def __init__(self):
BaseInstallClass.__init__(self)
class AtomicInstallClass(BaseInstallClass):
id = "powerelatomic"
name = "PowerEL Atomic Host"
sortPriority=21001
hidden = not productName.startswith(("PowerEL Atomic Host", "PowerEL Atomic"))
def setDefaultPartitioning(self, storage):
autorequests = [PartSpec(mountpoint="/", fstype=storage.defaultFSType, size=Size("1GiB"), maxSize=Size("3GiB"), grow=True, lv=True)]
bootreqs = platform.setDefaultPartitioning()
if bootreqs:
autorequests.extend(bootreqs)
disk_space = getAvailableDiskSpace(storage)
swp = swap.swapSuggestion(disk_space=disk_space)
autorequests.append(PartSpec(fstype="swap", size=swp, grow=False, lv=True, encrypted=True))
for autoreq in autorequests:
if autoreq.fstype is None:
if autoreq.mountpoint == "/boot":
autoreq.fstype = storage.defaultBootFSType
autoreq.size = Size("300MiB")
else:
autoreq.fstype = storage.defaultFSType
storage.autoPartitionRequests = autorequests