Unit tests fail with oslo.config from master

Bug #1683732 reported by Javier Peña
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ironic Inspector
Fix Released
High
Javier Peña

Bug Description

oslo.config is becoming strict by default with type enforcement [1], and that is causing some unit tests to fail. Initially, they are failing with:

======================================================================
ERROR: test_prefix_only_uuid (ironic_inspector.test.unit.test_utils.TestProcessingLogger)
ironic_inspector.test.unit.test_utils.TestProcessingLogger.test_prefix_only_uuid
----------------------------------------------------------------------
_StringException: Traceback (most recent call last):
  File "ironic_inspector/test/base.py", line 48, in setUp
    self.session = db.get_session()
  File "ironic_inspector/db.py", line 137, in get_session
    facade = create_facade_lazily()
  File "ironic_inspector/db.py", line 160, in create_facade_lazily
    _FACADE = db_session.EngineFacade.from_config(cfg.CONF)
  File "/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py", line 1308, in from_config
    expire_on_commit=expire_on_commit, _conf=conf)
  File "/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py", line 1229, in __init__
    slave_connection=slave_connection)
  File "/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py", line 486, in _start
    engine_args, maker_args)
  File "/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py", line 504, in _setup_for_connection
    sql_connection=sql_connection, **engine_kwargs)
  File "/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/engines.py", line 113, in create_engine
    url = sqlalchemy.engine.url.make_url(sql_connection)
  File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/url.py", line 186, in make_url
    return _parse_rfc1738_args(name_or_url)
  File "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/url.py", line 235, in _parse_rfc1738_args
    "Could not parse rfc1738 URL from string '%s'" % name)
sqlalchemy.exc.ArgumentError: Could not parse rfc1738 URL from string 'False'

Once the issue with the slave_connection string is fixed, we get a new error:

======================================================================
ERROR: test_wrong_add_ports (ironic_inspector.test.unit.test_plugins_standard.TestValidateInterfacesHookLoad)
ironic_inspector.test.unit.test_plugins_standard.TestValidateInterfacesHookLoad.test_wrong_add_ports
----------------------------------------------------------------------
_StringException: Traceback (most recent call last):
  File "ironic_inspector/test/unit/test_plugins_standard.py", line 107, in test_wrong_add_ports
    CONF.set_override('add_ports', 'foobar', 'processing')
  File "/usr/lib/python2.7/site-packages/debtcollector/removals.py", line 261, in wrapper
    return f(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/oslo_config/cfg.py", line 2312, in __inner
    result = f(self, *args, **kwargs)
  File "/usr/lib/python2.7/site-packages/oslo_config/cfg.py", line 2636, in set_override
    opt_info['opt'], override, enforce_type)
  File "/usr/lib/python2.7/site-packages/oslo_config/cfg.py", line 2665, in _get_enforced_type_value
    converted = self._convert_value(value, opt)
  File "/usr/lib/python2.7/site-packages/oslo_config/cfg.py", line 2943, in _convert_value
    return opt.type(value)
  File "/usr/lib/python2.7/site-packages/oslo_config/types.py", line 156, in __call__
    repr(value)))
ValueError: Valid values are [all, active, pxe], but found 'foobar'

The second issue is caused by oslo.config checking the valid values and failing before we reach ValidateInterfacesHook().

Changed in ironic-inspector:
assignee: nobody → Javier Peña (jpena-c)
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ironic-inspector (master)

Fix proposed to branch: master
Review: https://review.openstack.org/457572

Vladyslav Drok (vdrok)
Changed in ironic-inspector:
importance: Undecided → High
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic-inspector (master)

Reviewed: https://review.openstack.org/457560
Committed: https://git.openstack.org/cgit/openstack/ironic-inspector/commit/?id=d6b00fade09f9f5d25ace90e293cdd1470891c0c
Submitter: Jenkins
Branch: master

commit d6b00fade09f9f5d25ace90e293cdd1470891c0c
Author: Javier Pena <email address hidden>
Date: Tue Apr 18 12:39:14 2017 +0200

    Fix slave_connection string for unit tests

    oslo.config is becoming more strict with type enforcement [1], so we
    cannot use False as slave_connection string.

    [1] https://review.openstack.org/328692

    Partial-Bug: #1683732
    Change-Id: I6c6182df3a54d68737f8bbc77f1a2890ffcb0da2

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.openstack.org/457572
Committed: https://git.openstack.org/cgit/openstack/ironic-inspector/commit/?id=dffdf36ebd08eb8ed2c5f2cc03b5a7f3dba38927
Submitter: Jenkins
Branch: master

commit dffdf36ebd08eb8ed2c5f2cc03b5a7f3dba38927
Author: Javier Pena <email address hidden>
Date: Tue Apr 18 12:59:11 2017 +0200

    Remove unneeded validation code in ValidateInterfacesHook

    oslo.config now sets enforce_type=True by default since [1], so
    there is no need to check in ValidateInterfacesHook that the value
    set in the config file is one of the valid values.

    [1] https://review.openstack.org/328692

    Closes-Bug: #1683732
    Change-Id: I5830466cb21f200ae1c33021cce4d166a26456be

Changed in ironic-inspector:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/ironic-inspector 6.0.0

This issue was fixed in the openstack/ironic-inspector 6.0.0 release.

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.