Implement a stack-based signal class to push and pop menu levels
Switch navigation signals to use 'menu:' for filtering
Ensure all view classes subclass from ViewPolicy for common keypress
Signed-off-by: Ryan Harper <ryan.harper@canonical.com>
- Switch to yaml.safe_load() which throws errors when fed /dev/zero.
- Add a new ProberExecption and bubble that up to the main program
- Update unit tests to mock out repeated calls to safe_load which slowed
down the unittest run.
Signed-off-by: Ryan Harper <ryan.harper@canonical.com>
The single key 'Q' or 'q' was a bridge too far since we take
input at anytime and can surprise users. Instead use a key
combination, control-x. Clean up keypress handlers to match
urwid requirements (return None when handled, otherwise False,
or pass to super.
Signed-off-by: Ryan Harper <ryan.harper@canonical.com>
We can't use curses_display with an external event loop (tornado). The good
news is that we don't have to. Instead we switch to using agetty to bypass
login, specify the installer and options to execture. This also handles
respawning the installer and works both on serial and without.
Signed-off-by: Ryan Harper <ryan.harper@canonical.com>
We now pass a common dictionary with attributes needed
throughout our controllers. The common dictionary now
contains:
- eventloop
- ui widgets
- signal handler
- prober options
- cli arguments
In addition we've extended the progress indicator to
include a progressbar.
Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
Allow user to specify a probert machine configuration file to be
used during the installer. If presented with the config file
no probing of the host will occur.
In the case that disks don't have a size in the data collected then
they'll be marked as USED.
Add a few example machines and update the README on how to specify.
Signed-off-by: Ryan Harper <ryan.harper@canonical.com>
Provide streaming updates to the UI during non blocking
commands. For the progress controller specifically this
is the output from curtin_wrap and subsequent curtin
execs.
Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
This provides us with several additional features the builtin
select() loop does not, such as:
- Chainable async actions via coroutines
- asyncio bridge
This will keep the code simpler and read more like a synchronous
application.
Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
The previous organization was in place to reduce the number of open
files when working on getting the demo into shape. Since we've completed
the demo revert back to our MVC model incorporating the latest changes
that were made during that time leading up to the demo.
Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>
Switch to GPT partition. This requires using a small gpt partition
to hold grub payloads and flagged as bios_grub. Add logic to
create a bios_grub_partition if one is not already created when
first partitioning devices.
Signed-off-by: Ryan Harper <ryan.harper@canonical.com>
- Reset button will clear out any changes made to the filesystem model.
- Fixed Reset button label and callback.
- Reverted change to DiskPartitionView which called filesystem:finish instead
of returning back to FilesystemView.
- Fixed a few lint errors.
Signed-off-by: Ryan Harper <ryan.harper@canonical.com>
This writes out the filesystem format to /tmp/subiquity-config.yaml
and exists the installer cleanly.
Signed-off-by: Adam Stokes <adam.stokes@ubuntu.com>