e3e71a
From f8a9fe6ffe25d5a9b07be899b0ebe52556d2ecd4 Mon Sep 17 00:00:00 2001
e3e71a
From: Jim Perrin <jperrin@centos.org>
e3e71a
Date: Fri, 20 Nov 2015 15:01:37 -0600
e3e71a
Subject: [PATCH] add centos install class
e3e71a
e3e71a
---
e3e71a
 pyanaconda/installclasses/centos.py | 95 +++++++++++++++++++++++++++++++++++++
e3e71a
 1 file changed, 95 insertions(+)
e3e71a
 create mode 100644 pyanaconda/installclasses/centos.py
e3e71a
e3e71a
diff --git a/pyanaconda/installclasses/centos.py b/pyanaconda/installclasses/centos.py
e3e71a
new file mode 100644
e3e71a
index 0000000..14a178d
e3e71a
--- /dev/null
e3e71a
+++ b/pyanaconda/installclasses/centos.py
e3e71a
@@ -0,0 +1,95 @@
9d7c21
+#
9d7c21
+# rhel.py
9d7c21
+#
9d7c21
+# Copyright (C) 2010  Red Hat, Inc.  All rights reserved.
9d7c21
+#
9d7c21
+# This program is free software; you can redistribute it and/or modify
9d7c21
+# it under the terms of the GNU General Public License as published by
9d7c21
+# the Free Software Foundation; either version 2 of the License, or
9d7c21
+# (at your option) any later version.
9d7c21
+#
9d7c21
+# This program is distributed in the hope that it will be useful,
9d7c21
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
9d7c21
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9d7c21
+# GNU General Public License for more details.
9d7c21
+#
9d7c21
+# You should have received a copy of the GNU General Public License
9d7c21
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
9d7c21
+#
9d7c21
+
9d7c21
+from pyanaconda.installclass import BaseInstallClass
e3e71a
+from pyanaconda.product import productName
9d7c21
+from pyanaconda import network
9d7c21
+from pyanaconda import nm
e3e71a
+from pyanaconda.kickstart import getAvailableDiskSpace
e3e71a
+from blivet.partspec import PartSpec
e3e71a
+from blivet.platform import platform
e3e71a
+from blivet.devicelibs import swap
e3e71a
+from blivet.size import Size
9d7c21
+
e3e71a
+class RHELBaseInstallClass(BaseInstallClass):
e3e71a
+    name = "CentOS Linux"
e3e71a
+    sortPriority = 20000
e3e71a
+    if not productName.startswith("CentOS "):
e3e71a
+        hidden = True
9d7c21
+    defaultFS = "xfs"
9d7c21
+
9d7c21
+    bootloaderTimeoutDefault = 5
9d7c21
+
9d7c21
+    ignoredPackages = ["ntfsprogs", "reiserfs-utils"]
9d7c21
+
9d7c21
+    installUpdates = False
9d7c21
+
9d7c21
+    _l10n_domain = "comps"
9d7c21
+
e3e71a
+    efi_dir = "centos"
e3e71a
+
9d7c21
+
9d7c21
+    def configure(self, anaconda):
9d7c21
+        BaseInstallClass.configure(self, anaconda)
e3e71a
+        self.setDefaultPartitioning(anaconda.storage)
9d7c21
+
9d7c21
+    def setNetworkOnbootDefault(self, ksdata):
e3e71a
+        if network.has_some_wired_autoconnect_device():
9d7c21
+            return
e3e71a
+        # choose the device used during installation
e3e71a
+        # (ie for majority of cases the one having the default route)
e3e71a
+        dev = network.default_route_device() \
e3e71a
+              or network.default_route_device(family="inet6")
e3e71a
+        if not dev:
9d7c21
+            return
e3e71a
+        # ignore wireless (its ifcfgs would need to be handled differently)
e3e71a
+        if nm.nm_device_type_is_wifi(dev):
9d7c21
+            return
e3e71a
+        network.update_onboot_value(dev, "yes", ksdata)
9d7c21
+
9d7c21
+    def __init__(self):
9d7c21
+        BaseInstallClass.__init__(self)
e3e71a
+
e3e71a
+class RHELAtomicInstallClass(RHELBaseInstallClass):
e3e71a
+    name = "CentOS Linux Atomic Host"
e3e71a
+    sortPriority=21000
e3e71a
+    hidden = not productName.startswith(("CentOS Atomic Host", "CentOS Linux Atomic"))
e3e71a
+
e3e71a
+    def setDefaultPartitioning(self, storage):
e3e71a
+        autorequests = [PartSpec(mountpoint="/", fstype=storage.defaultFSType,
e3e71a
+                                size=Size("1GiB"), maxSize=Size("3GiB"), grow=True, lv=True)]
e3e71a
+
e3e71a
+        bootreqs = platform.setDefaultPartitioning()
e3e71a
+        if bootreqs:
e3e71a
+            autorequests.extend(bootreqs)
e3e71a
+
e3e71a
+        disk_space = getAvailableDiskSpace(storage)
e3e71a
+        swp = swap.swapSuggestion(disk_space=disk_space)
e3e71a
+        autorequests.append(PartSpec(fstype="swap", size=swp, grow=False,
e3e71a
+                                    lv=True, encrypted=True))
e3e71a
+
e3e71a
+        for autoreq in autorequests:
e3e71a
+            if autoreq.fstype is None:
e3e71a
+                if autoreq.mountpoint == "/boot":
e3e71a
+                    autoreq.fstype = storage.defaultBootFSType
e3e71a
+                    autoreq.size = Size("300MiB")
e3e71a
+                else:
e3e71a
+                    autoreq.fstype = storage.defaultFSType
e3e71a
+
e3e71a
+        storage.autoPartitionRequests = autorequests
e3e71a
-- 
e3e71a
1.8.3.1
e3e71a