[PATCH 2/2] Make Initial Setup compatible with rebased Anaconda (#1229747)

Vratislav Podzimek vpodzime at redhat.com
Wed Jun 17 07:50:18 UTC 2015


On Tue, 2015-06-16 at 18:23 +0200, Martin Kolman wrote:
> Adapt to the changed category handling and other less significant
> changes such as root path handling. Also remove a couple unused
> imports when we are at it.
> 
> Resolves: rhbz#1229747
> Signed-off-by: Martin Kolman <mkolman at redhat.com>
> ---
>  initial_setup/__main__.py                   | 24 +++------
>  initial_setup/common.py                     | 63 ++++++++++++++++++++++++
>  initial_setup/gui/gui.py                    |  6 +--
>  initial_setup/gui/hubs/initial_setup.glade  | 27 +++++++----
>  initial_setup/gui/hubs/initial_setup_hub.py | 75 ++---------------------------
>  initial_setup/gui/spokes/eula.glade         |  2 -
>  initial_setup/gui/spokes/eula.py            |  9 +++-
>  initial_setup/post_installclass.py          |  2 +-
>  initial_setup/tui/hubs/initial_setup_hub.py | 11 +++--
>  initial_setup/tui/spokes/eula.py            |  3 +-
>  initial_setup/tui/tui.py                    |  4 --
>  11 files changed, 110 insertions(+), 116 deletions(-)
>  create mode 100644 initial_setup/common.py
> 
> diff --git a/initial_setup/__main__.py b/initial_setup/__main__.py
> index 642e93c..d9e411f 100644
> --- a/initial_setup/__main__.py
> +++ b/initial_setup/__main__.py
> @@ -5,7 +5,7 @@ import signal
>  import pykickstart
>  import logging
>  from pyanaconda.users import Users
> -from initial_setup.post_installclass import InstallClass
> +from initial_setup.post_installclass import PostInstallClass
>  from initial_setup import initial_setup_log
>  from pyanaconda import iutil
>  
> @@ -35,14 +35,6 @@ if mode == "gui":
>          gi.overrides.__path__.insert(0, p)
>      log.debug("GI overrides imported")
>  
> -# set the root path to / so the imported spokes
> -# know where to apply their changes
> -from pyanaconda import constants
> -
> -# this has to stay in the form constants.ROOT_PATH so it modifies
> -# the scalar in anaconda, not the local copy here
> -constants.ROOT_PATH = "/"
> -
>  from pyanaconda.addons import collect_addon_paths
>  
>  addon_paths = ["/usr/share/initial-setup/modules", "/usr/share/anaconda/addons"]
> @@ -99,14 +91,14 @@ try:
>      parser.readKickstart(INPUT_KICKSTART_PATH)
>      log.info("kickstart parsing done")
>  except pykickstart.errors.KickstartError as kserr:
> -    log.exception("kickstart parsing failed")
> +    log.exception("kickstart parsing failed: %s" % kserr)
>      sys.exit(1)
>  
>  if mode == "gui":
>      try:
>          # Try to import IS gui specifics
>          log.debug("trying to import GUI")
> -        import gui
> +        import initial_setup.gui
>      except ImportError:
>          log.exception("GUI import failed, falling back to TUI")
>          mode = "tui"
> @@ -115,21 +107,21 @@ if mode == "gui":
>      # gui already imported (see above)
>  
>      # Add addons to search paths
> -    gui.InitialSetupGraphicalUserInterface.update_paths(addon_module_paths)
> +    initial_setup.gui.InitialSetupGraphicalUserInterface.update_paths(addon_module_paths)
>  
>      # Initialize the UI
>      log.debug("initializing GUI")
> -    ui = gui.InitialSetupGraphicalUserInterface(None, None, InstallClass())
> +    ui = initial_setup.gui.InitialSetupGraphicalUserInterface(None, None, PostInstallClass())
>  else:
>      # Import IS gui specifics
> -    import tui
> +    import initial_setup.tui
>  
>      # Add addons to search paths
> -    tui.InitialSetupTextUserInterface.update_paths(addon_module_paths)
> +    initial_setup.tui.InitialSetupTextUserInterface.update_paths(addon_module_paths)
>  
>      # Initialize the UI
>      log.debug("initializing TUI")
> -    ui = tui.InitialSetupTextUserInterface(None, None, None)
> +    ui = initial_setup.tui.InitialSetupTextUserInterface(None, None, None)
>  
>  # Pass the data object to user inteface
>  log.debug("setting up the UI")
> diff --git a/initial_setup/common.py b/initial_setup/common.py
> new file mode 100644
> index 0000000..ce8e5b1
> --- /dev/null
> +++ b/initial_setup/common.py
> @@ -0,0 +1,63 @@
> +"""Common methods for Initial Setup"""
> +
> +from pyanaconda.ui.common import collect
> +from pyanaconda.constants import FIRSTBOOT_ENVIRON
> +from pyanaconda.i18n import N_
> +from pyanaconda.ui.categories import SpokeCategory
> +
> +
> +def collect_spokes(mask_paths, spoke_parent_class):
> +    """Return a list of all spoke subclasses that should appear for a given
> +       category. Look for them in files imported as module_path % basename(f)
> +
> +       :param mask_paths: list of mask, path tuples to search for classes
> +       :type mask_paths: list of (mask, path)
> +
> +       :param spoke_parent_class: Spoke parent class used for checking spoke compatibility
> +       :type spoke_parent_class: GUI or TUI Spoke class
> +
> +       :return: list of Spoke classes belonging to category
> +       :rtype: list of Spoke classes
> +
> +    """
> +    spokes = []
> +    for mask, path in mask_paths:
> +
Extra blank line.

> +        spokes.extend(collect(mask, path,
> +                              lambda obj: issubclass(obj, spoke_parent_class) and obj.should_run("firstboot", None)))
> +    return spokes
> +

-- 
Vratislav Podzimek

Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic



More information about the anaconda-patches mailing list