find or install suitable dependencies / maas + curtin with vivid image fails to import yaml

Bug #1427950 reported by Scott Moser
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
curtin
Fix Released
Medium
Unassigned
curtin (Ubuntu)
Fix Released
Critical
Unassigned
Trusty
Fix Released
High
Unassigned
Utopic
Fix Released
High
Unassigned
Vivid
Fix Released
Critical
Unassigned

Bug Description

=== Begin SRU Template ===
[Impact]
In its current state, maas is unable to install vivid/14.10 using curtin.
This is obviously quite serious as users using LTS server can then not
install the Ubuntu development release for testing.

The failure is fallout of there not being 'python2-yaml' in a maas ephemeral
image (which is used for curtin install environment). The fix is that
curtin is now able to run with either python2 or python3 and finds the
appropriate/available python on the system.

[Test Case]
Generally, the test case flow is:
 * Install MAAS
 * import boot resources using the 'daily' stream.
 * attempt to install a node with vivid
 * see install fail, with message about unable to find 'curtin.commands.main'

I've documented and walked through installation of maas and use of
libvirt and qemu to test in
 maas-1.7 http://bazaar.launchpad.net/~smoser/maas/maas-pkg-test/view/head:/maas-trusty-1.7.txt
 maas-1.5 http://bazaar.launchpad.net/~smoser/maas/maas-pkg-test/view/head:/maas-trusty-1.5.txt

[Regression Potential]
The potential failure path is in one of 2 paths:
a.) curtin being broken on python3
b.) curtin's launcher selecting the wrong python

Curtin basically has 3 dependencies:
 python (or python3)
 python-yaml (or python3-yaml)
 oauth or oauthlib

These are satisfied in the image by:
  precise: python2 (which has no python3 executable)
  trusty: python2 (which has python3 executable but no python3-yaml)
  vivid: python3 (which has python2 executable but no python-yaml)

Oauthlib or oauth is satisfied by the same python (riding on dependencies of
cloud-init). curtin does not currently check for that library, but
missing library does not cause failure, just failure to report status
back to maas. That said, in all supported use cases it will be fine.

=== End SRU Template ===

curtin can run in python3 or python2. its only python dependency is yaml.

maas-images of 12.04 do not have python3.
maas-images of 15.04 do not have python-yaml (python2) future images might not have any python2.

right now maas invokes curtin thorugh cloud-init user-data. curtin packs itself into a self extracting executable, is transferred via user-data and invoked inside the image. Sending it through the user-data means that the maas server being updated is all that is necessary to deliver new curtin (rather than SRU to each release).

Right now, in vivid that means that curtin tries to run with python2 and thus fails to import yaml.

Basically curtin can't really depend on anything that isn't in ubuntu maas image (cloud-iamge derived). And, it doesn't get installed via apt.

A couple solutions here:
a.) a mechanism in curtin to run with python3 or python2, and just go on as is.
    on new cloud-images curtin will get the python3-yaml (a dependency of cloud-init) and in older versions it would run with python2. A '$python -m curtin.checkdeps' would be run as a way to determine which python to run,

b.) get python-yaml into maas images and use python2.

c.) allow curtin to 'apt-get install' its deps.
   note, this has the unfortunate dependency on doing that, and then having more io and network traffic and such during an install if the image doesn't contain python-yaml or other things.

Note, though, that curtin (or maas) changes that are made in order to support use of vivid would then need to be SRU'd, where as changes to the vivid image itself would not.

Related bugs:
 * Bug 1434679: maas 1.5 does not know about vivid

Revision history for this message
Scott Moser (smoser) wrote :

i shoved an initial python3or2 attempt to lp:~smoser/curtin/trunk.py2or3

Scott Moser (smoser)
description: updated
description: updated
Revision history for this message
Steve Langasek (vorlon) wrote :

option c) seems less than ideal.

option b) only postpones the problem; we will eventually drop python2, so at some point curtin will need to bridge the gap between python2 and python3 in the set of releases it supports.

option a) is IMHO the best.

There's a clever hack you can use to make a script both valid shell and valid python, to handle the re-execing as whichever version of python is correct. Maybe this is useful to you?

https://lists.debian.org/debian-python/2014/07/msg00078.html

Scott Moser (smoser)
Changed in curtin (Ubuntu):
status: New → Confirmed
importance: Undecided → Critical
status: Confirmed → In Progress
Changed in curtin:
status: New → Confirmed
importance: Undecided → Medium
Scott Moser (smoser)
Changed in curtin (Ubuntu Trusty):
status: New → Confirmed
Changed in curtin (Ubuntu Utopic):
status: New → Confirmed
Changed in curtin (Ubuntu Trusty):
importance: Undecided → High
Changed in curtin (Ubuntu Utopic):
importance: Undecided → High
Changed in curtin:
status: Confirmed → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package curtin - 0.1.0~bzr200-0ubuntu1

---------------
curtin (0.1.0~bzr200-0ubuntu1) vivid; urgency=medium

  * New upstream snapshot.
    * support installation of vivid on vivid via python3 (LP: #1427950)
    * know kernel mapping for vivid (3.19)
  * debian/control: update standards versions, wrap-and-sort
 -- Scott Moser <email address hidden> Wed, 11 Mar 2015 13:19:43 -0400

Changed in curtin (Ubuntu Vivid):
status: In Progress → Fix Released
Scott Moser (smoser)
description: updated
Scott Moser (smoser)
description: updated
Revision history for this message
Dave Walker (davewalker) wrote : Please test proposed package

Hello Scott, or anyone else affected,

Accepted curtin into utopic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/curtin/0.1.0~bzr201-0ubuntu1~14.10.0 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in curtin (Ubuntu Utopic):
status: Confirmed → Fix Committed
tags: added: verification-needed
Changed in curtin (Ubuntu Trusty):
status: Confirmed → Fix Committed
Revision history for this message
Dave Walker (davewalker) wrote :

Hello Scott, or anyone else affected,

Accepted curtin into trusty-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/curtin/0.1.0~bzr201-0ubuntu1~14.04.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Revision history for this message
Scott Moser (smoser) wrote :

I've tested this as described in the SRU template.

tags: added: verification-done
removed: verification-needed
Revision history for this message
Chris J Arges (arges) wrote : Update Released

The verification of the Stable Release Update for curtin has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package curtin - 0.1.0~bzr201-0ubuntu1~14.10.0

---------------
curtin (0.1.0~bzr201-0ubuntu1~14.10.0) utopic-proposed; urgency=medium

  * New upstream snapshot.
    - hardware enablement: knew kernel mapping for vivid (hwe-v = 3.19)
    - hardware enablement: support running on vivid and installation of
      vivid in environment without python2. (LP: #1427950)
    - debian/control: fix lintian warnings: add build-depends on dh-python,
      wrap-and-sort, update Standards-Version.
 -- Scott Moser <email address hidden> Fri, 20 Mar 2015 16:49:19 -0400

Changed in curtin (Ubuntu Utopic):
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package curtin - 0.1.0~bzr201-0ubuntu1~14.04.1

---------------
curtin (0.1.0~bzr201-0ubuntu1~14.04.1) trusty-proposed; urgency=medium

  * New upstream snapshot.
    - hardware enablement: knew kernel mapping for vivid (hwe-v = 3.19)
    - hardware enablement: support running on vivid and installation of
      vivid in environment without python2. (LP: #1427950)
    - debian/control: fix lintian warnings: add build-depends on dh-python,
      wrap-and-sort, update Standards-Version.
 -- Scott Moser <email address hidden> Fri, 20 Mar 2015 16:41:23 -0400

Changed in curtin (Ubuntu Trusty):
status: Fix Committed → Fix Released
Revision history for this message
Scott Moser (smoser) wrote : Fixed in Curtin 17.1

This bug is believed to be fixed in curtin in 17.1. If this is still a problem for you, please make a comment and set the state back to New

Thank you.

Changed in curtin:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.