* Looking for buttons by label only works when the label can't be
translated.
* One need to emit a signal on button.base_widget rather than button.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
[Michael Hudson Doyle]
* Original patch
[Olivier Gayot]
* Make sure visible elements can be translated by using gettext _()
construct.
* Have GET /drivers provide the status of the checkbox (i.e. install
drivers?) so we can restore the choice of the user when going back.
* Store an object with an "install" boolean in the autoinstall schema ;
instead of storing a boolean directly.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
Instead of having interleaved stdout and stderr in server-output, we now
have respectively:
* stdout redirected to server-stdout
* stderr redirected to server-stderr
This will allow us to monitor for warnings / errors more efficiently.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
RFC3339 allows dates to use the Z suffix instead of a time zone offset
of 0. Unfortunately, this is not supported by Python
datetime.date.fromisoformat. Work around the issue by replacing the
optional Z character with +00:00 before parsing the date.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
The ensure_cmd_exists() coroutine from ubuntu_drivers was never awaited.
Therefore, the check would always silently succeed. Taking a look in
server-output would show the warning though:
RuntimeWarning: coroutine
'UbuntuDriversHasDriversInterface.ensure_cmd_exists' was never awaited
self.ubuntu_drivers.ensure_cmd_exists(d.mountpoint)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Also, the implementation of ensure_cmd_exists() when
SUBIQUITY_DEBUG=run-drivers is set was failing because we use a shell
builtin as an executable. This was not noticed since ensure_cmd_exists()
was not executed and arun_command() does not check for errors by
default.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
Per LP: #1962025, the update screen can get stuck in test automation.
Cancel the task waiting to see if there is an update, which makes sense
more broadly anyhow in that if a regular UI user has declined the
update then the check task is no longer helpful.
Instead of using systemd-cat in dry-run mode and systemd-run in normal
mode, we now use systemd-run all the time but pass the --user switch
when running as non-root.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
The LoggedCommandRunner now has the option to start a command with
private mounts enabled - see mount_namespaces(7).
To use this feature, we now rely on systemd-run instead of systemd-cat.
The main benefit is that it should allow us not to worry about mounts
refusing to be un-mounted after executing a curtin in-target command.
On the downside, systemd-run requires root privileges (unless --user is
available) so we can't use it in dry-run mode. For dry-run mode, we
still need to rely on systemd-cat.
Another downside is that the commands passed to systemd-run are run in a
clean environment. Therefore, we must explicitly set the environment
variables that we want to pass to the commands to execute.
I came up with a short list of environment variables that we need but we
might need to add more later.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>