[PATCH 1/2] Move blivet.storageInitialize into pyanaconda.storage_utils.

Anne Mulhern amulhern at redhat.com
Mon Jan 12 13:10:56 UTC 2015





----- Original Message -----
> From: "David Lehman" <dlehman at redhat.com>
> To: anaconda-patches at lists.fedorahosted.org
> Sent: Friday, January 9, 2015 4:34:56 PM
> Subject: [PATCH 1/2] Move blivet.storageInitialize into	pyanaconda.storage_utils.
> 
> Related: rhbz#1123450
> ---
>  anaconda                                |  4 ++--
>  pyanaconda/errors.py                    |  3 +++
>  pyanaconda/rescue.py                    |  3 ++-
>  pyanaconda/storage_utils.py             | 33
>  +++++++++++++++++++++++++++++++++
>  pyanaconda/ui/gui/spokes/lib/refresh.py |  5 ++---
>  5 files changed, 42 insertions(+), 6 deletions(-)
> 
> diff --git a/anaconda b/anaconda
> index 4ded503..a91e8a6 100755
> --- a/anaconda
> +++ b/anaconda
> @@ -1270,7 +1270,7 @@ if __name__ == "__main__":
>      signal.signal(signal.SIGUSR2, lambda signum, frame:
>      anaconda.dumpState())
>      atexit.register(exitHandler, ksdata.reboot, anaconda.storage)
>  
> -    from blivet import storageInitialize
> +    from pyanaconda.storage_utils import initialize_storage
>      from pyanaconda.packaging import payloadMgr
>      from pyanaconda.timezone import time_initialize
>  
> @@ -1280,7 +1280,7 @@ if __name__ == "__main__":
>          cleanPStore()
>  
>      if not flags.dirInstall:
> -        threadMgr.add(AnacondaThread(name=constants.THREAD_STORAGE,
> target=storageInitialize,
> +        threadMgr.add(AnacondaThread(name=constants.THREAD_STORAGE,
> target=initialize_storage,
>                                       args=(anaconda.storage, ksdata,
>                                       anaconda.protected)))
>          threadMgr.add(AnacondaThread(name=constants.THREAD_TIME_INIT,
>          target=time_initialize,
>                                       args=(ksdata.timezone,
>                                       anaconda.storage,
>                                       anaconda.bootloader)))
> diff --git a/pyanaconda/errors.py b/pyanaconda/errors.py
> index 72c4488..a1671c6 100644
> --- a/pyanaconda/errors.py
> +++ b/pyanaconda/errors.py
> @@ -63,6 +63,9 @@ class PasswordCryptError(Exception):
>  class ZIPLError(Exception):
>      pass
>  
> +class UnknownSourceDeviceError(Exception):
> +    pass
> +
>  # These constants are returned by the callback in the ErrorHandler class.
>  # Each represents a different kind of action the caller can take:
>  #
> diff --git a/pyanaconda/rescue.py b/pyanaconda/rescue.py
> index 6702e2b..065c77e 100644
> --- a/pyanaconda/rescue.py
> +++ b/pyanaconda/rescue.py
> @@ -35,6 +35,7 @@ from pyanaconda.flags import flags
>  from pyanaconda.installinterfacebase import InstallInterfaceBase
>  from pyanaconda.i18n import _
>  from pyanaconda.kickstart import runPostScripts
> +from pyanaconda.storage_utils import initialize_storage
>  
>  from blivet import mountExistingSystem
>  from blivet.errors import StorageError
> @@ -305,7 +306,7 @@ def doRescue(intf, rescue_mount, ksdata):
>              break
>  
>      sto = blivet.Blivet(ksdata=ksdata)
> -    blivet.storageInitialize(sto, ksdata, [])
> +    initialize_storage(sto, ksdata, [])
>      _unlock_devices(intf, sto)
>      roots = blivet.findExistingInstallations(sto.devicetree)
>  
> diff --git a/pyanaconda/storage_utils.py b/pyanaconda/storage_utils.py
> index d0906d3..ca24ecb 100644
> --- a/pyanaconda/storage_utils.py
> +++ b/pyanaconda/storage_utils.py
> @@ -39,6 +39,8 @@ from blivet.devicefactory import DEVICE_TYPE_DISK
>  from pyanaconda.i18n import _, N_
>  from pyanaconda import isys
>  from pyanaconda.constants import productName
> +from pyanaconda.errors import UnknownSourceDeviceError
> +from pyanaconda.flags import flags
>  
>  from pykickstart.constants import AUTOPART_TYPE_PLAIN, AUTOPART_TYPE_BTRFS
>  from pykickstart.constants import AUTOPART_TYPE_LVM, AUTOPART_TYPE_LVM_THINP
> @@ -90,6 +92,37 @@ AUTOPART_DEVICE_TYPES = {AUTOPART_TYPE_LVM:
> DEVICE_TYPE_LVM,
>  NAMED_DEVICE_TYPES = (DEVICE_TYPE_BTRFS, DEVICE_TYPE_LVM, DEVICE_TYPE_MD,
>  DEVICE_TYPE_LVM_THINP)
>  CONTAINER_DEVICE_TYPES = (DEVICE_TYPE_LVM, DEVICE_TYPE_BTRFS,
>  DEVICE_TYPE_LVM_THINP)
>  
> +def initialize_storage(storage, ksdata, protected):
> +    """ Perform installer-specific storage initialization. """
> +    from blivet.flags import flags as blivet_flags
> +    blivet_flags.update_from_anaconda_flags(flags)
> +


Maybe update_from_anaconda_flags() should also be moved from blivet to anaconda?


> +    # Platform class setup depends on flags, re-initialize it.
> +    _platform.update_from_flags()
> +
> +    storage.shutdown()
> +
> +    # Before we set up the storage system, we need to know which disks to
> +    # ignore, etc.  Luckily that's all in the kickstart data.
> +    storage.config.update(ksdata)
> +
> +    # Set up the protected partitions list now.
> +    if protected:
> +        storage.config.protectedDevSpecs.extend(protected)
> +
> +    storage.reset()
> +
> +    if protected and not flags.livecdInstall and \
> +       not any(d.protected for d in storage.devices):
> +        raise UnknownSourceDeviceError(protected)
> +
> +    # kickstart uses all the disks
> +    if flags.automatedInstall:
> +        if not ksdata.ignoredisk.onlyuse:
> +            ksdata.ignoredisk.onlyuse = [d.name for d in storage.disks \
> +                                         if d.name not in
> ksdata.ignoredisk.ignoredisk]
> +            log.debug("onlyuse is now: %s",
> ",".join(ksdata.ignoredisk.onlyuse))
> +
>  def size_from_input(input_str, units=None):
>      """ Get a Size object from an input string.
>  
> diff --git a/pyanaconda/ui/gui/spokes/lib/refresh.py
> b/pyanaconda/ui/gui/spokes/lib/refresh.py
> index 396c38f..c2c3c91 100644
> --- a/pyanaconda/ui/gui/spokes/lib/refresh.py
> +++ b/pyanaconda/ui/gui/spokes/lib/refresh.py
> @@ -24,8 +24,7 @@ from gi.repository import GLib
>  from pyanaconda.threads import threadMgr, AnacondaThread
>  from pyanaconda.ui.gui import GUIObject
>  from pyanaconda import constants
> -
> -from blivet import storageInitialize
> +from pyanaconda.storage_utils import initialize_storage
>  
>  __all__ = ["RefreshDialog"]
>  
> @@ -89,7 +88,7 @@ class RefreshDialog(GUIObject):
>          self._notebook.set_current_page(1)
>  
>          # And now to fire up the storage reinitialization.
> -        threadMgr.add(AnacondaThread(name=constants.THREAD_STORAGE,
> target=storageInitialize,
> +        threadMgr.add(AnacondaThread(name=constants.THREAD_STORAGE,
> target=initialize_storage,
>                                       args=(self.storage, self.data,
>                                       self.storage.devicetree.protectedDevNames)))
>  
>          self._elapsed = 0
> --
> 1.9.3
> 
> _______________________________________________
> anaconda-patches mailing list
> anaconda-patches at lists.fedorahosted.org
> https://lists.fedorahosted.org/mailman/listinfo/anaconda-patches
> 

- mulhern


More information about the anaconda-patches mailing list