If the autoinstall configuration does not declare a shutdown section,
the default action is not to do nothing ; but to reboot.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
Vim seems lost and breaks syntax highlighting when it is dealing with
unescaped asterisks in the markdown content. Let's escape the asterisks
to make it happy.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
Running 'make' or 'make html' will now convert the links to .md files
into links to .html files so that the documentation can be browsed
locally as HTML files. This will also produce the HTML output under
html/.
Running 'make discourse' will convert the links to .md files into links
to the existing discourse pages. The output MD files will be placed
under discourse/
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
For some reason, pandoc seems to struggle to create anchor links if
there is no space between the <a> tag and the title. Add a newline to
make it happy.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
In the following patch:
4c59e1ee never return a PROBING response from guided_POST
we fixed a UI crash occurring when a storage probing operation was
ongoing while the user would enter the partitioning screen with "Use
an entire disk".
To address the issue, we made POST /storage/guided return the last
(cached) successful probe result rather than returning a potential
PROBING status result.
That being said, when "Custom Storage Layout" is selected, we are using
a different HTTP call: GET /storage which can also return a PROBING
status result. So our fix was only partial.
This patch adds a "use_cached_result" parameter (which defaults to
false) to GET /storage. This makes the call return the last successful
probe result.
When the client selects "Custom Storage Layout" we now explicitly
request a cached result so that we don't have to deal with a potential
PROBING status response.
Ideally, we should either:
* make the client aware that a PROBING status can be returned and act
accordingly.
* pass the wait=true argument to GET /storage or POST /storage/guided
But doing so has other implications and the kinetic release is imminent.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
For some reason that we have not yet determined, the overlay that we use
for the drivers code sometimes fails to unmount with EBUSY.
When it happens, the _list_drivers task would fail, making subsequent
GET calls to /drivers?wait=true fail as well and produce an error
report.
We now mark failures in the overlay unmount operation as non fatal.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
The apt.overlay construct unmounts the overlay at the end of the with
body. To do so, it leans on subprocess.run(["umount", ...], check=True).
If we want to catch the unmount error, we need to do:
try:
with apt.overlay():
# do stuff
except subprocess.CalledProcessError:
# handle the unmount exception
However, we do not want the subprocess exceptions that happen in
the with body to be caught in the same except block.
If the umount call fails, we now wrap the exception in a
OverlayCleanupError ; therefore we can make the distinction between an
unmount error and a subprocess error that would happen in the body.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
To avoid having nested contexts for one step. It's a bit unsatisfying
because conceptually the code in CurtinPartitioningStep.run should be
considered part of the same context but I don't see a good way to do
that and it's not of practical significance.
When defining a partition with size: -1, the partition should expand to
the size of the largest gap. To determine which gap to use, we call the
function largest_gap(partition.disk).
That being said, the gap returned is sometimes bigger than expected when
using a msdos partition table. This happens because we return the
largest gap without checking if it is inside or outside the extended
partition.
Fixed by making sure that:
* for a logical partition, we pick the largest gap within the extended
partition
* for a primary partition, we pick the largest gap outside the extended
partition (if any).
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>