)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"dc3495ee232db17987cb85ad633b933326a3bc94","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jan Kubovy \u003cjan.kubovy@bmw.de\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-04-20 14:20:13 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Mandatory Zookeeper connection for ZuulWeb"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is needed for change: I532dfb5af56a5d3074a808c4cf4a6854285636e8"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f4c43b2_04c0cce0","line":7,"updated":"2020-04-20 14:23:21.000000000","message":"Appearently this was already mandatory (just not in the test cases). So in fact this is a test refactor to supply this in the tests as well in preparation to zk based event ingestion.","commit_id":"715a23d6cb91eddeadf065228b46bd5efef4d390"}],"releasenotes/notes/zookeeper-connection-zuul-web-6e6eb06c0c2e95fa.yaml":[{"author":{"_account_id":9311,"name":"Tristan Cacqueray","email":"tdecacqu@redhat.com","username":"tristanC"},"change_message_id":"839525c4c9cd95bb620e0d6d770032d14ce9f637","unresolved":false,"context_lines":[{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    As further integration with the scale-out scheduler is planned, the"},{"line_number":5,"context_line":"    :attr:`zookeeper` section ``zuul.conf`` is marked required for Zuul Web."},{"line_number":6,"context_line":"    Please add it to your configuration."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3f4c43b2_4426546a","line":5,"range":{"start_line":5,"start_character":44,"end_line":5,"end_character":62},"updated":"2020-04-20 13:58:50.000000000","message":"ZK was already required for zuul-web to be able to report available labels and nodes.","commit_id":"715a23d6cb91eddeadf065228b46bd5efef4d390"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"dc3495ee232db17987cb85ad633b933326a3bc94","unresolved":false,"context_lines":[{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    As further integration with the scale-out scheduler is planned, the"},{"line_number":5,"context_line":"    :attr:`zookeeper` section ``zuul.conf`` is marked required for Zuul Web."},{"line_number":6,"context_line":"    Please add it to your configuration."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3f4c43b2_e4cde031","line":5,"range":{"start_line":5,"start_character":44,"end_line":5,"end_character":62},"in_reply_to":"3f4c43b2_4426546a","updated":"2020-04-20 14:23:21.000000000","message":"Oh right, it\u0027s already required since 3.4.0 [1]. I thought it was optional yet. I just validated that it\u0027s really required already [2].\n\n[1] https://zuul-ci.org/docs/zuul/reference/releasenotes.html#relnotes-3-4-0\n[2] https://opendev.org/zuul/zuul/src/branch/master/zuul/cmd/web.py#L88","commit_id":"715a23d6cb91eddeadf065228b46bd5efef4d390"}],"zuul/web/__init__.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"bf61d8277802d630ab4cc25562d5c5c516ec421f","unresolved":false,"context_lines":[{"line_number":1160,"context_line":"class ZuulWeb(object):"},{"line_number":1161,"context_line":"    log \u003d logging.getLogger(\"zuul.web.ZuulWeb\")"},{"line_number":1162,"context_line":""},{"line_number":1163,"context_line":"    def __init__(self, listen_address: str, listen_port: int,"},{"line_number":1164,"context_line":"                 gear_server: str, gear_port: int,"},{"line_number":1165,"context_line":"                 connections,"},{"line_number":1166,"context_line":"                 authenticators: zuul.lib.auth.AuthenticatorRegistry,"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f560f44_723ddec2","line":1163,"updated":"2020-08-24 20:47:40.000000000","message":"The argument reorder should be fine as we call ZuulWeb() with a **params kwargs in the command code and we use keyword args for all args in the test code.","commit_id":"ce598618efd80e1e723fad5ce2a9da73c64904df"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"30ead74bad6042e297acb2a194a9fedde192fb25","unresolved":false,"context_lines":[{"line_number":1174,"context_line":"        self.start_time \u003d time.time()  # type: float"},{"line_number":1175,"context_line":"        self.listen_address \u003d listen_address  # type: str"},{"line_number":1176,"context_line":"        self.listen_port \u003d listen_port  # type: int"},{"line_number":1177,"context_line":"        self.event_loop \u003d None  # TODO JK: Is this variable used?"},{"line_number":1178,"context_line":"        self.term \u003d None  # TODO JK: Is this variable used?"},{"line_number":1179,"context_line":"        self.server \u003d None  # type: Optional[str]"},{"line_number":1180,"context_line":"        self.static_cache_expiry \u003d static_cache_expiry  # type: int"},{"line_number":1181,"context_line":"        self.info \u003d info  # type: Optional[zuul.model.WebInfo]"}],"source_content_type":"text/x-python","patch_set":41,"id":"9f560f44_21e028f8","line":1178,"range":{"start_line":1177,"start_character":0,"end_line":1178,"end_character":59},"updated":"2020-10-12 18:29:24.000000000","message":"self.event_loop is a leftover of the transition using asyncio to the threaded cherrypy and is unused.\n\nself.term was used in the same context and is unused as well","commit_id":"93336d4d739d3ba6dfddc5c554d283b0f622accd"},{"author":{"_account_id":30637,"name":"Jan Kubovy","email":"jan.kubovy@bmw.de","username":"kubovy"},"change_message_id":"4a4a8753754ab9887e883fe9c4180cd4463e3b86","unresolved":false,"context_lines":[{"line_number":1174,"context_line":"        self.start_time \u003d time.time()  # type: float"},{"line_number":1175,"context_line":"        self.listen_address \u003d listen_address  # type: str"},{"line_number":1176,"context_line":"        self.listen_port \u003d listen_port  # type: int"},{"line_number":1177,"context_line":"        self.event_loop \u003d None  # TODO JK: Is this variable used?"},{"line_number":1178,"context_line":"        self.term \u003d None  # TODO JK: Is this variable used?"},{"line_number":1179,"context_line":"        self.server \u003d None  # type: Optional[str]"},{"line_number":1180,"context_line":"        self.static_cache_expiry \u003d static_cache_expiry  # type: int"},{"line_number":1181,"context_line":"        self.info \u003d info  # type: Optional[zuul.model.WebInfo]"}],"source_content_type":"text/x-python","patch_set":41,"id":"9f560f44_d0b5b07e","line":1178,"range":{"start_line":1177,"start_character":0,"end_line":1178,"end_character":59},"in_reply_to":"9f560f44_21e028f8","updated":"2020-10-13 05:05:06.000000000","message":"Done","commit_id":"93336d4d739d3ba6dfddc5c554d283b0f622accd"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"30ead74bad6042e297acb2a194a9fedde192fb25","unresolved":false,"context_lines":[{"line_number":1171,"context_line":"                 info: Optional[zuul.model.WebInfo]\u003dNone,"},{"line_number":1172,"context_line":"                 static_path: Optional[str]\u003dNone,"},{"line_number":1173,"context_line":"                 command_socket: Optional[str]\u003dNone):"},{"line_number":1174,"context_line":"        self.start_time \u003d time.time()  # type: float"},{"line_number":1175,"context_line":"        self.listen_address \u003d listen_address  # type: str"},{"line_number":1176,"context_line":"        self.listen_port \u003d listen_port  # type: int"},{"line_number":1177,"context_line":"        self.event_loop \u003d None  # TODO JK: Is this variable used?"},{"line_number":1178,"context_line":"        self.term \u003d None  # TODO JK: Is this variable used?"},{"line_number":1179,"context_line":"        self.server \u003d None  # type: Optional[str]"},{"line_number":1180,"context_line":"        self.static_cache_expiry \u003d static_cache_expiry  # type: int"},{"line_number":1181,"context_line":"        self.info \u003d info  # type: Optional[zuul.model.WebInfo]"},{"line_number":1182,"context_line":"        self.static_path \u003d os.path\\"},{"line_number":1183,"context_line":"            .abspath(static_path or STATIC_DIR)  # type: str"},{"line_number":1184,"context_line":"        # instanciate handlers"},{"line_number":1185,"context_line":"        self.rpc \u003d zuul.rpcclient.RPCClient(gear_server, gear_port,"},{"line_number":1186,"context_line":"                                            ssl_key, ssl_cert, ssl_ca,"}],"source_content_type":"text/x-python","patch_set":41,"id":"9f560f44_a12f183c","line":1183,"range":{"start_line":1174,"start_character":0,"end_line":1183,"end_character":60},"updated":"2020-10-12 18:29:24.000000000","message":"Since zuul is \u003e\u003dpy36 I think we should change this to real typings instead of the comment style.","commit_id":"93336d4d739d3ba6dfddc5c554d283b0f622accd"},{"author":{"_account_id":30637,"name":"Jan Kubovy","email":"jan.kubovy@bmw.de","username":"kubovy"},"change_message_id":"4a4a8753754ab9887e883fe9c4180cd4463e3b86","unresolved":false,"context_lines":[{"line_number":1171,"context_line":"                 info: Optional[zuul.model.WebInfo]\u003dNone,"},{"line_number":1172,"context_line":"                 static_path: Optional[str]\u003dNone,"},{"line_number":1173,"context_line":"                 command_socket: Optional[str]\u003dNone):"},{"line_number":1174,"context_line":"        self.start_time \u003d time.time()  # type: float"},{"line_number":1175,"context_line":"        self.listen_address \u003d listen_address  # type: str"},{"line_number":1176,"context_line":"        self.listen_port \u003d listen_port  # type: int"},{"line_number":1177,"context_line":"        self.event_loop \u003d None  # TODO JK: Is this variable used?"},{"line_number":1178,"context_line":"        self.term \u003d None  # TODO JK: Is this variable used?"},{"line_number":1179,"context_line":"        self.server \u003d None  # type: Optional[str]"},{"line_number":1180,"context_line":"        self.static_cache_expiry \u003d static_cache_expiry  # type: int"},{"line_number":1181,"context_line":"        self.info \u003d info  # type: Optional[zuul.model.WebInfo]"},{"line_number":1182,"context_line":"        self.static_path \u003d os.path\\"},{"line_number":1183,"context_line":"            .abspath(static_path or STATIC_DIR)  # type: str"},{"line_number":1184,"context_line":"        # instanciate handlers"},{"line_number":1185,"context_line":"        self.rpc \u003d zuul.rpcclient.RPCClient(gear_server, gear_port,"},{"line_number":1186,"context_line":"                                            ssl_key, ssl_cert, ssl_ca,"}],"source_content_type":"text/x-python","patch_set":41,"id":"9f560f44_30b06c8b","line":1183,"range":{"start_line":1174,"start_character":0,"end_line":1183,"end_character":60},"in_reply_to":"9f560f44_a12f183c","updated":"2020-10-13 05:05:06.000000000","message":"Done","commit_id":"93336d4d739d3ba6dfddc5c554d283b0f622accd"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"2b670ebfbf7fc927fd7ec19cd621d14617489ab5","unresolved":false,"context_lines":[{"line_number":1188,"context_line":"                                        client_id\u003d\u0027Zuul Web Server\u0027)"},{"line_number":1189,"context_line":"        self.zk_client \u003d zuul.zk.ZooKeeperClient()"},{"line_number":1190,"context_line":"        if not zk_hosts:"},{"line_number":1191,"context_line":"            raise Exception(\"Zookeeper is required!\")"},{"line_number":1192,"context_line":"        self.zk_client.connect(hosts\u003dzk_hosts, read_only\u003dTrue,"},{"line_number":1193,"context_line":"                               timeout\u003dzk_timeout, tls_cert\u003dzk_tls_cert,"},{"line_number":1194,"context_line":"                               tls_key\u003dzk_tls_key, tls_ca\u003dzk_tls_ca)"}],"source_content_type":"text/x-python","patch_set":43,"id":"7f6b1bfe_5fa34750","line":1191,"range":{"start_line":1191,"start_character":12,"end_line":1191,"end_character":53},"updated":"2020-10-13 15:08:15.000000000","message":"Minor nit: It would be more user friendly to specifically say what is missing. Something like \"The zuul ini config file must contain zookeeper connection info\"","commit_id":"93196919e7a3defee28d7186466a871b8516501d"},{"author":{"_account_id":30637,"name":"Jan Kubovy","email":"jan.kubovy@bmw.de","username":"kubovy"},"change_message_id":"0f594a3ca57a3630faf7bc5443e6e5150c3fdc7f","unresolved":false,"context_lines":[{"line_number":1188,"context_line":"                                        client_id\u003d\u0027Zuul Web Server\u0027)"},{"line_number":1189,"context_line":"        self.zk_client \u003d zuul.zk.ZooKeeperClient()"},{"line_number":1190,"context_line":"        if not zk_hosts:"},{"line_number":1191,"context_line":"            raise Exception(\"Zookeeper is required!\")"},{"line_number":1192,"context_line":"        self.zk_client.connect(hosts\u003dzk_hosts, read_only\u003dTrue,"},{"line_number":1193,"context_line":"                               timeout\u003dzk_timeout, tls_cert\u003dzk_tls_cert,"},{"line_number":1194,"context_line":"                               tls_key\u003dzk_tls_key, tls_ca\u003dzk_tls_ca)"}],"source_content_type":"text/x-python","patch_set":43,"id":"7f6b1bfe_e9787df9","line":1191,"range":{"start_line":1191,"start_character":12,"end_line":1191,"end_character":53},"in_reply_to":"7f6b1bfe_1a3b84d1","updated":"2020-10-15 09:17:39.000000000","message":"Done: yes this is a leftover.","commit_id":"93196919e7a3defee28d7186466a871b8516501d"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"b31665f44409d16c266db271e1e6d7adcb588e9a","unresolved":false,"context_lines":[{"line_number":1188,"context_line":"                                        client_id\u003d\u0027Zuul Web Server\u0027)"},{"line_number":1189,"context_line":"        self.zk_client \u003d zuul.zk.ZooKeeperClient()"},{"line_number":1190,"context_line":"        if not zk_hosts:"},{"line_number":1191,"context_line":"            raise Exception(\"Zookeeper is required!\")"},{"line_number":1192,"context_line":"        self.zk_client.connect(hosts\u003dzk_hosts, read_only\u003dTrue,"},{"line_number":1193,"context_line":"                               timeout\u003dzk_timeout, tls_cert\u003dzk_tls_cert,"},{"line_number":1194,"context_line":"                               tls_key\u003dzk_tls_key, tls_ca\u003dzk_tls_ca)"}],"source_content_type":"text/x-python","patch_set":43,"id":"7f6b1bfe_1a3b84d1","line":1191,"range":{"start_line":1191,"start_character":12,"end_line":1191,"end_character":53},"in_reply_to":"7f6b1bfe_5fa34750","updated":"2020-10-14 20:04:05.000000000","message":"Zookeeper is already required and this is already handled in cmd/web.py with a user friendly message. This change is actually just to update the test framework to comply with this.\n\nHaving said that I think there is no way that zk_hosts can be missing (except a bug in the test code). So I think we actually can just remove that check completely.","commit_id":"93196919e7a3defee28d7186466a871b8516501d"}]}
