New version 28.22.3-1

- Fix forgotten usage of the selinux kickstart command (vponcova)
- Fix tests for the storage module (vponcova)
- Use the disk selection and initialization modules in UI (vponcova)
- Enable to use object identifiers instead of object paths (vponcova)
- Add Makefiles for disk initialization and selection modules (vponcova)
- Remove the invalid self argument (vponcova)
- Run all unit tests (vponcova)
- Create the disk initialization and disk selection modules (vponcova)
- Use watch_property to watch changes of DBus properties (vponcova)
- Better organize the base classes for modules (vponcova)
- Fixed KS forcing zerombr onto RO disk (japokorn)
- Add tests for the kickstart specifications (vponcova)
- Standardize calls to parent via super() (riehecky)
- Fix 'isDisk' property name (#1558906) (vtrefny)
- Make the class for removed kickstart commands more strict (vponcova)
- Fix the progress bar steps (vponcova)
- Use enum for the first boot action (vponcova)
- Use enum for the SELinux modes (vponcova)
- Write rootpw command to kickstart (#1557529) (mkolman)
- Don't make safe to observe services on buses that don't run (vponcova)
- Add the LanguageKickstarted property (vponcova)
- Don't autoquit by default if the last hub is empty (#1553935) (mkolman)
- Use the Services module in UI (vponcova)
- Create the Services module (vponcova)
- Enable hibernation only on x86 (#1554345) (vponcova)
- Add the Storage module with no API (vponcova)
- Add the Payload module with no API (vponcova)
- Remove DBus modules Foo and Bar (vponcova)
- network module: fix accessing org.freedesktop.hostname1 for current hostname
  (rvykydal)
- network module: add basic test (rvykydal)
- Add prepare command to setup-mock-test-env script (jkonecny)
- Remove useless constants from pyanaconda.dbus.constants (vponcova)
- Use identifiers to get observers and proxies (vponcova)
- Remove the publish method from DBus interfaces (vponcova)
- Replace constants in publish and register methods (vponcova)
- Replace constants in DBus interface names (vponcova)
- Define DBus errors with the dbus_error decorator (vponcova)
- Use namespaces and identifiers to describe Anaconda DBus objects (vponcova)
- Add support for identification of DBus objects and services (vponcova)
- User module should parse only rootpw for now (#1553488) (vponcova)
- Mark partition live device's disk protected. (#1524700) (dlehman)
- localization module: plug localization module into keyboard GUI spoke
  (rvykydal)
- localization module: add KeyboardKickstarted property (rvykydal)
- localization module: add KS support for keyboard command (rvykydal)
- localization module: don't use Kickstarted so another command can be added
  (rvykydal)
- datetime spoke: still pass ksdata to NTPconfigDialog (UIObject) (rvykydal)
- Fix release docs (mkolman)
- network: set TYPE value in ifcfg from kickstart in initrmfs (rvykydal)
- Enable payload configuration for Install classes (jkonecny)
- Make formatting consistent in AnacondaWidgets.xml (riehecky)
This commit is contained in:
Martin Kolman 2018-04-05 18:00:12 +02:00
parent 28fb99da97
commit 63e38dbd05
9 changed files with 53 additions and 342 deletions

1
.gitignore vendored
View File

@ -134,3 +134,4 @@
/anaconda-28.22.tar.bz2
/anaconda-28.22.1.tar.bz2
/anaconda-28.22.2.tar.bz2
/anaconda-28.22.3.tar.bz2

View File

@ -1,54 +0,0 @@
From 544a83ef63454e91cfea835b74bd76310d8774cc Mon Sep 17 00:00:00 2001
From: Vendula Poncova <vponcova@redhat.com>
Date: Fri, 9 Mar 2018 11:16:07 +0100
Subject: [PATCH] User module should parse only rootpw for now (#1553488)
User module doesn't define the UserData and the GroupData in its
specification, so Anaconda fails when the kickstart file specifies
a user or a group. User module should parse only rootpw for now.
Resolves: rhbz#1553488
---
pyanaconda/modules/user/kickstart.py | 6 +-----
tests/pyanaconda_tests/module_user_test.py | 2 +-
2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/pyanaconda/modules/user/kickstart.py b/pyanaconda/modules/user/kickstart.py
index 0a6cd66c5..5a78e8cd2 100644
--- a/pyanaconda/modules/user/kickstart.py
+++ b/pyanaconda/modules/user/kickstart.py
@@ -17,9 +17,7 @@
# License and may only be used or replicated with the express permission of
# Red Hat, Inc.
#
-from pykickstart.commands.user import F24_User
from pykickstart.commands.rootpw import F18_RootPw
-from pykickstart.commands.group import F12_Group
from pykickstart.version import F28
from pyanaconda.core.kickstart import KickstartSpecification
@@ -28,7 +26,5 @@ class UserKickstartSpecification(KickstartSpecification):
version = F28
commands = {
- "rootpw": F18_RootPw,
- "user": F24_User,
- "group": F12_Group,
+ "rootpw": F18_RootPw
}
diff --git a/tests/pyanaconda_tests/module_user_test.py b/tests/pyanaconda_tests/module_user_test.py
index e67cd3504..6ea81ada4 100644
--- a/tests/pyanaconda_tests/module_user_test.py
+++ b/tests/pyanaconda_tests/module_user_test.py
@@ -40,7 +40,7 @@ class UserInterfaceTestCase(unittest.TestCase):
def kickstart_properties_test(self):
"""Test kickstart properties."""
- self.assertEqual(self.user_interface.KickstartCommands, ["rootpw", "user", "group"])
+ self.assertEqual(self.user_interface.KickstartCommands, ["rootpw"])
self.assertEqual(self.user_interface.KickstartSections, [])
self.assertEqual(self.user_interface.KickstartAddons, [])
self.callback.assert_not_called()
--
2.14.3

View File

@ -1,41 +0,0 @@
From 07471d58ff89d97ed551a5bfbcbfdfe428849464 Mon Sep 17 00:00:00 2001
From: David Lehman <dlehman@redhat.com>
Date: Thu, 8 Mar 2018 11:43:31 -0500
Subject: [PATCH 1/1] Mark partition live device's disk protected. (#1524700)
---
pyanaconda/storage/osinstall.py | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/pyanaconda/storage/osinstall.py b/pyanaconda/storage/osinstall.py
index 435c723d9..8f34497e6 100644
--- a/pyanaconda/storage/osinstall.py
+++ b/pyanaconda/storage/osinstall.py
@@ -1701,11 +1701,19 @@ class InstallerStorage(Blivet):
if " /run/initramfs/live " not in mnt:
continue
- live_device_name = mnt.split()[0].split("/")[-1]
- log.info("%s looks to be the live device; marking as protected",
- live_device_name)
- self.protected_dev_names.append(live_device_name)
- self.live_backing_device = live_device_name
+ live_device_path = mnt.split()[0]
+ udev_device = udev.get_device(device_node=live_device_path)
+ if udev_device and udev.device_is_partition(udev_device):
+ live_device_name = udev.device_get_partition_disk(udev_device)
+ else:
+ live_device_name = live_device_path.split("/")[-1]
+
+ log.info("resolved live device to %s", live_device_name)
+ if live_device_name:
+ log.info("marking live device %s protected", live_device_name)
+ self.protected_dev_names.append(live_device_name)
+ self.live_backing_device = live_device_name
+
break
def _mark_protected_device(self, device):
--
2.14.3

View File

@ -1,60 +0,0 @@
From 8b45aa82bcdee9c5ea19d21ae74f988fee7c1d17 Mon Sep 17 00:00:00 2001
From: Martin Kolman <mkolman@redhat.com>
Date: Thu, 15 Mar 2018 14:35:56 +0100
Subject: [PATCH 2/2] Don't autoquit by default if the last hub is empty
(#1553935)
With the Reduce Initial Setup Redundancy change[0] in F28
we now encounter an edge case during the Fedora Workstation Live
installation which Anaconda does not handle particularly well.
There are no longer any spokes on the progress hub, which triggers
a piece of code originally added for Initial Setup, which autoclicks
the continue button, effectively quiting the installation as there are
no more hubs present.
While this actually does not influence the correctness of the
installation (this only happens after a successfull installation),
it's a pretty bad UX and as reported by Adam Wiliamson complicates
Open QA based installation testing.
So add a new property for hubs that specifies if a hub should
automaqtically continue if no spokes are present. This property
will be False by defaul but Initial Setup is expected to set it
to True for it's own hub.
Resolves: rhbz#1553935
[0] https://fedoraproject.org/wiki/Changes/ReduceInitialSetupRedundancy
---
pyanaconda/ui/gui/hubs/__init__.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/pyanaconda/ui/gui/hubs/__init__.py b/pyanaconda/ui/gui/hubs/__init__.py
index 3c82b471c..cfbdc8820 100644
--- a/pyanaconda/ui/gui/hubs/__init__.py
+++ b/pyanaconda/ui/gui/hubs/__init__.py
@@ -59,6 +59,11 @@ class Hub(GUIObject, common.Hub):
handles_autostep = True
_hubs_collection = []
+ # Should we automatically go to next hub if processing is done and there are no
+ # spokes on the hub ? The default value is False and Initial Setup will likely
+ # override it to True in it's hub.
+ continue_if_empty = False
+
def __init__(self, data, storage, payload, instclass):
"""Create a new Hub instance.
@@ -286,7 +291,7 @@ class Hub(GUIObject, common.Hub):
q = hubQ.q
- if not self._spokes and self.window.get_may_continue():
+ if not self._spokes and self.window.get_may_continue() and self.continue_if_empty:
# no spokes, move on
log.debug("no spokes available on %s, continuing automatically", self)
gtk_call_once(self.window.emit, "continue-clicked")
--
2.14.3

View File

@ -1,46 +0,0 @@
From 830a0076e33cf97235ee7a6d366c0fd061c36894 Mon Sep 17 00:00:00 2001
From: Martin Kolman <mkolman@redhat.com>
Date: Mon, 19 Mar 2018 18:20:31 +0100
Subject: [PATCH 3/3] Write rootpw command to kickstart (#1557529)
During the switch to handle the rootpw command by a kickstart module
the __str__() method of the Kickstart command object has not been
overridden, resulting in the command missing from the output kickstart
Anaconda saves after the installation into /root.
This had the unintended consequence of making Initial Setup lock the
root account during it's run after the installation. Initial Setup
read the kickstart file in /root created by Anaconda and noticed
the rootpw command is missing, which it equaled to root password not
being set. There is logic in place preventing Anaconda/IS from creating
root accounts with empty root password, which triggered and locked
the root account.
So make sure the rootpw command is present in the output kickstart
by adding the overlooked __str__() method override as with all other
kickstart commands handled by DBUS modules.
Resolves: rhbz#1557529
---
pyanaconda/kickstart.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index 488f3222e..78fa21345 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -1834,6 +1834,11 @@ class ReqPart(commands.reqpart.F23_ReqPart):
autopart.do_reqpart(storage, reqs)
class RootPw(RemovedCommand):
+
+ def __str__(self):
+ user_proxy = DBus.get_proxy(MODULE_USER_NAME, MODULE_USER_PATH)
+ return user_proxy.GenerateKickstart()
+
def execute(self, storage, ksdata, instClass, users):
user_proxy = DBus.get_proxy(MODULE_USER_NAME, MODULE_USER_PATH)
--
2.14.3

View File

@ -1,26 +0,0 @@
From 993cbcf6e2e496b339f76d6326fc2ab73a6272f2 Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Wed, 21 Mar 2018 12:37:52 +0100
Subject: [PATCH 4/4] Fix 'isDisk' property name (#1558906)
It's 'is_disk' since Blivet 2.0
---
pyanaconda/ui/lib/disks.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pyanaconda/ui/lib/disks.py b/pyanaconda/ui/lib/disks.py
index d957bcfc0..9d530a086 100644
--- a/pyanaconda/ui/lib/disks.py
+++ b/pyanaconda/ui/lib/disks.py
@@ -90,7 +90,7 @@ def applyDiskSelection(storage, data, use_names):
for disk in (d for d in storage.disks if d.name in onlyuse):
onlyuse.extend(d.name for d in disk.ancestors
if d.name not in onlyuse
- and d.isDisk)
+ and d.is_disk)
data.ignoredisk.onlyuse = onlyuse
data.clearpart.drives = use_names[:]
--
2.14.3

View File

@ -1,73 +0,0 @@
From e9f78f3c3a1ffa41977933609d787825b00ea575 Mon Sep 17 00:00:00 2001
From: Radek Vykydal <rvykydal@redhat.com>
Date: Fri, 9 Mar 2018 13:24:09 +0100
Subject: [PATCH] Fix accessing org.freedesktop.hostname1 for current hostname
The org.freedesktop.hostname1 service is expected to be started by a
method call and is shut down when not used so using observer does not
fit here.
---
pyanaconda/modules/network/network.py | 30 ++++++++++++------------------
1 file changed, 12 insertions(+), 18 deletions(-)
diff --git a/pyanaconda/modules/network/network.py b/pyanaconda/modules/network/network.py
index 49fbb5f2d5..6f37f36bd0 100644
--- a/pyanaconda/modules/network/network.py
+++ b/pyanaconda/modules/network/network.py
@@ -42,18 +42,12 @@ def __init__(self):
self._hostname = "localhost.localdomain"
self.current_hostname_changed = Signal()
- self._hostname_service = self._get_hostname_service_observer()
+ self._hostname_service_proxy = None
- def _get_hostname_service_observer(self):
- """Get an observer of the hostname service."""
- service = SystemBus.get_cached_observer(
- HOSTNAME_SERVICE, HOSTNAME_PATH, [HOSTNAME_INTERFACE])
-
- service.cached_properties_changed.connect(
- self._hostname_service_properties_changed)
-
- service.connect_once_available()
- return service
+ if SystemBus.check_connection():
+ self._hostname_service_proxy = SystemBus.get_proxy(HOSTNAME_SERVICE, HOSTNAME_PATH)
+ self._hostname_service_proxy.PropertiesChanged.connect(
+ self._hostname_service_properties_changed)
def publish(self):
"""Publish the module."""
@@ -90,25 +84,25 @@ def set_hostname(self, hostname):
self.hostname_changed.emit()
log.debug("Hostname is set to %s", hostname)
- def _hostname_service_properties_changed(self, observer, changed, invalid):
- if "Hostname" in changed:
- hostname = self._hostname_service.cache.Hostname
+ def _hostname_service_properties_changed(self, interface, changed, invalid):
+ if interface == HOSTNAME_INTERFACE and "Hostname" in changed:
+ hostname = changed["Hostname"]
self.current_hostname_changed.emit(hostname)
log.debug("Current hostname changed to %s", hostname)
def get_current_hostname(self):
"""Return current hostname of the system."""
- if self._hostname_service.is_service_available:
- return self._hostname_service.proxy.Hostname
+ if self._hostname_service_proxy:
+ return self._hostname_service_proxy.Hostname
log.debug("Current hostname cannot be get.")
return ""
def set_current_hostname(self, hostname):
"""Set current system hostname."""
- if not self._hostname_service.is_service_available:
+ if not self._hostname_service_proxy:
log.debug("Current hostname cannot be set.")
return
- self._hostname_service.proxy.SetHostname(hostname, False)
+ self._hostname_service_proxy.SetHostname(hostname, False)
log.debug("Current hostname is set to %s", hostname)

View File

@ -6,8 +6,8 @@
Summary: Graphical system installer
Name: anaconda
Version: 28.22.2
Release: 7%{?dist}
Version: 28.22.3
Release: 1%{?dist}
License: GPLv2+ and MIT
Group: Applications/System
URL: http://fedoraproject.org/wiki/Anaconda
@ -19,26 +19,6 @@ URL: http://fedoraproject.org/wiki/Anaconda
# make dist
Source0: %{name}-%{version}.tar.bz2
# Fedora 28 Beta freeze patches
# Bug 1553488 - 'KickstartSpecificationHandler' object has no attribute 'UserData'
Patch0: 0000-User-module-should-parse-only-rootpw-for-now-1553488.patch
# Bug 1524700 - AttributeError: 'NoneType' object has no attribute 'name'
Patch1: 0001-Mark-partition-live-device-s-disk-protected.-1524700.patch
# Bug 1553935 - Installer auto-quits after Workstation live install (as no spokes are on the install hub)
Patch2: 0002-Don-t-autoquit-by-default-if-the-last-hub-is-empty-1.patch
# Bug 1557529 - Setting root password on live images fails since anaconda-28.22.2-3.fc28
Patch3: 0003-Write-rootpw-command-to-kickstart-1557529.patch
# Bug 1558906 - AttributeError: 'DiskDevice' object has no attribute 'isDisk'
Patch4: 0004-Fix-isDisk-property-name-1558906.patch
# Bug 1559680 - Realm join via kickstart during install fails with 'This computer's host name is not set correctly', but it is
Patch5: 0005-Fix-hostname-configuration-1559680.patch
# Versions of required components (done so we make sure the buildrequires
# match the requires versions of things).
@ -260,12 +240,6 @@ runtime on NFS/HTTP/FTP servers or local disks.
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%build
# use actual build-time release number, not tarball creation time release number
@ -360,24 +334,60 @@ update-desktop-database &> /dev/null || :
%{_prefix}/libexec/anaconda/dd_*
%changelog
* Mon Mar 26 2018 Martin Kolman <mkolman@redhat.com> - 28.22.2-7
- Fix accessing org.freedesktop.hostname1 for current hostname (rvykydal)
* Thu Mar 22 2018 Martin Kolman <mkolman@redhat.com> - 28.22.2-6
* Thu Apr 05 2018 Martin Kolman <mkolman@redhat.com> - 28.22.3-1
- Fix forgotten usage of the selinux kickstart command (vponcova)
- Fix tests for the storage module (vponcova)
- Use the disk selection and initialization modules in UI (vponcova)
- Enable to use object identifiers instead of object paths (vponcova)
- Add Makefiles for disk initialization and selection modules (vponcova)
- Remove the invalid self argument (vponcova)
- Run all unit tests (vponcova)
- Create the disk initialization and disk selection modules (vponcova)
- Use watch_property to watch changes of DBus properties (vponcova)
- Better organize the base classes for modules (vponcova)
- Fixed KS forcing zerombr onto RO disk (japokorn)
- Add tests for the kickstart specifications (vponcova)
- Standardize calls to parent via super() (riehecky)
- Fix 'isDisk' property name (#1558906) (vtrefny)
* Mon Mar 19 2018 Martin Kolman <mkolman@redhat.com> - 28.22.2-5
- Make the class for removed kickstart commands more strict (vponcova)
- Fix the progress bar steps (vponcova)
- Use enum for the first boot action (vponcova)
- Use enum for the SELinux modes (vponcova)
- Write rootpw command to kickstart (#1557529) (mkolman)
* Thu Mar 15 2018 Martin Kolman <mkolman@redhat.com> - 28.22.2-4
- Don't make safe to observe services on buses that don't run (vponcova)
- Add the LanguageKickstarted property (vponcova)
- Don't autoquit by default if the last hub is empty (#1553935) (mkolman)
* Mon Mar 12 2018 Martin Kolman <mkolman@redhat.com> - 28.22.2-3
- add missing patches (mkolman)
* Mon Mar 12 2018 Martin Kolman <mkolman@redhat.com> - 28.22.2-2
- Use the Services module in UI (vponcova)
- Create the Services module (vponcova)
- Enable hibernation only on x86 (#1554345) (vponcova)
- Add the Storage module with no API (vponcova)
- Add the Payload module with no API (vponcova)
- Remove DBus modules Foo and Bar (vponcova)
- network module: fix accessing org.freedesktop.hostname1 for current hostname
(rvykydal)
- network module: add basic test (rvykydal)
- Add prepare command to setup-mock-test-env script (jkonecny)
- Remove useless constants from pyanaconda.dbus.constants (vponcova)
- Use identifiers to get observers and proxies (vponcova)
- Remove the publish method from DBus interfaces (vponcova)
- Replace constants in publish and register methods (vponcova)
- Replace constants in DBus interface names (vponcova)
- Define DBus errors with the dbus_error decorator (vponcova)
- Use namespaces and identifiers to describe Anaconda DBus objects (vponcova)
- Add support for identification of DBus objects and services (vponcova)
- User module should parse only rootpw for now (#1553488) (vponcova)
- Mark partition live device's disk protected. (#1524700) (dlehman)
- localization module: plug localization module into keyboard GUI spoke
(rvykydal)
- localization module: add KeyboardKickstarted property (rvykydal)
- localization module: add KS support for keyboard command (rvykydal)
- localization module: don't use Kickstarted so another command can be added
(rvykydal)
- datetime spoke: still pass ksdata to NTPconfigDialog (UIObject) (rvykydal)
- Fix release docs (mkolman)
- network: set TYPE value in ifcfg from kickstart in initrmfs (rvykydal)
- Enable payload configuration for Install classes (jkonecny)
- Make formatting consistent in AnacondaWidgets.xml (riehecky)
* Mon Mar 05 2018 Martin Kolman <mkolman@redhat.com> - 28.22.2-1
- Use the user DBUS module in the UI (mkolman)

View File

@ -1 +1 @@
SHA512 (anaconda-28.22.2.tar.bz2) = ddf9a79df24789b508552e435d8790982627e147e533c0a6157510d0ec539b5448c436bc72f235cd3be23183be1aea66457ded765f687828e6d64e6e3175847c
SHA512 (anaconda-28.22.3.tar.bz2) = 036b4f5d1e89503f12de378fbcbafc5edd606aecd0c80d4227405e86bf2173c7aef07d0eed7fdb10f74d8a1dbb15725338a5e7326641fdaa307fedec497ae5dc