neutron/neutron/objects
Ihar Hrachyshka 8915febaaf objects: avoid deepcopying models in test_db_obj
SQLAlchemy may asynchronously push models out of session cache in which
case we may receive DetachedInstanceError.

In the test case, instead of deepcopying models to compare, compare
each modified attribute independently.

This change also includes conversion from InstrumentedLists to regular
lists when converting model attributes to object fields. The fact that
we were returning InstrumentedLists was always an oversight but it
revealed itself after the modification of the test case that is the
core of this patch.

When converting object fields to db, convert Port's distributed_binding
None value to a empty list to reflect that the relationship of the Port
database model is a list. It was not an issue before the patch because
we were not comparing model attribute for equality but for in-equality
before, and so None was always != [].

Finally, this patch moves a bunch of TODOs to better reflect where they
belong to.

Closes-Bug: #1770452
Change-Id: I42cdf540129bd4470ec1a59345db9845a6198328
(cherry picked from commit 1a8a15f630)
2019-04-30 14:26:12 +00:00
..
db Allow objects to opt in new engine facade 2018-02-09 04:07:34 +00:00
extensions Tag mechanism supports resources with standard attribute 2017-07-25 08:14:04 +09:00
logapi [OVO] Switch to use own registry 2017-11-22 17:44:22 +01:00
plugins [OVO] Switch to use own registry 2017-11-22 17:44:22 +01:00
port [OVO] Switch to use own registry 2017-11-22 17:44:22 +01:00
qos Update neutron files for new over-indentation hacking rule (E117) 2019-02-02 10:48:26 +00:00
README.rst Objects: Add README for neutron/objects directory tree 2016-10-07 15:12:20 +00:00
__init__.py Use dirname in object recursive import 2017-04-20 04:35:10 -07:00
address_scope.py [OVO] Switch to use own registry 2017-11-22 17:44:22 +01:00
agent.py Allow objects to opt in new engine facade 2018-02-09 04:07:34 +00:00
auto_allocate.py [OVO] Switch to use own registry 2017-11-22 17:44:22 +01:00
base.py objects: avoid deepcopying models in test_db_obj 2019-04-30 14:26:12 +00:00
common_types.py Router to OVO 2017-11-24 04:11:33 +00:00
flavor.py [OVO] Switch to use own registry 2017-11-22 17:44:22 +01:00
floatingip.py Integration of Floating IP OVO 2017-12-04 19:30:02 +09:00
ipam.py [OVO] Switch to use own registry 2017-11-22 17:44:22 +01:00
l3_hamode.py [OVO] Switch to use own registry 2017-11-22 17:44:22 +01:00
l3agent.py [OVO] Switch to use own registry 2017-11-22 17:44:22 +01:00
metering.py [OVO] Switch to use own registry 2017-11-22 17:44:22 +01:00
network.py Allow objects to opt in new engine facade 2018-02-09 04:07:34 +00:00
ports.py objects: avoid deepcopying models in test_db_obj 2019-04-30 14:26:12 +00:00
provisioning_blocks.py [OVO] Switch to use own registry 2017-11-22 17:44:22 +01:00
quota.py Allow objects to opt in new engine facade 2018-02-09 04:07:34 +00:00
rbac_db.py Allow objects to opt in new engine facade 2018-02-09 04:07:34 +00:00
router.py Use Router OVO in metering_db 2018-01-16 09:50:57 +07:00
securitygroup.py Fix slow SG api calls when limiting fields 2019-04-05 20:33:57 -06:00
servicetype.py [OVO] Switch to use own registry 2017-11-22 17:44:22 +01:00
stdattrs.py Allow objects to opt in new engine facade 2018-02-09 04:07:34 +00:00
subnet.py Allow objects to opt in new engine facade 2018-02-09 04:07:34 +00:00
subnetpool.py Allow objects to opt in new engine facade 2018-02-09 04:07:34 +00:00
tag.py [OVO] Switch to use own registry 2017-11-22 17:44:22 +01:00
trunk.py Allow objects to opt in new engine facade 2018-02-09 04:07:34 +00:00
utils.py Add initialization in StringMatchingFilterObj class 2017-11-03 13:25:21 +09:00

README.rst

Neutron Objects

Directory

This directory is designed to contain all modules which have objects definitions shipped with core Neutron. The files and directories located inside of this directory should follow the guidelines below.

Structure

The Neutron objects tree should have the following structure:

  • The expected directory structure is flat, except for the ML2 plugins. All ML2 plugin objects should fall under the plugins subdirectory (i.e. plugins/ml2/gre_allocation).
  • Module names should use singular forms for nouns (network.py, not networks.py).