← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 2034761] Re: test discovery fail with latest neutron-lib

 

Ironic CI didn't catch it because... it seems to be a neutron bug?

https://github.com/openstack/neutron/blob/master/neutron/db/qos/models.py#L135
still exists even though https://github.com/openstack/neutron-
lib/commit/673e48a1890c721654ce0de9cd9e0897c791bd6a is merged

** Project changed: networking-baremetal => neutron

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/2034761

Title:
  test discovery fail with latest neutron-lib

Status in neutron:
  New

Bug description:
  Hi,

  Building networking-baremetal 6.2.0 together with the latest neutron-lib 3.8.0 in my bookworm-backports build server, I get a test discovery error from stestr (see Debian package build log below). Apparently, it looks like it's because of this commit:
  https://github.com/openstack/neutron-lib/commit/673e48a1890c721654ce0de9cd9e0897c791bd6a 

  that networking is still using. Here's the build log:

  PYTHON=python3.11 stestr run --parallel --subunit networking_baremetal.tests.* | subunit2pyunit
  [...]

  /usr/lib/python3/dist-packages/neutron/db/quota/models.py:21: SAWarning: This declarative base already contains a class with the same class name and module name as neutron.db.quota.models.ResourceDelta, and will be replaced in the string-lookup table.
    class ResourceDelta(model_base.BASEV2):
  /usr/lib/python3/dist-packages/neutron/db/qos/models.py:27: SAWarning: This declarative base already contains a class with the same class name and module name as neutron.db.qos.models.QosPolicy, and will be replaced in the string-lookup table.
    class QosPolicy(standard_attr.HasStandardAttributes, model_base.BASEV2,

  =========================
  Failures during discovery
  =========================
  --- import errors ---
  Failed to import test module: networking_baremetal.tests.unit.drivers.netconf.test_openconfig
  Traceback (most recent call last):
    File "/usr/lib/python3.11/unittest/loader.py", line 407, in _find_test_path
      module = self._get_module_from_name(name)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.11/unittest/loader.py", line 350, in _get_module_from_name
      __import__(name)
    File "/<<PKGBUILDDIR>>/networking_baremetal/tests/unit/drivers/netconf/test_openconfig.py", line 17, in <module>
      from neutron.plugins.ml2 import driver_context
    File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/driver_context.py", line 23, in <module>
      from neutron.db import segments_db
    File "/usr/lib/python3/dist-packages/neutron/db/segments_db.py", line 23, in <module>
      from neutron.objects import network as network_obj
    File "/usr/lib/python3/dist-packages/neutron/objects/network.py", line 33, in <module>
      from neutron.objects.qos import binding
    File "/usr/lib/python3/dist-packages/neutron/objects/qos/binding.py", line 25, in <module>
      from neutron.db.qos import models as qos_db_model
    File "/usr/lib/python3/dist-packages/neutron/db/qos/models.py", line 135, in <module>
      model_base.HasProjectPrimaryKeyIndex):
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  AttributeError: module 'neutron_lib.db.model_base' has no attribute 'HasProjectPrimaryKeyIndex'

  Failed to import test module: networking_baremetal.tests.unit.ironic_agent.test_hashring_member_manager
  Traceback (most recent call last):
    File "/usr/lib/python3.11/unittest/loader.py", line 407, in _find_test_path
      module = self._get_module_from_name(name)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.11/unittest/loader.py", line 350, in _get_module_from_name
      __import__(name)
    File "/<<PKGBUILDDIR>>/networking_baremetal/tests/unit/ironic_agent/test_hashring_member_manager.py", line 21, in <module>
      from networking_baremetal.agent import ironic_neutron_agent
    File "/<<PKGBUILDDIR>>/networking_baremetal/agent/ironic_neutron_agent.py", line 23, in <module>
      from neutron.agent import rpc as agent_rpc
    File "/usr/lib/python3/dist-packages/neutron/agent/rpc.py", line 36, in <module>
      from neutron.agent import resource_cache
    File "/usr/lib/python3/dist-packages/neutron/agent/resource_cache.py", line 22, in <module>
      from neutron.api.rpc.callbacks.consumer import registry as registry_rpc
    File "/usr/lib/python3/dist-packages/neutron/api/rpc/callbacks/consumer/registry.py", line 13, in <module>
      from neutron.api.rpc.callbacks import resource_manager
    File "/usr/lib/python3/dist-packages/neutron/api/rpc/callbacks/resource_manager.py", line 20, in <module>
      from neutron.api.rpc.callbacks import resources
    File "/usr/lib/python3/dist-packages/neutron/api/rpc/callbacks/resources.py", line 14, in <module>
      from neutron.objects import address_group
    File "/usr/lib/python3/dist-packages/neutron/objects/address_group.py", line 22, in <module>
      from neutron.objects import rbac_db
    File "/usr/lib/python3/dist-packages/neutron/objects/rbac_db.py", line 28, in <module>
      from neutron.db import rbac_db_mixin
    File "/usr/lib/python3/dist-packages/neutron/db/rbac_db_mixin.py", line 25, in <module>
      from neutron.extensions import rbac as ext_rbac
    File "/usr/lib/python3/dist-packages/neutron/extensions/rbac.py", line 23, in <module>
      from neutron.api.v2 import base
    File "/usr/lib/python3/dist-packages/neutron/api/v2/base.py", line 37, in <module>
      from neutron import quota
    File "/usr/lib/python3/dist-packages/neutron/quota/__init__.py", line 21, in <module>
      from neutron.quota import resource_registry
    File "/usr/lib/python3/dist-packages/neutron/quota/resource_registry.py", line 20, in <module>
      from neutron.quota import resource
    File "/usr/lib/python3/dist-packages/neutron/quota/resource.py", line 28, in <module>
      from neutron.db.quota import api as quota_api
    File "/usr/lib/python3/dist-packages/neutron/db/quota/api.py", line 22, in <module>
      from neutron.objects import quota as quota_obj
    File "/usr/lib/python3/dist-packages/neutron/objects/quota.py", line 21, in <module>
      from neutron.db.quota import models
    File "/usr/lib/python3/dist-packages/neutron/db/quota/models.py", line 57, in <module>
      class QuotaUsage(model_base.BASEV2, model_base.HasProjectPrimaryKeyIndex):
                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  AttributeError: module 'neutron_lib.db.model_base' has no attribute 'HasProjectPrimaryKeyIndex'

  Failed to import test module: networking_baremetal.tests.unit.ironic_agent.test_ironic_agent
  Traceback (most recent call last):
    File "/usr/lib/python3.11/unittest/loader.py", line 407, in _find_test_path
      module = self._get_module_from_name(name)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.11/unittest/loader.py", line 350, in _get_module_from_name
      __import__(name)
    File "/<<PKGBUILDDIR>>/networking_baremetal/tests/unit/ironic_agent/test_ironic_agent.py", line 18, in <module>
      from neutron.agent import rpc as agent_rpc
    File "/usr/lib/python3/dist-packages/neutron/agent/rpc.py", line 36, in <module>
      from neutron.agent import resource_cache
    File "/usr/lib/python3/dist-packages/neutron/agent/resource_cache.py", line 22, in <module>
      from neutron.api.rpc.callbacks.consumer import registry as registry_rpc
    File "/usr/lib/python3/dist-packages/neutron/api/rpc/callbacks/consumer/registry.py", line 13, in <module>
      from neutron.api.rpc.callbacks import resource_manager
    File "/usr/lib/python3/dist-packages/neutron/api/rpc/callbacks/resource_manager.py", line 20, in <module>
      from neutron.api.rpc.callbacks import resources
    File "/usr/lib/python3/dist-packages/neutron/api/rpc/callbacks/resources.py", line 14, in <module>
      from neutron.objects import address_group
    File "/usr/lib/python3/dist-packages/neutron/objects/address_group.py", line 22, in <module>
      from neutron.objects import rbac_db
    File "/usr/lib/python3/dist-packages/neutron/objects/rbac_db.py", line 28, in <module>
      from neutron.db import rbac_db_mixin
    File "/usr/lib/python3/dist-packages/neutron/db/rbac_db_mixin.py", line 25, in <module>
      from neutron.extensions import rbac as ext_rbac
    File "/usr/lib/python3/dist-packages/neutron/extensions/rbac.py", line 23, in <module>
      from neutron.api.v2 import base
    File "/usr/lib/python3/dist-packages/neutron/api/v2/base.py", line 37, in <module>
      from neutron import quota
    File "/usr/lib/python3/dist-packages/neutron/quota/__init__.py", line 21, in <module>
      from neutron.quota import resource_registry
    File "/usr/lib/python3/dist-packages/neutron/quota/resource_registry.py", line 20, in <module>
      from neutron.quota import resource
    File "/usr/lib/python3/dist-packages/neutron/quota/resource.py", line 28, in <module>
      from neutron.db.quota import api as quota_api
    File "/usr/lib/python3/dist-packages/neutron/db/quota/api.py", line 22, in <module>
      from neutron.objects import quota as quota_obj
    File "/usr/lib/python3/dist-packages/neutron/objects/quota.py", line 21, in <module>
      from neutron.db.quota import models
    File "/usr/lib/python3/dist-packages/neutron/db/quota/models.py", line 21, in <module>
      class ResourceDelta(model_base.BASEV2):
    File "/usr/lib/python3/dist-packages/sqlalchemy/orm/decl_api.py", line 76, in __init__
      _as_declarative(reg, cls, dict_)
    File "/usr/lib/python3/dist-packages/sqlalchemy/orm/decl_base.py", line 126, in _as_declarative
      return _MapperConfig.setup_mapping(registry, cls, dict_, None, {})
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/sqlalchemy/orm/decl_base.py", line 183, in setup_mapping
      return cfg_cls(registry, cls_, dict_, table, mapper_kw)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/sqlalchemy/orm/decl_base.py", line 331, in __init__
      self._setup_table(table)
    File "/usr/lib/python3/dist-packages/sqlalchemy/orm/decl_base.py", line 854, in _setup_table
      table_cls(
    File "<string>", line 2, in __new__
    File "/usr/lib/python3/dist-packages/sqlalchemy/util/deprecations.py", line 375, in warned
      return fn(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/sqlalchemy/sql/schema.py", line 596, in __new__
      raise exc.InvalidRequestError(
  sqlalchemy.exc.InvalidRequestError: Table 'resourcedeltas' is already defined for this MetaData instance.  Specify 'extend_existing=True' to redefine options and columns on an existing Table object.

  Failed to import test module: networking_baremetal.tests.unit.plugins.ml2.test_baremetal_mech
  Traceback (most recent call last):
    File "/usr/lib/python3.11/unittest/loader.py", line 407, in _find_test_path
      module = self._get_module_from_name(name)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.11/unittest/loader.py", line 350, in _get_module_from_name
      __import__(name)
    File "/<<PKGBUILDDIR>>/networking_baremetal/tests/unit/plugins/ml2/test_baremetal_mech.py", line 19, in <module>
      from neutron.plugins.ml2 import driver_context
    File "/usr/lib/python3/dist-packages/neutron/plugins/ml2/driver_context.py", line 23, in <module>
      from neutron.db import segments_db
    File "/usr/lib/python3/dist-packages/neutron/db/segments_db.py", line 23, in <module>
      from neutron.objects import network as network_obj
    File "/usr/lib/python3/dist-packages/neutron/objects/network.py", line 33, in <module>
      from neutron.objects.qos import binding
    File "/usr/lib/python3/dist-packages/neutron/objects/qos/binding.py", line 25, in <module>
      from neutron.db.qos import models as qos_db_model
    File "/usr/lib/python3/dist-packages/neutron/db/qos/models.py", line 27, in <module>
      class QosPolicy(standard_attr.HasStandardAttributes, model_base.BASEV2,
    File "/usr/lib/python3/dist-packages/sqlalchemy/orm/decl_api.py", line 76, in __init__
      _as_declarative(reg, cls, dict_)
    File "/usr/lib/python3/dist-packages/sqlalchemy/orm/decl_base.py", line 126, in _as_declarative
      return _MapperConfig.setup_mapping(registry, cls, dict_, None, {})
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/sqlalchemy/orm/decl_base.py", line 183, in setup_mapping
      return cfg_cls(registry, cls_, dict_, table, mapper_kw)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/sqlalchemy/orm/decl_base.py", line 331, in __init__
      self._setup_table(table)
    File "/usr/lib/python3/dist-packages/sqlalchemy/orm/decl_base.py", line 854, in _setup_table
      table_cls(
    File "<string>", line 2, in __new__
    File "/usr/lib/python3/dist-packages/sqlalchemy/util/deprecations.py", line 375, in warned
      return fn(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3/dist-packages/sqlalchemy/sql/schema.py", line 596, in __new__
      raise exc.InvalidRequestError(
  sqlalchemy.exc.InvalidRequestError: Table 'qos_policies' is already defined for this MetaData instance.  Specify 'extend_existing=True' to redefine options and columns on an existing Table object.

  ================================================================================
  The above traceback was encountered during test discovery which imports all the found test modules in the specified test_path.

  ----------------------------------------------------------------------
  Ran 0 tests in 5.903s

  OK
  + stestr slowest
  make[1]: *** [debian/rules:29: override_dh_install] Error 3

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/2034761/+subscriptions