~jcsackett/charmworld/bac-tag-constraints

« back to all changes in this revision

Viewing changes to charmworld/migrations/versions/026_convert_comma_constraints.py

  • Committer: Tarmac
  • Author(s): Brad Crittenden
  • Date: 2014-04-22 19:06:44 UTC
  • mfrom: (504.1.2 026-3)
  • Revision ID: tarmac-20140422190644-nep5wth304pk36p8
Fix migration wrt invalid constraints.

The migration 026 for rewriting contraints to be space-separated worked for
staging.  When run on production it had errors due to some of the bundles on
production being older than the more restrictive bundle proofing
requirements.  Those bundles were in essence grandfathered in and never
subject to the stricter rules.  At least one bundle had an obsolete 'cpu'
constraint and that caused the migration to fail since it was not checking for
the thrown ValueError in this situation.

The migration now checks for ValueError and will remove the affected bundle
from the target database and proceed.

The functions are now noted to throw ValueError.

Test was added for this situation and logging checked.

https://codereview.appspot.com/90420043/

R=jcsackett.

Approved by Juju Gui Bot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
    for bundle_data in bundles:
29
29
        if 'inherits' in bundle_data['data']:
30
30
            del bundle_data['data']['inherits']
31
 
        convert_bundle_constraints(bundle_data['data'])
 
31
        try:
 
32
            convert_bundle_constraints(bundle_data['data'])
 
33
        except ValueError as e:
 
34
            # This bundle has constraints that are invalid or no longer
 
35
            # supported.  Simply skip the bundle.
 
36
            log.warning('Bundle has invalid constraint.  Skipping {}'.format(
 
37
                bundle_data['_id']))
 
38
            log.warning(e.message)
 
39
            target_db.bundles.remove(bundle_data['_id'])
 
40
            continue
32
41
        basket_id = '{}/{}'.format(
33
42
            bundle_data['basket_name'],
34
43
            bundle_data['basket_revision'])