juju / juju-bundlelib

A Python library for working with Juju bundles.
GNU Lesser General Public License v3.0
1 stars 14 forks source link

Bundle proof errors if charm fails validation #56

Open johnsca opened 7 years ago

johnsca commented 7 years ago

If _validate_charm fails, it returns None. This is used unconditionally in _validate_placement which causes an exception:

Traceback (most recent call last):
  File "/usr/bin/charm-proof", line 9, in <module>
    load_entry_point('charm-tools==2.1.9', 'console_scripts', 'charm-proof')()
  File "/usr/lib/python2.7/dist-packages/charmtools/proof.py", line 63, in main
    lint, exit_code = proof(args_.charm_name, args_.bundle, args_.debug)
  File "/usr/lib/python2.7/dist-packages/charmtools/proof.py", line 57, in proof
    lint, err_code = c.proof()
  File "/usr/lib/python2.7/dist-packages/charmtools/bundles.py", line 92, in proof
    lint.proof(self)
  File "/usr/lib/python2.7/dist-packages/charmtools/bundles.py", line 47, in proof
    errors = jujubundlelib.validation.validate(data)
  File "/usr/lib/python2.7/dist-packages/jujubundlelib/validation.py", line 52, in validate
    _validate_services(services, machines, add_error)
  File "/usr/lib/python2.7/dist-packages/jujubundlelib/validation.py", line 151, in _validate_services
    placement, services, machines, charm, add_error)
  File "/usr/lib/python2.7/dist-packages/jujubundlelib/validation.py", line 368, in _validate_placement
    if charm.series and series and charm.series != series:
AttributeError: 'NoneType' object has no attribute 'series'