Adopt oslo.versionedobjects for database interactions
This blueprint will give neutron a proper object facade to hide interactions with database behind. With that, we will have a cleaner code base as well as potential to implement support for no-downtime upgrades for controllers.
Blueprint information
- Status:
- Complete
- Approver:
- Miguel Lavalle
- Priority:
- Medium
- Drafter:
- None
- Direction:
- Approved
- Assignee:
- Lujin Luo
- Definition:
- Approved
- Series goal:
- Accepted for queens
- Implementation:
- Implemented
- Milestone target:
- stein-3
- Started by
- Armando Migliaccio
- Completed by
- Slawek Kaplonski
Related branches
Related bugs
Bug #1541928: Adopt oslo.versionedobjects for core resources (ports, networks, subnets, ...) | Fix Released |
Bug #1566520: [RFE] Upgrade controllers with no API downtime | Won't Fix |
Sprints
Whiteboard
Sep-16-
Sep-08-2016(armax): deferred to Ocata
Aug-8-2016(
Gerrit topic: https:/
Addressed by: https:/
Introduces ovo objects for security groups
Gerrit topic: https:/
Addressed by: https:/
Add custom fields for vnic type and vif type
Addressed by: https:/
Flavor and Service Profile to OVO
Addressed by: https:/
Port allowed address pairs to OVO
Addressed by: https:/
WIP - RouterRoute and ExtraRoutes to OVO
Addressed by: https:/
Address Scope added to OVO
Addressed by: https:/
WIP - Replace plugin class for address scope ovo.
Addressed by: https:/
Introducing the Subnet OVO
Addressed by: https:/
Service Type to OVO
Addressed by: https:/
Agent to OVO
Addressed by: https:/
WIP Subnet OVO usage evaluation patch.
Addressed by: https:/
WIP: objects: switch base plugin class to using subnetpool object
Addressed by: https:/
objects: Use common plugin _model_query in get_object
Addressed by: https:/
Objects: DNSNameServer OVO usage patch.
Addressed by: https:/
WIP: _lock_subnetpool with objects
Addressed by: https:/
objects: in get_object(s), filter by fields, not model attributes
Addressed by: https:/
WIP: objects: introduce NetworkPortSecurity object
Addressed by: https:/
Add type information to ObjectNotFound message
Addressed by: https:/
qos: added api sorting/pagination tests
Addressed by: https:/
qos: support native sorting/pagination for policies and rules
Addressed by: https:/
objects: Add filter query hook to NeutronDbObject
Addressed by: https:/
qos: fix shared filter for policies
Addressed by: https:/
common_
Addressed by: https:/
Refactor NetworkDhcpAgen
Addressed by: https:/
Added sorting/pagination tests for subnets
Addressed by: https:/
object create move session context manager inside try block
Addressed by: https:/
[WIP]: Refactoring Agent DB model
Addressed by: https:/
objects: Subnet object adjustment, RBAC and tenant_id compatibility.
Addressed by: https:/
SUPER WIP OVO port object
Addressed by: https:/
objects: loading synthetic fields from defined ORM relationships.
Addressed by: https:/
objects: better apply filters for objects/
Addressed by: https:/
Allow unique keys to be used with get_object
Addressed by: https:/
objects: Add update_fields method in base class.
Addressed by: https:/
objects: Add RBAC to Subnet OVO
Addressed by: https:/
Add OVO for dns Objects
Addressed by: https:/
WIP Introduce OVO for quotas
Addressed by: https:/
objects: Convert filters to string for list values.
Addressed by: https:/
Refactor get_object in object/db/api
Addressed by: https:/
devref: docs about how to use NeutronDbObject.
Addressed by: https:/
Refactor DNS integration out of DB core plugin
Addressed by: https:/
objects: forbid updates for project_id field for subnets
Addressed by: https:/
Print out specific filter that failed in object filtering unit test
Addressed by: https:/
objects: remove support for multiple db models in from_db_object
Addressed by: https:/
objects: expose database model for NeutronDbObject instances
Addressed by: https:/
tests: enable test_get_
Addressed by: https:/
trunk: avoid redundant refetch of subports on create
Addressed by: https:/
trunk: declare port_id as a primary key
Addressed by: https:/
tests: check that trunk sub_ports field is properly populated
Addressed by: https:/
objects; avoid additional fetch for prefixes on pool get
Addressed by: https:/
objects: switched back to passing models into extension handlers
Addressed by: https:/
WIP Introducing Network OVO
Addressed by: https:/
WIP: OVO for metering
Addressed by: https:/
objects: introduce count() API to count matching objects
Addressed by: https:/
objects: introduce a util function to handle tenant_id filter
Addressed by: https:/
objects: rename tenant_id field into project_id for subnetpools
Addressed by: https:/
objects: rename tenant_id field to project_id for trunks
Addressed by: https:/
Introduce ovo objects for security groups
Addressed by: https:/
Introduce ovo objects for ports
Addressed by: https:/
objects: create subnet converted to OVO
Addressed by: https:/
objects: IPAvailabilityRange OVO introduction.
Addressed by: https:/
WIP OVO Introduce External Networks
Addressed by: https:/
Relocate L3 DB Models
Addressed by: https:/
Objects: Add README for neutron/objects directory tree
Addressed by: https:/
OVO Introduce Network Segment OVO
Gerrit topic: https:/
Addressed by: https:/
Relocate Security Group DB models
Addressed by: https:/
models: move AllowedAddressPair model under neutron/db/models
Addressed by: https:/
Integrate Address Scope OVO in to database code
Addressed by: https:/
[WIP] OVO for Router Route
Addressed by: https:/
Qos Port Policy Binding to OVO
Addressed by: https:/
Qos Network Policy Binding OVO
Gerrit topic: https:/
Addressed by: https:/
[WIP] OVO for VlanAllocation
Gerrit topic: https:/
Addressed by: https:/
WIP - OVO for Router Extra Attributes
Addressed by: https:/
[WIP] OVO for Tag
Addressed by: https:/
Add support fro multiple foreign keys in NeutronDbObject.
Addressed by: https:/
OVO for Provisioning Block DB Model
Addressed by: https:/
WIP: Add OVO for AutoAllocateToplogy
Addressed by: https:/
OVO for PortBindingPort
Addressed by: https:/
Relocate router route DB model
Addressed by: https:/
Distributed
Addressed by: https:/
Relocate Tag DB model
Addressed by: https:/
Relocate dvr model
Addressed by: https:/
[WIP] OVO for FlatAllocation
Addressed by: https:/
OVO for SegmentHostMapping
Addressed by: https:/
Add Unit Test for Foreign Keys Not Found Error
Addressed by: https:/
[WIP] OVO for IPam(Allocation
Gerrit topic: https:/
Addressed by: https:/
Introduce ovo objects for subnet service types
Addressed by: https:/
OVO for RouterL3AgentBi
Addressed by: https:/
OVO Gre Allocation Endpoints
Addressed by: https:/
[WIP] - Integration of OVO Provisioning Block
Addressed by: https:/
[WIP] OVO for L3HARouter
Addressed by: https:/
[WIP]OVO for VxlanAllocation and VxlanEndpoints
Addressed by: https:/
[WIP] GeneveAllocation OVO
Gerrit topic: https:/
Addressed by: https:/
Relocate VlanAllocation DB model
Addressed by: https:/
[WIP] Integarion of OVO for Ipam
Addressed by: https:/
Make optional the validation of filters
Addressed by: https:/
tests: refactor objects test cases to use db models instead of dicts
Addressed by: https:/
objects: for Pager, handle comparison with None
Addressed by: https:/
Relocate external network db models
Addressed by: https:/
objects: switch to expunging db_obj instead of carrying it attached
Addressed by: https:/
[WIP] Integration of RouterRoute OVO
Addressed by: https:/
objects: don't call DeclarativeObject's __init__ twice for rbac objects
Addressed by: https:/
Relocate SegmentHostMapping DB model
Gerrit topic: https:/
Addressed by: https:/
Integration of FlatAllocation OVO
Addressed by: https:/
Change IPAM DB API to use context instead of session object. This change is required for implementing IPAM OVO.
Addressed by: https:/
[WIP] Integration for Tag OVO
Gerrit topic: https:/
Addressed by: https:/
OVO for VxlanAllocation and VxlanEndpoints
Addressed by: https:/
tests: don't override base object test class attributes
Gerrit topic: https:/
Addressed by: https:/
Relocate RouterL3AgentBi
Addressed by: https:/
[WIP] Integration of VxlanAllocation
Addressed by: https:/
OVO for NetworkDhcpAgen
Addressed by: https:/
[WIP] Integration of Port Binding Level OVO.
Addressed by: https:/
[WIP] Integration of L3HARouterNetwork OVO
Addressed by: https:/
Add OVO for FloatingIPDNS
Addressed by: https:/
[WIP] Integration of NetworkDhcpAgen
Addressed by: https:/
OVO: add SubnetServiceType object and code integration.
Gerrit topic: https:/
Addressed by: https:/
objects: add validate_filters option for count() method.
Addressed by: https:/
[WIP] Integration of L3HARouterVRIdA
Addressed by: https:/
[WIP] Integration of RouterL3AgentBi
Addressed by: https:/
Make OVO exception NeutronDbObject
Gerrit topic: https:/
Addressed by: https:/
Integrate SubnetRoute OVO,
Gerrit topic: https:/
Gerrit topic: https:/
Addressed by: https:/
Moving query builder methods to Subnet OVO
Addressed by: https:/
Relocate ProviderResourc
Gerrit topic: https:/
Gerrit topic: https:/
Addressed by: https:/
Move OVO exceptions to neutron/
Addressed by: https:/
Integration of Router Extra Attributes OVO in /db/l3_hamode_db.py
Addressed by: https:/
Relocate L3HARouter DB model
Addressed by: https:/
[WIP] Integration of L3HARouterAgent
Addressed by: https:/
Add OVO for dns Objects
Addressed by: https:/
Integration of Port Binding Level OVO in get_binding_levels method in neutron/
Gerrit topic: https:/
Addressed by: https:/
[WIP] Integration of DistributedPort
Addressed by: https:/
StandardAtt
Addressed by: https:/
objects: Return tenant_id=None when project_id is not set.
Addressed by: https:/
objects: Removed project_
Addressed by: https:/
[WIP] Integrate NetworkSegment OVO
Addressed by: https:/
Use BaseDbObjectTes
Addressed by: https:/
Swap the order of arguments to _check_equal
Addressed by: https:/
Add query.one to object.db.api
Gerrit topic: https:/
Addressed by: https:/
Replace a test with use of network object
Addressed by: https:/
Introduce context in methods for Router Extra Attriutes OVO usage.
Addressed by: https:/
Introduce any_object method in neutron/
Addressed by: https:/
OVO for Allocation and Endpoint
Addressed by: https:/
[WIP] Integration of Floating IP OVO
Addressed by: https:/
WIP QUOTA OVO implementation
Addressed by: https:/
Integration of IPAllocationPool
Addressed by: https:/
[WIP] Integration of IPAllocation
Gerrit topic: https:/
Gerrit topic: https:/
Addressed by: https:/
Replace create_test_segment with NetworkSegment object
Gerrit topic: https:/
Addressed by: https:/
[WIP] Get standard attribute ID from DeclarativeObject.
Gerrit topic: https:/
Addressed by: https:/
objects: add delete_objects public method
Addressed by: https:/
tests: introduce update_obj_fields method in base objects test class
Addressed by: https:/
Add use of ports ovo in a test
Addressed by: https:/
Use Port OVO in plugins/
Addressed by: https:/
Convert filters to empty dict if None in DB's get_subnetpools().
Addressed by: https:/
Use project_id instead of tenant_id
Addressed by: https:/
[WIP] Integration of Port Binding OVO
Addressed by: https:/
get_
Addressed by: https:/
[WIP]Agent OVO
Gerrit topic: https:/
Gerrit topic: https:/
Addressed by: https:/
Restore extraroute dict after OVO change
Addressed by: https:/
Integration of Port OVO
Addressed by: https:/
Add DictOfMiscValue
Addressed by: https:/
Update comment about foreign keys
Addressed by: https:/
Use port object in notifiers/
Addressed by: https:/
Sort and Remove duplicate field types
Gerrit topic: https:/
Addressed by: https:/
Remove unnecessary overrides in Subnetpool OVO
Gerrit topic: https:/
Gerrit topic: https:/
Addressed by: https:/
Move locked mode queries to objects/ports
Gerrit topic: https:/
Addressed by: https:/
Centralize creation of security group test obj
Gerrit topic: https:/
Gerrit topic: https:/
Addressed by: https:/
[WIP] Integration of Router OVO
Gerrit topic: https:/
Addressed by: https:/
Break cirrcular import with use of common_types
Addressed by: https:/
Add corner case testing to address scope OVO access
Addressed by: https:/
RouterPort OVO integration
Addressed by: https:/
Refactoring _create_test methods for OVO UTs
Addressed by: https:/
Deprecate get_locked_
Addressed by: https:/
Simplify notify transaction tests
Addressed by: https:/
WIP Initial draft for online data migrations
Addressed by: https:/
Metering to OVO
Addressed by: https:/
Simplify get_reservation
Addressed by: https:/
Added support for _lock_for_
Addressed by: https:/
Lockless segmentation synchronization in ML2 type drivers
Addressed by: https:/
New enginefacade for networks, subnets.
Addressed by: https:/
DNM check neutron gate against d-g that uses lib/neutron services
Addressed by: https:/
Make query in quota api lockless
Addressed by: https:/
Network OVO Integration
Addressed by: https:/
Added docstring for Pager for OVO
Gerrit topic: https:/
Addressed by: https:/
Support object string field filtering on "LIKE" statement
Addressed by: https:/
Revert "OVO creation for RouterL3AgentBi
Addressed by: https:/
Added update_objects to OVO framework
Addressed by: https:/
Update devref for update_objects
Gerrit topic: https:/
Addressed by: https:/
Allow Agent object to be queryable by dict's key field
Addressed by: https:/
Revert "Integrate NetworkSegment OVO"
Addressed by: https:/
segments: make sure we pass lists into get_objects
Addressed by: https:/
Delete segments using OVO code
Gerrit topic: https:/
Addressed by: https:/
Change join relationship between routerport and router
Addressed by: https:/
objects: don't allow to update create_at and update_at
Addressed by: https:/
objects: update fields_no_update and primary_keys to reflect models
Addressed by: https:/
Add QoS policy port binding OVO
Addressed by: https:/
Add QoS policy network binding OVO
Addressed by: https:/
Change supported vif type in Linux Bridge.
Addressed by: https:/
tests: use devstack-gate to deploy dstat for functional/
Gerrit topic: https:/
Addressed by: https:/
Stop using nested transactions in OVO get/delete
Gerrit topic: https:/
Addressed by: https:/
OVO: Allow port queries based on security_group_ids
Addressed by: https:/
objects: support tenant_id filter for get_* if project_id is present
Addressed by: https:/
FloatingIP to OVO
Addressed by: https:/
RouterPort to OVO
Addressed by: https:/
Integrate ovo in type_vlan cleanup
Addressed by: https:/
Integrate OVO in helpers
Gerrit topic: https:/
Addressed by: https:/
DictOfMiscV
Addressed by: https:/
Add specific values to specific fields in get_random_
Gerrit topic: https:/
Addressed by: https:/
Use Agent OVO in agents_db and test_agents_db
Addressed by: https:/
Integration of Port OVO in db_base_
Addressed by: https:/
OVO for L3HARouterAgent
Addressed by: https:/
Integration of L3HARouterAgent
Addressed by: https:/
Use Agent OVO in l3_agentschedul
Addressed by: https:/
Use Network OVO in db_base_
Addressed by: https:/
Use Network OVO in db_base_plugin_v2
Addressed by: https:/
Revert "Change join relationship between routerport and router"
Addressed by: https:/
Router to OVO
Addressed by: https:/
Revert "objects: get, update and delete converted to Subnet OVO usage"
Addressed by: https:/
Revert "objects: get, update and delete converted to Subnet OVO usage"
Addressed by: https:/
Part II of Integrate Port OVO
Addressed by: https:/
Revert "Revert "objects: get, update and delete converted to Subnet OVO usage""
Addressed by: https:/
Use Router OVO in external_net_db
Addressed by: https:/
test_
Addressed by: https:/
test_
Addressed by: https:/
test_
Addressed by: https:/
test_
Addressed by: https:/
test_l3_dvr_db: switch to OVO for Agent
Addressed by: https:/
test_timestamp: switch to Network OVO
Addressed by: https:/
test_
Addressed by: https:/
Switch to use subnet OVO object in get_subnet
Addressed by: https:/
Use subnet OVO in ipam_backend_mixin module
Addressed by: https:/
test_
Addressed by: https:/
l3_
Addressed by: https:/
Switch to use _get_subnet_object in neutrondb_ipam driver
Addressed by: https:/
extraroute_db: convert from Subnet model to OVO
Addressed by: https:/
Use Router OVO in metering_db
Addressed by: https:/
[WIP]Use Router OVO in l3_db
Addressed by: https:/
OVO: Add primary_keys for NetworkPortSecurity
Addressed by: https:/
test_
Addressed by: https:/
Switch to Subnet OVO in ipam_backend_mixin _save_subnet method
Addressed by: https:/
Revert "Integration of (Distributed) Port Binding OVO"
Addressed by: https:/
Use Port OVO in neutron/
Addressed by: https:/
Use Meter Label OVO in neutron/
Addressed by: https:/
Integration of (Distributed) Port Binding OVO
Addressed by: https:/
Use Router OVO in l3_db.py
Addressed by: https:/
WIP objects: automatically detect whether engine facade is used
Addressed by: https:/
Automatically expire obsolete relationships
Addressed by: https:/
[WIP] Convert Segment db model to OVO
Addressed by: https:/
test_
Addressed by: https:/
ipam_
Addressed by: https:/
ipam_
Addressed by: https:/
Revert "Revert "Automatically expire obsolete relationships""
Addressed by: https:/
objects: don't refetch a non-list object field if it's None
Addressed by: https:/
Use Tag OVO in neutron/
Addressed by: https:/
WIP Fixed PortBindingLeve
Addressed by: https:/
[WIP] Use OVO in test_ipam_
Addressed by: https:/
Use OVO in ml2/test_db
Addressed by: https:/
Use OVO in plugins/
Addressed by: https:/
Adopt Port OVO for tests/unit/
Addressed by: https:/
Use OVO in neutron/
Addressed by: https:/
Use OVO for tests/unit/
Addressed by: https:/
Adopt Port OVO for ipam pluggable backend
Gerrit topic: https:/
Addressed by: https:/
Move retry_if_
Addressed by: https:/
use ovo for L3HARouterAgent
Addressed by: https:/
Make retry decorator work if context is in self
Addressed by: https:/
[WIP] Use OVO in neutron/
Addressed by: https:/
Use NetworkPolicyRBAC OVO in neutron/
Addressed by: https:/
Use NetworkRBAC OVO in tests/unit/
Addressed by: https:/
Introduce functional testing for Network RBAC policies
Addressed by: https:/
Add Network RBAC functional tests for External_
Addressed by: https:/
Support filter with "not in" criterion
Addressed by: https:/
Convert Port to OVO in db/ipam_
Addressed by: https:/
[WIP] Support fetching specific db column in OVO
Addressed by: https:/
Convert Subnet to OVO in ipam_pluggable_
Addressed by: https:/
[WIP] Use RBACBaseObject OVO in neutron/
Addressed by: https:/
WIP: Fix port status for router ha_migration
Gerrit topic: https:/
Addressed by: https:/
objects: don't refetch a non-list object field if it's None
Addressed by: https:/
objects: automatically detect whether engine facade is used
Addressed by: https:/
All Neutron ML2 drivers use Allocation/
Work Items
Dependency tree
* Blueprints in grey have been implemented.