[OVSDB-458] OVSDB should open 6640 only when system is "READY" Created: 03/Jun/18  Updated: 01/May/19  Resolved: 01/May/19

Status: Resolved
Project: ovsdb
Component/s: None
Affects Version/s: None
Fix Version/s: Nitrogen-SR4, Fluorine-SR1

Type: Improvement Priority: Medium
Reporter: Faseela K Assignee: Vishal Thapar
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Blocks
blocks INFRAUTILS-43 Umbrella issue for required improveme... Resolved
is blocked by INFRAUTILS-44 SystemReady.registerListener(SystemRe... Resolved

 Description   

infrautils.ready provides a mechanism to know when all bundles of a feature are Active, and it would be great if ovsdb can listen for this before opening up 6640 port.

Also, if ovsdb can integrate to infrautils.diagstatus to report its status, it will give better flexibility for northbound users to detect when exactly they should start their configuration.

See similar openflowplugin implementation here:

https://git.opendaylight.org/gerrit/#/c/65881/

https://git.opendaylight.org/gerrit/#/c/65994/

https://git.opendaylight.org/gerrit/#/c/64197/

 



 Comments   
Comment by Michael Vorburger [ 07/Jun/18 ]

https://github.com/opendaylight/ovsdb/blob/044229fd9f67f6c88b7e6fa43b41db68631a8935/southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/SouthboundProvider.java#L171 is where it opens that port (6640), according to thapar.

Comment by Michael Vorburger [ 07/Jun/18 ]

How about https://git.opendaylight.org/gerrit/#/c/72767/ ?

Comment by Vishal Thapar [ 08/Jun/18 ]

karaf@root()> showsvcstatus
Timestamp: Fri Jun 08 10:18:49 IST 2018
Node IP Address: 127.0.0.1
System is operational: true
System ready state: ACTIVE
OPENFLOW : OPERATIONAL
IFM : OPERATIONAL
ITM : OPERATIONAL
ELAN : OPERATIONAL
OVSDB : OPERATIONAL
DATASTORE : OPERATIONAL

Now the crucial bit is bringing it all together and avoiding chicken and egg situation. Currently with these two patches this is way things currently are:

1. Wait for systemReady to open listening sockets.
2. Mark status operational once sockets are created.

Now comes tricky part if we want to wait for other services before opening ports. Tricky part here is, what if OFP or other services too wait for OVSDB to be operational to delay some of their working? Note that we're not truly up till our ports are open.

What Tim is looking for is all services up and operational and I think best solution will always be external deployments checking for it and then allowing connections. Anything done fully by ODL will always end up in this chicken and egg, unless we can think of newer states in diagstatus. Maybe something like STARTED that comes between STARTING and OPERATIONAL.

Other option is to make sure all services, other than the plugins, do everything as part of their bring up and in bundle bringups so there is nothing pending to do after that. In other words, the 'gatekeeper' services that block external communication can take longer than system ready, but rest should be ready by the time system says system ready.

Comment by Michael Vorburger [ 08/Jun/18 ]

> if we want to wait for other services before opening ports

just use org.opendaylight.infrautils.ready.order for that!

Comment by Michael Vorburger [ 24/Aug/18 ]

thapar is this fully done, or is there anything left here? Perhaps you would like to set Fix Version correctly?

Generated at Wed Feb 07 20:36:27 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.