Storage version 2 is a global setting. Having one disk use storage
version 1 and another with storage version 2 should not be possible and
should not be considered a valid use-case.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
setuptools declares a certain number of entry points that use the main
function of the associated component. That said, now that main is an
async function, it does not work. There seems to be no way to tell
setuptools to wrap the call to the entry point with asyncio.run so we
need to revert to a synchronous main function.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
When the client exits successfully, it signals the server with SIGINT.
Before changing the way the event loop is managed, the server always
exited before being signaled during integrations tests.
Now though, it seems that the server exits slightly after, so it does
often receive the SIGINT during integration tests. When it does, it
prints a KeyboardInterrupt backtrace to its standard error stream.
Integration tests treat this as a failure.
Adding a sleep of 0.1 second before signaling the server with SIGINT
seems to fix the issue. Just to be sure, we are waiting up to one second
before sending the SIGINT.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
asyncio.create_task() calls asyncio.get_running_loop() under the hood so
there is no need to call get_running_loop() ourselves if the sole
purpose is to create a task.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
Although 1GiB of RAM seems enough to install a server ISO and boot it
after, if feels rather on the low end nowadays.
The quickstart for s390x already uses 2GiB so it feels right to update
the generic guide to use 2GiB as well.
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
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>
If subiquity detects it should not add a swapfile (e.g., swap partition
present, or root filesystem on btrfs), it renders this curtin config:
swap:
swap: 0
But that should be:
swap:
size: 0
Per the curtin docs [1]:
swap
size: <Size string>
Configure the exact size of the swapfile. Setting size to 0 will disable swap.
[1] https://curtin.readthedocs.io/en/latest/topics/config.html#swap
Tests: (build snap/modify ISO as in README.md)
- before:
$ cat /proc/swaps
Filename ...
/swap.img ...
/dev/vda3 ...
$ sudo grep -A1 ^swap: \
/var/log/installer/curtin-install/subiquity-partitioning.conf
swap:
swap: 0
- after:
$ cat /proc/swaps
Filename ...
/dev/vda3 ...
$ sudo grep -A1 ^swap: \
/var/log/installer/curtin-install/subiquity-partitioning.conf
swap:
size: 0
LP: #1927103
Signed-off-by: Mauricio Faria de Oliveira <mfo@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>