Activity log for bug #1665694

Date Who What changed Old value New value Message
2017-02-17 16:11:13 Serg Lystopad bug added bug
2017-02-17 16:11:13 Serg Lystopad attachment added 0001-Fixes-cc_set_passwords-to-set-passwords-from-list-of.patch https://bugs.launchpad.net/bugs/1665694/+attachment/4820888/+files/0001-Fixes-cc_set_passwords-to-set-passwords-from-list-of.patch
2017-02-17 19:44:25 Launchpad Janitor merge proposal linked https://code.launchpad.net/~slystopad/cloud-init/+git/cloud-init/+merge/317670
2017-02-17 19:55:43 Launchpad Janitor merge proposal linked https://code.launchpad.net/~slystopad/cloud-init/+git/cloud-init/+merge/317671
2017-02-20 15:09:57 Launchpad Janitor merge proposal linked https://code.launchpad.net/~slystopad/cloud-init/+git/cloud-init/+merge/317774
2017-03-09 11:22:54 Launchpad Janitor merge proposal linked https://code.launchpad.net/~slystopad/cloud-init/+git/cloud-init/+merge/319433
2017-03-09 20:05:17 Scott Moser description If cloud-config contains list of user:password pairs as in example below chpasswd: list: - user1:pwd001 - user2:pwd002 cc_set_passwords module fails to change passwords with error: Feb 17 15:52:48 si-man [CLOUDINIT] stages.py[DEBUG]: Running module set-passwords (<module 'cloudinit.config.cc_set_passwords' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_set_passwords.py'>) with frequency once-per-instance Feb 17 15:52:48 si-man [CLOUDINIT] handlers.py[DEBUG]: start: modules-config/config-set-passwords: running config-set-passwords with frequency once-per-instance Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Writing to /var/lib/cloud/instances/6d822e81-98a1-4b43-bed2-db8d0cf045bb/sem/config_set_passwords - wb: [420] 25 bytes Feb 17 15:52:48 si-man [CLOUDINIT] helpers.py[DEBUG]: Running config-set-passwords using lock (<FileLock using file '/var/lib/cloud/instances/6d822e81-98a1-4b43-bed2-db8d0cf045bb/sem/config_set_passwords'>) Feb 17 15:52:48 si-man [CLOUDINIT] cc_set_passwords.py[DEBUG]: Changing password for ["['user1"]: Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Running command ['chpasswd'] with allowed return codes [0] (shell=False, capture=True) Feb 17 15:52:48 si-man [CLOUDINIT] util.py[WARNING]: Failed to set passwords with chpasswd for ["['user1"] Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Failed to set passwords with chpasswd for ["['user1"]#012Traceback (most recent call last):#012 File "/usr/lib/python3/dist-packages/cloudinit/config/cc_set_passwords.py", line 121, in handle#012 util.subp(['chpasswd'], ch_in)#012 File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 1836, in subp#012 cmd=args)#012cloudinit.util.ProcessExecutionError: Unexpected error while running command.#012Command: ['chpasswd']#012Exit code: 1#012Reason: -#012Stdout: ''#012Stderr: "chpasswd: (user ['user1) pam_chauthtok() failed, error:\nAuthentication token manipulation error\nchpasswd: (line 1, user ['user1) password not changed\n" Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Running command ['passwd', '--expire', "['user1"] with allowed return codes [0] (shell=False, capture=True) Feb 17 15:52:48 si-man [CLOUDINIT] util.py[WARNING]: Failed to set 'expire' for ['user1 Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Failed to set 'expire' for ['user1#012Traceback (most recent call last):#012 File "/usr/lib/python3/dist-packages/cloudinit/config/cc_set_passwords.py", line 136, in handle#012 util.subp(['passwd', '--expire', u])#012 File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 1836, in subp#012 cmd=args)#012cloudinit.util.ProcessExecutionError: Unexpected error while running command.#012Command: ['passwd', '--expire', "['user1"]#012Exit code: 1#012Reason: -#012Stdout: ''#012Stderr: "passwd: user '['user1' does not exist\n" Feb 17 15:52:48 si-man [CLOUDINIT] cc_set_passwords.py[DEBUG]: 2 errors occured, re-raising the last one The issue affects cloud-init installed in xenial-server-cloudimg-amd64-disk1.img # apt-cache policy cloud-init cloud-init: Installed: 0.7.8-49-g9e904bb-0ubuntu1~16.04.4 Candidate: 0.7.8-49-g9e904bb-0ubuntu1~16.04.4 Version table: *** 0.7.8-49-g9e904bb-0ubuntu1~16.04.4 500 500 http://zone-1.clouds.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages 100 /var/lib/dpkg/status 0.7.7~bzr1212-0ubuntu1 500 500 http://zone-1.clouds.archive.ubuntu.com/ubuntu xenial/main amd64 Packages cc_set_passwords converts list of user:password lists to str and as result user names get corrupted. === Being SRU Template === [Impact] Users of cloud-init can change passwords on a system by providing input to chpasswd as a string: #cloud-config chpasswd: list: | user1:password1 Confusingly, the 'list' is actually not a list, but a multi-line string. The change made in this bug supports either. [Test Case] # this launches 2 containers, one with list input and one with str # then at the end, the user should ssh in and verify they can log in # with the provided user and password. $ rel=zesty $ cat > chpass-str.yaml <<"EOF" #cloud-config ssh_pwauth: True users: - default - name: "user1" - name: "user2" chpasswd: expire: False list: | user1:password1 user2:password2 EOF $ cat > chpass-list.yaml <<"EOF" #cloud-config ssh_pwauth: True users: - default - name: "user1" - name: "user2" chpasswd: expire: False list: - user1:password1 - user2:password2 EOF $ ud_str="$(cat chpass-str.yaml)" $ ud_list="$(cat chpass-list.yaml)" $ pname=$(petname || echo foo-$rel) $ lxc launch ubuntu-daily:$rel $pname-str "--config=user.user-data=$ud_str" $ lxc launch ubuntu-daily:$rel $pname-list "--config=user.user-data=$ud_list" $ for name in $pname-str $pname-list; do lxc exec $name -- sh -c ' while ! [ -e /run/cloud-init/result.json ]; do echo -n .; sleep 1; done; echo;'; done $ lxc list "$pname.*" $ echo "Now ssh into $pname-str and $pname-list as user1 and user2." [Regression Potential] Very low regression potential. The test case shown provides both the previously supported path (a string) and the new path (a list). [Other Info] === End SRU Template === If cloud-config contains list of user:password pairs as in example below chpasswd:   list:     - user1:pwd001     - user2:pwd002 cc_set_passwords module fails to change passwords with error: Feb 17 15:52:48 si-man [CLOUDINIT] stages.py[DEBUG]: Running module set-passwords (<module 'cloudinit.config.cc_set_passwords' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_set_passwords.py'>) with frequency once-per-instance Feb 17 15:52:48 si-man [CLOUDINIT] handlers.py[DEBUG]: start: modules-config/config-set-passwords: running config-set-passwords with frequency once-per-instance Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Writing to /var/lib/cloud/instances/6d822e81-98a1-4b43-bed2-db8d0cf045bb/sem/config_set_passwords - wb: [420] 25 bytes Feb 17 15:52:48 si-man [CLOUDINIT] helpers.py[DEBUG]: Running config-set-passwords using lock (<FileLock using file '/var/lib/cloud/instances/6d822e81-98a1-4b43-bed2-db8d0cf045bb/sem/config_set_passwords'>) Feb 17 15:52:48 si-man [CLOUDINIT] cc_set_passwords.py[DEBUG]: Changing password for ["['user1"]: Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Running command ['chpasswd'] with allowed return codes [0] (shell=False, capture=True) Feb 17 15:52:48 si-man [CLOUDINIT] util.py[WARNING]: Failed to set passwords with chpasswd for ["['user1"] Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Failed to set passwords with chpasswd for ["['user1"]#012Traceback (most recent call last):#012 File "/usr/lib/python3/dist-packages/cloudinit/config/cc_set_passwords.py", line 121, in handle#012 util.subp(['chpasswd'], ch_in)#012 File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 1836, in subp#012 cmd=args)#012cloudinit.util.ProcessExecutionError: Unexpected error while running command.#012Command: ['chpasswd']#012Exit code: 1#012Reason: -#012Stdout: ''#012Stderr: "chpasswd: (user ['user1) pam_chauthtok() failed, error:\nAuthentication token manipulation error\nchpasswd: (line 1, user ['user1) password not changed\n" Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Running command ['passwd', '--expire', "['user1"] with allowed return codes [0] (shell=False, capture=True) Feb 17 15:52:48 si-man [CLOUDINIT] util.py[WARNING]: Failed to set 'expire' for ['user1 Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Failed to set 'expire' for ['user1#012Traceback (most recent call last):#012 File "/usr/lib/python3/dist-packages/cloudinit/config/cc_set_passwords.py", line 136, in handle#012 util.subp(['passwd', '--expire', u])#012 File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 1836, in subp#012 cmd=args)#012cloudinit.util.ProcessExecutionError: Unexpected error while running command.#012Command: ['passwd', '--expire', "['user1"]#012Exit code: 1#012Reason: -#012Stdout: ''#012Stderr: "passwd: user '['user1' does not exist\n" Feb 17 15:52:48 si-man [CLOUDINIT] cc_set_passwords.py[DEBUG]: 2 errors occured, re-raising the last one The issue affects cloud-init installed in xenial-server-cloudimg-amd64-disk1.img # apt-cache policy cloud-init cloud-init:   Installed: 0.7.8-49-g9e904bb-0ubuntu1~16.04.4   Candidate: 0.7.8-49-g9e904bb-0ubuntu1~16.04.4   Version table:  *** 0.7.8-49-g9e904bb-0ubuntu1~16.04.4 500         500 http://zone-1.clouds.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages         100 /var/lib/dpkg/status      0.7.7~bzr1212-0ubuntu1 500         500 http://zone-1.clouds.archive.ubuntu.com/ubuntu xenial/main amd64 Packages cc_set_passwords converts list of user:password lists to str and as result user names get corrupted.
2017-03-09 20:06:51 Scott Moser cloud-init: status New Confirmed
2017-03-09 20:06:58 Scott Moser cloud-init: importance Undecided Medium
2017-03-09 20:07:01 Scott Moser cloud-init: status Confirmed Fix Committed
2017-03-09 21:53:34 Launchpad Janitor merge proposal linked https://code.launchpad.net/~smoser/cloud-init/+git/cloud-init/+merge/319506
2017-04-04 21:22:05 Scott Moser bug task added cloud-init (Ubuntu)
2017-04-04 21:22:20 Scott Moser nominated for series Ubuntu Xenial
2017-04-04 21:22:20 Scott Moser bug task added cloud-init (Ubuntu Xenial)
2017-04-04 21:22:20 Scott Moser nominated for series Ubuntu Zesty
2017-04-04 21:22:20 Scott Moser bug task added cloud-init (Ubuntu Zesty)
2017-04-04 21:22:20 Scott Moser nominated for series Ubuntu Yakkety
2017-04-04 21:22:20 Scott Moser bug task added cloud-init (Ubuntu Yakkety)
2017-04-04 21:23:44 Scott Moser cloud-init (Ubuntu Xenial): status New Confirmed
2017-04-04 21:23:45 Scott Moser cloud-init (Ubuntu Yakkety): status New Confirmed
2017-04-04 21:23:49 Scott Moser cloud-init (Ubuntu Zesty): status New Fix Released
2017-04-04 21:23:52 Scott Moser cloud-init (Ubuntu Xenial): importance Undecided Medium
2017-04-04 21:23:54 Scott Moser cloud-init (Ubuntu Yakkety): importance Undecided Medium
2017-04-04 21:23:56 Scott Moser cloud-init (Ubuntu Zesty): importance Undecided Medium
2017-04-04 21:32:43 Scott Moser description === Being SRU Template === [Impact] Users of cloud-init can change passwords on a system by providing input to chpasswd as a string: #cloud-config chpasswd: list: | user1:password1 Confusingly, the 'list' is actually not a list, but a multi-line string. The change made in this bug supports either. [Test Case] # this launches 2 containers, one with list input and one with str # then at the end, the user should ssh in and verify they can log in # with the provided user and password. $ rel=zesty $ cat > chpass-str.yaml <<"EOF" #cloud-config ssh_pwauth: True users: - default - name: "user1" - name: "user2" chpasswd: expire: False list: | user1:password1 user2:password2 EOF $ cat > chpass-list.yaml <<"EOF" #cloud-config ssh_pwauth: True users: - default - name: "user1" - name: "user2" chpasswd: expire: False list: - user1:password1 - user2:password2 EOF $ ud_str="$(cat chpass-str.yaml)" $ ud_list="$(cat chpass-list.yaml)" $ pname=$(petname || echo foo-$rel) $ lxc launch ubuntu-daily:$rel $pname-str "--config=user.user-data=$ud_str" $ lxc launch ubuntu-daily:$rel $pname-list "--config=user.user-data=$ud_list" $ for name in $pname-str $pname-list; do lxc exec $name -- sh -c ' while ! [ -e /run/cloud-init/result.json ]; do echo -n .; sleep 1; done; echo;'; done $ lxc list "$pname.*" $ echo "Now ssh into $pname-str and $pname-list as user1 and user2." [Regression Potential] Very low regression potential. The test case shown provides both the previously supported path (a string) and the new path (a list). [Other Info] === End SRU Template === If cloud-config contains list of user:password pairs as in example below chpasswd:   list:     - user1:pwd001     - user2:pwd002 cc_set_passwords module fails to change passwords with error: Feb 17 15:52:48 si-man [CLOUDINIT] stages.py[DEBUG]: Running module set-passwords (<module 'cloudinit.config.cc_set_passwords' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_set_passwords.py'>) with frequency once-per-instance Feb 17 15:52:48 si-man [CLOUDINIT] handlers.py[DEBUG]: start: modules-config/config-set-passwords: running config-set-passwords with frequency once-per-instance Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Writing to /var/lib/cloud/instances/6d822e81-98a1-4b43-bed2-db8d0cf045bb/sem/config_set_passwords - wb: [420] 25 bytes Feb 17 15:52:48 si-man [CLOUDINIT] helpers.py[DEBUG]: Running config-set-passwords using lock (<FileLock using file '/var/lib/cloud/instances/6d822e81-98a1-4b43-bed2-db8d0cf045bb/sem/config_set_passwords'>) Feb 17 15:52:48 si-man [CLOUDINIT] cc_set_passwords.py[DEBUG]: Changing password for ["['user1"]: Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Running command ['chpasswd'] with allowed return codes [0] (shell=False, capture=True) Feb 17 15:52:48 si-man [CLOUDINIT] util.py[WARNING]: Failed to set passwords with chpasswd for ["['user1"] Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Failed to set passwords with chpasswd for ["['user1"]#012Traceback (most recent call last):#012 File "/usr/lib/python3/dist-packages/cloudinit/config/cc_set_passwords.py", line 121, in handle#012 util.subp(['chpasswd'], ch_in)#012 File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 1836, in subp#012 cmd=args)#012cloudinit.util.ProcessExecutionError: Unexpected error while running command.#012Command: ['chpasswd']#012Exit code: 1#012Reason: -#012Stdout: ''#012Stderr: "chpasswd: (user ['user1) pam_chauthtok() failed, error:\nAuthentication token manipulation error\nchpasswd: (line 1, user ['user1) password not changed\n" Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Running command ['passwd', '--expire', "['user1"] with allowed return codes [0] (shell=False, capture=True) Feb 17 15:52:48 si-man [CLOUDINIT] util.py[WARNING]: Failed to set 'expire' for ['user1 Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Failed to set 'expire' for ['user1#012Traceback (most recent call last):#012 File "/usr/lib/python3/dist-packages/cloudinit/config/cc_set_passwords.py", line 136, in handle#012 util.subp(['passwd', '--expire', u])#012 File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 1836, in subp#012 cmd=args)#012cloudinit.util.ProcessExecutionError: Unexpected error while running command.#012Command: ['passwd', '--expire', "['user1"]#012Exit code: 1#012Reason: -#012Stdout: ''#012Stderr: "passwd: user '['user1' does not exist\n" Feb 17 15:52:48 si-man [CLOUDINIT] cc_set_passwords.py[DEBUG]: 2 errors occured, re-raising the last one The issue affects cloud-init installed in xenial-server-cloudimg-amd64-disk1.img # apt-cache policy cloud-init cloud-init:   Installed: 0.7.8-49-g9e904bb-0ubuntu1~16.04.4   Candidate: 0.7.8-49-g9e904bb-0ubuntu1~16.04.4   Version table:  *** 0.7.8-49-g9e904bb-0ubuntu1~16.04.4 500         500 http://zone-1.clouds.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages         100 /var/lib/dpkg/status      0.7.7~bzr1212-0ubuntu1 500         500 http://zone-1.clouds.archive.ubuntu.com/ubuntu xenial/main amd64 Packages cc_set_passwords converts list of user:password lists to str and as result user names get corrupted. === Being SRU Template === [Impact] Users of cloud-init can change passwords on a system by providing input to chpasswd as a string:   #cloud-config   chpasswd:     list: |       user1:password1 Confusingly, the 'list' is actually not a list, but a multi-line string. The change made in this bug supports either. [Test Case] There is an integration test in cloud-init that runs though this code. To run that: $ git clone https://git.launchpad.net/cloud-init $ cd cloud-init # download the appropriate deb for cloud-init from -proposed $ rel=xenial $ pver=$(rmadison --url=ubuntu --suite=$rel-proposed cloud-init | awk '{print $3}') $ fname="cloud-init_${pver}_all.deb" $ wget "http://archive.ubuntu.com/ubuntu/pool/main/c/cloud-init/$fname" $ ln -sf $fname cloud-init_all.$rel.deb $ tox -e citest -- run -v -n $rel --deb=cloud-init_all.$rel.deb \ -t tests/cloud_tests/testcases/modules/set_password_list_string.py \ -t tests/cloud_tests/testcases/modules/set_password_list.py That will install the new cloud-init into a container and run with user data to excercise this new feature. [Regression Potential] Very low regression potential. The test case shown provides both the previously supported path (a string) and the new path (a list). [Other Info] Upstream commit: https://git.launchpad.net/cloud-init/commit/?id=7f2b51054a5defe === End SRU Template === If cloud-config contains list of user:password pairs as in example below chpasswd:   list:     - user1:pwd001     - user2:pwd002 cc_set_passwords module fails to change passwords with error: Feb 17 15:52:48 si-man [CLOUDINIT] stages.py[DEBUG]: Running module set-passwords (<module 'cloudinit.config.cc_set_passwords' from '/usr/lib/python3/dist-packages/cloudinit/config/cc_set_passwords.py'>) with frequency once-per-instance Feb 17 15:52:48 si-man [CLOUDINIT] handlers.py[DEBUG]: start: modules-config/config-set-passwords: running config-set-passwords with frequency once-per-instance Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Writing to /var/lib/cloud/instances/6d822e81-98a1-4b43-bed2-db8d0cf045bb/sem/config_set_passwords - wb: [420] 25 bytes Feb 17 15:52:48 si-man [CLOUDINIT] helpers.py[DEBUG]: Running config-set-passwords using lock (<FileLock using file '/var/lib/cloud/instances/6d822e81-98a1-4b43-bed2-db8d0cf045bb/sem/config_set_passwords'>) Feb 17 15:52:48 si-man [CLOUDINIT] cc_set_passwords.py[DEBUG]: Changing password for ["['user1"]: Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Running command ['chpasswd'] with allowed return codes [0] (shell=False, capture=True) Feb 17 15:52:48 si-man [CLOUDINIT] util.py[WARNING]: Failed to set passwords with chpasswd for ["['user1"] Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Failed to set passwords with chpasswd for ["['user1"]#012Traceback (most recent call last):#012 File "/usr/lib/python3/dist-packages/cloudinit/config/cc_set_passwords.py", line 121, in handle#012 util.subp(['chpasswd'], ch_in)#012 File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 1836, in subp#012 cmd=args)#012cloudinit.util.ProcessExecutionError: Unexpected error while running command.#012Command: ['chpasswd']#012Exit code: 1#012Reason: -#012Stdout: ''#012Stderr: "chpasswd: (user ['user1) pam_chauthtok() failed, error:\nAuthentication token manipulation error\nchpasswd: (line 1, user ['user1) password not changed\n" Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Running command ['passwd', '--expire', "['user1"] with allowed return codes [0] (shell=False, capture=True) Feb 17 15:52:48 si-man [CLOUDINIT] util.py[WARNING]: Failed to set 'expire' for ['user1 Feb 17 15:52:48 si-man [CLOUDINIT] util.py[DEBUG]: Failed to set 'expire' for ['user1#012Traceback (most recent call last):#012 File "/usr/lib/python3/dist-packages/cloudinit/config/cc_set_passwords.py", line 136, in handle#012 util.subp(['passwd', '--expire', u])#012 File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 1836, in subp#012 cmd=args)#012cloudinit.util.ProcessExecutionError: Unexpected error while running command.#012Command: ['passwd', '--expire', "['user1"]#012Exit code: 1#012Reason: -#012Stdout: ''#012Stderr: "passwd: user '['user1' does not exist\n" Feb 17 15:52:48 si-man [CLOUDINIT] cc_set_passwords.py[DEBUG]: 2 errors occured, re-raising the last one The issue affects cloud-init installed in xenial-server-cloudimg-amd64-disk1.img # apt-cache policy cloud-init cloud-init:   Installed: 0.7.8-49-g9e904bb-0ubuntu1~16.04.4   Candidate: 0.7.8-49-g9e904bb-0ubuntu1~16.04.4   Version table:  *** 0.7.8-49-g9e904bb-0ubuntu1~16.04.4 500         500 http://zone-1.clouds.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages         100 /var/lib/dpkg/status      0.7.7~bzr1212-0ubuntu1 500         500 http://zone-1.clouds.archive.ubuntu.com/ubuntu xenial/main amd64 Packages cc_set_passwords converts list of user:password lists to str and as result user names get corrupted.
2017-04-10 22:22:46 Brian Murray cloud-init (Ubuntu Yakkety): status Confirmed Fix Committed
2017-04-10 22:22:47 Brian Murray bug added subscriber Ubuntu Stable Release Updates Team
2017-04-10 22:22:53 Brian Murray bug added subscriber SRU Verification
2017-04-10 22:22:59 Brian Murray tags verification-needed
2017-04-10 22:46:00 Brian Murray cloud-init (Ubuntu Xenial): status Confirmed Fix Committed
2017-04-14 22:27:44 Chad Smith tags verification-needed verification-done-xenial verification-done-yakkety
2017-04-20 19:33:34 Launchpad Janitor cloud-init (Ubuntu Yakkety): status Fix Committed Fix Released
2017-04-20 19:34:26 Steve Langasek removed subscriber Ubuntu Stable Release Updates Team
2017-04-20 19:35:54 Launchpad Janitor cloud-init (Ubuntu Xenial): status Fix Committed Fix Released
2017-09-23 02:29:12 Scott Moser cloud-init: status Fix Committed Fix Released
2023-05-10 21:05:20 James Falcon bug watch added https://github.com/canonical/cloud-init/issues/2809