This is a partial fix to canonical/ubuntu-desktop-installer#832. The
last missing piece is to set the DISPLAY environment variable but this
can be done in the subiquity startup script in UDI.
When executing late commands, we now start by executing run-parts over
the /etc/subiquity/postinst.d directory (by default) if it exists.
A failure in run-parts is not considered critical so any other
late_commands will run no matter what.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
A new class called Command is introduced. A Command instance has
arguments (i.e., either a string or an sequence of strings) and a
boolean called "check" that tells if an error should stop the
installation.
A Command instance also has helper methods to simplify its usage.
The early/late/error command controllers now have a sequence of Command
instances.
When loaded from an autoinstall config, the commands inherit the value
of the "check" attribute from the controller itself.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
In the source autoinstall section, the search_drivers key was marked
required. This made sense at the time when it was the only supported
key. However, now that we also support the source ID, we don't want
to force the user to supply search_drivers as well.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
The source autoinstall section now supports the "id" field where the
user can supply the ID of a source, e.g., "ubuntu-server" or
"ubuntu-server-minimal".
If the field is not supplied, the installation will use the source
declared default: true (if any) in the source catalog. Otherwise, it the
first source declared will be used.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
The function is_token_added_overlay supposedly returns a boolean. But
the absence of a final return False statement made it return None by
accident.
In practice, it should not make a difference because returning False or
None evaluate to False in a boolean context. But returning False is
cleaner (sorry Perl).
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
In the past, curtin log lines had the syslog identifier matching
"curtin_log.xxx". Nowadays, curtin commands are started via
systemd-run so they end up inheriting from the default
"subiquity_log.xxx" syslog identifier.
When updating the examples/curtin-*.json files, one must make sure to
filter out the entries that have the "subiquity_log.xxx" but are not
related to curtin invocations.
In the future, maybe we need to consider overriding the syslog
identifier when invoking curtin commands.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
We now use argparse on replay-curtin-log, which provides the --help
option along with named parameters for what used to be positional
parameters only.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
With the plan to call curtin multiple times where each invocation has a
specific purpose, we want the client to have a simple way to monitor the
status of the installation.
Instead of defining new application states for each stage, we will
report the more generic WAITING / RUNNING states in a loop until we get
to the final stages of the installation.
To start with, we are dropping POST_WAIT and POST_RUNNING in favor or
WAITING and RUNNING.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
Increase size of the disk in the simple machine config to 100 GiB.
This file is used heavily as a basic starting machine config and it
should be large enough for many types of tests.