Reworking dispatch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

A patchset finishing the feature https://fedoraproject.org/wiki/Anaconda/Features/Rework_dispatch follows. Take a look at https://github.com/akozumpl/anaconda/commits/dispatch for a more pleasant browsing.

The main changes are:

:: stricter semantics of the dispatch interface: once a step is skipped it is skipped forever and can not be unskipped. Similarly, a requested step is guaranteed to run. In practice this means that if something calls dispatch.request_step("filter") then "filter" will be run no matter what (or the call throws an exception right at that moment) :: making step into a proper class so it can have different attributes which can come in handy (especially with the multithreaded UI I'm working on). Step scheduling state (scheduled, skipped, etc.) is one of those attributes now. :: creating a specialized dict class IndexedDict to have a clean way of accessing steps. It is just a mapping from step names to steps but ordered, imposing a total ordering on all the steps added to dispatching (the order being the order in which steps are run in). ::cleaning up the dispatcher and step initialization in the main anaconda file :: related to the previous: moving sshd initialization and the rescue mode into steps (rescue mode never returns once started) :: changing this and that so nothing gets broken and everything runs like before :: making sure that going Back in the installer makes the dispatcher reverts step scheduling that happened in that step (this is the only exception to "no re-scheduling what was skipped already" but the concept makes sense in this case)
:: unit tests for many of those things

I made a small diagram showing the allowed step transitions here:
http://akozumpl.fedorapeople.org/scheduling.png
The dispatcher runs steps that are green and does not run steps that are bright orange in the diagram. The point is: a scheduled step is run if nothing tries to force it or disable it. Requested step is always run, skipped step is never run. Unscheduled skip is not run (but can be scheduled).

It's possible there's going to be few problems after I push this but I tested it (text/kickstart/commandline) and I will fix the remaining issues as they are found.

Ales

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list


[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux