[rhel7-branch 9/29] Add platform specific group selection (#884385)
bcl
installerbot-noreply at redhat.com
Tue Jun 2 00:31:10 UTC 2015
From: "Brian C. Lane" <bcl at redhat.com>
Virtualization platforms would like to have their packages installed
automatically when running inside them. This uses systemd-detect-virt to
identify the platform and creates a group id to be selected by prefixing
it with "platform-" so that, for example, running on kvm will result in
a group named "platform-kvm" being selected if it exists.
Resolves: rhbz#884385
(cherry picked from commit 06f531eb3a2d31e5a622581f099fb93be780e193)
Related: rhbz#1196721
---
pyanaconda/iutil.py | 19 +++++++++++++++++++
pyanaconda/packaging/__init__.py | 11 +++++++++++
pyanaconda/packaging/yumpayload.py | 2 +-
3 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/pyanaconda/iutil.py b/pyanaconda/iutil.py
index 61e5ec9..6c6a12d 100644
--- a/pyanaconda/iutil.py
+++ b/pyanaconda/iutil.py
@@ -937,3 +937,22 @@ def ipmi_report(event):
execWithCapture("ipmitool", ["sel", "add", path])
os.remove(path)
+
+def get_platform_groupid():
+ """ Return a platform group id string
+
+ This runs systemd-detect-virt and if the result is not 'none' it
+ prefixes the lower case result with "platform-" for use as a group id.
+
+ :returns: Empty string or a group id for the detected platform
+ :rtype: str
+ """
+ try:
+ platform = execWithCapture("systemd-detect-virt", []).strip()
+ except (IOError, AttributeError):
+ return ""
+
+ if platform == "none":
+ return ""
+
+ return "platform-" + platform.lower()
diff --git a/pyanaconda/packaging/__init__.py b/pyanaconda/packaging/__init__.py
index df9b55c..4ed4e97 100644
--- a/pyanaconda/packaging/__init__.py
+++ b/pyanaconda/packaging/__init__.py
@@ -741,6 +741,17 @@ def preInstall(self, packages=None, groups=None):
else:
self.rpmMacros.append(('__file_context_path', '%{nil}'))
+ # Add platform specific group
+ groupid = iutil.get_platform_groupid()
+ if groupid and groupid in self.groups:
+ if isinstance(groups, list):
+ log.info("Adding platform group %s", groupid)
+ groups.append(groupid)
+ else:
+ log.warning("Could not add %s to groups, not a list.", groupid)
+ elif groupid:
+ log.warning("Platform group %s not available.", groupid)
+
@property
def kernelPackages(self):
if "kernel" in self.data.packages.excludedList:
diff --git a/pyanaconda/packaging/yumpayload.py b/pyanaconda/packaging/yumpayload.py
index 19d8661..37209de 100644
--- a/pyanaconda/packaging/yumpayload.py
+++ b/pyanaconda/packaging/yumpayload.py
@@ -1348,7 +1348,7 @@ def selectRequiredPackages(self):
def preInstall(self, packages=None, groups=None):
""" Perform pre-installation tasks. """
- super(YumPayload, self).preInstall()
+ super(YumPayload, self).preInstall(packages, groups)
progressQ.send_message(_("Starting package installation process"))
self.requiredPackages = packages
--
To view this commit on github, visit https://github.com/rhinstaller/anaconda/commit/49533569e2a45842958a880876a55d3e3c447d93
More information about the anaconda-patches
mailing list