Skip to content

Add concurrency to server/gRIBI Entry builder#24

Merged
robshakir merged 26 commits intomainfrom
rib4.5
Jun 17, 2021
Merged

Add concurrency to server/gRIBI Entry builder#24
robshakir merged 26 commits intomainfrom
rib4.5

Conversation

@robshakir
Copy link
Copy Markdown
Member

commit 4b20ff9c6e0bf1632c7f257766fdc5674c0b7a9a
Author: Rob Shakir <robjs@google.com>
Date:   Mon Jun 14 20:50:40 2021 -0700

    Add support for entries in fluent, improve coverage.
    
      * (M) fluent/fluent.go
      * (M) fluent/fluent_test.go
        - Add support for generating basic IPv4Entry types in the
          fluent API.
        - Ensure coverage of the builder functions in the fluent
          library.

commit 12cc0a0c69f85ad9413a607aa728b6087bff9259
Author: Rob Shakir <robjs@google.com>
Date:   Mon Jun 14 13:41:49 2021 -0700

    Move to latest version of ygot, server goroutines.
    
      * (M) go.mod
      * (M) go.sum
        - move off ygot development branch.
      * (M) rib/rib.go
        -  Adopt change to protomap API in ygot.
      * (M) server/server.go
        -  Add goroutines to server Modify handler to allow concurrent
           processing.

Modify RPC support returns an error still, but this CL adds fluent support for generating IPv4Entry messages, and improves test coverage for ModifyResponseError checking.

The server code is shifted to using separate goroutines for reading and sending to the channel such that we can make responses asynchronously sent.

robshakir added 24 commits June 8, 2021 14:49
  * (M) aft/oc.go
  * (M) aft/update.sh
    - Update generated code.
  * (M) go.mod
  * (M) go.sum
    - Go mod tidying.
  * (M) rib/rib.go
  * (M) rib/rib_test.go
    - Add IPv4 entry add and delete.
  * (M) go.mod
  * (M) go.sum
    -  Tidy up modules.
  * (M) rib/rib.go
  * (M) rib/rib_test.go
    -  Add support for network instances in the RIB rather than
       a single RIB.
  * (M) client/client.go
    - TODO comment about handling coalescing.
  * (M) rib/rib.go
  * (M) rib/rib_test.go
    - Add support for adding NHG and NHs to the RIB.
  * (M) rib/rib.go
  * (M) rib/rib_test.go
    - Validate any candidate RIB against the OpenConfig schema before
      adding it to the RIB.
  * (M) aft/oc.go
  * (M) aft/update.sh
    - Add delete methods.
  * (M) go.mod
  * (M) go.sum
    - Tidy up modules.
  * (M) rib/rib.go
    - Add support for a simple callback function that is run after
      every update to the RIB.
    - Fix a defect with implicit replace whereby we did not delete the
      RIB entry before doing MergeStructInto meaning that for some
      leaf-lists we ended up appending to the contents of the RIB.
  * (M) rib/rib_test.go
    - Add test cases for the above functionality - including a test
      case demonstrating how gNMI Notifications can be generated.
* Add an initial implementation of a resolved-RIB.

Background -- we want the gRIBI server to be able build both a RIB that
is efficient for it to do gRIBI operations with, as well as a software
emulated 'resolved RIB' / 'FIB' whereby we can say something like "where
will this packet go based on what gRIBI is programmed?". This package
starts this implementation.

  * (M) aft/oc.go
    - Update generated code.
  * (M) go.mod
  * (M) go.sum
    - New dependencies on kentik/patricia
  * (A) ocrt/oc.go
  * (A) ocrt/update.sh
    - Generated routing specific OpenConfig Go structs.
  * (A) ocrt/yang/deviations.yang
    - Deviations to reduce the size of the generated oc.go.
  * (M) rib/rib.go
    - Fix handling of implicit replace.
  * (A) sysrib/sysrib.go
  * (A) sysrib/sysrib_test.go
    -  Initial system RIB implementation. This package currently parses
        OpenConfig to build a list of all of the connected routes that
        are on the system.

* Address review comments.
  * (A) gnmit/gnmit.go
  * (A) gnmit/gnmit_test.go
    - Wrap the openconfig/gnmi libraries to create a single-device
      cache that can be used to send gNMI updates to from the overall
      fake device.
  * (M) go.mod
  * (M) go.sum
    - move off ygot development branch.
  * (M) rib/rib.go
    -  Adopt change to protomap API in ygot.
  * (M) server/server.go
    -  Add goroutines to server Modify handler to allow concurrent
       processing.
  * (M) gnmit/gnmit_test.go
    - deflake test by:
      - checking for presence of correct leaves before syncresponse.
      - ignoring update order.
  * (M) fluent/fluent.go
  * (M) fluent/fluent_test.go
    - Add support for generating basic IPv4Entry types in the
      fluent API.
    - Ensure coverage of the builder functions in the fluent
      library.
@robshakir robshakir requested a review from sthesayi June 16, 2021 14:52
Comment thread fluent/fluent.go Outdated
Comment thread fluent/fluent.go Outdated
@robshakir robshakir merged commit 9863754 into main Jun 17, 2021
@robshakir robshakir deleted the rib4.5 branch June 17, 2021 04:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants