yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #70617
[Bug 1618094] Re: Cloudinit fails to find config drive data due to wrong call on stages.Init(ds_deps=[])
[Expired for cloud-init because there has been no activity for 60 days.]
** Changed in: cloud-init
Status: Incomplete => Expired
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to cloud-init.
https://bugs.launchpad.net/bugs/1618094
Title:
Cloudinit fails to find config drive data due to wrong call on
stages.Init(ds_deps=[])
Status in cloud-init:
Expired
Bug description:
Came across this issue while manually setting up an Ubuntu 14.04 devstack image with the following setup:
dpkg-reconfigure cloud-init
[*] ConfigDrive: Reads data from Openstack Config Drive
The issue was that with every instance launch, cloud-init would fail to find the config data mounted on a drive on the instance (in particular /dev/sr0) and was not setting up mainly the ssh keys and the rest of the command customizations.
To test the issue, I ran the following command find the culprit:
root@ubuntu14:/home/test# cloud-init modules --mode=final
Can not apply stage final, no datasource found! Likely bad things to come!
------------------------------------------------------------
Traceback (most recent call last):
File "/usr/bin/cloud-init", line 318, in main_modules
init.fetch()
File "/usr/lib/python2.7/dist-packages/cloudinit/stages.py", line 308, in fetch
return self._get_data_source()
File "/usr/lib/python2.7/dist-packages/cloudinit/stages.py", line 236, in _get_data_source
pkg_list)
File "/usr/lib/python2.7/dist-packages/cloudinit/sources/__init__.py", line 263, in find_source
raise DataSourceNotFoundException(msg)
DataSourceNotFoundException: Did not find any data source, searched classes: ()
As it stands out, in https://git.launchpad.net/cloud-
init/tree/cloudinit/cmd/main.py:346 the stage Init is not properly
done:
init = stages.Init(ds_deps=[], reporter=args.reporter)
the stages.py:61 init however is not properly addressed in this call and thus assigns the empty list with the following line:
if ds_deps is not None:
self.ds_deps = ds_deps # which is an empty list in this case
Thus makes cloudinit ommit mounting and searching device drives for
the config data.
As a fix, either files can be changed:
- main.py:346 > init = stages.Init(ds_deps=None, reporter=args.reporter)
- stages.py:61 > if ds_deps is not None and len(ds_deps) > 0: (not sure if this is used init is used otherwise)
Anyways the first one fixed my problem.
To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-init/+bug/1618094/+subscriptions
References