For the systems currently being tested, the live installer environment
is stacked on the one being installed and so the system definition for
the system being installed is already available. That's not going to be
true in full generality though, so add some helpers to make all systems
defined in the source available in the live installer environment before
calling into snapd to find out about them.
Subiquity now supports a new endpoint that can be used by the desktop
installer to configure whether the ubuntu-restricted-addons package
should be installed. This package contains third-party codecs commonly
used on a desktop install.
curl --unix-socket /run/subiquity/socket http://a/codecs
> {"install": false}
curl --unix-socket /run/subiquity/socket \
http://a/codecs -d '{"install": true}'
curl --unix-socket /run/subiquity/socket http://a/codecs
> {"install": true}
Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
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>