** Description changed: + [Impact] + FreeBSD users on Azure will suffer from this bug. + FreeBSD is another OS which has many differences compared with Linux, so it needs a lot of changes to support cloud-init for FreeBSD on Azure. + + This bug did not affect Ubuntu. + + [Test Case] + == FreeBSD Test Case (should not be required for Ubuntu SRU) == + Install cloud-init through its embedded shell script: tools/build-on-freebsd on a + Hyper-V VM, upload the VM to Azure and check whether it can pass provisioning. + + == Ubuntu Test Case == + Ubuntu test case is really just to verify no regression. + The test case is to: + * launch a vm on azure + * add proposed, upgrade + * clean instance: rm -Rf /var/lib/cloud /var/log/cloud-init + * reboot + * [test first boot] ssh back in, verify no 'WARN' in /var/log/cloud-init.log + * reboot + * [test second boot] ssh back in, verify no 'WARN' in /var/log/cloud-init.log + + [Regression Potential] + This patch changes some utils for generic FreeBSD, and it takes impact for + cloud-init on OpenStack for FreeBSD OS. + + The changes did affect other cloud-init path. The regressions should largely + be limited to the Azure datasource. + + [Other Info] + Upstream commit at + https://git.launchpad.net/cloud-init/commit/?id=0a71d5a870b416 + + None + I run cloud-init 0.7.6 on FreeBSD 10.3 on Azure. But it cannot work because it find data source through "blkid" command which is not supported on FreeBSD. Please refer to https://github.com/Azure/WALinuxAgent about how to find CDROM on FreeBSD. root@honzhancloudinit:/usr/home/honzhan # python /usr/local/bin/cloud-init --debug init 2016-10-24 17:32:21,045 - util.py[DEBUG]: Reading from /var/lib/cloud/data/status.json (quiet=False) 2016-10-24 17:32:21,047 - util.py[DEBUG]: Read 446 bytes from /var/lib/cloud/data/status.json 2016-10-24 17:32:21,048 - util.py[DEBUG]: Creating symbolic link from '/run/cloud-init/status.json' => '../../var/lib/cloud/data/status.json' 2016-10-24 17:32:21,048 - util.py[DEBUG]: Attempting to remove /run/cloud-init/status.json 2016-10-24 17:32:21,050 - util.py[DEBUG]: Reading from /proc/cmdline (quiet=False) 2016-10-24 17:32:21,050 - templater.py[WARNING]: Cheetah not available as the default renderer for unknown template, reverting to the basic renderer. 2016-10-24 17:32:21,050 - util.py[DEBUG]: Reading from /proc/cmdline (quiet=False) 2016-10-24 17:32:21,052 - util.py[DEBUG]: Reading from /etc/cloud/cloud.cfg (quiet=False) 2016-10-24 17:32:21,052 - util.py[DEBUG]: Read 2012 bytes from /etc/cloud/cloud.cfg 2016-10-24 17:32:21,053 - util.py[DEBUG]: Attempting to load yaml from string of length 2012 with allowed root types (<type 'dict'>,) 2016-10-24 17:32:21,077 - cloud-init[DEBUG]: Closing stdin 2016-10-24 17:32:21,078 - cloud-init[DEBUG]: Logging being reset, this logger may no longer be active shortly WARN: no logging configured! (tried 0 configs) Setting up basic logging... Cloud-init v. 0.7.6 running 'init' at Mon, 24 Oct 2016 09:32:21 +0000. Up 441006.050463 seconds. 2016-10-24 17:32:21,080 - util.py[DEBUG]: Cloud-init v. 0.7.6 running 'init' at Mon, 24 Oct 2016 09:32:21 +0000. Up 441006.050463 seconds. 2016-10-24 17:32:21,085 - util.py[DEBUG]: Writing to /var/log/cloud-init.log - ab: [420] 0 bytes 2016-10-24 17:32:21,088 - util.py[DEBUG]: Changing the ownership of /var/log/cloud-init.log to 0:0 2016-10-24 17:32:21,089 - util.py[DEBUG]: Running command ['ifconfig', '-a'] with allowed return codes [0] (shell=False, capture=True) 2016-10-24 17:32:21,107 - util.py[DEBUG]: Running command ['netstat', '-rn'] with allowed return codes [0] (shell=False, capture=True) ci-info: ++++++++++++++++++++++++Net device info++++++++++++++++++++++++ ci-info: +--------+------+------------+------------+-------------------+ ci-info: | Device | Up | Address | Mask | Hw-Address | ci-info: +--------+------+------------+------------+-------------------+ ci-info: | hn0: | True | 172.21.0.4 | 0xffffff00 | 00:0d:3a:a0:48:83 | ci-info: | lo0: | True | 127.0.0.1 | 0xff000000 | . | ci-info: +--------+------+------------+------------+-------------------+ ci-info: ++++++++++++++++++++++++++Route info+++++++++++++++++++++++++++ ci-info: +-------+-------------+---------+---------+-----------+-------+ ci-info: | Route | Destination | Gateway | Genmask | Interface | Flags | ci-info: +-------+-------------+---------+---------+-----------+-------+ ci-info: +-------+-------------+---------+---------+-----------+-------+ 2016-10-24 17:32:21,119 - cloud-init[DEBUG]: Checking to see if files that we need already exist from a previous run that would allow us to stop early. 2016-10-24 17:32:21,120 - util.py[DEBUG]: Reading from /var/lib/cloud/data/no-net (quiet=False) 2016-10-24 17:32:21,121 - util.py[DEBUG]: Reading from /var/lib/cloud/instance/obj.pkl (quiet=False) 2016-10-24 17:32:21,124 - cloud-init[DEBUG]: Execution continuing, no previous run detected that would allow us to stop early. 2016-10-24 17:32:21,124 - util.py[DEBUG]: Reading from /var/lib/cloud/instance/obj.pkl (quiet=False) 2016-10-24 17:32:21,126 - stages.py[DEBUG]: Using distro class <class 'cloudinit.distros.freebsd.Distro'> 2016-10-24 17:32:21,127 - __init__.py[DEBUG]: Looking for for data source in: ['Azure'], via packages ['', 'cloudinit.sources'] that matches dependencies ['FILESYSTEM', 'NETWORK'] 2016-10-24 17:32:21,138 - __init__.py[DEBUG]: Searching for data source in: ['DataSourceAzureNet'] 2016-10-24 17:32:21,139 - __init__.py[DEBUG]: Seeing if we can get any data from <class 'cloudinit.sources.DataSourceAzure.DataSourceAzureNet'> 2016-10-24 17:32:21,140 - util.py[DEBUG]: Running command ['blkid', '-tTYPE=iso9660', '-odevice'] with allowed return codes [0, 2] (shell=False, capture=True) 2016-10-24 17:32:21,157 - util.py[WARNING]: Getting data from <class 'cloudinit.sources.DataSourceAzure.DataSourceAzureNet'> failed 2016-10-24 17:32:21,158 - util.py[DEBUG]: Getting data from <class 'cloudinit.sources.DataSourceAzure.DataSourceAzureNet'> failed Traceback (most recent call last): - File "/usr/local/lib/python2.7/site-packages/cloudinit/sources/__init__.py", line 253, in find_source - if s.get_data(): - File "/usr/local/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.py", line 90, in get_data - candidates.extend(list_possible_azure_ds_devs()) - File "/usr/local/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.py", line 583, in list_possible_azure_ds_devs - devlist.extend(util.find_devs_with("TYPE=%s" % fstype)) - File "/usr/local/lib/python2.7/site-packages/cloudinit/util.py", line 1050, in find_devs_with - (out, _err) = subp(cmd, rcs=[0, 2]) - File "/usr/local/lib/python2.7/site-packages/cloudinit/util.py", line 1565, in subp - raise ProcessExecutionError(cmd=args, reason=e) + File "/usr/local/lib/python2.7/site-packages/cloudinit/sources/__init__.py", line 253, in find_source + if s.get_data(): + File "/usr/local/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.py", line 90, in get_data + candidates.extend(list_possible_azure_ds_devs()) + File "/usr/local/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.py", line 583, in list_possible_azure_ds_devs + devlist.extend(util.find_devs_with("TYPE=%s" % fstype)) + File "/usr/local/lib/python2.7/site-packages/cloudinit/util.py", line 1050, in find_devs_with + (out, _err) = subp(cmd, rcs=[0, 2]) + File "/usr/local/lib/python2.7/site-packages/cloudinit/util.py", line 1565, in subp + raise ProcessExecutionError(cmd=args, reason=e) ProcessExecutionError: Unexpected error while running command. Command: ['blkid', '-tTYPE=iso9660', '-odevice'] Exit code: - Reason: [Errno 2] No such file or directory Stdout: '' Stderr: '' 2016-10-24 17:32:21,159 - util.py[WARNING]: No instance datasource found! Likely bad things to come! 2016-10-24 17:32:21,159 - util.py[DEBUG]: No instance datasource found! Likely bad things to come! Traceback (most recent call last): - File "/usr/local/bin/cloud-init", line 245, in main_init - init.fetch() - File "/usr/local/lib/python2.7/site-packages/cloudinit/stages.py", line 308, in fetch - return self._get_data_source() - File "/usr/local/lib/python2.7/site-packages/cloudinit/stages.py", line 236, in _get_data_source - pkg_list) - File "/usr/local/lib/python2.7/site-packages/cloudinit/sources/__init__.py", line 260, in find_source - raise DataSourceNotFoundException(msg) + File "/usr/local/bin/cloud-init", line 245, in main_init + init.fetch() + File "/usr/local/lib/python2.7/site-packages/cloudinit/stages.py", line 308, in fetch + return self._get_data_source() + File "/usr/local/lib/python2.7/site-packages/cloudinit/stages.py", line 236, in _get_data_source + pkg_list) + File "/usr/local/lib/python2.7/site-packages/cloudinit/sources/__init__.py", line 260, in find_source + raise DataSourceNotFoundException(msg) DataSourceNotFoundException: Did not find any data source, searched classes: (DataSourceAzureNet) 2016-10-24 17:32:21,161 - util.py[DEBUG]: cloud-init mode 'init' took 0.119 seconds (0.12)
** Also affects: cloud-init (Ubuntu) Importance: Undecided Status: New ** Changed in: cloud-init Status: Confirmed => Fix Committed ** Changed in: cloud-init (Ubuntu) Status: New => Fix Released ** Changed in: cloud-init (Ubuntu) Importance: Undecided => Medium ** Also affects: cloud-init (Ubuntu Zesty) Importance: Undecided Status: New ** Also affects: cloud-init (Ubuntu Xenial) Importance: Undecided Status: New ** Also affects: cloud-init (Ubuntu Yakkety) Importance: Undecided Status: New ** Changed in: cloud-init (Ubuntu Xenial) Status: New => Confirmed ** Changed in: cloud-init (Ubuntu Yakkety) Status: New => Confirmed ** Changed in: cloud-init (Ubuntu Zesty) Status: New => Confirmed ** Changed in: cloud-init (Ubuntu Xenial) Importance: Undecided => Medium ** Changed in: cloud-init (Ubuntu Yakkety) Importance: Undecided => Medium ** Changed in: cloud-init (Ubuntu Zesty) Importance: Undecided => Medium ** Changed in: cloud-init (Ubuntu Xenial) Importance: Medium => Low ** Changed in: cloud-init (Ubuntu Zesty) Importance: Medium => Low ** Changed in: cloud-init (Ubuntu Yakkety) Importance: Medium => Low ** Description changed: - [Impact] + === Begin SRU Template === + [Impact] FreeBSD users on Azure will suffer from this bug. FreeBSD is another OS which has many differences compared with Linux, so it needs a lot of changes to support cloud-init for FreeBSD on Azure. This bug did not affect Ubuntu. [Test Case] == FreeBSD Test Case (should not be required for Ubuntu SRU) == Install cloud-init through its embedded shell script: tools/build-on-freebsd on a Hyper-V VM, upload the VM to Azure and check whether it can pass provisioning. == Ubuntu Test Case == Ubuntu test case is really just to verify no regression. The test case is to: - * launch a vm on azure - * add proposed, upgrade - * clean instance: rm -Rf /var/lib/cloud /var/log/cloud-init - * reboot - * [test first boot] ssh back in, verify no 'WARN' in /var/log/cloud-init.log - * reboot - * [test second boot] ssh back in, verify no 'WARN' in /var/log/cloud-init.log + * launch a vm on azure + * add proposed, upgrade + * clean instance: rm -Rf /var/lib/cloud /var/log/cloud-init + * reboot + * [test first boot] ssh back in, verify no 'WARN' in /var/log/cloud-init.log + * reboot + * [test second boot] ssh back in, verify no 'WARN' in /var/log/cloud-init.log - [Regression Potential] + [Regression Potential] This patch changes some utils for generic FreeBSD, and it takes impact for cloud-init on OpenStack for FreeBSD OS. The changes did affect other cloud-init path. The regressions should largely be limited to the Azure datasource. [Other Info] Upstream commit at - https://git.launchpad.net/cloud-init/commit/?id=0a71d5a870b416 + https://git.launchpad.net/cloud-init/commit/?id=0a71d5a870b416 - None + === End SRU Template === I run cloud-init 0.7.6 on FreeBSD 10.3 on Azure. But it cannot work because it find data source through "blkid" command which is not supported on FreeBSD. Please refer to https://github.com/Azure/WALinuxAgent about how to find CDROM on FreeBSD. root@honzhancloudinit:/usr/home/honzhan # python /usr/local/bin/cloud-init --debug init 2016-10-24 17:32:21,045 - util.py[DEBUG]: Reading from /var/lib/cloud/data/status.json (quiet=False) 2016-10-24 17:32:21,047 - util.py[DEBUG]: Read 446 bytes from /var/lib/cloud/data/status.json 2016-10-24 17:32:21,048 - util.py[DEBUG]: Creating symbolic link from '/run/cloud-init/status.json' => '../../var/lib/cloud/data/status.json' 2016-10-24 17:32:21,048 - util.py[DEBUG]: Attempting to remove /run/cloud-init/status.json 2016-10-24 17:32:21,050 - util.py[DEBUG]: Reading from /proc/cmdline (quiet=False) 2016-10-24 17:32:21,050 - templater.py[WARNING]: Cheetah not available as the default renderer for unknown template, reverting to the basic renderer. 2016-10-24 17:32:21,050 - util.py[DEBUG]: Reading from /proc/cmdline (quiet=False) 2016-10-24 17:32:21,052 - util.py[DEBUG]: Reading from /etc/cloud/cloud.cfg (quiet=False) 2016-10-24 17:32:21,052 - util.py[DEBUG]: Read 2012 bytes from /etc/cloud/cloud.cfg 2016-10-24 17:32:21,053 - util.py[DEBUG]: Attempting to load yaml from string of length 2012 with allowed root types (<type 'dict'>,) 2016-10-24 17:32:21,077 - cloud-init[DEBUG]: Closing stdin 2016-10-24 17:32:21,078 - cloud-init[DEBUG]: Logging being reset, this logger may no longer be active shortly WARN: no logging configured! (tried 0 configs) Setting up basic logging... Cloud-init v. 0.7.6 running 'init' at Mon, 24 Oct 2016 09:32:21 +0000. Up 441006.050463 seconds. 2016-10-24 17:32:21,080 - util.py[DEBUG]: Cloud-init v. 0.7.6 running 'init' at Mon, 24 Oct 2016 09:32:21 +0000. Up 441006.050463 seconds. 2016-10-24 17:32:21,085 - util.py[DEBUG]: Writing to /var/log/cloud-init.log - ab: [420] 0 bytes 2016-10-24 17:32:21,088 - util.py[DEBUG]: Changing the ownership of /var/log/cloud-init.log to 0:0 2016-10-24 17:32:21,089 - util.py[DEBUG]: Running command ['ifconfig', '-a'] with allowed return codes [0] (shell=False, capture=True) 2016-10-24 17:32:21,107 - util.py[DEBUG]: Running command ['netstat', '-rn'] with allowed return codes [0] (shell=False, capture=True) ci-info: ++++++++++++++++++++++++Net device info++++++++++++++++++++++++ ci-info: +--------+------+------------+------------+-------------------+ ci-info: | Device | Up | Address | Mask | Hw-Address | ci-info: +--------+------+------------+------------+-------------------+ ci-info: | hn0: | True | 172.21.0.4 | 0xffffff00 | 00:0d:3a:a0:48:83 | ci-info: | lo0: | True | 127.0.0.1 | 0xff000000 | . | ci-info: +--------+------+------------+------------+-------------------+ ci-info: ++++++++++++++++++++++++++Route info+++++++++++++++++++++++++++ ci-info: +-------+-------------+---------+---------+-----------+-------+ ci-info: | Route | Destination | Gateway | Genmask | Interface | Flags | ci-info: +-------+-------------+---------+---------+-----------+-------+ ci-info: +-------+-------------+---------+---------+-----------+-------+ 2016-10-24 17:32:21,119 - cloud-init[DEBUG]: Checking to see if files that we need already exist from a previous run that would allow us to stop early. 2016-10-24 17:32:21,120 - util.py[DEBUG]: Reading from /var/lib/cloud/data/no-net (quiet=False) 2016-10-24 17:32:21,121 - util.py[DEBUG]: Reading from /var/lib/cloud/instance/obj.pkl (quiet=False) 2016-10-24 17:32:21,124 - cloud-init[DEBUG]: Execution continuing, no previous run detected that would allow us to stop early. 2016-10-24 17:32:21,124 - util.py[DEBUG]: Reading from /var/lib/cloud/instance/obj.pkl (quiet=False) 2016-10-24 17:32:21,126 - stages.py[DEBUG]: Using distro class <class 'cloudinit.distros.freebsd.Distro'> 2016-10-24 17:32:21,127 - __init__.py[DEBUG]: Looking for for data source in: ['Azure'], via packages ['', 'cloudinit.sources'] that matches dependencies ['FILESYSTEM', 'NETWORK'] 2016-10-24 17:32:21,138 - __init__.py[DEBUG]: Searching for data source in: ['DataSourceAzureNet'] 2016-10-24 17:32:21,139 - __init__.py[DEBUG]: Seeing if we can get any data from <class 'cloudinit.sources.DataSourceAzure.DataSourceAzureNet'> 2016-10-24 17:32:21,140 - util.py[DEBUG]: Running command ['blkid', '-tTYPE=iso9660', '-odevice'] with allowed return codes [0, 2] (shell=False, capture=True) 2016-10-24 17:32:21,157 - util.py[WARNING]: Getting data from <class 'cloudinit.sources.DataSourceAzure.DataSourceAzureNet'> failed 2016-10-24 17:32:21,158 - util.py[DEBUG]: Getting data from <class 'cloudinit.sources.DataSourceAzure.DataSourceAzureNet'> failed Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/cloudinit/sources/__init__.py", line 253, in find_source if s.get_data(): File "/usr/local/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.py", line 90, in get_data candidates.extend(list_possible_azure_ds_devs()) File "/usr/local/lib/python2.7/site-packages/cloudinit/sources/DataSourceAzure.py", line 583, in list_possible_azure_ds_devs devlist.extend(util.find_devs_with("TYPE=%s" % fstype)) File "/usr/local/lib/python2.7/site-packages/cloudinit/util.py", line 1050, in find_devs_with (out, _err) = subp(cmd, rcs=[0, 2]) File "/usr/local/lib/python2.7/site-packages/cloudinit/util.py", line 1565, in subp raise ProcessExecutionError(cmd=args, reason=e) ProcessExecutionError: Unexpected error while running command. Command: ['blkid', '-tTYPE=iso9660', '-odevice'] Exit code: - Reason: [Errno 2] No such file or directory Stdout: '' Stderr: '' 2016-10-24 17:32:21,159 - util.py[WARNING]: No instance datasource found! Likely bad things to come! 2016-10-24 17:32:21,159 - util.py[DEBUG]: No instance datasource found! Likely bad things to come! Traceback (most recent call last): File "/usr/local/bin/cloud-init", line 245, in main_init init.fetch() File "/usr/local/lib/python2.7/site-packages/cloudinit/stages.py", line 308, in fetch return self._get_data_source() File "/usr/local/lib/python2.7/site-packages/cloudinit/stages.py", line 236, in _get_data_source pkg_list) File "/usr/local/lib/python2.7/site-packages/cloudinit/sources/__init__.py", line 260, in find_source raise DataSourceNotFoundException(msg) DataSourceNotFoundException: Did not find any data source, searched classes: (DataSourceAzureNet) 2016-10-24 17:32:21,161 - util.py[DEBUG]: cloud-init mode 'init' took 0.119 seconds (0.12) -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1636345 Title: [Hyper-V][Azure] cloud-init on FreeBSD for Azure does not work To manage notifications about this bug go to: https://bugs.launchpad.net/cloud-init/+bug/1636345/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs