Add devref for Relocating DB models
This patch will add devref for relocating db models and it also explains why that change is required. It will also add a directory named models under tree neutron/db/. Change-Id: I160cecb76fb736307e5937122c84cdc0546207b6 Related-Bug: #1597913
This commit is contained in:
parent
58b06333b8
commit
34ec3536b2
49
doc/source/devref/db_models.rst
Normal file
49
doc/source/devref/db_models.rst
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
..
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
not use this file except in compliance with the License. You may obtain
|
||||||
|
a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
License for the specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
|
||||||
|
|
||||||
|
Relocation of Database Models
|
||||||
|
=============================
|
||||||
|
|
||||||
|
This document is intended to track and notify developers that db models in
|
||||||
|
neutron will be centralized and moved to a new tree under neutron/db/models.
|
||||||
|
This was discussed in [1]. The reason for relocating db models is to solve
|
||||||
|
the cyclic import issue while implementing oslo versioned objects for
|
||||||
|
resources in neutron.
|
||||||
|
|
||||||
|
The reason behind this relocation is Mixin class and db models for some
|
||||||
|
resources in neutron are in same module. In Mixin classes, there are methods
|
||||||
|
which provide functionality of fetching, adding, updating and deleting data
|
||||||
|
via queries. These queries will be replaced with use of versioned objects and
|
||||||
|
definition of versioned object will be using db models. So object files will
|
||||||
|
be importing models and Mixin need to import those objects which will end up
|
||||||
|
in cyclic import.
|
||||||
|
|
||||||
|
Structure of Model Definitions
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
We have decided to move all models definitions to neutron/db/models/
|
||||||
|
with no futher nesting after that point. The deprecation method to move
|
||||||
|
models is already been added to avoid breakage of third party plugins using
|
||||||
|
those models. All relocated models need to use deprecate method that
|
||||||
|
will generate a warning and return new class for use of old class. Some
|
||||||
|
examples of relocated models [2] and [3]. In future if you define new models
|
||||||
|
please make sure they are separated from mixins and are under tree
|
||||||
|
neutron/db/models/ .
|
||||||
|
|
||||||
|
References
|
||||||
|
~~~~~~~~~~
|
||||||
|
|
||||||
|
[1]. https://www.mail-archive.com/openstack-dev@lists.openstack.org/msg88910.html
|
||||||
|
[2]. https://review.openstack.org/#/c/348562/
|
||||||
|
[3]. https://review.openstack.org/#/c/348757/
|
4
neutron/db/models/README
Normal file
4
neutron/db/models/README
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
This directory is designed to contain all SQLAlchemy models shipped with core
|
||||||
|
Neutron. The expected directory structure is flat, meaning there should be no
|
||||||
|
subdirectories. Module names should use singular forms for nouns (port.py, not
|
||||||
|
ports.py).
|
0
neutron/db/models/__init__.py
Normal file
0
neutron/db/models/__init__.py
Normal file
Loading…
Reference in New Issue
Block a user