I'm seeing this treaceback repeatedly in barbican-svc.log on devstack:
2015-09-22 08:02:08.949 ^[[00;36mINFO alembic.runtime.migration [^[[00;36m-^[[00;36m] ^[[01;35m^[[00;36mWill assume non-transactional DDL.^[[00m
2015-09-22 08:02:09.349 ^[[01;31mCRITICAL barbican [^[[00;36m-^[[01;31m] ^[[01;35m^[[01;31mAttributeError: 'datetime.datetime' object has no attribute 'strip'
^[[00m
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00mTraceback (most recent call last):
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/usr/local/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 247, in loadapp
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m return loadobj(APP, uri, name=name, **kw)
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/usr/local/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 272, in loadobj
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m return context.create()
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/usr/local/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 710, in create
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m return self.object_type.invoke(self)
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/usr/local/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 144, in invoke
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m **context.local_conf)
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/usr/local/lib/python2.7/dist-packages/paste/deploy/util.py", line 55, in fix_call
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m val = callable(*args, **kw)
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/usr/local/lib/python2.7/dist-packages/paste/urlmap.py", line 31, in urlmap_factory
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m app = loader.get_app(app_name, global_conf=global_conf)
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/usr/local/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 350, in get_app
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m name=name, global_conf=global_conf).create()
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/usr/local/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 710, in create
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m return self.object_type.invoke(self)
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/usr/local/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 203, in invoke
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m app = context.app_context.create()
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/usr/local/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 710, in create
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m return self.object_type.invoke(self)
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/usr/local/lib/python2.7/dist-packages/paste/deploy/loadwsgi.py", line 146, in invoke
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m return fix_call(context.object, context.global_conf, **context.local_conf)
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/usr/local/lib/python2.7/dist-packages/paste/deploy/util.py", line 55, in fix_call
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m val = callable(*args, **kw)
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/opt/stack/barbican/barbican/api/app.py", line 78, in _wrapper
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m wsgi_app = func(global_config, **local_conf)
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/opt/stack/barbican/barbican/api/app.py", line 92, in create_main_app
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m return build_wsgi_app(versions.V1Controller(), transactional=True)
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/opt/stack/barbican/barbican/api/controllers/versions.py", line 95, in __init__
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m self.cas = cas.CertificateAuthoritiesController()
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/opt/stack/barbican/barbican/api/controllers/cas.py", line 260, in __init__
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m cert_resources.refresh_certificate_resources()
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/opt/stack/barbican/barbican/tasks/certificate_resources.py", line 70, in refresh_certificate_resources
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m cert.CertificatePluginManager().refresh_ca_table()
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/opt/stack/barbican/barbican/plugin/interface/certificate_manager.py", line 637, in refresh_ca_table
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m self.update_ca_info(plugin, session=session)
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/opt/stack/barbican/barbican/plugin/interface/certificate_manager.py", line 665, in update_ca_info
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m session=session)
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m File "/opt/stack/barbican/barbican/model/repositories.py", line 1428, in update_entity
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m expiration_iso = timeutils.parse_isotime(expiration.strip())
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00mAttributeError: 'datetime.datetime' object has no attribute 'strip'
^[[01;31m2015-09-22 08:02:09.349 TRACE barbican ^[[01;35m^[[00m
OOPS ! failed loading app in worker 1 (pid 14969) :( trying again...
Respawned uWSGI worker 1 (new pid: 14976)
https:/ /review. openstack. org/#/c/ 226372/
String method being called on datetime object
The method strip() was being called on a datetime object, convert it to
a string first.
Change-Id: I271cff2fc32c51 157e2237a504dc5 dce075f367c
Closes-Bug: #1498542