profile
viewpoint
Michael Hudson-Doyle mwhudson @CanonicalLtd Wellington, NZ Ubuntu Foundations

CanonicalLtd/subiquity 138

Ubuntu Server Installer

4ad/go.arm64 18

Go development tree for the arm64 port (historical).

4ad/go 12

Go development tree for the sparc64 port

CanonicalLtd/probert 9

Prober tool - Hardware discovery library used in Subiquity

mwhudson/django-tables2 1

django-tables2 - An app for creating HTML tables

mwhudson/docker 1

Docker - the open-source application container engine

frobware/go 0

Go development tree for the arm64 port

mwhudson/aiocoap 0

The Python CoAP library

push eventtianon/debian-docker

Michael Hudson-Doyle

commit sha 235c180a31ffcb5f2410db602a26fbe11a714bb6

Version dependency on containerd.

view details

Tianon Gravi

commit sha 1b72d7bfe70212eaba3be9a9404584d4564be04d

Remove sysvinit and upstart scripts

view details

Tianon Gravi

commit sha 408be73486f6387be8d7d59a1a820dd191f71c4c

Add LP reference for 1832819

view details

Tianon Gravi

commit sha c57495bfd9589447ebde9ab48f4ebe2c7bb480a7

Update to 18.09.8 (CVE-2019-13509)

view details

Tianon Gravi

commit sha 720cb21ceb109bde13c578e7cbce822055129a81

Update upstream-version-gitcommits

view details

Michael Hudson-Doyle

commit sha 9fe34887af628c2bad3407933beabd1c2f4c1810

mention upgrade bug

view details

Michael Hudson-Doyle

commit sha 0ec3a3978e99b80c67b06d71a83bc89eb9b8a542

releasing package docker.io version 18.09.8-0ubuntu1

view details

Michael Hudson-Doyle

commit sha 3d630a87f804d281761cfdd3a015508f851492b9

Remove extraneous start/stop of docker via init.d script from basic-smoke autopkgtest.

view details

Michael Hudson-Doyle

commit sha 802ca8fb5f90dddec3683987dd079ecdb4579f1f

releasing package docker.io version 18.09.8-0ubuntu2

view details

Michael Hudson-Doyle

commit sha 6c614d49769316e3805d82d196cd0f95cd593d0b

d/tests/docker-in-lxd: skip on eoan+/i386 as lxd images are no longer provided.

view details

Michael Hudson-Doyle

commit sha 6189280ba9f4538c9356a70f0a07ca5c4c7534a1

releasing package docker.io version 18.09.8-0ubuntu3

view details

Michael Hudson-Doyle

commit sha 320cb8da3e1a142024b5d1124a9e1cc9bf8cc280

apply changes from 18.09.8-0ubuntu4

view details

Michael Hudson-Doyle

commit sha ba8295cc4b4c8bc33dca2f6c34544decf4c6ed33

Set GOCACHE to a safely writable directory during build as the cache is mandatory with Go 1.12.

view details

Michael Hudson-Doyle

commit sha da8ba9b7c9eedb54c08a6ba3518b67e3f2ecb29c

releasing package docker.io version 18.09.8-0ubuntu5

view details

Tianon Gravi

commit sha 9146a45c08ee214cb4c39419285aef15e19f13fc

Remove leftover sysvinit/upstart patches

view details

Tianon Gravi

commit sha 268059cb4d522d480d1111c2b332aea9b6504b0f

Update to 18.09.9

view details

Michael Hudson-Doyle

commit sha 94cc6e38738735b4e8e4994e40a8f38cdbac734c

releasing package docker.io version 18.09.9-0ubuntu1

view details

Tianon Gravi

commit sha 518bb837344966038ccb7823f090449803752969

Update to 19.03.2

view details

Michael Hudson-Doyle

commit sha 1a52988970bdd8018bc895ba47a6cbca5fe7cfe1

releasing package docker.io version 19.03.2-0ubuntu1

view details

Tianon Gravi

commit sha 86df3bca1a347d924544e1acd1f5b125eefb7d5d

Update to 19.03.6 upstream release

view details

push time in 5 days

created tagtianon/debian-docker

tagdebian/19.03.6-0ubuntu1_18.04.1

https://anonscm.debian.org/cgit/docker/docker.io.git

created time in 5 days

created tagtianon/debian-docker

tagdebian/19.03.6-0ubuntu1_19.10.1

https://anonscm.debian.org/cgit/docker/docker.io.git

created time in 5 days

create barnchtianon/debian-docker

branch : eoan

created branch time in 5 days

created tagtianon/debian-runc

tagdebian/1.0.0_rc10-0ubuntu1_18.04.1

https://anonscm.debian.org/cgit/pkg-go/packages/runc.git

created time in 5 days

create barnchtianon/debian-runc

branch : bionic

created branch time in 5 days

create barnchtianon/debian-runc

branch : eoan

created branch time in 5 days

created tagtianon/debian-runc

tagdebian/1.0.0_rc10-0ubuntu1_19.10.1

https://anonscm.debian.org/cgit/pkg-go/packages/runc.git

created time in 5 days

push eventtianon/debian-runc

Michael Hudson-Doyle

commit sha de1ac205ea28360eeb3ad500089b7b46c59a3230

releasing package runc version 1.0.0~rc10-0ubuntu1

view details

push time in 6 days

created tagtianon/debian-runc

tagdebian/1.0.0_rc10-0ubuntu1

https://anonscm.debian.org/cgit/pkg-go/packages/runc.git

created time in 6 days

push eventtianon/debian-docker

Michael Hudson-Doyle

commit sha 42e8b18cf6185f4cb763e210ae6801396e706cb3

releasing package docker.io version 19.03.6-0ubuntu1

view details

push time in 6 days

created tagtianon/debian-docker

tagdebian/19.03.6-0ubuntu1

https://anonscm.debian.org/cgit/docker/docker.io.git

created time in 6 days

pull request commentcanonical/cloud-init

cc_growpart: Add verbosity, locking and realpath translation

Growpart has its own internal logic for selecting which underlying tools to use to modify the target device partition table. This information is not visible in cloud-init logging which makes it difficult to understand what may have occurred when debugging. Adding the '--verbose' flag and logging the output will emit useful information about which tool was used (sfdisk vs. sgdisk).

This sounds useful.

On some platforms the target device may point to a symbolic link, e.g. /dev/disk/by-partuuid/XXXX; These symbolic links may be unavailable during partition changes due to udev behavior. Use os.path.realpath to expand the symbolic links to the real device path (e.g. /dev/sda1) as this value use used in the get_size() method cc_growpart uses to compare before and after device values.

This sounds more or less sensible too.

Lastly get_size() will now make use of flock (1) to take a shared lock against the device it will attempt to obtain the size preventing cc_growpart from reading the size value while udev or other processes are making changes.

This, however. What's the point? Taking the lock around just the read doesn't prevent a TOCTOU. Mentioning udev here also seems misleading because (a) udev doesn't modify the disk (b) udev takes a shared lock too...

raharper

comment created time in 6 days

create barnchtianon/debian-containerd

branch : eoan

created branch time in 7 days

created tagtianon/debian-containerd

tagdebian/1.3.3-0ubuntu1_19.10.1

https://anonscm.debian.org/cgit/pkg-go/packages/containerd.git

created time in 7 days

created tagmwhudson/debian-containerd

tagdebian/1.3.3-0ubuntu1_18.04.1

https://anonscm.debian.org/cgit/pkg-go/packages/containerd.git

created time in 7 days

create barnchmwhudson/debian-containerd

branch : bionic

created branch time in 7 days

PR closed CanonicalLtd/subiquity

Add guided encrypted partitioning option. WIP 🚧

https://asciinema.org/a/uOeYHMVkFmBtfl7c9YLUJ2LPm

Not sure about where to store the guided passphrase, hence it's tagged onto the controller. Note that it is cleared any time one goes back. As ultimately it's the property of the volume group inside the model.

Also not sure about the text on the "password" screen and the help text on the choose disk screen.

+99 -9

10 comments

4 changed files

xnox

pr closed time in 7 days

pull request commentCanonicalLtd/subiquity

Add guided encrypted partitioning option.

This is all done in separate branches now.

xnox

comment created time in 7 days

created tagtianon/debian-containerd

tagdebian/1.3.3-0ubuntu1

https://anonscm.debian.org/cgit/pkg-go/packages/containerd.git

created time in 12 days

push eventtianon/debian-containerd

Michael Hudson-Doyle

commit sha f6394031da6bb8a251d257fcb1702d62ad72f1d3

New upstream version.

view details

Michael Hudson-Doyle

commit sha 9c20fdcd9844ef91693f4d41b168ad63bb3a3523

releasing package containerd version 1.3.3-0ubuntu1

view details

push time in 12 days

push eventCanonicalLtd/subiquity

Michael Hudson-Doyle

commit sha f77c4dc175c6967245d1c66fe9dbca4d87695591

add guided luks options

view details

Dimitri John Ledkov

commit sha 0eb86b32a92cfb3a932c1cc96af8d5491abed2a6

Update help

view details

Michael Hudson-Doyle

commit sha 522fa5c4cbcf1cf41515639d6002fc0e976a9506

Merge pull request #4 from xnox/luks Update help

view details

Michael Hudson-Doyle

commit sha e59e6dd16bce4b5178587d6829df93457a097ffd

bring back a 1-line subtitle

view details

Michael Hudson-Doyle

commit sha b58faf77a4f8e091c3f0242721d85f92fe6b1076

Tweak page titles

view details

Michael Hudson-Doyle

commit sha 6c5c2022fdd7bb66c81ebdd48205648768c25f99

Merge pull request #630 from mwhudson/guided-luks add guided luks options

view details

push time in 12 days

PR merged CanonicalLtd/subiquity

add guided luks options

ping @xnox

The only problem I have with this is that it looks pretty cluttered in 80x24. Unclear how much we should worry about that.

+57 -17

1 comment

3 changed files

mwhudson

pr closed time in 12 days

push eventCanonicalLtd/subiquity

Michael Hudson-Doyle

commit sha a7db327944aabfce8947e6fe1785c3304131093d

fix initial highlight on the welcome screen unless LANG happened to match a supported language exactly, the last language (currently Ukranian) would be selected by default

view details

Michael Hudson-Doyle

commit sha bb8db426eadd294f5c990975b2331da15f396af4

Merge pull request #631 from mwhudson/fix-initial-language fix initial highlight on the welcome screen

view details

push time in 12 days

PR merged CanonicalLtd/subiquity

fix initial highlight on the welcome screen

unless LANG happened to match a supported language exactly, the last language (currently Ukranian) would be selected by default

+1 -1

0 comment

1 changed file

mwhudson

pr closed time in 12 days

PR opened CanonicalLtd/subiquity

fix initial highlight on the welcome screen

unless LANG happened to match a supported language exactly, the last language (currently Ukranian) would be selected by default

+1 -1

0 comment

1 changed file

pr created time in 12 days

create barnchmwhudson/subiquity

branch : fix-initial-language

created branch time in 12 days

push eventmwhudson/subiquity

Michael Hudson-Doyle

commit sha e59e6dd16bce4b5178587d6829df93457a097ffd

bring back a 1-line subtitle

view details

Michael Hudson-Doyle

commit sha b58faf77a4f8e091c3f0242721d85f92fe6b1076

Tweak page titles

view details

push time in 12 days

push eventmwhudson/subiquity

Dimitri John Ledkov

commit sha 0eb86b32a92cfb3a932c1cc96af8d5491abed2a6

Update help

view details

Michael Hudson-Doyle

commit sha 522fa5c4cbcf1cf41515639d6002fc0e976a9506

Merge pull request #4 from xnox/luks Update help

view details

push time in 12 days

PR merged mwhudson/subiquity

Update help
+10 -13

0 comment

1 changed file

xnox

pr closed time in 12 days

PR opened CanonicalLtd/subiquity

add guided luks options

ping @xnox

The only problem I have with this is that it looks pretty cluttered in 80x24. Unclear how much we should worry about that.

+43 -4

0 comment

2 changed files

pr created time in 13 days

create barnchmwhudson/subiquity

branch : guided-luks

created branch time in 13 days

push eventtianon/debian-containerd

Michael Hudson-Doyle

commit sha bf44223177af7f4888b2edce8767acb3cb1621f8

d/patches/preserve-debug-info.patch: generate binaries with debug info in them so we still get ddebs.

view details

Michael Hudson-Doyle

commit sha 4b3f0104d8341c988f17c16aa6a61cc2a842ba84

releasing package containerd version 1.3.2-0ubuntu1

view details

push time in 13 days

created tagtianon/debian-containerd

tagdebian/1.3.2-0ubuntu1

https://anonscm.debian.org/cgit/pkg-go/packages/containerd.git

created time in 13 days

push eventmwhudson/subiquity

Michael Hudson-Doyle

commit sha c0e4d8c7f76439ce6839181656d2905c698ce293

infrastructure for writing an autoinstall.yaml config file at the end of install

view details

Michael Hudson-Doyle

commit sha 235fbdabfbc59a39e72283355780709a18f4a905

implement some make_autoinstall methods

view details

push time in 13 days

push eventmwhudson/subiquity

Michael Hudson-Doyle

commit sha 77f5a3a95401260938bf171f2081c213fa5a7416

infrastructure for writing an autoinstall.yaml config file at the end of install

view details

Michael Hudson-Doyle

commit sha cc2150bfb2a31427ee963d8c4725b42b9e8eee38

implement some make_autoinstall methods

view details

push time in 13 days

create barnchmwhudson/subiquity

branch : autoinstall-write-config

created branch time in 13 days

push eventCanonicalLtd/subiquity

Michael Hudson-Doyle

commit sha 9db0c18fdd05315c5a5f16e52b99668484eb11b2

add some example autoinstall files

view details

Michael Hudson-Doyle

commit sha 3e729bdaddf8a6c1acb148e95cae83258cd1b14a

add --autoinstall command line option

view details

Michael Hudson-Doyle

commit sha e975d187e76ce14ce9debe8f287859fd93102e1c

load, merge and write out again the autoinstall configs

view details

Michael Hudson-Doyle

commit sha 671febc73f71ebbc9fbdcf198ae5ce695ee4e8a6

add controller and application .interactive() methods

view details

Michael Hudson-Doyle

commit sha 9c59fa59db876f92b8c6011b94b43cbc2cba73d1

general machinery for autoinstalls

view details

Michael Hudson-Doyle

commit sha 1f4c05a50fb8e304e9955d2ac828668c7159847d

leave the terminal in text mode and print to it when not interactive

view details

Michael Hudson-Doyle

commit sha 99218fbeb46cc0cb9bfced7281cb0ec75538884f

support early and late commands

view details

Michael Hudson-Doyle

commit sha ce7521017a87897d3e481a32de5db5b879d1aa8c

fill out autoinstall_key everywhere

view details

Michael Hudson-Doyle

commit sha 53e899c86ff1be279e2fa45206fbc19d08d95bdf

first stab at implementing load_autoinstall_data & apply_autoinstall_config

view details

Michael Hudson-Doyle

commit sha d485a72cea9231956ccdcb26d8189a9d2ad889a5

do not listen to udev block events when not interactive

view details

Michael Hudson-Doyle

commit sha e3829549e8fa5182250252db13f73b56b619a0ea

reboot after successful autoinstall

view details

Michael Hudson-Doyle

commit sha db9762bcf3248462b33bac0f51593483dc683284

update apt/mirror handling to new schema

view details

Michael Hudson-Doyle

commit sha e2410a0bb1f3be11ce19d8e99cacf1cf804a5cc4

Merge pull request #625 from mwhudson/autoinstall-2 autoinstall!

view details

push time in 20 days

PR merged CanonicalLtd/subiquity

autoinstall!

The branch implements the first cut of autoinstall for subiquity. What is there:

  • support for fully non-interactive and partially interactive installs
  • support for early and late commands

What is not there:

  • any sort of decent error handling
    • this includes any sort of sensible data validation. Get your autoinstall.yaml wrong and things will just blow up in a mess
  • support for the packages, debconf-selections, snaplist, user-data sections of the config file
  • sensible behaviour when more than one subiquity is running (e.g. on tty1 and serial)
  • generation of an autoinstall file at the end of install
  • any kind of sensible storage configuration, it just supports lvm or direct installation on the largest disk in the system

But I have plans for all of these things :)

+423 -30

2 comments

23 changed files

mwhudson

pr closed time in 20 days

push eventmwhudson/subiquity

Michael Hudson-Doyle

commit sha 7ded7c1ac736175b33204b11ef69405caabc2491

refactor how mirror data is handled This is prep work for allowing autoinstalls to specify a complete apt config.

view details

Michael Hudson-Doyle

commit sha 52fc18b77bd2f73fb6a6b18842265746cd0dc824

calculate some things that will not change just once

view details

Michael Hudson-Doyle

commit sha 2c1d350ea04f6d6fa1b55cf8bc210aaa96f4752c

do less at import time

view details

Michael Hudson-Doyle

commit sha f8e89313ee3af2ccb9502debf85d66f990853c46

Merge pull request #626 from mwhudson/mirror-tweaks refactor how mirror data is handled

view details

Michael Hudson-Doyle

commit sha 9db0c18fdd05315c5a5f16e52b99668484eb11b2

add some example autoinstall files

view details

Michael Hudson-Doyle

commit sha 3e729bdaddf8a6c1acb148e95cae83258cd1b14a

add --autoinstall command line option

view details

Michael Hudson-Doyle

commit sha e975d187e76ce14ce9debe8f287859fd93102e1c

load, merge and write out again the autoinstall configs

view details

Michael Hudson-Doyle

commit sha 671febc73f71ebbc9fbdcf198ae5ce695ee4e8a6

add controller and application .interactive() methods

view details

Michael Hudson-Doyle

commit sha 9c59fa59db876f92b8c6011b94b43cbc2cba73d1

general machinery for autoinstalls

view details

Michael Hudson-Doyle

commit sha 1f4c05a50fb8e304e9955d2ac828668c7159847d

leave the terminal in text mode and print to it when not interactive

view details

Michael Hudson-Doyle

commit sha 99218fbeb46cc0cb9bfced7281cb0ec75538884f

support early and late commands

view details

Michael Hudson-Doyle

commit sha ce7521017a87897d3e481a32de5db5b879d1aa8c

fill out autoinstall_key everywhere

view details

Michael Hudson-Doyle

commit sha 53e899c86ff1be279e2fa45206fbc19d08d95bdf

first stab at implementing load_autoinstall_data & apply_autoinstall_config

view details

Michael Hudson-Doyle

commit sha d485a72cea9231956ccdcb26d8189a9d2ad889a5

do not listen to udev block events when not interactive

view details

Michael Hudson-Doyle

commit sha e3829549e8fa5182250252db13f73b56b619a0ea

reboot after successful autoinstall

view details

Michael Hudson-Doyle

commit sha db9762bcf3248462b33bac0f51593483dc683284

update apt/mirror handling to new schema

view details

push time in 20 days

push eventCanonicalLtd/subiquity

Michael Hudson-Doyle

commit sha 7ded7c1ac736175b33204b11ef69405caabc2491

refactor how mirror data is handled This is prep work for allowing autoinstalls to specify a complete apt config.

view details

Michael Hudson-Doyle

commit sha 52fc18b77bd2f73fb6a6b18842265746cd0dc824

calculate some things that will not change just once

view details

Michael Hudson-Doyle

commit sha 2c1d350ea04f6d6fa1b55cf8bc210aaa96f4752c

do less at import time

view details

Michael Hudson-Doyle

commit sha f8e89313ee3af2ccb9502debf85d66f990853c46

Merge pull request #626 from mwhudson/mirror-tweaks refactor how mirror data is handled

view details

push time in 20 days

PR merged CanonicalLtd/subiquity

refactor how mirror data is handled

This is prep work for allowing autoinstalls to specify a complete apt config.

+96 -30

0 comment

6 changed files

mwhudson

pr closed time in 20 days

push eventmwhudson/subiquity

Michael Hudson-Doyle

commit sha 2c1d350ea04f6d6fa1b55cf8bc210aaa96f4752c

do less at import time

view details

push time in 20 days

Pull request review commentCanonicalLtd/subiquity

refactor how mirror data is handled

 # You should have received a copy of the GNU Affero General Public License # along with this program.  If not, see <http://www.gnu.org/licenses/>. +import copy import logging-import platform from urllib import parse +from curtin.commands.apt_config import (+    get_arch_mirrorconfig,+    get_mirror,+    PRIMARY_ARCHES,+    )+from curtin.util import get_architecture+ log = logging.getLogger('subiquitycore.models.mirror') -# correct default mirror for most arches-DEFAULT_MIRROR = 'http://ports.ubuntu.com/ubuntu-ports'-# apart from the two snowflakes-if platform.machine() in ['i686', 'x86_64']:-    DEFAULT_MIRROR = 'http://archive.ubuntu.com/ubuntu'++DEFAULT = {+    "preserve_sources_list": False,+    "primary": [+        {+            "arches": PRIMARY_ARCHES,+            "uri": "http://archive.ubuntu.com/ubuntu",+        },+        {+            "arches": ["default"],+            "uri": "http://ports.ubuntu.com/ubuntu-ports",+        },+        ],+}++ARCHITECTURE = get_architecture()

Yeah, that makes more sense, thanks.

mwhudson

comment created time in 20 days

push eventmwhudson/subiquity

Michael Hudson-Doyle

commit sha 417ca737af2b8f32ab85ed24f52814f8b120b763

do less at import time

view details

push time in 20 days

push eventmwhudson/subiquity

Dimitri John Ledkov

commit sha cbaab430a39d23d3e2e8d48a47f842e156280152

Switch script to use python3, as python is no longer available I guess good luck to the Jenkins CI?

view details

Michael Hudson-Doyle

commit sha 910b00b0c7b7b7eab86f0dc2b8d6a92278432f7f

fix installation hang after refreshing snap The installprogress controller waits for various model objects to be configured before proceeding. But model objects whose state was loaded from disk after a snap refresh were not marked as configured :( This meant that, in particular, the postinstall steps waited on the language being configured indefinitely. The fix is simple: mark model objects as configured when their state is loaded from disk post-refresh.

view details

Michael Hudson-Doyle

commit sha 845b7b397fe0c711c8d492c8f19fa7c055a38455

Merge pull request #628 from mwhudson/refresh-to-async-fix fix installation hang after refreshing snap

view details

Dimitri John Ledkov

commit sha 436ee1d76ddad5362c25843f429b4346324c0b8f

Bump curtin to commit with multipath fixes

view details

Michael Hudson-Doyle

commit sha 7ded7c1ac736175b33204b11ef69405caabc2491

refactor how mirror data is handled This is prep work for allowing autoinstalls to specify a complete apt config.

view details

Michael Hudson-Doyle

commit sha 52fc18b77bd2f73fb6a6b18842265746cd0dc824

calculate some things that will not change just once

view details

push time in 20 days

Pull request review commentCanonicalLtd/subiquity

refactor how mirror data is handled

 # You should have received a copy of the GNU Affero General Public License # along with this program.  If not, see <http://www.gnu.org/licenses/>. +import copy import logging-import platform from urllib import parse +from curtin.commands.apt_config import (+    get_arch_mirrorconfig,+    get_mirror,+    PRIMARY_ARCHES,+    )+from curtin.util import get_architecture+ log = logging.getLogger('subiquitycore.models.mirror') -# correct default mirror for most arches-DEFAULT_MIRROR = 'http://ports.ubuntu.com/ubuntu-ports'-# apart from the two snowflakes-if platform.machine() in ['i686', 'x86_64']:-    DEFAULT_MIRROR = 'http://archive.ubuntu.com/ubuntu'++DEFAULT = {+    "preserve_sources_list": False,+    "primary": [+        {+            "arches": PRIMARY_ARCHES,+            "uri": "http://archive.ubuntu.com/ubuntu",+        },+        {+            "arches": ["default"],+            "uri": "http://ports.ubuntu.com/ubuntu-ports",+        },+        ],+}+++def get_default_mirror():+    return get_mirror(DEFAULT, "primary", get_architecture())

Tweaked a bit, see what you think now.

mwhudson

comment created time in 20 days

push eventmwhudson/subiquity

Michael Hudson-Doyle

commit sha c0e5ce39a0d9d808dac39461d3628fe239b919dd

calculate some things that will not change just once

view details

push time in 20 days

Pull request review commentCanonicalLtd/subiquity

refactor how mirror data is handled

 # You should have received a copy of the GNU Affero General Public License # along with this program.  If not, see <http://www.gnu.org/licenses/>. +import copy import logging-import platform from urllib import parse +from curtin.commands.apt_config import (+    get_arch_mirrorconfig,+    get_mirror,+    PRIMARY_ARCHES,+    )+from curtin.util import get_architecture+ log = logging.getLogger('subiquitycore.models.mirror') -# correct default mirror for most arches-DEFAULT_MIRROR = 'http://ports.ubuntu.com/ubuntu-ports'-# apart from the two snowflakes-if platform.machine() in ['i686', 'x86_64']:-    DEFAULT_MIRROR = 'http://archive.ubuntu.com/ubuntu'++DEFAULT = {+    "preserve_sources_list": False,+    "primary": [+        {+            "arches": PRIMARY_ARCHES,+            "uri": "http://archive.ubuntu.com/ubuntu",+        },+        {+            "arches": ["default"],+            "uri": "http://ports.ubuntu.com/ubuntu-ports",+        },+        ],+}+++def get_default_mirror():+    return get_mirror(DEFAULT, "primary", get_architecture())   class MirrorModel(object):      def __init__(self):-        self.mirror = DEFAULT_MIRROR+        self.config = copy.deepcopy(DEFAULT)      def set_country(self, cc):-        parsed = parse.urlparse(DEFAULT_MIRROR)+        uri = self.get_mirror()+        if uri != get_default_mirror():+            return

This is looking ahead to autoinstall: if the user sets the mirror to http://my-private-mirror.internal we don't want to rewrite that to http://CC.my-private-mirror.internal.

mwhudson

comment created time in 20 days

push eventmwhudson/subiquity

Dimitri John Ledkov

commit sha cbaab430a39d23d3e2e8d48a47f842e156280152

Switch script to use python3, as python is no longer available I guess good luck to the Jenkins CI?

view details

Michael Hudson-Doyle

commit sha 910b00b0c7b7b7eab86f0dc2b8d6a92278432f7f

fix installation hang after refreshing snap The installprogress controller waits for various model objects to be configured before proceeding. But model objects whose state was loaded from disk after a snap refresh were not marked as configured :( This meant that, in particular, the postinstall steps waited on the language being configured indefinitely. The fix is simple: mark model objects as configured when their state is loaded from disk post-refresh.

view details

Michael Hudson-Doyle

commit sha 845b7b397fe0c711c8d492c8f19fa7c055a38455

Merge pull request #628 from mwhudson/refresh-to-async-fix fix installation hang after refreshing snap

view details

Dimitri John Ledkov

commit sha 436ee1d76ddad5362c25843f429b4346324c0b8f

Bump curtin to commit with multipath fixes

view details

Michael Hudson-Doyle

commit sha f598bcff4ebd4d4db66d5fe3150d5272ebab3ddd

add some example autoinstall files

view details

Michael Hudson-Doyle

commit sha f4678227d96ab43b4e6e173b9488a69d0b38e948

add --autoinstall command line option

view details

Michael Hudson-Doyle

commit sha 4be7c15a350b37895f4479957ec21fd081738507

load, merge and write out again the autoinstall configs

view details

Michael Hudson-Doyle

commit sha ccfd51d3cd8375120f98c2abf7a6ffc2ad3726cb

add controller and application .interactive() methods

view details

Michael Hudson-Doyle

commit sha e30e6fb4972d581285884fe9792273f780dfbd02

general machinery for autoinstalls

view details

Michael Hudson-Doyle

commit sha 4b09a433b7d10524f78cd657857b4a93357fc20c

leave the terminal in text mode and print to it when not interactive

view details

Michael Hudson-Doyle

commit sha 6cf06585c1a93018c2eb769da10a935ec15706f8

support early and late commands

view details

Michael Hudson-Doyle

commit sha 23a8e63552ae39b101db049881a7e72c6baed2d9

fill out autoinstall_key everywhere

view details

Michael Hudson-Doyle

commit sha 34adc1486c8c0b7ed5d8ab2e91765a456d950978

first stab at implementing load_autoinstall_data & apply_autoinstall_config

view details

Michael Hudson-Doyle

commit sha d7a3299acf7769382f435b9ceb391f84c25e8782

do not listen to udev block events when not interactive

view details

Michael Hudson-Doyle

commit sha b9c56c7d6f906a3bced3caea838246e024eec311

reboot after successful autoinstall

view details

push time in 20 days

push eventCanonicalLtd/subiquity

Michael Hudson-Doyle

commit sha 910b00b0c7b7b7eab86f0dc2b8d6a92278432f7f

fix installation hang after refreshing snap The installprogress controller waits for various model objects to be configured before proceeding. But model objects whose state was loaded from disk after a snap refresh were not marked as configured :( This meant that, in particular, the postinstall steps waited on the language being configured indefinitely. The fix is simple: mark model objects as configured when their state is loaded from disk post-refresh.

view details

Michael Hudson-Doyle

commit sha 845b7b397fe0c711c8d492c8f19fa7c055a38455

Merge pull request #628 from mwhudson/refresh-to-async-fix fix installation hang after refreshing snap

view details

push time in 24 days

PR merged CanonicalLtd/subiquity

fix installation hang after refreshing snap

The installprogress controller waits for various model objects to be configured before proceeding. But model objects whose state was loaded from disk after a snap refresh were not marked as configured :( This meant that, in particular, the postinstall steps waited on the language being configured indefinitely. The fix is simple: mark model objects as configured when their state is loaded from disk post-refresh.

+6 -0

1 comment

4 changed files

mwhudson

pr closed time in 24 days

pull request commentCanonicalLtd/subiquity

fix installation hang after refreshing snap

FWIW I've tested this by publishing it to edge/mwhudson and refreshing to that and it worked.

mwhudson

comment created time in 24 days

PR opened CanonicalLtd/subiquity

fix installation hang after refreshing snap

The installprogress controller waits for various model objects to be configured before proceeding. But model objects whose state was loaded from disk after a snap refresh were not marked as configured :( This meant that, in particular, the postinstall steps waited on the language being configured indefinitely. The fix is simple: mark model objects as configured when their state is loaded from disk post-refresh.

+6 -0

0 comment

4 changed files

pr created time in 24 days

create barnchmwhudson/subiquity

branch : refresh-to-async-fix

created branch time in 24 days

pull request commentCanonicalLtd/subiquity

autoinstall!

I don't see anything that would affect existing interactive installs. I've left some review comments for the autoinstall bits.

Thanks for the review. I don't plan to make many changes to this branch in response to them, but I'll keep them in mind for later. I'll probably make some tweaks and merge this tomorrow.

mwhudson

comment created time in 24 days

Pull request review commentCanonicalLtd/subiquity

autoinstall!

+version: 1+early-commands:+        - echo a+        - sleep 1+        - echo a+late-commands:+        - echo a+        - sleep 1+        - echo a+keyboard:+        layout: gb+identity:+        realname: ''+        username: ubuntu+        password: '$6$wdAcoXrU039hKYPd$508Qvbe7ObUnxoj15DRCkzC3qO7edjH0VV7BPNRDYK4QR8ofJaEEF2heacn0QgD.f8pO8SNp83XNdWG6tocBM1'+        hostname: ubuntu

No it certainly does not, and yes providing a more complete example would make sense.

mwhudson

comment created time in 24 days

Pull request review commentCanonicalLtd/subiquity

autoinstall!

  class WelcomeController(SubiquityController): -    model_name = "locale"+    autoinstall_key = model_name = "locale"+    autoinstall_default = 'en_US.UTF-8'

Hmm. subiquity is more targeted towards humans, but maybe not for autoinstall cases. Easy to change later in any case.

mwhudson

comment created time in 24 days

Pull request review commentCanonicalLtd/subiquity

autoinstall!

 def __init__(self, message, output):  class SSHController(SubiquityController): -    model_name = "ssh"+    autoinstall_key = model_name = "ssh"      def __init__(self, app):         super().__init__(app)         self._fetch_task = None +    def load_autoinstall_data(self, data):+        if data is None:+            return+        self.model.install_server = data.get('install_server', False)+        self.model.authorized_keys = self.autoinstall_data.get(+            'authorized-keys', [])+        self.model.pwauth = self.autoinstall_data.get(+            'allow-pw', not self.model.authorized_keys)

Uh, the idea is only that the default of allow-pw is False iff a key is supplied. And I think that's what this code does but I've been thinking about udev too much to be sure.

mwhudson

comment created time in 24 days

Pull request review commentCanonicalLtd/subiquity

autoinstall!

 def __init__(self, app):         self.new_snap_version = ""          self.offered_first_time = False+        self.active = self.interactive()++    def load_autoinstall_data(self, data):+        if data is not None and data.get('refresh'):

'refresh'. The format of the yaml is:

refresh-installer: refresh: yes

mwhudson

comment created time in 24 days

Pull request review commentCanonicalLtd/subiquity

autoinstall!

 class CheckState(enum.IntEnum):  class MirrorController(SubiquityController): +    autoinstall_key = "apt"     model_name = "mirror"     signals = [         ('snapd-network-change', 'snapd_network_changed'),     ]      def __init__(self, app):+        self.ai_data = {}         super().__init__(app)         self.check_state = CheckState.NOT_STARTED         if 'country-code' in self.answers:             self.check_state = CheckState.DONE             self.model.set_country(self.answers['country-code'])         self.lookup_task = SingleInstanceTask(self.lookup) +    def load_autoinstall_data(self, data):+        if data is None:+            return+        self.ai_data = data+        if 'mirror' in data:

I don't understand your comment but I don't think it is correct.

This all needs to change anyway because I want to redo how mirrors are described, see https://github.com/CanonicalLtd/subiquity/pull/626 and https://wiki.ubuntu.com/FoundationsTeam/AutomatedServerInstalls/ConfigReference?action=diff&rev2=40&rev1=38

mwhudson

comment created time in 24 days

Pull request review commentCanonicalLtd/subiquity

autoinstall!

 def __init__(self, app):         self._crash_reports = {}         self._probe_once_task = SingleInstanceTask(             self._probe_once, propagate_errors=False)-        self._probe_task = SingleInstanceTask(self._probe)+        self._probe_task = SingleInstanceTask(+            self._probe, propagate_errors=False)++    def load_autoinstall_data(self, data):+        log.debug("load_autoinstall_data %s", data)+        if not self.interactive() and data is None:+            data = {

This is trying to have a non-interactive only default, I think.

mwhudson

comment created time in 24 days

Pull request review commentCanonicalLtd/subiquity

autoinstall!

+# Copyright 2019 Canonical, Ltd.+#+# This program is free software: you can redistribute it and/or modify+# it under the terms of the GNU Affero General Public License as+# published by the Free Software Foundation, either version 3 of the+# License, or (at your option) any later version.+#+# This program is distributed in the hope that it will be useful,+# but WITHOUT ANY WARRANTY; without even the implied warranty of+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the+# GNU Affero General Public License for more details.+#+# You should have received a copy of the GNU Affero General Public License+# along with this program.  If not, see <http://www.gnu.org/licenses/>.++import asyncio++from subiquity.controller import NoUIController+++class CmdListController(NoUIController):++    autoinstall_default = []+    cmds = ()

perhaps autoinstall_default should be ()? I don't think it matters a great deal although having them different is indeed odd.

mwhudson

comment created time in 24 days

Pull request review commentCanonicalLtd/subiquity

autoinstall!

+# Copyright 2019 Canonical, Ltd.+#+# This program is free software: you can redistribute it and/or modify+# it under the terms of the GNU Affero General Public License as+# published by the Free Software Foundation, either version 3 of the+# License, or (at your option) any later version.+#+# This program is distributed in the hope that it will be useful,+# but WITHOUT ANY WARRANTY; without even the implied warranty of+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the+# GNU Affero General Public License for more details.+#+# You should have received a copy of the GNU Affero General Public License+# along with this program.  If not, see <http://www.gnu.org/licenses/>.++import asyncio++from subiquity.controller import NoUIController+++class CmdListController(NoUIController):++    autoinstall_default = []+    cmds = ()++    def load_autoinstall_data(self, data):+        self.cmds = data++    async def run(self):+        for i, cmd in enumerate(self.cmds):

"autoinstall_default = []" handles this

mwhudson

comment created time in 24 days

Pull request review commentCanonicalLtd/subiquity

autoinstall!

  class SubiquityController(BaseController): +    autoinstall_key = None+    autoinstall_default = None++    def __init__(self, app):+        super().__init__(app)+        self.autoinstall_applied = False+        if app.autoinstall_config:+            self.load_autoinstall_data(+                app.autoinstall_config.get(+                    self.autoinstall_key,+                    self.autoinstall_default))

Yes, there are a few different ways of looking at this. This API seems reasonably ok. load_install_data has access to self.app.autoinstall_config if it needs it...

mwhudson

comment created time in 24 days

Pull request review commentCanonicalLtd/subiquity

autoinstall!

+# Copyright 2019 Canonical, Ltd.+#+# This program is free software: you can redistribute it and/or modify+# it under the terms of the GNU Affero General Public License as+# published by the Free Software Foundation, either version 3 of the+# License, or (at your option) any later version.+#+# This program is distributed in the hope that it will be useful,+# but WITHOUT ANY WARRANTY; without even the implied warranty of+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the+# GNU Affero General Public License for more details.+#+# You should have received a copy of the GNU Affero General Public License+# along with this program.  If not, see <http://www.gnu.org/licenses/>.++import yaml++from curtin.config import merge_config+++def merge_autoinstall_configs(source_paths, target_path):+    config = {}+    for path in source_paths:+        with open(path) as fp:+            c = yaml.safe_load(fp)+        merge_config(config, c)

Good idea.

mwhudson

comment created time in 24 days

Pull request review commentCanonicalLtd/subiquity

autoinstall!

+# Copyright 2019 Canonical, Ltd.+#+# This program is free software: you can redistribute it and/or modify+# it under the terms of the GNU Affero General Public License as+# published by the Free Software Foundation, either version 3 of the+# License, or (at your option) any later version.+#+# This program is distributed in the hope that it will be useful,+# but WITHOUT ANY WARRANTY; without even the implied warranty of+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the+# GNU Affero General Public License for more details.+#+# You should have received a copy of the GNU Affero General Public License+# along with this program.  If not, see <http://www.gnu.org/licenses/>.++import yaml++from curtin.config import merge_config+++def merge_autoinstall_configs(source_paths, target_path):

Yes, we need to make some decisions and document how all this works. I'm going to post to discource, probably tomorrow, about this.

mwhudson

comment created time in 24 days

release CanonicalLtd/subiquity

19.12.1.5

released time in a month

created tagCanonicalLtd/subiquity

tag19.12.1.5

Ubuntu Server Installer

created time in a month

delete tag CanonicalLtd/subiquity

delete tag : 19.12.1.5

delete time in a month

created tagCanonicalLtd/subiquity

tag19.12.1.5

Ubuntu Server Installer

created time in a month

release CanonicalLtd/subiquity

19.12.1.5

released time in a month

create barnchCanonicalLtd/subiquity

branch : for-18.04.4

created branch time in a month

create barnchmwhudson/subiquity

branch : for-18.04.4

created branch time in a month

PR opened CanonicalLtd/subiquity

stop testing on disco; start testing on eoan and focal

Clearly we should do something like this, probert isn't installable in lxd containers though (see travis) :(

+2 -1

0 comment

1 changed file

pr created time in a month

PR opened CanonicalLtd/subiquity

refactor how mirror data is handled

This is prep work for allowing autoinstalls to specify a complete apt config.

+98 -30

0 comment

6 changed files

pr created time in a month

create barnchmwhudson/subiquity

branch : mirror-tweaks

created branch time in a month

create barnchmwhudson/subiquity

branch : testing-series

created branch time in a month

push eventmwhudson/subiquity

Dimitri John Ledkov

commit sha a18d6b678e7a5309f742535b3b0889528eb758a2

Fix spinner typeerror. LP: #1860444

view details

Michael Hudson-Doyle

commit sha ac40a3758f8a751a20756de2bc96c944eee1f619

Merge pull request #624 from mwhudson/refactor-exiting refactor how subiquity is exited after install

view details

Michael Hudson-Doyle

commit sha 8d08ee7341abb519d82b304b694c5f713cd95bb8

add some example autoinstall files

view details

Michael Hudson-Doyle

commit sha a7db979af0119a11913c9219b1c95d9f4fc901b8

add --autoinstall command line option

view details

Michael Hudson-Doyle

commit sha 72da85b90e1f164b4ff90244a8567b71f195d835

load, merge and write out again the autoinstall configs

view details

Michael Hudson-Doyle

commit sha a4a72caa101ab8f6619553f3d8e2ac4a2f4f9e6f

add controller and application .interactive() methods

view details

Michael Hudson-Doyle

commit sha 383d968ce70d4f6881f58373cbb7b55fa5dca912

general machinery for autoinstalls

view details

Michael Hudson-Doyle

commit sha 645e8728d18cf8f1d23246de6335492bde4c32e7

leave the terminal in text mode and print to it when not interactive

view details

Michael Hudson-Doyle

commit sha 69fbd51a3f94beb255a3b910b4763c215af13c47

support early and late commands

view details

Michael Hudson-Doyle

commit sha 10efa3f5fcadf5ad0af3bd5d3781eb0d8917ea36

fill out autoinstall_key everywhere

view details

Michael Hudson-Doyle

commit sha a2ae723dea8c0d109dc05adea70471e96f2033ff

first stab at implementing load_autoinstall_data & apply_autoinstall_config

view details

Michael Hudson-Doyle

commit sha 22f9ebeeddc79034d3cda1deaad88214fa6adaa2

do not listen to udev block events when not interactive

view details

Michael Hudson-Doyle

commit sha 8bb18a1f29a5f89e2d076eadbe9c38096354def6

reboot after successful autoinstall

view details

push time in a month

push eventCanonicalLtd/subiquity

Michael Hudson-Doyle

commit sha 963cbaaafea5640b9c7b894fe88ff514dd8f3ec1

refactor how subiquity is exited after install if we want to do things after install has completed (e.g.: run late commands), we can't have the code that runs the install invoking /sbin/reboot directly.

view details

Michael Hudson-Doyle

commit sha ac40a3758f8a751a20756de2bc96c944eee1f619

Merge pull request #624 from mwhudson/refactor-exiting refactor how subiquity is exited after install

view details

push time in a month

PR merged CanonicalLtd/subiquity

refactor how subiquity is exited after install

if we want to do things after install has completed (e.g.: run late commands), we can't have the code that runs the install invoking /sbin/reboot directly.

+23 -17

2 comments

3 changed files

mwhudson

pr closed time in a month

pull request commentCanonicalLtd/subiquity

refactor how subiquity is exited after install

Have tested in VM now.

mwhudson

comment created time in a month

push eventmwhudson/subiquity

Michael Hudson-Doyle

commit sha 6dd86d10d2c9768001a02aec0ffac61255f584c5

sigh

view details

push time in 2 months

pull request commentCanonicalLtd/subiquity

autoinstall!

To test this, try something like:

$ wget https://people.canonical.com/~mwh/subiquity_autoinstall.snap
$ sudo ~/src/subiquity/scripts/inject-subiquity-snap.sh \
    -c 'cp /home/mwhudson/src/subiquity/examples/autoinstall.yaml new_installer/' \
    ~/isos/focal-live-server-amd64.iso  subiquity_autoinstall.snap ~/isos/custom.iso
mwhudson

comment created time in 2 months

push eventmwhudson/subiquity

Michael Hudson-Doyle

commit sha 578dd32f87d2507e736bc25abb57e96fe634acb5

lint

view details

push time in 2 months

push eventmwhudson/subiquity

Michael Hudson-Doyle

commit sha 800e1eb564f8a493724291777d0f6bd9247482fc

reboot after successful autoinstall

view details

push time in 2 months

PR opened CanonicalLtd/subiquity

autoinstall!

The branch implements the first cut of autoinstall for subiquity. What is there:

  • support for fully non-interactive and partially interactive installs
  • support for early and late commands

What is not there:

  • any sort of decent error handling
    • this includes any sort of sensible data validation. Get your autoinstall.yaml wrong and things will just blow up in a mess
  • support for the packages, debconf-selections, snaplist, user-data sections of the config file
  • sensible behaviour when more than one subiquity is running (e.g. on tty1 and serial)
  • generation of an autoinstall file at the end of install
  • any kind of sensible storage configuration, it just supports lvm or direct installation on the largest disk in the system

But I have plans for all of these things :)

+436 -43

0 comment

22 changed files

pr created time in 2 months

push eventmwhudson/subiquity

Michael Hudson-Doyle

commit sha a5971961f497f981b1141236415b5e736e081214

do not listen to udev block events when not interactive

view details

push time in 2 months

push eventmwhudson/subiquity

Michael Hudson-Doyle

commit sha 1e554813fb5e32c42101ae71e38a6729fd58556e

first stab at implementing load_autoinstall_data & apply_autoinstall_config

view details

push time in 2 months

create barnchmwhudson/subiquity

branch : autoinstall-2

created branch time in 2 months

pull request commentCanonicalLtd/subiquity

refactor how subiquity is exited after install

This one probably needs to be tested in a VM (which I am not going to have time to do)

mwhudson

comment created time in 2 months

PR opened CanonicalLtd/subiquity

refactor how subiquity is exited after install

if we want to do things after install has completed (e.g.: run late commands), we can't have the code that runs the install invoking /sbin/reboot directly.

+23 -17

0 comment

3 changed files

pr created time in 2 months

create barnchmwhudson/subiquity

branch : refactor-exiting

created branch time in 2 months

delete branch mwhudson/subiquity

delete branch : subiquity-controller

delete time in 2 months

push eventCanonicalLtd/subiquity

Michael Hudson-Doyle

commit sha 039b5313c4c58a4cf1b5ed8db8e824ec47cc3b68

move make_screen into a method

view details

Michael Hudson-Doyle

commit sha 78d59de8c66e924a90fb4adaa6ec15093c5de6ca

only call setraw if the screen is talking to a tty

view details

Michael Hudson-Doyle

commit sha f925c3fa2aecfc015626f426ca20fcfb4b7ce0a2

Merge pull request #622 from mwhudson/make_screen-method make screen behaviour more configurable

view details

push time in 2 months

push eventCanonicalLtd/subiquity

Michael Hudson-Doyle

commit sha b18ae6d00c3ddfed89a62a2ef105de9b3a4d7b2f

move guided disk layout implementation to controller

view details

Michael Hudson-Doyle

commit sha 06866c39e141240359b9238c6afddce2a74622e7

Merge pull request #623 from mwhudson/guided-layouts-controller move guided disk layout implementation to controller

view details

push time in 2 months

push eventCanonicalLtd/subiquity

Michael Hudson-Doyle

commit sha ab6fdeb1b5894b1b775c321b6548bddddb085413

tweak ControllerSet * add a way to load just one controller * fetch the RepeatedController class from a projet specific location neither used yet, but soon

view details

Michael Hudson-Doyle

commit sha a40082a29be5865d6ba1bac2256b2fd5ea1ac86e

Merge pull request #621 from mwhudson/controller-set-tweaks tweak ControllerSet

view details

push time in 2 months

more