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