)]}'
{"doc/source/admin/components.rst":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"c8cab96e71bbd2b02ccf09e7533b1ec63623707d","unresolved":false,"context_lines":[{"line_number":957,"context_line":".. attr:: webclient"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":"   .. attr:: url"},{"line_number":960,"context_line":"      :default: https://zuul.opendev.org"},{"line_number":961,"context_line":""},{"line_number":962,"context_line":"      The root URL of Zuul\u0027s web server."},{"line_number":963,"context_line":""}],"source_content_type":"text/x-rst","patch_set":37,"id":"7faddb67_af59a7fe","line":960,"updated":"2019-07-29 16:20:37.000000000","message":"This shouldn\u0027t have a default.","commit_id":"7e0c4dfec935106aa149bb3f9f20428b716f6d1e"}],"etc/zuul.conf-sample":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"9dc6d8035fa765822dd1f6f9d0e459cd2e15de5b","unresolved":false,"context_lines":[{"line_number":41,"context_line":"status_url\u003dhttps://zuul.example.com/status"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"[webclient]"},{"line_number":44,"context_line":"url\u003dhttps://zuul.opendev.org"},{"line_number":45,"context_line":"verify_ssl\u003dtrue"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"[auth zuul_operator]"}],"source_content_type":"application/octet-stream","patch_set":35,"id":"7faddb67_5515c8e3","line":44,"updated":"2019-07-17 22:15:56.000000000","message":"Can you point that at zuul.example.com?  :)","commit_id":"8741f1611ef6dc38534be5d921b6fff2e5f3c44c"}],"releasenotes/notes/admin_web_api-1331c81070a3e67f.yaml":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"d4d10fa75f8d500c855d481a5699e238b87d3989","unresolved":false,"context_lines":[{"line_number":26,"context_line":"  - |"},{"line_number":27,"context_line":"    Tenant-scoped, protected actions can be performed with the Zuul Client"},{"line_number":28,"context_line":"    by calling Zuul\u0027s REST API. The user needs to provide a valid JWT as"},{"line_number":29,"context_line":"    authentication/authorization."},{"line_number":30,"context_line":"upgrade:"},{"line_number":31,"context_line":"  - |"},{"line_number":32,"context_line":"    The \"autohold\", \"dequeue\" and \"enqueue\" endpoints are deactivated by default."}],"source_content_type":"text/x-yaml","patch_set":26,"id":"9fb8cfa7_b28162c6","line":29,"updated":"2019-06-18 17:01:28.000000000","message":"Again, let\u0027s just stick to the one note about the new feature.","commit_id":"aca74f40fee9aec83840b4c549935dbff853f779"}],"zuul/cmd/client.py":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"f373fa211767e02f48212344097be28be6fa709c","unresolved":false,"context_lines":[{"line_number":405,"context_line":"        elif \u0027web\u0027 in conf_sections:"},{"line_number":406,"context_line":"            self.log.debug(\u0027web section found in config, using REST client\u0027)"},{"line_number":407,"context_line":"            server \u003d get_default(self.config, \u0027web\u0027, \u0027listen_address\u0027,"},{"line_number":408,"context_line":"                                 \u0027https://zuul.openstack.org\u0027)"},{"line_number":409,"context_line":"            port \u003d get_default(self.config, \u0027web\u0027, \u0027port\u0027, None)"},{"line_number":410,"context_line":"            # todo this is not an original option in the web section"},{"line_number":411,"context_line":"            verify \u003d get_default(self.config, \u0027web\u0027, \u0027verify\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"7faddb67_5a09fa2e","line":408,"updated":"2019-07-09 15:52:19.000000000","message":"I\u0027m not opposed to also supporting env vars and command-line options, but I agree with Tobias that we should have a \u0027webclient\u0027 section of the config file.","commit_id":"006df38dda51b7cb584f7dd257113e7020d33414"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"9bcd0ad1e3d557e731565d2ec55a76b86920e524","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                ssl_cert, ssl_ca)"},{"line_number":405,"context_line":"        elif \u0027web\u0027 in conf_sections:"},{"line_number":406,"context_line":"            self.log.debug(\u0027web section found in config, using REST client\u0027)"},{"line_number":407,"context_line":"            server \u003d get_default(self.config, \u0027web\u0027, \u0027listen_address\u0027,"},{"line_number":408,"context_line":"                                 \u0027https://zuul.openstack.org\u0027)"},{"line_number":409,"context_line":"            port \u003d get_default(self.config, \u0027web\u0027, \u0027port\u0027, None)"},{"line_number":410,"context_line":"            # todo this is not an original option in the web section"},{"line_number":411,"context_line":"            verify \u003d get_default(self.config, \u0027web\u0027, \u0027verify\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"9fb8cfa7_54377b4e","line":408,"range":{"start_line":407,"start_character":0,"end_line":408,"end_character":62},"updated":"2019-06-21 07:22:19.000000000","message":"It looks a little bit awkward to me to reuse those server side config (especially listen_address) for the client. Instead I\u0027d suggest adding a new section webclient for those. The same is true for port as the port the client should use is often a different one when zuul-web is behind a reverse proxy.","commit_id":"006df38dda51b7cb584f7dd257113e7020d33414"},{"author":{"_account_id":7186,"name":"Matthieu Huin","email":"mhuin@redhat.com","username":"mhu"},"change_message_id":"45262f05500afe2b53561299f418fc7ce4dc1b2a","unresolved":false,"context_lines":[{"line_number":404,"context_line":"                ssl_cert, ssl_ca)"},{"line_number":405,"context_line":"        elif \u0027web\u0027 in conf_sections:"},{"line_number":406,"context_line":"            self.log.debug(\u0027web section found in config, using REST client\u0027)"},{"line_number":407,"context_line":"            server \u003d get_default(self.config, \u0027web\u0027, \u0027listen_address\u0027,"},{"line_number":408,"context_line":"                                 \u0027https://zuul.openstack.org\u0027)"},{"line_number":409,"context_line":"            port \u003d get_default(self.config, \u0027web\u0027, \u0027port\u0027, None)"},{"line_number":410,"context_line":"            # todo this is not an original option in the web section"},{"line_number":411,"context_line":"            verify \u003d get_default(self.config, \u0027web\u0027, \u0027verify\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"9fb8cfa7_cb3669e8","line":408,"range":{"start_line":407,"start_character":0,"end_line":408,"end_character":62},"in_reply_to":"9fb8cfa7_54377b4e","updated":"2019-06-21 09:07:59.000000000","message":"We could also not use a config file for just 3 parameters (really 2, as the port info can be set in the URL) and rely on command line params, or read env variables. WDYT?","commit_id":"006df38dda51b7cb584f7dd257113e7020d33414"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"c8cab96e71bbd2b02ccf09e7533b1ec63623707d","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        elif \u0027webclient\u0027 in conf_sections:"},{"line_number":402,"context_line":"            self.log.debug(\u0027web section found in config, using REST client\u0027)"},{"line_number":403,"context_line":"            server \u003d get_default(self.config, \u0027webclient\u0027, \u0027url\u0027,"},{"line_number":404,"context_line":"                                 \u0027https://zuul.opendev.org\u0027)"},{"line_number":405,"context_line":"            verify \u003d get_default(self.config, \u0027webclient\u0027, \u0027verify_ssl\u0027,"},{"line_number":406,"context_line":"                                 self.args.insecure_ssl)"},{"line_number":407,"context_line":"            client \u003d ZuulRESTClient(server, verify,"}],"source_content_type":"text/x-python","patch_set":37,"id":"7faddb67_cf5c23ef","line":404,"updated":"2019-07-29 16:20:37.000000000","message":"This shouldn\u0027t have a default.","commit_id":"7e0c4dfec935106aa149bb3f9f20428b716f6d1e"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"eeba501c5dad9c2c2184f170e6549829ee2bea94","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from zuul.lib.config import get_default"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"# todo This should probably live somewhere else"},{"line_number":36,"context_line":"class ZuulRESTClient(object):"},{"line_number":37,"context_line":"    \"\"\"Basic client for Zuul\u0027s REST API\"\"\""},{"line_number":38,"context_line":"    def __init__(self, url, verify\u003dFalse, auth_token\u003dNone):"}],"source_content_type":"text/x-python","patch_set":38,"id":"7faddb67_cbf405f4","line":35,"updated":"2019-07-30 15:26:42.000000000","message":"I agree the best place for this is zuul.lib.rpc (you can call remote procedures via the web).\n\nTo be honest, I\u0027d prefer it if we did not end up with every file in zuul named either \"client.py\" or \"server.py\".  :)","commit_id":"9d86c00111f5028bef9913835669391ad381ad32"},{"author":{"_account_id":30637,"name":"Jan Kubovy","email":"jan.kubovy@bmw.de","username":"kubovy"},"change_message_id":"6cd72a5f80e3de7cd283a33fe1a4a15324791363","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from zuul.lib.config import get_default"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"# todo This should probably live somewhere else"},{"line_number":36,"context_line":"class ZuulRESTClient(object):"},{"line_number":37,"context_line":"    \"\"\"Basic client for Zuul\u0027s REST API\"\"\""},{"line_number":38,"context_line":"    def __init__(self, url, verify\u003dFalse, auth_token\u003dNone):"}],"source_content_type":"text/x-python","patch_set":38,"id":"7faddb67_2574e835","line":35,"updated":"2019-07-30 14:06:53.000000000","message":"I agree the files are supper long and its hard to navigate in them.","commit_id":"9d86c00111f5028bef9913835669391ad381ad32"},{"author":{"_account_id":16068,"name":"Tobias Henkel","email":"tobias.henkel@bmw.de","username":"tobias.henkel"},"change_message_id":"fbd080a50b79063e30016a317fedc6124d2a23cf","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from zuul.lib.config import get_default"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"# todo This should probably live somewhere else"},{"line_number":36,"context_line":"class ZuulRESTClient(object):"},{"line_number":37,"context_line":"    \"\"\"Basic client for Zuul\u0027s REST API\"\"\""},{"line_number":38,"context_line":"    def __init__(self, url, verify\u003dFalse, auth_token\u003dNone):"}],"source_content_type":"text/x-python","patch_set":38,"id":"7faddb67_b0425867","line":35,"in_reply_to":"7faddb67_2574e835","updated":"2019-07-30 15:12:19.000000000","message":"This looks almost like the RPCClient class so it might make sense to move it there or into its own file beneath.\n\nThinking about that and comparing this with the other server client parts it might make sense to refactor the scheduler into its own module and have there a client.py containing RPCClient and RESTClient. But I\u0027m not sure if we should open this can of worms now.","commit_id":"9d86c00111f5028bef9913835669391ad381ad32"}]}
