Uploaded image for project: 'neutron'
  1. neutron
  2. NEUTRON-158

Dependency checking for Northbound API

XMLWordPrintable

    • Icon: Improvement Improvement
    • Resolution: Unresolved
    • Icon: Medium Medium
    • Neon
    • None
    • northbound-api

      The Neutron Northbound API currently (almost) always just returns an "OK" (HTTP 200) reply. Any errors that occur when the requested resource creation/update did not succeed, including missing dependency (but also other internal problems), is "lost" and not communicated to the caller (and only appears in the log).

      The technical explanation for this is ODL general architecture based on decoupled asynchronous listening on a shared data model, and the lack of any "feedback loop" between Neutron and e.g. Netvirt (or, in theory, other listeners to the Neutron model).

      The goal of this issue is to provide feedback to callers for a first set of missing dependencies. It will not include work to address the more general problem of error handling and feedback for other internal problems than some dependencies.

      Events that are originally ordered in the OpenStack Journal can get out of order because (a) the clustered driver reading from the DB could read out of order; (b) the driver sending to clustered load balanced ODL could cause events to be stored out of order in the ODL data store. This will throw off applications such as netvirt which do not expect this.

      In order to compensate for this, we will make the ODL Neutron project return an HTTP error other than 2xx range code if its dependencies are not, yet, available in the data store. For example, in the case of NEUTRON-149 a security rule which is written before a security group should be rejected. The validation happens, only, at the level of the Neutron model object data objects, not the internal netvirt or other models which eventually have created by the listeners in netvirt or other. The fact that e.g. a security rule requires a group with a certain ID (and all others like it), will be hard-coded in neutron.

      The initial implementation will focus on doing above for Create events. If at all and how to apply this to Update and Delete will be considered later under future issues with refined requirements.

      This work in ODL requires no changes to t the existing networking ODL driver code. Therefore we are not anticipating to make this a configurable optional feature via a switch, but just have this new behaviour active as the related changes will be merged.

      https://bugzilla.redhat.com/show_bug.cgi?id=1550699

        1.
        bgpvpn dependency checking (NeutronBgpvpnInterface) Sub-task Open Deepthi V V
        2.
        firewall dependency checking (NeutronFirewallInterface) Sub-task Open Josh Hershberg
        3.
        FirewallPolicy dependency checking (NeutronFirewallPolicyInterface) Sub-task Open Josh Hershberg
        4.
        FirewallRule dependency checking (NeutronFirewallRuleInterface) Sub-task Open Josh Hershberg
        5.
        Floatingip dependency checking (NeutronFloatingIpInterface) Sub-task Open Chetan Arakere Gowdru
        6.
        L2gatewayConnection dependency checking (NeutronL2gatewayConnectionInterface) Sub-task Open suneelu varma
        7.
        L2gateway dependency checking (NeutronL2gatewayInterface) Sub-task Open suneelu varma
        8.
        Healthmonitor dependency checking (NeutronLoadBalancerHealthMonitorInterface) Sub-task Open Josh Hershberg
        9.
        Loadbalancer dependency checking (NeutronLoadBalancerInterface) Sub-task Open Josh Hershberg
        10.
        lbaas (?) dependency checking (NeutronLoadBalancerListenerInterface) Sub-task Open Josh Hershberg
        11.
        lbaas pool (?) dependency checking (NeutronLoadBalancerPoolInterface) Sub-task Open Vishal Thapar
        12.
        metering label (?) dependency checking (NeutronMeteringLabelInterface) Sub-task Open Vishal Thapar
        13.
        metering label rule (?) dependency checking (NeutronMeteringLabelRuleInterface) Sub-task Open Vishal Thapar
        14.
        network dependency checking (NeutronNetworkInterface) Sub-task Resolved Michael Vorburger
        15.
        port dependency checking (NeutronPortInterface) Sub-task In Review Vishal Thapar
        16.
        QOS policy dependency checking (NeutronQosPolicyInterface) Sub-task Open Vishal Thapar
        17.
        security group dependency checking (NeutronSecurityGroupInterface) Sub-task Open Vishal Thapar
        18.
        security rule dependency checking (NeutronSecurityRuleInterface) Sub-task Open Vishal Thapar
        19.
        SfcFlowClassifier dependency checking (NeutronSFCFlowClassifierInterface) Sub-task Open Vishal Thapar
        20.
        PortChain dependency checking (NeutronSFCPortChainInterface) Sub-task In Review Vishal Thapar
        21.
        SFC PortPairGroup dependency checking (NeutronSFCPortPairGroupInterface) Sub-task Open Unassigned
        22.
        SFC PortPair dependency checking (NeutronSFCPortPairInterface) Sub-task Open Unassigned
        23.
        subnet dependency checking (NeutronSubnetInterface) Sub-task Open yenuganti vasudha
        24.
        TapFlow dependency checking (NeutronTapFlowInterface) Sub-task Open Unassigned
        25.
        TapService dependency checking (NeutronTapServiceInterface) Sub-task Open Unassigned
        26.
        trunk dependency checking (NeutronTrunkInterface) Sub-task Open Shashidhar R
        27.
        VPN Ike policy dependency checking (NeutronVpnIkePolicyInterface) Sub-task Open Unassigned
        28.
        VPN ipsec policy dependency checking (NeutronVpnIpSecPolicyInterface) Sub-task Open Unassigned
        29.
        VPN ipsec site connection dependency checking (NeutronVpnIpSecSiteConnectionsInterface) Sub-task Open Unassigned
        30.
        VPN service dependency checking (NeutronVpnServiceInterface) Sub-task Open yenuganti vasudha
        31.
        Framework for delete dependency checking Sub-task Open Unassigned

            jhershbe Josh Hershberg
            vorburger Michael Vorburger
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: