Reactive charms fail with "ImportError: cannot import name 'defaults'" on trusty/mitaka test scenarios due to charms_openstack.charm import
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
charms.openstack |
Fix Released
|
Undecided
|
Pedro Guimarães |
Bug Description
I am getting errors on trusty-mitaka functional testing for Designate charm.
Both Designate's and Designate-Bind's hook install fails with following traceback:
2018-08-23 12:18:18 ERROR juju-log Hook error:
Traceback (most recent call last):
File "/var/lib/
bus.discover()
File "/var/lib/
_register_
File "/var/lib/
_load_
File "/var/lib/
return importlib.
File "/var/lib/
return _bootstrap.
File "<frozen importlib.
File "<frozen importlib.
File "<frozen importlib.
File "<frozen importlib.
File "<frozen importlib.
File "<frozen importlib.
File "<frozen importlib.
File "/var/lib/
import charms_
File "/var/lib/
from charms_
File "/var/lib/
from charms_
File "/var/lib/
from charms_
File "/var/lib/
from charms_
ImportError: cannot import name 'defaults'
Trusty is running Python version: 3.4.3
Both Designate and Designate-Bind are charm.reactive.
Other charms in same functional test pass hook "install": https:/
Could simulate this bug by running tests/gate- basic-trusty- mitaka on designate charm.
Module "defaults" is only called once on core.py: https:/ /github. com/openstack/ charms. openstack/ blob/master/ charms_ openstack/ charm/core. py#L908
Moving the import inside function "upgrade_ if_available" solves this issue and all tests finish with OK
Btw, gate-basic- bionic- queens pass for Designate charm with no issues: /review. openstack. org/#/c/ 593607/
https:/
Also tried with xenial version and hook install worked correctly.
Xenial runs Python 3.5.2. Therefore, I guess it is a python 3.4 -> 3.5 issue.