Public bug reported:

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.

** Affects: cloud-init
     Importance: Undecided
         Status: New

-- 
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:
  New

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

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to