Bug 2223578 - [RFE] [OVN-IC] [Debugging] Enhance ovn-*bctl to connect across multiple sets of DBs
Summary: [RFE] [OVN-IC] [Debugging] Enhance ovn-*bctl to connect across multiple sets ...
Keywords:
Status: NEW
Alias: None
Product: Red Hat Enterprise Linux Fast Datapath
Classification: Red Hat
Component: OVN
Version: FDP 23.A
Hardware: Unspecified
OS: Unspecified
medium
unspecified
Target Milestone: ---
: ---
Assignee: OVN Team
QA Contact: Jianlin Shi
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-07-18 10:17 UTC by Surya Seetharaman
Modified: 2023-07-21 13:49 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker FD-3031 0 None None None 2023-07-18 10:17:42 UTC

Description Surya Seetharaman 2023-07-18 10:17:06 UTC
Description of problem:
As OVNK moves to using the Interconnect architecture, we are going to have to pay attention to the debugging aspects of OVN a bit closer.

Since scale is primary aim for the IC architecture; imagine a 500 or 1000 node cluster where we will collect 500 or 1000 NBDB's and SBDB's, we need to be able to run the bctl commands against all of them at the same time

See https://redhat-internal.slack.com/archives/C050MC61LVA/p1689675049225319?thread_ts=1689626101.828479&cid=C050MC61LVA for details

Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 1 Dan Williams 2023-07-21 13:49:51 UTC
Wouldn't it be trivial to write a Go wrapper like:

multi-ctl -p 9641 ovn-nbctl -p /ovn-cert/tls.key -c /ovn-cert/tls.crt -C /ovn-ca/ca-bundle.crt list Logical_Switch_Port

which then

(1) reads kAPI for list of nodes, grabs their internal address (or somehow gets the IP to use)
(2) constructs an actual args list with argv but putting "--db=<node IP>:9641" into the list at the right place
(3) optionally constructs a logfile path unique to each invocation, perhaps based on node name
(4) starts N goroutines where N = # nodes; executes the *ctl util and writes output to named logfile
(5) waits till they all finish
(6) maybe tars up all the logfiles and gzips it

I'd think it would be a lot easier in Go than in Bash or C.


Note You need to log in before you can comment on or make changes to this bug.