4859 Commits

Author SHA1 Message Date
Sean Condon
a3ce00ba00 GUI2 Add links to GUI2 when created dynamically
Change-Id: Ibfa7ae0fa9b02fd6e1b40b9f201ff002c19591a9
2019-04-10 11:44:01 +01:00
Ray Milkey
b48533e3f7 Fix for ONOS-7960 - single to multi intent json codec can't decode egress point array
Change-Id: I55463701ff080be7ed857f72e29878c98c55dc13
2019-04-08 22:06:53 +00:00
Ray Milkey
d1092d6583 properly reallocate thread pools after a restart
Change-Id: I08042acd75ebcb3ca16af189917c1fe6904f3afd
2019-04-02 09:12:00 -07:00
Ray Milkey
397caca173 Fix ONOS-7958 - problems that were causing failures when onos-core restarts
Change-Id: I186107a386827d66f017182a573377a6a7bb7b00
2019-04-02 00:07:14 +00:00
Jordan Halterman
07093b024f Write to flow table bucket in calling thread to reduce latency
Change-Id: I0067aa6dba6c738d647585e8b063efa9e2fbe15c
2019-04-01 21:08:39 +00:00
Harshada Chaundkar
dcd1b14987 Packet throttle support
Change-Id: I6f2da5ed25f794561349013bfcbf9afa85d5e190
2019-03-28 18:36:17 +00:00
Ray Milkey
69ca82acc5 Don't assume that there is a device id in the event message
Change-Id: Ibf77ea7c8fec1a7baff5fa6e0aca50bb7cb3425b
2019-03-28 10:06:15 -07:00
debmaiti
9553ed76ef Port Annotation bug fix
1. Handled the case when InternalNetworkConfigListener in DeviceManager recieves an event associated with PortAnotationConfig class.
2. Added CONFIG_REMOVED event type in InternalNetworkConfigListener in DeviceManager.
3. Changed comine function in PortAnnotationOperator to take care of removing old annotations from PortDescription which are not in current
PortAnnotationConfig.

Tested using 'annotate-ports' command and 'ports' command

Change-Id: Ie4d2b529c2f559a40a296d916193318e0ccc7b93
2019-03-28 16:44:21 +05:30
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
Sean Condon
28884334ee GUI2 added in the layout topo overlay
Change-Id: I9960f95ae726a5af9950771ed67bcfc9d172e267
2019-03-26 14:36:47 +00:00
pier
5e3afe560d Fix NPE when pending operations are not present
(due to possible race condition)

2019-02-15 11:18:45,407 | WARN  | -event-barrier-1 | LocalCache                       | 94 | Exception thrown by removal listener
java.lang.NullPointerException
	at org.onosproject.net.flow.impl.FlowRuleManager$InternalStoreDelegate.notify(FlowRuleManager.java:639)
	at org.onosproject.net.flow.impl.FlowRuleManager$InternalStoreDelegate.notify(FlowRuleManager.java:591)
	at org.onosproject.store.AbstractStore.notifyDelegate(AbstractStore.java:58)
	at org.onosproject.store.flow.impl.ECFlowRuleStore.batchOperationComplete(ECFlowRuleStore.java:638)
	at org.onosproject.net.flow.impl.FlowRuleManager$InternalFlowRuleProviderService.batchOperationCompleted(FlowRuleManager.java:577)
	at org.onosproject.provider.of.flow.impl.OpenFlowRuleProvider.lambda$createBatchCache$0(OpenFlowRuleProvider.java:231)
	at com.google.common.cache.LocalCache.processPendingNotifications(LocalCache.java:1967)[94:com.google.guava:22.0.0]
	at com.google.common.cache.LocalCache$Segment.runUnlockedCleanup(LocalCache.java:3642)[94:com.google.guava:22.0.0]
	at com.google.common.cache.LocalCache$Segment.postWriteCleanup(LocalCache.java:3618)[94:com.google.guava:22.0.0]
	at com.google.common.cache.LocalCache$Segment.remove(LocalCache.java:3246)[94:com.google.guava:22.0.0]
	at com.google.common.cache.LocalCache.remove(LocalCache.java:4413)[94:com.google.guava:22.0.0]
	at com.google.common.cache.LocalCache$LocalManualCache.invalidate(LocalCache.java:5081)[94:com.google.guava:22.0.0]
	at org.onosproject.provider.of.flow.impl.OpenFlowRuleProvider$InternalFlowProvider.handleMessage(OpenFlowRuleProvider.java:466)[170:org.onosproject.onos-providers-openflow-flow:1.12.2.SNAPSHOT]
	at org.onosproject.openflow.controller.impl.OpenFlowControllerImpl$OFMessageHandler.run(OpenFlowControllerImpl.java:773)[167:org.onosproject.onos-protocols-openflow-ctl:1.12.2.SNAPSHOT]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)[:1.8.0_192]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)[:1.8.0_192]
	at java.lang.Thread.run(Thread.java:748)[:1.8.0_192]

Change-Id: I6eb64524c5e209c4a6d6a6f147d7ab0c86137246
2019-03-26 01:03:34 +00:00
Carmelo Cascone
a7e60c65c8 Various fixes for P4Runtime group handling
- Workaround for PI bug that ignores max_group_size
- Use max_group_size and not buckets size when translating groups

Change-Id: Id12a12311b20ca8fb4e785e1c5a4f0f4215d1bbf
2019-03-23 01:04:10 +00:00
Carmelo Cascone
975a3430c7 Fix NPE when processing host events in UI
Change-Id: I2fb56911b38d36dafc12ee22c8e6ae250c7e6b35
2019-03-22 15:24:00 +00:00
Carmelo Cascone
4f73fac78a Use max_group_size 1 for INDIRECT groups
Change-Id: I8db03a88af06b373d615e05c4b01e47579df2398
2019-03-22 05:00:52 +00:00
Ray Milkey
bd508ede5c cfgdef tool modifications to catch variable names that don't match properties
- catch errors in the cfgdef tool and abort compilation if a mismatch
  is seen
- Fix mismatches in the code discovered by the tool

Change-Id: Icd9a15eb9312bba6c2208b0b2a684062fcdc19c3
2019-03-21 19:07:31 +00:00
Carmelo Cascone
95308287cf Fix pipeline not marked as READY after device reboot
Since Stratum persists pipeline config across reboots, the
GeneralDeviceProvider was marking the device available as the device
had a pipeline config set right after the connection open event, but we
had to wait for the periodic PipeconfWatchdog check to mark the pipeline
as READY. Now we trigger a PipeconfWatchdog check after every device
availability change event.

Change-Id: I11a6f52ff5ea5304aa26dbe39786a25055b828aa
2019-03-19 19:51:43 +00:00
Carmelo Cascone
0e3b623f66 Reduce the chance of apps triggering fake mastership events
The GeneralDeviceProvider works with device IDs with prefix "device:",
which is the same leadership topic prefix used by the Mastership
service. This caused an issue when any app was creating leadership
contests with topic deviceId.toString() (e.g. XConnectManager,
DefaultRoutingHandler, etc), as the resulting leadership events where
picked by the mastership service and propagated, because of the "device:"
prefix.

This patch minimizes the occurrence of such issue by choosing a more
specific leadership topic prefix for the mastership service. However,
the right solution would be to add isolation of leadership contests
between different services/apps.

Change-Id: I333fd9796a66bb4ca04cd2facd337ac57a2947b2
2019-03-13 00:43:28 +00:00
HelloONOS
0854c0427e Add bridge Config at Arista Driver
Change-Id: Iaea2a0641c8d05bfa1d2caca66dc81698650d995
2019-03-12 20:23:17 +00:00
Sean Condon
ee54576967 GUI2 Handle node additions and removals in Topology view
Change-Id: Ic16fc1325fe338e2136f1cc70febc621342be4f2
2019-03-11 09:44:10 +00:00
Jordan Halterman
e3de321416 Fix NPE in flow store
Change-Id: I310b9bf45ba7f59c4f5cc96d302ede9b652af623
2019-03-08 14:17:30 -08:00
Jordan Halterman
01bf125e77 Match device pattern on start of line in MastershipStore election topics
Change-Id: I2ee7c3596b90d7096ae456269e37f18970d3edf0
2019-03-08 06:15:07 +00:00
Jordan Halterman
0677d88e2d Fix NPE in flow store
Change-Id: If240d2f02c96b3f03398b8ec30a7feb7bb9240b4
2019-03-07 16:34:39 -08: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
Ruchi Sahota
e4934e16fd Moving the device event handling to separate thread
Change-Id: Idfffee1ef46fda4248839854fa2d87f3db6008bb
2019-03-07 04:14:26 +00:00
Jordan Halterman
b81fdc1168 Optimize filtering flow rule counts by state
Change-Id: I1e1d80b8e618743ee449162a081cf42e71c99abf
2019-03-06 17:59:20 -08:00
Carmelo Cascone
6146946e16 Fix inconsistent update type during concurrent P4Runtime writes
This is achieved by optimistically updating the P4Runtime mirror using
the write request (instead of waiting for a response) and by serializing
building write requests for the same device.

This change requires updating the P4Runtime protocol classes to expose
the content of the write request.

It also includes:
- force member weight to 1 when reading groups (some server
implementation still fails to be compliant to the spec)
- remove unused operation timeout handling in GDP (now all RPCz have a
timeout)

Change-Id: Ib4f99a6085c1283f46a2797e0c883d96954e02e9
2019-03-06 19:28:42 +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
Jordan Halterman
c88c265637 Add debug logging of add/remove operations in flow rule store
Change-Id: Ib8bd911f223898cbbaf64304ad3307dae450838e
(cherry picked from commit f51293466d1cde735b3b11a7b5e18b3602c52c86)
2019-03-05 21:16:19 +00:00
Andrea Campanella
b65d99dc84 Reverting change to print for OCHSignal
Change-Id: Ia3c5bc20d0b139837323e9b37010bc803e9fad2f
2019-03-05 20:09:52 +00:00
Jordan Halterman
aeda275934 Reduce frequency of flow store replication
Change-Id: I32528623f7dbbf0e9ec4b091394126f28ac5ffe2
2019-03-05 19:59:16 +00:00
adibrastegarnia
b603ac2de8 FIX-minor changes in the BUILD file for protobuf models
Change-Id: Id2256c1e8c9d53a3aa45bee27ec55f748c789e00
2019-03-05 19:15:47 +00:00
Jordan Halterman
3e4dbef8b9 Use singleton primitives in transactions
Change-Id: Ibb29a3f10e9863e075a4aba9bc357ed1ca9dfcc1
(cherry picked from commit c1c057aa18b63ceb78f5a95166d8f83bc0967328)
2019-03-05 00:42:27 +00:00
Jordan Halterman
2ef1cf725e Support DNS storage discovery via cluster metadata
Change-Id: I62499cb8d6bff57d780e7aaaf07eaa84ec332192
2019-03-05 00:08:10 +00:00
Thiago Santos
a4a17cb0b0 OutboundPacket: add inPort method
Allows to provide a different input port to be considered when emitting
the packet. It is useful on OpenFlow devices so one can use ALL or FLOOD
actions as output and not have the packet sent back on the input port.

Default is controller port, as it was before.

The required changes were also implemented in OpenFlowPacketProvider

Change-Id: I0a050b983b5de9935254599e8093dc59ad7a4ccf
2019-03-04 18:37:00 +00:00
Jian Li
de6eb18505 Support Nicira load extension, add L4 mod builder for group buckets
Change-Id: Ic16b4d853daed38792aeb199be732aa868c26bad
2019-03-04 18:12:06 +00:00
Thiago Santos
4a69ef82e2 TrafficTreatment: add support for IP DSCP modifications
Allow modifying IP DSCP field in the headers.

Change-Id: Idd765f40f1baec810273536adcd56bf0e480217f
2019-03-04 18:00:15 +00:00
Ray Milkey
1f0764a43f Remove soft fail for registering an empty property set
- removed soft fail
- fixed property reference in DriverRegistryManager that had been refactored out
- fixed property references in FlowObjectiveManager so that property name and
  variable name match

Change-Id: I1324c0553e0f6945087b29794f0a06ae6dd8ab10
2019-03-01 13:58:56 -08:00
Jordan Halterman
368bd3d646 Ensure devices are marked online during mastership check
Change-Id: I421739d14d7fe71821ac3c0c6c3002d93ee58527
(cherry picked from commit 8ac0247267b705340f4110b5853d2fbac6a010d6)
2019-02-26 23:03:16 +00:00
Ray Milkey
17801b4fca remove deprecated removeRulesById() method
Change-Id: I9aef85eb8a9146e11e800cb3e524fb2b4e19d4f9
2019-02-26 21:26:02 +00:00
Brian O'Connor
c69438361a Adding support for TLS connections for gRPC clients
This patch uses BoringSSL to negotiate TLS sessions under the hood.

Change-Id: I1495479ff33654f9cffe04d61f293c3e923b8aeb
2019-02-26 17:50:57 +00:00
Ray Milkey
4f7e3631d2 Removal of deprecated APIs
- OchSignal constructor
- unfiltered connect point methods in single point to multi point intents
- useBackup() method from disjoint paths
- ChannelAdapter class
- getLastUpdatedInstant() method from cluster store
- switchWorkingPath() method from protection config behaviour
- getVersion() method from partition
- getFlowRulesById() method from flow rule service

Change-Id: I5c6c2f31725f7e7e44ac2abb18ce3fb96b09d93e
2019-02-22 18:01:45 +00:00
Ray Milkey
887c1cad50 Update apache karaf to version 4.2.3
Change-Id: If9aadfa2715a3f100df6e34e25789e74399759a0
2019-02-20 21:32:08 +00:00
Ray Milkey
e453edccc5 Export the ResourceQueryService, needed by the linkprops app
Change-Id: Ie9c85398c344b00397d5c357441d730264db27bb
2019-02-20 20:54:06 +00:00
Ray Milkey
312221c3b5 Removal of deprecated UI methods
- removed deprecated addProp() methods from property panel
- removed deprecated DateTimeZone based withZone() method

Change-Id: I251ca70e49f37714e60cb5312a444baa0ef88bd8
2019-02-20 20:53:46 +00:00
Ray Milkey
f632826bc2 Remove deprecated Node APIs
Change-Id: I3e235ff213fc376c02ac01eb43f72d72ab4d17f4
2019-02-20 20:53:18 +00:00
Ray Milkey
e1077f8ed7 Remove calls to deprecated public intent data constructor
Change-Id: Ic77c1d2cfb3e954bc0b7ee6a8a66d9c4b8167872
2019-02-20 20:52:38 +00:00
Ray Milkey
a90d9749cf remove useless trace statement
Change-Id: If29a03b7db60cb3bb6598e47a7dc6d81342d71dc
2019-02-14 22:51:23 +00:00
Ray Milkey
5ec42085af Remove deprecated Port Statistics APIs
- Builder set of port number as an integer
- Query port number as an integer

Change-Id: Id4b4380c75237f293d2cc28a102748d416cf5c01
2019-02-14 17:43:07 +00:00
Ray Milkey
8efe27882c Remove deprecated APIs
- Storage Admin Service getPartitionInfo()
- org.onosproject.codec.ExtensionSelectorCodec
- org.onosproject.codec.ExtensionTreatmentCodec
- DefaultPortDescription builder withPortNumer()
- DefaultTableStatisticsEntry public constructors
- IntentData public constructors and copy constructors
- DistributedPrimitiveOptions withMeteringDisbled()
- PartitionService getActiveMembersMembers(), getDistributedPrimitiveCreator()
- DistributedPrimitive DEFAULT_OPERTATION_TIMEOU_MILLIS
- MapEvent.value()
- PartitionClientInfo.sessionId(), session()
- org.onosproject.store.flow.impl.DistributedFlowRuleStore

Change-Id: Id89870e6facf1e7fca24dd180bbd095139d001f3
2019-02-14 17:42:43 +00:00
Ray Milkey
47f09c5674 Remove deprecated FlowRuleExtPayLoad API
Change-Id: Id20e1e296670f8cc94b23c3fd2272a1c2de3990e
2019-02-13 23:17:40 +00:00