)]}'
{"neutron/agent/ovn/metadata/agent.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4e804b14c535efd3f5e1cf785cae193ff884861b","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        events \u003d (self.ROW_UPDATE,)"},{"line_number":69,"context_line":"        super(PortBindingChassisEvent, self).__init__("},{"line_number":70,"context_line":"            events, table, None)"},{"line_number":71,"context_line":"        self.event_name \u003d \u0027PortBindingChassisEvent\u0027"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def run(self, event, row, old):"},{"line_number":74,"context_line":"        # Check if the port has been bound/unbound to our chassis and update"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_566e8e2c","line":71,"updated":"2019-12-04 17:01:26.000000000","message":"small nit: this could be self.__class__.__name__","commit_id":"823620486e4e35b71898cb50f593f93f6c9a3699"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2e171d3cb6d305f4c0c3022908b9ea4f8e9478a5","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        events \u003d (self.ROW_UPDATE,)"},{"line_number":69,"context_line":"        super(PortBindingChassisEvent, self).__init__("},{"line_number":70,"context_line":"            events, table, None)"},{"line_number":71,"context_line":"        self.event_name \u003d \u0027PortBindingChassisEvent\u0027"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def run(self, event, row, old):"},{"line_number":74,"context_line":"        # Check if the port has been bound/unbound to our chassis and update"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_fafe5f68","line":71,"in_reply_to":"3fa7e38b_344bc028","updated":"2019-12-06 16:01:02.000000000","message":"it can be also done in follow up patch later","commit_id":"823620486e4e35b71898cb50f593f93f6c9a3699"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"9273805d17bd55cc5519782fce0038f5d1b25010","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        events \u003d (self.ROW_UPDATE,)"},{"line_number":69,"context_line":"        super(PortBindingChassisEvent, self).__init__("},{"line_number":70,"context_line":"            events, table, None)"},{"line_number":71,"context_line":"        self.event_name \u003d \u0027PortBindingChassisEvent\u0027"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def run(self, event, row, old):"},{"line_number":74,"context_line":"        # Check if the port has been bound/unbound to our chassis and update"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_344bc028","line":71,"in_reply_to":"3fa7e38b_566e8e2c","updated":"2019-12-06 09:50:33.000000000","message":"Yeah I can change it, but I\u0027m mostly copying over what we have in networking-ovn","commit_id":"823620486e4e35b71898cb50f593f93f6c9a3699"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4e804b14c535efd3f5e1cf785cae193ff884861b","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        events \u003d (self.ROW_CREATE,)"},{"line_number":113,"context_line":"        super(ChassisCreateEvent, self).__init__("},{"line_number":114,"context_line":"            events, table, ((\u0027name\u0027, \u0027\u003d\u0027, self.agent.chassis),))"},{"line_number":115,"context_line":"        self.event_name \u003d \u0027ChassisCreateEvent\u0027"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def run(self, event, row, old):"},{"line_number":118,"context_line":"        if self.first_time:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_f65e9a77","line":115,"updated":"2019-12-04 17:01:26.000000000","message":"ditto","commit_id":"823620486e4e35b71898cb50f593f93f6c9a3699"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4e804b14c535efd3f5e1cf785cae193ff884861b","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        table \u003d \u0027SB_Global\u0027"},{"line_number":135,"context_line":"        events \u003d (self.ROW_UPDATE,)"},{"line_number":136,"context_line":"        super(SbGlobalUpdateEvent, self).__init__(events, table, None)"},{"line_number":137,"context_line":"        self.event_name \u003d \u0027SbGlobalUpdateEvent\u0027"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def run(self, event, row, old):"},{"line_number":140,"context_line":"        self.agent.sb_idl.update_metadata_health_status("}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_d65b5e83","line":137,"updated":"2019-12-04 17:01:26.000000000","message":"ditto","commit_id":"823620486e4e35b71898cb50f593f93f6c9a3699"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4e804b14c535efd3f5e1cf785cae193ff884861b","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        \"\"\""},{"line_number":214,"context_line":"        ext_ids \u003d self.ovs_idl.db_get("},{"line_number":215,"context_line":"            \u0027Open_vSwitch\u0027, \u0027.\u0027, \u0027external_ids\u0027).execute()"},{"line_number":216,"context_line":"        try:"},{"line_number":217,"context_line":"            ovn_bridge \u003d ext_ids[\u0027ovn-bridge\u0027]"},{"line_number":218,"context_line":"        except KeyError:"},{"line_number":219,"context_line":"            LOG.warning(\"Can\u0027t read ovn-bridge external-id from OVSDB. Using \""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_56f52e50","line":216,"updated":"2019-12-04 17:01:26.000000000","message":"small nit: instead of using exceptions to control the code,\n\nif \u0027ovn-bridge\u0027 not in ext_ids:\n  Log.warning()\n  return \u0027br-int\u0027\nreturn ext_ids[\u0027ovn-bridge\u0027]","commit_id":"823620486e4e35b71898cb50f593f93f6c9a3699"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2e171d3cb6d305f4c0c3022908b9ea4f8e9478a5","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        \"\"\""},{"line_number":214,"context_line":"        ext_ids \u003d self.ovs_idl.db_get("},{"line_number":215,"context_line":"            \u0027Open_vSwitch\u0027, \u0027.\u0027, \u0027external_ids\u0027).execute()"},{"line_number":216,"context_line":"        try:"},{"line_number":217,"context_line":"            ovn_bridge \u003d ext_ids[\u0027ovn-bridge\u0027]"},{"line_number":218,"context_line":"        except KeyError:"},{"line_number":219,"context_line":"            LOG.warning(\"Can\u0027t read ovn-bridge external-id from OVSDB. Using \""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_baf46788","line":216,"in_reply_to":"3fa7e38b_56f52e50","updated":"2019-12-06 16:01:02.000000000","message":"Lets for now just move the same code as it is in networking-ovn and do such changes later in follow up patches.","commit_id":"823620486e4e35b71898cb50f593f93f6c9a3699"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b2735ec861241de258072e60b0dc8d713ec9a4b3","unresolved":false,"context_lines":[{"line_number":213,"context_line":"        \"\"\""},{"line_number":214,"context_line":"        ext_ids \u003d self.ovs_idl.db_get("},{"line_number":215,"context_line":"            \u0027Open_vSwitch\u0027, \u0027.\u0027, \u0027external_ids\u0027).execute()"},{"line_number":216,"context_line":"        try:"},{"line_number":217,"context_line":"            ovn_bridge \u003d ext_ids[\u0027ovn-bridge\u0027]"},{"line_number":218,"context_line":"        except KeyError:"},{"line_number":219,"context_line":"            LOG.warning(\"Can\u0027t read ovn-bridge external-id from OVSDB. Using \""}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_a03e78b6","line":216,"in_reply_to":"3fa7e38b_56f52e50","updated":"2019-12-06 13:31:26.000000000","message":"This is more like a coding style I would say. \"Ask forgiveness not permission\", it saves u a conditional in some cases.","commit_id":"823620486e4e35b71898cb50f593f93f6c9a3699"}],"neutron/common/ovn/constants.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2e171d3cb6d305f4c0c3022908b9ea4f8e9478a5","unresolved":false,"context_lines":[{"line_number":190,"context_line":"METADATA_DEFAULT_IP \u003d \u0027169.254.169.254\u0027"},{"line_number":191,"context_line":"METADATA_DEFAULT_CIDR \u003d \u0027%s/%d\u0027 % (METADATA_DEFAULT_IP,"},{"line_number":192,"context_line":"                                   METADATA_DEFAULT_PREFIX)"},{"line_number":193,"context_line":"METADATA_PORT \u003d 80"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_95c37c8a","line":193,"updated":"2019-12-06 16:01:02.000000000","message":"we have exactly same constants already in neutron/agent/linux/dhcp.py\nMaybe You can reuse them?","commit_id":"823620486e4e35b71898cb50f593f93f6c9a3699"}],"neutron/conf/agent/ovn/metadata/config.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c34879e0e23954f1ea0032584640bcac7498d1de","unresolved":false,"context_lines":[{"line_number":27,"context_line":"ALL_MODE \u003d \u0027all\u0027"},{"line_number":28,"context_line":"SOCKET_MODES \u003d (DEDUCE_MODE, USER_MODE, GROUP_MODE, ALL_MODE)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"SHARED_OPTS \u003d ["},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_socket\u0027,"},{"line_number":32,"context_line":"               default\u003d\u0027$state_path/metadata_proxy\u0027,"},{"line_number":33,"context_line":"               help\u003d_(\u0027Location for Metadata Proxy UNIX domain socket.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_user\u0027,"},{"line_number":35,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":36,"context_line":"               help\u003d_(\"User (uid or name) running metadata proxy after \""},{"line_number":37,"context_line":"                      \"its initialization (if empty: agent effective \""},{"line_number":38,"context_line":"                      \"user).\")),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_group\u0027,"},{"line_number":40,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":41,"context_line":"               help\u003d_(\"Group (gid or name) running metadata proxy after \""},{"line_number":42,"context_line":"                      \"its initialization (if empty: agent effective \""},{"line_number":43,"context_line":"                      \"group).\")),"},{"line_number":44,"context_line":"]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"METADATA_PROXY_HANDLER_OPTS \u003d ["},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027auth_ca_cert\u0027,"},{"line_number":49,"context_line":"               help\u003d_(\"Certificate Authority public key (CA cert) \""},{"line_number":50,"context_line":"                      \"file for ssl\")),"},{"line_number":51,"context_line":"    cfg.HostAddressOpt(\u0027nova_metadata_host\u0027,"},{"line_number":52,"context_line":"                       default\u003d\u0027127.0.0.1\u0027,"},{"line_number":53,"context_line":"                       deprecated_name\u003d\u0027nova_metadata_ip\u0027,"},{"line_number":54,"context_line":"                       help\u003d_(\"IP address or DNS name of Nova metadata \""},{"line_number":55,"context_line":"                              \"server.\")),"},{"line_number":56,"context_line":"    cfg.PortOpt(\u0027nova_metadata_port\u0027,"},{"line_number":57,"context_line":"                default\u003d8775,"},{"line_number":58,"context_line":"                help\u003d_(\"TCP Port used by Nova metadata server.\")),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_shared_secret\u0027,"},{"line_number":60,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":61,"context_line":"               help\u003d_(\u0027When proxying metadata requests, Neutron signs the \u0027"},{"line_number":62,"context_line":"                      \u0027Instance-ID header with a shared secret to prevent \u0027"},{"line_number":63,"context_line":"                      \u0027spoofing. You may select any string for a secret, \u0027"},{"line_number":64,"context_line":"                      \u0027but it must match here and in the configuration used \u0027"},{"line_number":65,"context_line":"                      \u0027by the Nova Metadata Server. NOTE: Nova uses the same \u0027"},{"line_number":66,"context_line":"                      \u0027config key, but in [neutron] section.\u0027),"},{"line_number":67,"context_line":"               secret\u003dTrue),"},{"line_number":68,"context_line":"    cfg.StrOpt(\u0027nova_metadata_protocol\u0027,"},{"line_number":69,"context_line":"               default\u003d\u0027http\u0027,"},{"line_number":70,"context_line":"               choices\u003d[\u0027http\u0027, \u0027https\u0027],"},{"line_number":71,"context_line":"               help\u003d_(\"Protocol to access nova metadata, http or https\")),"},{"line_number":72,"context_line":"    cfg.BoolOpt(\u0027nova_metadata_insecure\u0027, default\u003dFalse,"},{"line_number":73,"context_line":"                help\u003d_(\"Allow to perform insecure SSL (https) requests to \""},{"line_number":74,"context_line":"                       \"nova metadata\")),"},{"line_number":75,"context_line":"    cfg.StrOpt(\u0027nova_client_cert\u0027,"},{"line_number":76,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":77,"context_line":"               help\u003d_(\"Client certificate for nova metadata api server.\")),"},{"line_number":78,"context_line":"    cfg.StrOpt(\u0027nova_client_priv_key\u0027,"},{"line_number":79,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":80,"context_line":"               help\u003d_(\"Private key of client certificate.\"))"},{"line_number":81,"context_line":"]"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"UNIX_DOMAIN_METADATA_PROXY_OPTS \u003d ["},{"line_number":85,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_socket_mode\u0027,"},{"line_number":86,"context_line":"               default\u003dDEDUCE_MODE,"},{"line_number":87,"context_line":"               choices\u003dSOCKET_MODES,"},{"line_number":88,"context_line":"               help\u003d_(\"Metadata Proxy UNIX domain socket mode, 4 values \""},{"line_number":89,"context_line":"                      \"allowed: \""},{"line_number":90,"context_line":"                      \"\u0027deduce\u0027: deduce mode from metadata_proxy_user/group \""},{"line_number":91,"context_line":"                      \"values, \""},{"line_number":92,"context_line":"                      \"\u0027user\u0027: set metadata proxy socket mode to 0o644, to \""},{"line_number":93,"context_line":"                      \"use when metadata_proxy_user is agent effective user \""},{"line_number":94,"context_line":"                      \"or root, \""},{"line_number":95,"context_line":"                      \"\u0027group\u0027: set metadata proxy socket mode to 0o664, to \""},{"line_number":96,"context_line":"                      \"use when metadata_proxy_group is agent effective \""},{"line_number":97,"context_line":"                      \"group or root, \""},{"line_number":98,"context_line":"                      \"\u0027all\u0027: set metadata proxy socket mode to 0o666, to use \""},{"line_number":99,"context_line":"                      \"otherwise.\")),"},{"line_number":100,"context_line":"    cfg.IntOpt(\u0027metadata_workers\u0027,"},{"line_number":101,"context_line":"               default\u003dhost.cpu_count() // 2,"},{"line_number":102,"context_line":"               help\u003d_(\u0027Number of separate worker processes for metadata \u0027"},{"line_number":103,"context_line":"                      \u0027server (defaults to half of the number of CPUs)\u0027)),"},{"line_number":104,"context_line":"    cfg.IntOpt(\u0027metadata_backlog\u0027,"},{"line_number":105,"context_line":"               default\u003d4096,"},{"line_number":106,"context_line":"               help\u003d_(\u0027Number of backlog requests to configure the \u0027"},{"line_number":107,"context_line":"                      \u0027metadata server socket with\u0027))"},{"line_number":108,"context_line":"]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"OVS_OPTS \u003d ["},{"line_number":111,"context_line":"    cfg.StrOpt(\u0027ovsdb_connection\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_c175e134","line":108,"range":{"start_line":30,"start_character":0,"end_line":108,"end_character":1},"updated":"2019-12-04 11:45:59.000000000","message":"all those options (or most of them) are already defined in https://github.com/openstack/neutron/blob/master/neutron/conf/agent/metadata/config.py. Can\u0027t we simply reuse them in ovn metadata agent?","commit_id":"d75b92c81d50f3b1392594729fe41935c4fc02c7"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"99694bf7e742d5dfcb9222f34b1ff551868c8e2a","unresolved":false,"context_lines":[{"line_number":27,"context_line":"ALL_MODE \u003d \u0027all\u0027"},{"line_number":28,"context_line":"SOCKET_MODES \u003d (DEDUCE_MODE, USER_MODE, GROUP_MODE, ALL_MODE)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"SHARED_OPTS \u003d ["},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_socket\u0027,"},{"line_number":32,"context_line":"               default\u003d\u0027$state_path/metadata_proxy\u0027,"},{"line_number":33,"context_line":"               help\u003d_(\u0027Location for Metadata Proxy UNIX domain socket.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_user\u0027,"},{"line_number":35,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":36,"context_line":"               help\u003d_(\"User (uid or name) running metadata proxy after \""},{"line_number":37,"context_line":"                      \"its initialization (if empty: agent effective \""},{"line_number":38,"context_line":"                      \"user).\")),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_group\u0027,"},{"line_number":40,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":41,"context_line":"               help\u003d_(\"Group (gid or name) running metadata proxy after \""},{"line_number":42,"context_line":"                      \"its initialization (if empty: agent effective \""},{"line_number":43,"context_line":"                      \"group).\")),"},{"line_number":44,"context_line":"]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"METADATA_PROXY_HANDLER_OPTS \u003d ["},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027auth_ca_cert\u0027,"},{"line_number":49,"context_line":"               help\u003d_(\"Certificate Authority public key (CA cert) \""},{"line_number":50,"context_line":"                      \"file for ssl\")),"},{"line_number":51,"context_line":"    cfg.HostAddressOpt(\u0027nova_metadata_host\u0027,"},{"line_number":52,"context_line":"                       default\u003d\u0027127.0.0.1\u0027,"},{"line_number":53,"context_line":"                       deprecated_name\u003d\u0027nova_metadata_ip\u0027,"},{"line_number":54,"context_line":"                       help\u003d_(\"IP address or DNS name of Nova metadata \""},{"line_number":55,"context_line":"                              \"server.\")),"},{"line_number":56,"context_line":"    cfg.PortOpt(\u0027nova_metadata_port\u0027,"},{"line_number":57,"context_line":"                default\u003d8775,"},{"line_number":58,"context_line":"                help\u003d_(\"TCP Port used by Nova metadata server.\")),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_shared_secret\u0027,"},{"line_number":60,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":61,"context_line":"               help\u003d_(\u0027When proxying metadata requests, Neutron signs the \u0027"},{"line_number":62,"context_line":"                      \u0027Instance-ID header with a shared secret to prevent \u0027"},{"line_number":63,"context_line":"                      \u0027spoofing. You may select any string for a secret, \u0027"},{"line_number":64,"context_line":"                      \u0027but it must match here and in the configuration used \u0027"},{"line_number":65,"context_line":"                      \u0027by the Nova Metadata Server. NOTE: Nova uses the same \u0027"},{"line_number":66,"context_line":"                      \u0027config key, but in [neutron] section.\u0027),"},{"line_number":67,"context_line":"               secret\u003dTrue),"},{"line_number":68,"context_line":"    cfg.StrOpt(\u0027nova_metadata_protocol\u0027,"},{"line_number":69,"context_line":"               default\u003d\u0027http\u0027,"},{"line_number":70,"context_line":"               choices\u003d[\u0027http\u0027, \u0027https\u0027],"},{"line_number":71,"context_line":"               help\u003d_(\"Protocol to access nova metadata, http or https\")),"},{"line_number":72,"context_line":"    cfg.BoolOpt(\u0027nova_metadata_insecure\u0027, default\u003dFalse,"},{"line_number":73,"context_line":"                help\u003d_(\"Allow to perform insecure SSL (https) requests to \""},{"line_number":74,"context_line":"                       \"nova metadata\")),"},{"line_number":75,"context_line":"    cfg.StrOpt(\u0027nova_client_cert\u0027,"},{"line_number":76,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":77,"context_line":"               help\u003d_(\"Client certificate for nova metadata api server.\")),"},{"line_number":78,"context_line":"    cfg.StrOpt(\u0027nova_client_priv_key\u0027,"},{"line_number":79,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":80,"context_line":"               help\u003d_(\"Private key of client certificate.\"))"},{"line_number":81,"context_line":"]"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"UNIX_DOMAIN_METADATA_PROXY_OPTS \u003d ["},{"line_number":85,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_socket_mode\u0027,"},{"line_number":86,"context_line":"               default\u003dDEDUCE_MODE,"},{"line_number":87,"context_line":"               choices\u003dSOCKET_MODES,"},{"line_number":88,"context_line":"               help\u003d_(\"Metadata Proxy UNIX domain socket mode, 4 values \""},{"line_number":89,"context_line":"                      \"allowed: \""},{"line_number":90,"context_line":"                      \"\u0027deduce\u0027: deduce mode from metadata_proxy_user/group \""},{"line_number":91,"context_line":"                      \"values, \""},{"line_number":92,"context_line":"                      \"\u0027user\u0027: set metadata proxy socket mode to 0o644, to \""},{"line_number":93,"context_line":"                      \"use when metadata_proxy_user is agent effective user \""},{"line_number":94,"context_line":"                      \"or root, \""},{"line_number":95,"context_line":"                      \"\u0027group\u0027: set metadata proxy socket mode to 0o664, to \""},{"line_number":96,"context_line":"                      \"use when metadata_proxy_group is agent effective \""},{"line_number":97,"context_line":"                      \"group or root, \""},{"line_number":98,"context_line":"                      \"\u0027all\u0027: set metadata proxy socket mode to 0o666, to use \""},{"line_number":99,"context_line":"                      \"otherwise.\")),"},{"line_number":100,"context_line":"    cfg.IntOpt(\u0027metadata_workers\u0027,"},{"line_number":101,"context_line":"               default\u003dhost.cpu_count() // 2,"},{"line_number":102,"context_line":"               help\u003d_(\u0027Number of separate worker processes for metadata \u0027"},{"line_number":103,"context_line":"                      \u0027server (defaults to half of the number of CPUs)\u0027)),"},{"line_number":104,"context_line":"    cfg.IntOpt(\u0027metadata_backlog\u0027,"},{"line_number":105,"context_line":"               default\u003d4096,"},{"line_number":106,"context_line":"               help\u003d_(\u0027Number of backlog requests to configure the \u0027"},{"line_number":107,"context_line":"                      \u0027metadata server socket with\u0027))"},{"line_number":108,"context_line":"]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"OVS_OPTS \u003d ["},{"line_number":111,"context_line":"    cfg.StrOpt(\u0027ovsdb_connection\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_e5e6e6e7","line":108,"range":{"start_line":30,"start_character":0,"end_line":108,"end_character":1},"in_reply_to":"3fa7e38b_019f7902","updated":"2019-12-04 14:33:14.000000000","message":"Ack lemme look into it","commit_id":"d75b92c81d50f3b1392594729fe41935c4fc02c7"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"20acfa74c452e47bcf6db99694975f5394511208","unresolved":false,"context_lines":[{"line_number":27,"context_line":"ALL_MODE \u003d \u0027all\u0027"},{"line_number":28,"context_line":"SOCKET_MODES \u003d (DEDUCE_MODE, USER_MODE, GROUP_MODE, ALL_MODE)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"SHARED_OPTS \u003d ["},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_socket\u0027,"},{"line_number":32,"context_line":"               default\u003d\u0027$state_path/metadata_proxy\u0027,"},{"line_number":33,"context_line":"               help\u003d_(\u0027Location for Metadata Proxy UNIX domain socket.\u0027)),"},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_user\u0027,"},{"line_number":35,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":36,"context_line":"               help\u003d_(\"User (uid or name) running metadata proxy after \""},{"line_number":37,"context_line":"                      \"its initialization (if empty: agent effective \""},{"line_number":38,"context_line":"                      \"user).\")),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_group\u0027,"},{"line_number":40,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":41,"context_line":"               help\u003d_(\"Group (gid or name) running metadata proxy after \""},{"line_number":42,"context_line":"                      \"its initialization (if empty: agent effective \""},{"line_number":43,"context_line":"                      \"group).\")),"},{"line_number":44,"context_line":"]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"METADATA_PROXY_HANDLER_OPTS \u003d ["},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027auth_ca_cert\u0027,"},{"line_number":49,"context_line":"               help\u003d_(\"Certificate Authority public key (CA cert) \""},{"line_number":50,"context_line":"                      \"file for ssl\")),"},{"line_number":51,"context_line":"    cfg.HostAddressOpt(\u0027nova_metadata_host\u0027,"},{"line_number":52,"context_line":"                       default\u003d\u0027127.0.0.1\u0027,"},{"line_number":53,"context_line":"                       deprecated_name\u003d\u0027nova_metadata_ip\u0027,"},{"line_number":54,"context_line":"                       help\u003d_(\"IP address or DNS name of Nova metadata \""},{"line_number":55,"context_line":"                              \"server.\")),"},{"line_number":56,"context_line":"    cfg.PortOpt(\u0027nova_metadata_port\u0027,"},{"line_number":57,"context_line":"                default\u003d8775,"},{"line_number":58,"context_line":"                help\u003d_(\"TCP Port used by Nova metadata server.\")),"},{"line_number":59,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_shared_secret\u0027,"},{"line_number":60,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":61,"context_line":"               help\u003d_(\u0027When proxying metadata requests, Neutron signs the \u0027"},{"line_number":62,"context_line":"                      \u0027Instance-ID header with a shared secret to prevent \u0027"},{"line_number":63,"context_line":"                      \u0027spoofing. You may select any string for a secret, \u0027"},{"line_number":64,"context_line":"                      \u0027but it must match here and in the configuration used \u0027"},{"line_number":65,"context_line":"                      \u0027by the Nova Metadata Server. NOTE: Nova uses the same \u0027"},{"line_number":66,"context_line":"                      \u0027config key, but in [neutron] section.\u0027),"},{"line_number":67,"context_line":"               secret\u003dTrue),"},{"line_number":68,"context_line":"    cfg.StrOpt(\u0027nova_metadata_protocol\u0027,"},{"line_number":69,"context_line":"               default\u003d\u0027http\u0027,"},{"line_number":70,"context_line":"               choices\u003d[\u0027http\u0027, \u0027https\u0027],"},{"line_number":71,"context_line":"               help\u003d_(\"Protocol to access nova metadata, http or https\")),"},{"line_number":72,"context_line":"    cfg.BoolOpt(\u0027nova_metadata_insecure\u0027, default\u003dFalse,"},{"line_number":73,"context_line":"                help\u003d_(\"Allow to perform insecure SSL (https) requests to \""},{"line_number":74,"context_line":"                       \"nova metadata\")),"},{"line_number":75,"context_line":"    cfg.StrOpt(\u0027nova_client_cert\u0027,"},{"line_number":76,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":77,"context_line":"               help\u003d_(\"Client certificate for nova metadata api server.\")),"},{"line_number":78,"context_line":"    cfg.StrOpt(\u0027nova_client_priv_key\u0027,"},{"line_number":79,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":80,"context_line":"               help\u003d_(\"Private key of client certificate.\"))"},{"line_number":81,"context_line":"]"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"UNIX_DOMAIN_METADATA_PROXY_OPTS \u003d ["},{"line_number":85,"context_line":"    cfg.StrOpt(\u0027metadata_proxy_socket_mode\u0027,"},{"line_number":86,"context_line":"               default\u003dDEDUCE_MODE,"},{"line_number":87,"context_line":"               choices\u003dSOCKET_MODES,"},{"line_number":88,"context_line":"               help\u003d_(\"Metadata Proxy UNIX domain socket mode, 4 values \""},{"line_number":89,"context_line":"                      \"allowed: \""},{"line_number":90,"context_line":"                      \"\u0027deduce\u0027: deduce mode from metadata_proxy_user/group \""},{"line_number":91,"context_line":"                      \"values, \""},{"line_number":92,"context_line":"                      \"\u0027user\u0027: set metadata proxy socket mode to 0o644, to \""},{"line_number":93,"context_line":"                      \"use when metadata_proxy_user is agent effective user \""},{"line_number":94,"context_line":"                      \"or root, \""},{"line_number":95,"context_line":"                      \"\u0027group\u0027: set metadata proxy socket mode to 0o664, to \""},{"line_number":96,"context_line":"                      \"use when metadata_proxy_group is agent effective \""},{"line_number":97,"context_line":"                      \"group or root, \""},{"line_number":98,"context_line":"                      \"\u0027all\u0027: set metadata proxy socket mode to 0o666, to use \""},{"line_number":99,"context_line":"                      \"otherwise.\")),"},{"line_number":100,"context_line":"    cfg.IntOpt(\u0027metadata_workers\u0027,"},{"line_number":101,"context_line":"               default\u003dhost.cpu_count() // 2,"},{"line_number":102,"context_line":"               help\u003d_(\u0027Number of separate worker processes for metadata \u0027"},{"line_number":103,"context_line":"                      \u0027server (defaults to half of the number of CPUs)\u0027)),"},{"line_number":104,"context_line":"    cfg.IntOpt(\u0027metadata_backlog\u0027,"},{"line_number":105,"context_line":"               default\u003d4096,"},{"line_number":106,"context_line":"               help\u003d_(\u0027Number of backlog requests to configure the \u0027"},{"line_number":107,"context_line":"                      \u0027metadata server socket with\u0027))"},{"line_number":108,"context_line":"]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"OVS_OPTS \u003d ["},{"line_number":111,"context_line":"    cfg.StrOpt(\u0027ovsdb_connection\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_019f7902","line":108,"range":{"start_line":30,"start_character":0,"end_line":108,"end_character":1},"in_reply_to":"3fa7e38b_c175e134","updated":"2019-12-04 11:48:28.000000000","message":"It\u0027d be nice to reuse them indeed","commit_id":"d75b92c81d50f3b1392594729fe41935c4fc02c7"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4e804b14c535efd3f5e1cf785cae193ff884861b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron._i18n import _"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"OVS_OPTS \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027ovsdb_connection\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027unix:/usr/local/var/run/openvswitch/db.sock\u0027,"},{"line_number":27,"context_line":"               help\u003d_(\u0027The connection string for the native OVSDB backend.\\n\u0027"},{"line_number":28,"context_line":"                      \u0027Use tcp:IP:PORT for TCP connection.\\n\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_763b8a38","line":25,"range":{"start_line":25,"start_character":16,"end_line":25,"end_character":32},"updated":"2019-12-04 17:01:26.000000000","message":"Is this connection the same as [1]. This metadata agent will connect to OVN northbound DB, am I right??\n\n[1] https://review.opendev.org/#/c/696605/9/neutron/conf/ovn.py@29","commit_id":"823620486e4e35b71898cb50f593f93f6c9a3699"},{"author":{"_account_id":23804,"name":"Daniel Alvarez","email":"dalvarez@redhat.com","username":"dalvarez"},"change_message_id":"27d3aff23edf2369d032db69a91e0128f2d5b7ec","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from neutron._i18n import _"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"OVS_OPTS \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027ovsdb_connection\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027unix:/usr/local/var/run/openvswitch/db.sock\u0027,"},{"line_number":27,"context_line":"               help\u003d_(\u0027The connection string for the native OVSDB backend.\\n\u0027"},{"line_number":28,"context_line":"                      \u0027Use tcp:IP:PORT for TCP connection.\\n\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_6ef08adb","line":25,"range":{"start_line":25,"start_character":16,"end_line":25,"end_character":32},"in_reply_to":"3fa7e38b_763b8a38","updated":"2019-12-05 09:02:41.000000000","message":"No, it\u0027s not the same. This connection is to the local OVSDB server.\nMetadata agent establishes two OVSDB connections:\n\n- Local OVSDB server (to interact with ports, interfaces, bridges in the system) via UNIX socket by default.\n- Remote OVSDB server to Northbound OVN database which is the one you\u0027re pointing to","commit_id":"823620486e4e35b71898cb50f593f93f6c9a3699"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4e804b14c535efd3f5e1cf785cae193ff884861b","unresolved":false,"context_lines":[{"line_number":27,"context_line":"               help\u003d_(\u0027The connection string for the native OVSDB backend.\\n\u0027"},{"line_number":28,"context_line":"                      \u0027Use tcp:IP:PORT for TCP connection.\\n\u0027"},{"line_number":29,"context_line":"                      \u0027Use unix:FILE for unix domain socket connection.\u0027)),"},{"line_number":30,"context_line":"    cfg.IntOpt(\u0027ovsdb_connection_timeout\u0027,"},{"line_number":31,"context_line":"               default\u003d180,"},{"line_number":32,"context_line":"               help\u003d_(\u0027Timeout in seconds for the OVSDB \u0027"},{"line_number":33,"context_line":"                      \u0027connection transaction\u0027))"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_5640cea2","line":30,"range":{"start_line":30,"start_character":16,"end_line":30,"end_character":40},"updated":"2019-12-04 17:01:26.000000000","message":"If previous question answer is yes, then this should be [1]\n\n[1]https://review.opendev.org/#/c/696605/9/neutron/conf/ovn.py@69","commit_id":"823620486e4e35b71898cb50f593f93f6c9a3699"}]}
