16 Commits

Author SHA1 Message Date
pierventre
1c18ee5c26 [SDFAB-1015] Use gNOI to probe reachability and increase short timeouts
p4runtime probe reachability is based on GetPipelineConfig gRPC that
can timeout if we are setting in parallel the pipeline: the two requests
concur for the same lock. For our purposes it is enough to check if the
device is still there; for this reason stratum handshaker now relies
on gNOI reachability which is based on getTime RPC.

Additionally increase short timeouts: we have consistenly measured a
time of 14s to push the pipeline on the new QS devices.

Change-Id: I8837540241d8a68f648e47ae165ea53a2d0a865c
2022-02-25 06:27:00 +00:00
pierventre
1b9616fac9 [AETHER-780] Decouple Stratum from ODTN
- Introduces a new driver for stratum-odtn devices
- The new driver depends on stratum and not viceversa
- Removes the odtn dep from stratum
- Updates stratum and tost bazel profiles

Change-Id: I7118c54c865305a7ace28b7316e3731833ddf7b4
2020-11-19 23:20:15 +01:00
Yi Tseng
b2c8d66714 Add stratum-fpm-odtn driver
Change-Id: I6a76081bb095ad82426aee44aa954f1ad0e6912f
2020-04-09 11:00:44 +00:00
Carmelo Cascone
37f31ad685 Add stratum-fpm driver for fixed-pipeline Broadcom targets
Change-Id: I934428331feb35ed312a98db97c270168047af1f
2019-07-16 18:46:56 +00:00
Carmelo Cascone
d33d3b4838 Build ONOS exclusively with Bazel-provided remote JDK
This change make it possible to build ONOS in a host system without JDK
installed, or ignoring the one installed, instead relying exclusively on
the "remote" JDK provided by Bazel. The JDK version, along with the
toolchain configuration (language source and target values), are checked
in as part of the build files (tools/build/bazel/BUILD), thus enabling
deterministic builds that are less dependent of the host environment.

To allow this, this change replaces all references to JDK-related tools
expected to be on the host PATH, such as the jar command, with their
counterpart from the remote JDK (now a sandboxed relative path). This is
achieved by:

  * Creating a new "jdk_genrule" macro that exposes the remote JDK bin
    directory to the PATH visible by the genrule command. This is used
    for all genrule targets invoking for example `jar`;
  * Modifying custom Starlak rule implementations by replacing
    invocation to JDK tools with a path from the remote one.
  * Renaming the onos/lib directory to onos/deps as it clashes with
    the Bazel-provided JDK's lib directory (that for some strange reason
    is resolved on the ONOS workspace)

Finally, this change is reflected on the Dockerfile which now builds
ONOS from an Ubuntu image with no JDK installed.

Change-Id: Ie7d990cfce6fef00ddb4ffffe4c6205b8530fb47
2019-06-18 22:26:33 +00:00
Carmelo Cascone
b9536696f6 First attempt at supporting builds with Java 11
Includes:
- Bump protobuf to 3.8.0 and grpc-java to 1.21.0 (along with transitive
  dependencies such as Netty)
- Add jaxb_api at compile time when needed (removed in JDK 11)
- Bump Bnd to 4.1 (adds support for Java 11)

To build with JDK 11, uncomment lines in .bazelrc.
Tested with Bazel 0.26.0.

Change-Id: Ib8e0c7310eacf97328762606e57c01e4834e5565
2019-05-30 18:11:06 +00:00
Carmelo Cascone
c0b23a459f Allow building third-party apps based on gRPC
By publishing the repackaged grpc and protobuf artifacts

Change-Id: Ib3af7dba4f64948132aa70be31922de61d6f6ab2
2019-04-25 15:38:00 -07:00
Carmelo Cascone
c2be50a804 Allow sharing the same gRPC channel between clients
This change introduces a refactoring of the gRPC protocol subsystem that
allows the creation of a gRPC chanel independently of the client, while
allowing multiple clients to share the same channel (e.g. as in Stratum
where we use 3 clients).

Moreover, we refactor the P4RuntimeClient API to support multiple
P4Runtime-internal device ID using the same client. While before the
client was associated to one of such ID.

Finally, we provide an abstract implementation for gRPC-based driver
behaviors, reducing code duplication in P4Runtime, gNMI and gNOI drivers.

Change-Id: I1a46352bbbef1e0d24042f169ae8ba580202944f
2019-04-11 23:14:41 +00:00
Carmelo Cascone
c32976e7d5 Various fixes in preparation of Stratum demo at ONS 2019
- Do not read counters with table entries for Barefoot drivers
- If driver behavior setup fails, log which operation we are aborting
- Remove unnecessary setup steps in Stratum-related drivers
- Always get clients by their key in gRPC-based drivers
- Log when P4Runtime group operation fails because of missing group in
store
- Fix polling of table entry counters for P4Runtime driver

Change-Id: Ic9bf19b76d8cb5a191aec24852af4410fea8b998
2019-04-08 23:00:54 +00:00
oleksandr.yashchuk@plvision.eu
3dbcaafa0c Initial gNOI implementation added. Introduced system Time and Reboot RPC
Change-Id: I8accdcc6c1ff247408ce54490ceff3972fdf850f
2019-03-26 21:35:33 +00:00
Carmelo Cascone
ab5d41e8ab Add support for enabling/disabling ports for gNMI devices
This change also includes:
- Refactoring of gNMI protocol+driver to take advantage of the recent
changes to the gRPC protocol subsystem (e.g. no more locking, start RPC
with timeouts, etc.).
- Fixed Stratum driver to work after GeneralDeviceProvider refactoring
- Updated bmv2.py to generate ChassisConfig for stratum_bmv2
- Fixed portstate command to use the same port name as in the store

Change-Id: I0dad3bc73e4b6d907b5cf6b7b9a2852943226be7
2019-03-07 07:45:32 +00:00
Carmelo Cascone
3977ea4d9e Refactor channel and mastership handling in P4Runtime
This (big) change aims at solving the issue observed with mastership flapping
and device connection/disconnection with P4Runtime.

Channel handling is now based on the underlying gRPC channel state. Before,
channel events (open/close/error) were generated as a consequence of P4Runtime
StreamChannel events, making device availability dependent on mastership. Now
Stream Channel events only affect mastership (MASTER/STANDBY or NONE when the
SteamChannel RPC is not active).

Mastership handling has been refactored to generate P4Runtime election IDs that
are compatible with the mastership preference decided by the MastershipService.

GeneralDeviceProvider has been re-implemented to support in-order
device event processing and to reduce implementation complexity. Stats polling
has been moved to a separate component, and netcfg handling updated to only
depend on BasicDeviceConfig, augmented with a pipeconf field, and re-using the
managementAddress field to set the gRPC server endpoints (e.g.
grpc://myswitch.local:50051). Before it was depending on 3 different config
classes, making hard to detect changes.

Finally, this change affects some core interfaces:
- Adds a method to DeviceProvider and DeviceHandshaker to check for device
availability, making the meaning of availability device-specific. This is needed
in cases where the device manager needs to change the availability state of a
device (as in change #20842)
- Support device providers not capable of reconciling mastership role responses
with requests (like P4Runtime).
- Clarify the meaning of "connection" in the DeviceConnect behavior.
- Allows driver-based providers to check devices for reachability and
availability without probing the device via the network.

Change-Id: I7ff30d29f5d02ad938e3171536e54ae2916629a2
2019-03-06 19:28:42 +00:00
Ray Milkey
6ee38b8688 Fixes for problems with starting and stopping apps in a minimal system
- Missing app dependencies
- Incorrect provider registrations
- Fatal execeptions thrown when external resources are not present

Change-Id: I3fdcf0666c88a47f399a722a9ab549d1104ff40e
2019-02-07 18:16:01 +00:00
Carmelo Cascone
a46f554fb1 Fix runtime of P4-related stuff with new karaf
Change-Id: I139575d5b038224ca8ccce4ec71ec8a84b35dfeb
2018-12-12 23:41:01 -08:00
Yi Tseng
59d5f3efdf Add OpenConfig based port statistics discovery
Change-Id: I3e7d5683f8a51d06db18b644963044d204911346
2018-12-13 01:05:05 +00:00
Yi Tseng
d771648025 Cherry pick gNMI and Stratum related changes to this branch
Cherry picked commits:
20211 Update gNMI version and build script
20247 [ONOS-7829] Implement AbstractGrpcClient and AbstractGrpcClientControl
20233 [ONOS-7141][ONOS-7142] Add GnmiClient and GnmiController
20234 Refactor OpenConfig gNMI device description descovery
20260 [ONOS-7831] Implement GnmiHandshaker
20270 Add Stratum driver

Change-Id: I81ad8bce45251af5909cfcac0edbcfd11c8ebf1d
2018-12-13 01:05:05 +00:00