Comment 7 for bug 1746996

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to neutron (master)

Reviewed: https://review.openstack.org/541512
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=6f83466307fb21aee5bb596974644d457ae1fa60
Submitter: Zuul
Branch: master

commit 6f83466307fb21aee5bb596974644d457ae1fa60
Author: Ihar Hrachyshka <email address hidden>
Date: Tue Feb 6 18:12:38 2018 -0800

    Allow objects to opt in new engine facade

    New facade is enabled by setting new_facade = True for the object of
    interest. With new_facade on, all OVO actions will use the new reader /
    writer decorator to activate sessions.

    There are two new facade decorators added to OVO: db_context_reader and
    db_context_write that should be used instead of explicit
    autonested_transaction / reader.using / writer.using in OVO context.

    All neutron.objects.db.api helpers now receive OVO classes / objects
    instead of model classes, since they need to know which type of engine
    facade to use for which object. While it means we change signatures for
    those helper functions, they are not used anywhere outside neutron tree
    except vmware-nsx unit tests, and the latter pass anyway because the
    tests completely mock out them disregarding their signatures.

    This patch also adds several new OVO objects to be able to continue
    using neutron.objects.db.api helpers to persist models that previously
    didn't have corresponding OVO classes.

    Finally, the patch adds registration for missing options in
    neutron/tests/unit/extensions/test_qos_fip.py to be able to debug
    failures in those unit tests. Strictly speaking, this change doesn't
    belong to the patch, but I include it nevertheless to speed up merge in
    time close to release.

    There are several non-obvious changes included, specifically:

    - in neutron.objects.base, decorator() that refreshes / expunges models
    from the active session now opens a subtransaction for the whole span of
    call / refresh / expunge, so that we can safely refresh model regardless
    of whether caller opened another parent subtransaction (it was not the
    case for create_subnetpool in base db plugin code).

    - in neutron.db.l3_fip_qos, removed code that updates obj.db_model
    relationship directly after corresponding insertions for child policy
    binding model. This code is not needed because the only caller to the
    _process_extra_fip_qos_update method refetches latest state of floating
    ip OVO object anyway, and this code triggers several unit test failures.

    - unit tests checking that a single commit happens for get_object and
    get_objects are no longer valid for new facade objects that use reader
    decorator that doesn't commit but close. This change is as intended, so
    unit tests were tweaked to check close for new facade objects.

    Change-Id: I15ec238c18a464f977f7d1079605b82965052311
    Related-Bug: #1746996