)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"200a99bb58c00dc8c6386ed7bcce64462854aee8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"28e14822_b531ba7a","updated":"2022-02-09 09:33:07.000000000","message":"need FTs","commit_id":"c77a176883c039640f97cd75e1b1fd3d0339f594"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"9dcc5f4ac2daf7d75967a84580697cba2153fd9b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"97d4bc8e_b8aeaae1","updated":"2022-04-11 11:07:53.000000000","message":"Code looks good for me but I think it deserves release note too.","commit_id":"ecf549fa91e6f5364b08a1ad47c1cdbc760d3734"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"c665761555e3bb94530a7c2daf261b4199cae489","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"eea1f6ab_b5b73a43","updated":"2022-06-16 12:44:10.000000000","message":"When passing multiple connections for servers on different machines, it makes no sense to add a Connection DB entry for them. Each server would try to connect to *each* of the addresses listed in the Connection table, and would fail to connect to the ones not on that machine.\n\nIf you add addresses that a server can\u0027t listen on, ovsdb-server will try to connect to those servers many times every minute.\n\nNormally, with RAFT you\u0027d pass the --remote ptcp:y:x.x.x.x option on the CLI to set up the listening address--but, there is no way to set the inactivity_probe with that currently.\n\nOne way to do this correctly would be to create a *local* db for Connections, and pass that second DB to ovsdb-server since it can handle multiple DBs per server. Then set the individual connections in that DB on each raft cluster member for nb/sb db and pass that db/table/column as a remote, e.g. --remote\u003ddb:Local_Connection/Global/connections. Note that it is currently not supported by the ovn-ctl script to pass a second db (though you can cheat and pass it in --ovn-nb-log and --ovn-sb-log).\n\nExample script to create the DB and populate it:\n\n    https://paste.openstack.org/show/814966/\n\nWhich you\u0027d run by:\n\n    ./setup_connection_db.sh $ovn_db_dir/connection_nb.db ptcp:6641:$ip $inactivity_probe\n    ./setup_connection_db.sh $ovn_db_dir/connection_ns.db ptcp:6642:$ip $inactivity_probe\n\nThis patch is technically fine since it doesn\u0027t create connections and if for some reason someone wanted to listen on multiple addresses on the same machine it would work? Though I\u0027m not sure why one would connect to multiple addresses on the same machine, so I think we should consider reverting it.","commit_id":"0124dab42304596552eda7370c6ad59ee86e145b"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"a3c0910c053f80c9ddc9fa69e77b364dad83a5cb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"cee202d0_846c3700","updated":"2022-04-25 08:28:46.000000000","message":"recheck","commit_id":"0124dab42304596552eda7370c6ad59ee86e145b"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"1c44846f81a60d5bb72f2d4348808be625289a15","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"749fd782_2b91c46c","in_reply_to":"8dd79a4a_4a00feaf","updated":"2022-06-21 18:59:45.000000000","message":"The problem is that when you have ovsdb Connection entries for each of the machines (listening on different addresses) then ovsdb-server on *each* machine tries to listen on every Connection row. If you have 3 machines, this means each of them will try to listen on 2 connections that they don\u0027t have interfaces for and will keep trying to listen on those addresses many times per minute.\n\nHere\u0027s an example log: https://paste.openstack.org/show/bvXxxbFduUi4XwuI5M8C/","commit_id":"0124dab42304596552eda7370c6ad59ee86e145b"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"fbe172f451ba220d877f56221ff7667d0d707b52","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8dd79a4a_4a00feaf","in_reply_to":"c7c441ac_6e25694a","updated":"2022-06-17 00:37:33.000000000","message":"hi terry, I don\u0027t know if I understand you correctly. this patch is mainly for ovn cluster deployment, rather than multiple addresses of one machine. \nWhen deploying an ovn cluster, neutron should configure the addresses of all members of the cluster. Otherwise, ovn nb/sb may not be connected because the configured address is not a leader node.","commit_id":"0124dab42304596552eda7370c6ad59ee86e145b"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"622353e16ff71686528efc09e69a47a221d120aa","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c7c441ac_6e25694a","in_reply_to":"eea1f6ab_b5b73a43","updated":"2022-06-16 13:12:07.000000000","message":"Here is an example of ovsdb-server being angry trying to listen on an address that is not on the server:\n\nhttps://paste.openstack.org/show/bvXxxbFduUi4XwuI5M8C/","commit_id":"0124dab42304596552eda7370c6ad59ee86e145b"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/mech_driver.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"352346ad346f33a9f2ad3316c6914a90595a2fcf","unresolved":true,"context_lines":[{"line_number":311,"context_line":"                impl_idl_ovn.OvsdbSbOvnIdl)]"},{"line_number":312,"context_line":"        for connection, schema, klass in dbs:"},{"line_number":313,"context_line":"            targets \u003d []"},{"line_number":314,"context_line":"            for _conn in connection.split(\u0027,\u0027):"},{"line_number":315,"context_line":"                target \u003d ovn_utils.connection_config_to_target_string(_conn)"},{"line_number":316,"context_line":"                if target:"},{"line_number":317,"context_line":"                    targets.append(target)"}],"source_content_type":"text/x-python","patch_set":1,"id":"48b51127_ded6929f","line":314,"range":{"start_line":314,"start_character":25,"end_line":314,"end_character":46},"updated":"2022-01-19 08:52:53.000000000","message":"\"ovn_nb_connection\" and \"ovn_sb_connection\" do not support multiple values [1], just a string with the procotol, address and port (or protocol and file).\n\n[1]https://github.com/openstack/neutron/blob/305bab4f2393560dde781279183d1d7ec10967f3/neutron/conf/plugins/ml2/drivers/ovn/ovn_conf.py#L32","commit_id":"9ddabc197fb1bcc1f5032b07b01c945f593d8fee"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"8035c564f779cb884891448ee78a823a3bee77fd","unresolved":true,"context_lines":[{"line_number":311,"context_line":"                impl_idl_ovn.OvsdbSbOvnIdl)]"},{"line_number":312,"context_line":"        for connection, schema, klass in dbs:"},{"line_number":313,"context_line":"            targets \u003d []"},{"line_number":314,"context_line":"            for _conn in connection.split(\u0027,\u0027):"},{"line_number":315,"context_line":"                target \u003d ovn_utils.connection_config_to_target_string(_conn)"},{"line_number":316,"context_line":"                if target:"},{"line_number":317,"context_line":"                    targets.append(target)"}],"source_content_type":"text/x-python","patch_set":1,"id":"e1298084_e64ec5e5","line":314,"range":{"start_line":314,"start_character":25,"end_line":314,"end_character":46},"in_reply_to":"48b51127_ded6929f","updated":"2022-01-19 09:11:49.000000000","message":"ovs idl suppoort multiple remotes, we then in the actual application, is also the configuration of multiple addresses, like: tcp:100.2.223.2:6641,tcp:100.2.223.12:6641,tcp:100.2.223.30:6641\n\n\n\n[1]https://github.com/openvswitch/ovs/blob/master/python/ovs/db/idl.py#L211","commit_id":"9ddabc197fb1bcc1f5032b07b01c945f593d8fee"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"61e5c9858f2b27c1829db3074c04d86b38b4856a","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                impl_idl_ovn.OvsdbSbOvnIdl)]"},{"line_number":312,"context_line":"        for connection, schema, klass in dbs:"},{"line_number":313,"context_line":"            targets \u003d []"},{"line_number":314,"context_line":"            for _conn in connection.split(\u0027,\u0027):"},{"line_number":315,"context_line":"                target \u003d ovn_utils.connection_config_to_target_string(_conn)"},{"line_number":316,"context_line":"                if target:"},{"line_number":317,"context_line":"                    targets.append(target)"}],"source_content_type":"text/x-python","patch_set":1,"id":"4afd5dcb_4c9dac09","line":314,"range":{"start_line":314,"start_character":25,"end_line":314,"end_character":46},"in_reply_to":"79c5fce9_d3eeb768","updated":"2022-03-29 08:55:50.000000000","message":"Done","commit_id":"9ddabc197fb1bcc1f5032b07b01c945f593d8fee"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"414793c61da238f54a7911dc9fc49e8e4dc54ab7","unresolved":true,"context_lines":[{"line_number":311,"context_line":"                impl_idl_ovn.OvsdbSbOvnIdl)]"},{"line_number":312,"context_line":"        for connection, schema, klass in dbs:"},{"line_number":313,"context_line":"            targets \u003d []"},{"line_number":314,"context_line":"            for _conn in connection.split(\u0027,\u0027):"},{"line_number":315,"context_line":"                target \u003d ovn_utils.connection_config_to_target_string(_conn)"},{"line_number":316,"context_line":"                if target:"},{"line_number":317,"context_line":"                    targets.append(target)"}],"source_content_type":"text/x-python","patch_set":1,"id":"79c5fce9_d3eeb768","line":314,"range":{"start_line":314,"start_character":25,"end_line":314,"end_character":46},"in_reply_to":"e1298084_e64ec5e5","updated":"2022-02-09 07:59:35.000000000","message":"1) Yes, OVS IDL supports multiple addresses. I don\u0027t know if Neutron does. This is not documented nor tested in the CI. Please document this in the configuration option (referring to the exact section of the documentation and using a static link [1]) and create some FTs, using several connections, being the last one the correct one (the errors trying to connect to a wrong one should be logged).\n\n2) There is a method to parse the connection string: ovsdbapp.backend.ovs_idl.idlutils.parse_connection\n\n[1]https://github.com/openvswitch/ovs/blob/ab4d3bfbef37c31331db5a9dbe7c22eb8d5e5e5f/python/ovs/db/idl.py#L215-L216","commit_id":"9ddabc197fb1bcc1f5032b07b01c945f593d8fee"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"352346ad346f33a9f2ad3316c6914a90595a2fcf","unresolved":true,"context_lines":[{"line_number":329,"context_line":"                            (\u0027inactivity_probe\u0027, int(inactivity_probe))"},{"line_number":330,"context_line":"                        ).execute(check_error\u003dTrue)"},{"line_number":331,"context_line":"                    else:"},{"line_number":332,"context_line":"                        with idl_api.transaction(check_error\u003dFalse) as txn:"},{"line_number":333,"context_line":"                            txn.add(commands.CreateConnectionCommand("},{"line_number":334,"context_line":"                                idl_api, target, int(inactivity_probe)))"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    @staticmethod"},{"line_number":337,"context_line":"    def should_post_fork_initialize(worker_class):"}],"source_content_type":"text/x-python","patch_set":1,"id":"6766a5be_6fbebd23","line":334,"range":{"start_line":332,"start_character":24,"end_line":334,"end_character":72},"updated":"2022-01-19 08:52:53.000000000","message":"Sorry but I don\u0027t understand this. If we are connected to the SB DB, the \"connection\" register should have been created. Actually we should not create this but the backend once we stablish a connection.","commit_id":"9ddabc197fb1bcc1f5032b07b01c945f593d8fee"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"cefe0c8cbfa4f47ecd507b38ad8fb239f3db63a6","unresolved":true,"context_lines":[{"line_number":329,"context_line":"                            (\u0027inactivity_probe\u0027, int(inactivity_probe))"},{"line_number":330,"context_line":"                        ).execute(check_error\u003dTrue)"},{"line_number":331,"context_line":"                    else:"},{"line_number":332,"context_line":"                        with idl_api.transaction(check_error\u003dFalse) as txn:"},{"line_number":333,"context_line":"                            txn.add(commands.CreateConnectionCommand("},{"line_number":334,"context_line":"                                idl_api, target, int(inactivity_probe)))"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    @staticmethod"},{"line_number":337,"context_line":"    def should_post_fork_initialize(worker_class):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fcf3df93_5d3b4468","line":334,"range":{"start_line":332,"start_character":24,"end_line":334,"end_character":72},"in_reply_to":"08f98941_563e70b5","updated":"2022-01-19 10:26:31.000000000","message":"\u003e the \"connection\" is NB/SB Table Connection, it can be auto created when register. we currently use ovn\u003d\u003d21.03, which was created on the command line at deployment time.  refer to the [1].\n\u003e \n\u003e [1] https://docs.openstack.org/networking-ovn/latest/install/manual.html#controller-nodes\nsorry, it can not be auto created when register. we currently use ovn\u003d\u003d21.03, which was created on the command line at deployment time.  refer to the [1].","commit_id":"9ddabc197fb1bcc1f5032b07b01c945f593d8fee"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"200a99bb58c00dc8c6386ed7bcce64462854aee8","unresolved":false,"context_lines":[{"line_number":329,"context_line":"                            (\u0027inactivity_probe\u0027, int(inactivity_probe))"},{"line_number":330,"context_line":"                        ).execute(check_error\u003dTrue)"},{"line_number":331,"context_line":"                    else:"},{"line_number":332,"context_line":"                        with idl_api.transaction(check_error\u003dFalse) as txn:"},{"line_number":333,"context_line":"                            txn.add(commands.CreateConnectionCommand("},{"line_number":334,"context_line":"                                idl_api, target, int(inactivity_probe)))"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    @staticmethod"},{"line_number":337,"context_line":"    def should_post_fork_initialize(worker_class):"}],"source_content_type":"text/x-python","patch_set":1,"id":"93aadd22_3a19345f","line":334,"range":{"start_line":332,"start_character":24,"end_line":334,"end_character":72},"in_reply_to":"3d3eb36f_b59a90d5","updated":"2022-02-09 09:33:07.000000000","message":"Done","commit_id":"9ddabc197fb1bcc1f5032b07b01c945f593d8fee"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"8035c564f779cb884891448ee78a823a3bee77fd","unresolved":true,"context_lines":[{"line_number":329,"context_line":"                            (\u0027inactivity_probe\u0027, int(inactivity_probe))"},{"line_number":330,"context_line":"                        ).execute(check_error\u003dTrue)"},{"line_number":331,"context_line":"                    else:"},{"line_number":332,"context_line":"                        with idl_api.transaction(check_error\u003dFalse) as txn:"},{"line_number":333,"context_line":"                            txn.add(commands.CreateConnectionCommand("},{"line_number":334,"context_line":"                                idl_api, target, int(inactivity_probe)))"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    @staticmethod"},{"line_number":337,"context_line":"    def should_post_fork_initialize(worker_class):"}],"source_content_type":"text/x-python","patch_set":1,"id":"08f98941_563e70b5","line":334,"range":{"start_line":332,"start_character":24,"end_line":334,"end_character":72},"in_reply_to":"6766a5be_6fbebd23","updated":"2022-01-19 09:11:49.000000000","message":"the \"connection\" is NB/SB Table Connection, it can be auto created when register. we currently use ovn\u003d\u003d21.03, which was created on the command line at deployment time.  refer to the [1].\n\n[1] https://docs.openstack.org/networking-ovn/latest/install/manual.html#controller-nodes","commit_id":"9ddabc197fb1bcc1f5032b07b01c945f593d8fee"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"414793c61da238f54a7911dc9fc49e8e4dc54ab7","unresolved":true,"context_lines":[{"line_number":329,"context_line":"                            (\u0027inactivity_probe\u0027, int(inactivity_probe))"},{"line_number":330,"context_line":"                        ).execute(check_error\u003dTrue)"},{"line_number":331,"context_line":"                    else:"},{"line_number":332,"context_line":"                        with idl_api.transaction(check_error\u003dFalse) as txn:"},{"line_number":333,"context_line":"                            txn.add(commands.CreateConnectionCommand("},{"line_number":334,"context_line":"                                idl_api, target, int(inactivity_probe)))"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"    @staticmethod"},{"line_number":337,"context_line":"    def should_post_fork_initialize(worker_class):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3d3eb36f_b59a90d5","line":334,"range":{"start_line":332,"start_character":24,"end_line":334,"end_character":72},"in_reply_to":"fcf3df93_5d3b4468","updated":"2022-02-09 07:59:35.000000000","message":"Again, we can\u0027t create a connection here, that belongs to the deployment phase, not the runtime phase.","commit_id":"9ddabc197fb1bcc1f5032b07b01c945f593d8fee"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3fc9c6573858430210e9d12dd740f786672c2ba5","unresolved":true,"context_lines":[{"line_number":309,"context_line":"                impl_idl_ovn.OvsdbNbOvnIdl),"},{"line_number":310,"context_line":"               (ovn_conf.get_ovn_sb_connection(), self.sb_schema_helper,"},{"line_number":311,"context_line":"                impl_idl_ovn.OvsdbSbOvnIdl)]"},{"line_number":312,"context_line":"        for connection, schema, klass in dbs:"},{"line_number":313,"context_line":"            targets \u003d []"},{"line_number":314,"context_line":"            for _conn in idlutils.parse_connection(connection):"},{"line_number":315,"context_line":"                target \u003d ovn_utils.connection_config_to_target_string(_conn)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5c80c8ac_0f78449a","line":312,"updated":"2022-02-09 16:00:03.000000000","message":"+1 to this implementation","commit_id":"c77a176883c039640f97cd75e1b1fd3d0339f594"},{"author":{"_account_id":30380,"name":"ZhouHeng","email":"zhouhenglc@inspur.com","username":"zhouhenglc"},"change_message_id":"61e5c9858f2b27c1829db3074c04d86b38b4856a","unresolved":false,"context_lines":[{"line_number":309,"context_line":"                impl_idl_ovn.OvsdbNbOvnIdl),"},{"line_number":310,"context_line":"               (ovn_conf.get_ovn_sb_connection(), self.sb_schema_helper,"},{"line_number":311,"context_line":"                impl_idl_ovn.OvsdbSbOvnIdl)]"},{"line_number":312,"context_line":"        for connection, schema, klass in dbs:"},{"line_number":313,"context_line":"            targets \u003d []"},{"line_number":314,"context_line":"            for _conn in idlutils.parse_connection(connection):"},{"line_number":315,"context_line":"                target \u003d ovn_utils.connection_config_to_target_string(_conn)"}],"source_content_type":"text/x-python","patch_set":2,"id":"eda69c4e_9039763f","line":312,"in_reply_to":"5c80c8ac_0f78449a","updated":"2022-03-29 08:55:50.000000000","message":"Done","commit_id":"c77a176883c039640f97cd75e1b1fd3d0339f594"}]}
