Re: Changing Anaconda Installation Source Spoke GUI
Pat Riehecky <[email protected]> Mon, 7 May 2018 11:22:10 -0500
| Newsgroups | gmane.linux.redhat.anaconda.devel |
|---|---|
| Message-ID | <[email protected]> |
Replying inline, On 05/04/2018 03:51 AM, [email protected] wrote: > Hello Pat, > > On Tue, 2018-04-24 at 14:12 -0500, Pat Riehecky wrote: >> Hello Anaconda folks, >> >> I'd like to get a conversation going about the Installation Source >> Spoke >> GUI. >> >> If this looks viable, I can do a lot of the non-i18n of the work. But >> I'd like to test out the thoughts before diving into the code. >> >> My biggest need is to show users there are other repos they could >> activate. >> This conversation is really about the UI workflow (inspired by >> PR#1323). >> >> I've got an addon that does a fair job of showing these to users, but >> I'd rather get some of my behavior upstream instead of continuing to >> port the SL anaconda addon. > Could you please point us to screenshots of your addon? I think it > would help us to get better overall idea of what are you trying to > achieve here. Can do, I've attached three screenshots: - context.png is our existing SL addon - NewInstallSpoke.png is what I'm proposing we leave on the Install Media spoke - NewSpokeUI.png is what I'm proposing for the new UI spoke >> == Background == >> The Spoke GUI is trying to do two actions: >> 1. Locate the install tree >> 2. Configure additional repositories >> >> The TUI Spoke is only trying to do (1.) Locate the install tree. >> >> I like the GUI layout of - 1. Locate the install tree. >> All of that looks great and works for me and my user base >> and is consistent between TUI and GUI. >> >> It is the second one - 2. Configure additional repositories - that >> I'd >> like to reimagine. It is only available within the GUI. >> >> Configure additional repositories is itself divided into two >> behaviors: >> A. Enable/Disable updates.repo >> B. Create other repos for use >> >> Behavior A. "Enable/Disable updates.repo" has an obvious use case. >> >> Behavior A. is visible to: >> - Fedora >> - Scientific Linux >> >> Behavior A. repo can be enabled/disabled via the InstallClass. >> >> Behavior B. "Create other repos for use" is used to add additional >> repos >> such as ELRepo or EPEL (under EL builds) or Addons such as HA. >> >> Behavior B. is visible to: >> - Fedora >> - RHEL >> - CentOS >> - Scientific Linux >> - Springdale Linux >> - Etc >> >> Behavior B. is populated with entries from .treeinfo under: >> - RHEL ISO 7 (High Availability, Resilient Storage) >> - Scientific Linux 7 (Bugfixs, Extras, Repos) >> - Springdale Linux 7 (Computational, Updates, Addons) >> >> The Behavior B. repos are disabled by default. Additional repos >> can be seeded by the InstallClass now too. >> >> == Problem == >> >> P1. If you don't have an install tree specified, when you click >> on "Installation Media", there are no extra repos listed. >> This means the workflow for enabling the Behavior B. repos for >> a netinstall with no set install tree is as follows: >> Step 1. Click on "Installation Media" and set the install tree >> Step 2. Click done to validate the install tree >> Step 3. Click on "Installation Media" again to review additional >> repos >> The User Experience for Step 3 here is unexpected. > This is a UX problem and it would be nice to solve. > > >> P2. Folks who are looking for the Additional repos don't click on >> "Installation Media" to look for them. If install media is found and >> working, my users don't expect to find them under a "Media" item. >> With nothing broken and nothing requiring interaction, they just >> don't >> click it. >> . The RHEL7 addons are on the media, but users are unaware >> . With the liner install from "old anaconda" users saw these repos >> . Fedora could possibly put the Cisco H264 and modularity repo here >> . As an SL maintainer I'd like users to see the repose we've added >> . I assume the Springdale folks would also like the higher >> visibility >> . The CentOS SIGs could be listed here where folks could see them >> >> P3. Repos imported from .treeinfo/InstallClass have no clear way to >> be >> automatically activated by the InstallClass. >> . SL updates are in 'security' and 'fastbugs' repos, not just >> 'updates' >> . CERN folks expect some packages to be loaded from a specific repo > This may be solved by some of the changes we are making right now. See > below. > >> == Existing Solutions == >> >> anaconda-addon-org_scientificlinux_contexts (Solves P2 and P3) >> The lack of clicks on "Installation Media" was a major driver for >> creating the Scientific Linux Context Anaconda plugin. >> I am the primary maintainer of this addon. >> >> updates.img (Solves P3) >> The CERN folks have an updates.img that forces the CERN repo into >> the >> installroot, activates it, and adds a hook in firstboot (locmap) to >> tweak settings. >> >> == Proposal == >> >> === UI Workflow (Solve P1 and P2) === >> Move Action 2. "Configure additional repositories" into a separate >> Spoke. >> >> Basically this is just chopping sourceWindow in half and moving the >> behavior to another (non-mandatory) Spoke. >> (from pyanaconda/ui/gui/spokes/installation_source.glade) >> >> I propose the name "Additional Software". >> >> I'd like to talk about moving "Install Updates" over here as in this >> workflow "Updates" becomes yet another repo. Having it activated by >> default for Fedora and SL feels like a solvable programming problem. > Wouldn't it result in empty spokes? Spokes which have only a few text > fields really don't look nice. I'm hopeful that .treeinfo will have a few things to toss into the new spoke. Also, the new ability to add repos via installclass, should help put more bits into the window. >> === Automatic Activation Workflow (Solve P3) === >> >> Add a flag for `/proc/cmdline` that can be set multiple times. >> >> Maybe `inst.enable.repo=XXXX` where XXXX is the repo 'id' ? > What is the purpose of this. Which repositories you want to enable by > this? On the installation media or repositories from the inst.repo > command? This is really targeted at Fermi and CERN usage, but could have wider appeal. I'm generically thinking OpenStack could provide a custom boot.iso that automatically enables the relevant CentOS SIGs via a simple change to isolinux.cfg. We've each got our own Site Specific repos that setup things like Kerberos, ssh, and system inventory. Each of us ships a custom install image that add this repo and enables it. I'd prefer a simple change to to the isolinux.cfg (Fermilab current) rather than changing base repo and shipping a custom updates.img to populate and activate the installclass repos (CERN current). Quick example ISOs: Normal SL7 boot.iso: http://ftp.scientificlinux.org/linux/scientific/7.4/x86_64/iso/SL-7.4-x86_64-netinst.iso Fermilab SL7 boot.iso: http://ftp.scientificlinux.org/linux/scientific/7x/contexts/fermilab/images/SL-7.4-fermilab-x86_64-netinst.iso The only real difference between them is isolinux.cfg. I've got a 12 line shell script that uses 'genisoimg graft-points' to make the change. >> == Followup Thoughts == >> >> The User Experience outlined in P1 isn't ideal. You can sorta test >> it >> with the CentOS7-1708 net install media. >> >> pyanaconda/ui/gui/spokes/installation_source.py#414 suggests the >> code >> needs work. >> >> Chopping the size of that task up a bit may simplify this down the >> road. > Definitely chopping this to smaller sizes is necessary. Plenty of that > code is history and some pieces could be hard to modify. Side benefit > is that smaller PRs will result in quicker response from our side :). > > > In overall we are now working in moving Anaconda to modular system. > Which will result (and already did) in plenty of rewriting. We already > moved most of the kickstart commands processing to modules and change > those calls from UI spokes to these modules. We will continue and our > great goal is to simplify logic in UI and move it to the modules. So UI > basically should have much less complexity and should be easier for > changes. > > The reason I'm mentioning this is that I like your solution. It won't > be that easy to achieve but most of those points would be beneficial > for all users which is great. > However, thanks to our work now, it is probable that your changes you > want to do will be rewritten by us later. I really like your passion > and I don't want to discourage you, I only think we should wait at > least when the Source spoke logic will be moved to modules and > cleaned. When that happen we can start discussion with details how to > implement those pieces. In that time the payload module API won't be > set in stone so we can add/modify what is needed before we make it > stable. You can help us with the modules API definition. > > Jirka That makes a lot of sense, is there a tracking bug/workflow/todo/design doc/etc I can read up on beyond these?[1] I can see about trying to get some ideas/design/code/etc into place based on what is going on there, but I'd need to get up to speed on dbus and the existing API thoughts/definitions/best practices/etc. Not discouraged, Pat [1] https://rhinstaller.wordpress.com/2017/10/09/anaconda-modularisation/ https://rhinstaller.wordpress.com/2017/11/23/anaconda-modularization-install-classes-and-addons/ https://rhinstaller.wordpress.com/2018/02/07/what-is-the-next-step-in-anaconda-modularization/ https://fedoraproject.org/wiki/Changes/AnacondaModularization -- Pat Riehecky Fermi National Accelerator Laboratory www.fnal.gov www.scientificlinux.org _______________________________________________ Anaconda-devel-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/anaconda-devel-list
context.png
(image/png, 106 KB) - not displayed
NewInstallSpoke.png
(image/png, 34.2 KB) - not displayed
NewSpokeUI.png
(image/png, 26.6 KB) - not displayed