)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c2f04fcb5f2d2846c3205d86225f7240c61480d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b70514eb_87543f0c","updated":"2022-02-13 01:29:26.000000000","message":"Very WIP","commit_id":"8221a7714766bc5e112727a99f5153840805178d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"cbc4276c7e289be25f1518e81aab2e3ba06fa422","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"c9d86232_37f8647a","updated":"2022-02-14 05:57:50.000000000","message":"Functional, but needs polish, unit test updates, and some coverage for the proxy","commit_id":"6a6a7b4da84db72025109f61f8a59ae05a208561"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"c87d13668760e7511562a23d2a522dfc0aa1a17a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"ebe6bbd5_55d346eb","updated":"2022-02-17 19:03:50.000000000","message":"first (quick) review, one question.","commit_id":"600a0903873d2006dc4fe16311fbd292c1e4699c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"edb463dd51f4e503bb4f02cd662ec4648420066c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"4d031413_4469175d","updated":"2022-02-17 16:01:24.000000000","message":"recheck\noctavia-lib has released","commit_id":"600a0903873d2006dc4fe16311fbd292c1e4699c"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"125667b31666c5c9da90d7f57c804cf08fafe1d6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"b6fa0aa6_d21ac804","updated":"2022-02-18 13:40:46.000000000","message":"LGTM but -1 because I have one additional question","commit_id":"087e0283fdae2cd55a46a814fea1eb7c4cf89c89"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"dbe56d2612612cc95b9fc3abc5fa961287aa224e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"f73729d6_eb0287d4","updated":"2022-02-17 22:32:08.000000000","message":"recheck\nupper-constraints merged","commit_id":"087e0283fdae2cd55a46a814fea1eb7c4cf89c89"}],"elements/amphora-agent/install.d/amphora-agent-source-install/prometheus-proxy.init":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aff33e9f0ab027c0ad98ba94d2209bbebd660791","unresolved":true,"context_lines":[{"line_number":55,"context_line":"  ;;"},{"line_number":56,"context_line":" restart)"},{"line_number":57,"context_line":"  # Restart the daemon."},{"line_number":58,"context_line":"  $0 stop \u0026\u0026 sleep 2 \u0026\u0026 $0 start"},{"line_number":59,"context_line":"  ;;"},{"line_number":60,"context_line":" *)"},{"line_number":61,"context_line":"  # For invalid arguments, print the usage message."}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3d73c447_f34453ad","line":58,"updated":"2022-02-22 07:19:45.000000000","message":"is this right? isn’t $0 the full command? it’s been a while since I looked at init scripts though","commit_id":"0d9674bd87fd1e3d45c529a90cc5e35c23a38250"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"30357a1c35351c1b557319b11fb4262a8c1e4b1b","unresolved":true,"context_lines":[{"line_number":55,"context_line":"  ;;"},{"line_number":56,"context_line":" restart)"},{"line_number":57,"context_line":"  # Restart the daemon."},{"line_number":58,"context_line":"  $0 stop \u0026\u0026 sleep 2 \u0026\u0026 $0 start"},{"line_number":59,"context_line":"  ;;"},{"line_number":60,"context_line":" *)"},{"line_number":61,"context_line":"  # For invalid arguments, print the usage message."}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3e91c0b9_cba083f4","line":58,"in_reply_to":"3d73c447_f34453ad","updated":"2022-02-22 16:00:48.000000000","message":"With sysvinit, the command run is the script itself, so it\u0027s basically calling back into the stop function defined here. It\u0027s odd, but how our other sysvinit scripts are setup. (not sure we care much about this anyway, but added it to be complete)","commit_id":"0d9674bd87fd1e3d45c529a90cc5e35c23a38250"}],"etc/octavia.conf":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"c87d13668760e7511562a23d2a522dfc0aa1a17a","unresolved":true,"context_lines":[{"line_number":41,"context_line":"# Enable/disable ability for users to create PING type Health Monitors"},{"line_number":42,"context_line":"# allow_ping_health_monitors \u003d True"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"# Enable/disable PROMETHESU listeners"},{"line_number":45,"context_line":"# allow_prometheus_listeners \u003d True"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# Dictionary of enabled provider driver names and descriptions"}],"source_content_type":"text/plain","patch_set":13,"id":"42124548_7b4fe6b6","line":44,"range":{"start_line":44,"start_character":17,"end_line":44,"end_character":27},"updated":"2022-02-17 19:03:50.000000000","message":"nit: typo","commit_id":"600a0903873d2006dc4fe16311fbd292c1e4699c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"dbe56d2612612cc95b9fc3abc5fa961287aa224e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"# Enable/disable ability for users to create PING type Health Monitors"},{"line_number":42,"context_line":"# allow_ping_health_monitors \u003d True"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"# Enable/disable PROMETHESU listeners"},{"line_number":45,"context_line":"# allow_prometheus_listeners \u003d True"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# Dictionary of enabled provider driver names and descriptions"}],"source_content_type":"text/plain","patch_set":13,"id":"abb6bf6a_7bb73c8e","line":44,"range":{"start_line":44,"start_character":17,"end_line":44,"end_character":27},"in_reply_to":"42124548_7b4fe6b6","updated":"2022-02-17 22:32:08.000000000","message":"Done","commit_id":"600a0903873d2006dc4fe16311fbd292c1e4699c"}],"octavia/amphorae/backends/utils/haproxy_query.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aff33e9f0ab027c0ad98ba94d2209bbebd660791","unresolved":true,"context_lines":[{"line_number":101,"context_line":"        # We don\u0027t want to report the internal prometheus proxy stats"},{"line_number":102,"context_line":"        # up to the control plane as it shouldn\u0027t be billed traffic"},{"line_number":103,"context_line":"        return [stat for stat in stats_list"},{"line_number":104,"context_line":"                if \"prometheus\" not in stat[\u0027pxname\u0027]]"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def get_pool_status(self):"},{"line_number":107,"context_line":"        \"\"\"Get status for each server and the pool as a whole."}],"source_content_type":"text/x-python","patch_set":19,"id":"d4234c68_fe199fa0","line":104,"updated":"2022-02-22 07:19:45.000000000","message":"user can’t affect this pxname, right?","commit_id":"0d9674bd87fd1e3d45c529a90cc5e35c23a38250"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"30357a1c35351c1b557319b11fb4262a8c1e4b1b","unresolved":true,"context_lines":[{"line_number":101,"context_line":"        # We don\u0027t want to report the internal prometheus proxy stats"},{"line_number":102,"context_line":"        # up to the control plane as it shouldn\u0027t be billed traffic"},{"line_number":103,"context_line":"        return [stat for stat in stats_list"},{"line_number":104,"context_line":"                if \"prometheus\" not in stat[\u0027pxname\u0027]]"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def get_pool_status(self):"},{"line_number":107,"context_line":"        \"\"\"Get status for each server and the pool as a whole."}],"source_content_type":"text/x-python","patch_set":19,"id":"6a405caf_97398928","line":104,"in_reply_to":"d4234c68_fe199fa0","updated":"2022-02-22 16:00:48.000000000","message":"Right, normally this is a uuid, but I hard coded \"prometheus\" into the internal frontend/backend ID field so it can be filtered out.","commit_id":"0d9674bd87fd1e3d45c529a90cc5e35c23a38250"}],"octavia/cmd/prometheus_proxy.py":[{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"d0f3149af70c6924a3896fb30a474387b6eb7795","unresolved":true,"context_lines":[{"line_number":755,"context_line":"                    elif PRINT_REJECTED:"},{"line_number":756,"context_line":"                        print(\"REJECTED: %s\" % line)"},{"line_number":757,"context_line":"        except Exception as e:"},{"line_number":758,"context_line":"            print(\"%s\" % str(e), flush\u003dTrue)"},{"line_number":759,"context_line":"            print(\"%s\" % traceback.print_tb(e.__traceback__), flush\u003dTrue)"},{"line_number":760,"context_line":"            self.send_response(502)"},{"line_number":761,"context_line":"            self.send_header(\"connection\", \"close\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"5b7bd889_30b758db","line":758,"range":{"start_line":758,"start_character":18,"end_line":758,"end_character":31},"updated":"2022-02-21 10:52:11.000000000","message":"This could be \"%s\" % e or just str(e).","commit_id":"087e0283fdae2cd55a46a814fea1eb7c4cf89c89"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0fa4cccc6ac1b10218b10328a9262217a32ca84e","unresolved":false,"context_lines":[{"line_number":755,"context_line":"                    elif PRINT_REJECTED:"},{"line_number":756,"context_line":"                        print(\"REJECTED: %s\" % line)"},{"line_number":757,"context_line":"        except Exception as e:"},{"line_number":758,"context_line":"            print(\"%s\" % str(e), flush\u003dTrue)"},{"line_number":759,"context_line":"            print(\"%s\" % traceback.print_tb(e.__traceback__), flush\u003dTrue)"},{"line_number":760,"context_line":"            self.send_response(502)"},{"line_number":761,"context_line":"            self.send_header(\"connection\", \"close\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"cf3c3908_fe3567e7","line":758,"range":{"start_line":758,"start_character":18,"end_line":758,"end_character":31},"in_reply_to":"5b7bd889_30b758db","updated":"2022-02-21 17:17:06.000000000","message":"Done","commit_id":"087e0283fdae2cd55a46a814fea1eb7c4cf89c89"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"d0f3149af70c6924a3896fb30a474387b6eb7795","unresolved":true,"context_lines":[{"line_number":756,"context_line":"                        print(\"REJECTED: %s\" % line)"},{"line_number":757,"context_line":"        except Exception as e:"},{"line_number":758,"context_line":"            print(\"%s\" % str(e), flush\u003dTrue)"},{"line_number":759,"context_line":"            print(\"%s\" % traceback.print_tb(e.__traceback__), flush\u003dTrue)"},{"line_number":760,"context_line":"            self.send_response(502)"},{"line_number":761,"context_line":"            self.send_header(\"connection\", \"close\")"},{"line_number":762,"context_line":"            self.end_headers()"}],"source_content_type":"text/x-python","patch_set":14,"id":"4b93c0c7_80971f41","line":759,"range":{"start_line":759,"start_character":12,"end_line":759,"end_character":73},"updated":"2022-02-21 10:52:11.000000000","message":"I\u0027m not sure why the print() is needed here. traceback_print_tb() prints the traceback itself and returns None, so I guess the print() would only print \"None\" here.","commit_id":"087e0283fdae2cd55a46a814fea1eb7c4cf89c89"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0fa4cccc6ac1b10218b10328a9262217a32ca84e","unresolved":false,"context_lines":[{"line_number":756,"context_line":"                        print(\"REJECTED: %s\" % line)"},{"line_number":757,"context_line":"        except Exception as e:"},{"line_number":758,"context_line":"            print(\"%s\" % str(e), flush\u003dTrue)"},{"line_number":759,"context_line":"            print(\"%s\" % traceback.print_tb(e.__traceback__), flush\u003dTrue)"},{"line_number":760,"context_line":"            self.send_response(502)"},{"line_number":761,"context_line":"            self.send_header(\"connection\", \"close\")"},{"line_number":762,"context_line":"            self.end_headers()"}],"source_content_type":"text/x-python","patch_set":14,"id":"06e3a249_a5d5f2c2","line":759,"range":{"start_line":759,"start_character":12,"end_line":759,"end_character":73},"in_reply_to":"4b93c0c7_80971f41","updated":"2022-02-21 17:17:06.000000000","message":"Done","commit_id":"087e0283fdae2cd55a46a814fea1eb7c4cf89c89"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aff33e9f0ab027c0ad98ba94d2209bbebd660791","unresolved":true,"context_lines":[{"line_number":727,"context_line":"    def do_GET(self):"},{"line_number":728,"context_line":"        metrics_buffer \u003d \"\""},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"        metrics_buffer \u003d self._add_cpu_utilization(metrics_buffer)"},{"line_number":731,"context_line":"        metrics_buffer \u003d self._add_memory_utilization(metrics_buffer)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":19,"id":"cd9d53aa_ec810023","line":730,"updated":"2022-02-22 07:19:45.000000000","message":"just curious what the reasoning is for adding these in this way","commit_id":"0d9674bd87fd1e3d45c529a90cc5e35c23a38250"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"30357a1c35351c1b557319b11fb4262a8c1e4b1b","unresolved":true,"context_lines":[{"line_number":727,"context_line":"    def do_GET(self):"},{"line_number":728,"context_line":"        metrics_buffer \u003d \"\""},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"        metrics_buffer \u003d self._add_cpu_utilization(metrics_buffer)"},{"line_number":731,"context_line":"        metrics_buffer \u003d self._add_memory_utilization(metrics_buffer)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":19,"id":"9f2f5340_7cdb995c","line":730,"in_reply_to":"cd9d53aa_ec810023","updated":"2022-02-22 16:00:48.000000000","message":"The idea here is to capture OS metrics early in the request, so the CPU count isn\u0027t higher due to the request. Also, this allows us a reasonable way to collect metrics outside of haproxy, cpu and RAM in this case, UDP in the future.","commit_id":"0d9674bd87fd1e3d45c529a90cc5e35c23a38250"}],"octavia/common/constants.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aff33e9f0ab027c0ad98ba94d2209bbebd660791","unresolved":true,"context_lines":[{"line_number":151,"context_line":"PROTOCOL_PROXY \u003d lib_consts.PROTOCOL_PROXY"},{"line_number":152,"context_line":"SUPPORTED_PROTOCOLS \u003d lib_consts.SUPPORTED_PROTOCOLS"},{"line_number":153,"context_line":"# \u0027PROMETHEUS\u0027"},{"line_number":154,"context_line":"PROTOCOL_PROMETHEUS \u003d lib_consts.PROTOCOL_PROMETHEUS"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"# \u0027provisioning_status\u0027"},{"line_number":157,"context_line":"PROVISIONING_STATUS \u003d lib_consts.PROVISIONING_STATUS"}],"source_content_type":"text/x-python","patch_set":19,"id":"a78fdf76_4af21814","line":154,"updated":"2022-02-22 07:19:45.000000000","message":"I thought we only needed these passthroughs for backwards compatibility with older driver code or something, and lib should be used directly, but I guess not?","commit_id":"0d9674bd87fd1e3d45c529a90cc5e35c23a38250"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"30357a1c35351c1b557319b11fb4262a8c1e4b1b","unresolved":true,"context_lines":[{"line_number":151,"context_line":"PROTOCOL_PROXY \u003d lib_consts.PROTOCOL_PROXY"},{"line_number":152,"context_line":"SUPPORTED_PROTOCOLS \u003d lib_consts.SUPPORTED_PROTOCOLS"},{"line_number":153,"context_line":"# \u0027PROMETHEUS\u0027"},{"line_number":154,"context_line":"PROTOCOL_PROMETHEUS \u003d lib_consts.PROTOCOL_PROMETHEUS"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"# \u0027provisioning_status\u0027"},{"line_number":157,"context_line":"PROVISIONING_STATUS \u003d lib_consts.PROVISIONING_STATUS"}],"source_content_type":"text/x-python","patch_set":19,"id":"1acd4e93_25e99893","line":154,"in_reply_to":"a78fdf76_4af21814","updated":"2022-02-22 16:00:48.000000000","message":"It is true, but it also helps with testing while the octavia-lib has not yet been released or added to the upper-constraints.\nThese all can be removed after this lands as a cleanup. I did a patch once, but it didn\u0027t get reviewed, so the mapping lives on.","commit_id":"0d9674bd87fd1e3d45c529a90cc5e35c23a38250"}],"octavia/common/jinja/haproxy/combined_listeners/jinja_cfg.py":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"c87d13668760e7511562a23d2a522dfc0aa1a17a","unresolved":true,"context_lines":[{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        tls_enabled \u003d False"},{"line_number":307,"context_line":"        if listener.protocol in (constants.PROTOCOL_TERMINATED_HTTPS,"},{"line_number":308,"context_line":"                                 constants.PROTOCOL_PROMETHEUS):"},{"line_number":309,"context_line":"            tls_enabled \u003d True"},{"line_number":310,"context_line":"            if listener.tls_ciphers is not None:"},{"line_number":311,"context_line":"                ret_value[\u0027tls_ciphers\u0027] \u003d listener.tls_ciphers"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a90e8dd_37e233be","line":308,"range":{"start_line":308,"start_character":33,"end_line":308,"end_character":62},"updated":"2022-02-17 19:03:50.000000000","message":"do we need to skip it if the user doesn\u0027t enable tls for prometheus?","commit_id":"600a0903873d2006dc4fe16311fbd292c1e4699c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"bb4d760a6b2137b93945127bacbafebd2b956156","unresolved":true,"context_lines":[{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        tls_enabled \u003d False"},{"line_number":307,"context_line":"        if listener.protocol in (constants.PROTOCOL_TERMINATED_HTTPS,"},{"line_number":308,"context_line":"                                 constants.PROTOCOL_PROMETHEUS):"},{"line_number":309,"context_line":"            tls_enabled \u003d True"},{"line_number":310,"context_line":"            if listener.tls_ciphers is not None:"},{"line_number":311,"context_line":"                ret_value[\u0027tls_ciphers\u0027] \u003d listener.tls_ciphers"}],"source_content_type":"text/x-python","patch_set":13,"id":"b984506d_a1365883","line":308,"range":{"start_line":308,"start_character":33,"end_line":308,"end_character":62},"in_reply_to":"7a90e8dd_37e233be","updated":"2022-02-17 19:09:13.000000000","message":"I thought the same when I coded this, but the conditionals below all handle the case where those values are not set and the rest of the code here is for associated pools and L7, which the API blocks for PROMETHEUS listeners.\nSo, this should run fine for non-TLS PROMETHEUS listeners.","commit_id":"600a0903873d2006dc4fe16311fbd292c1e4699c"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"dbe56d2612612cc95b9fc3abc5fa961287aa224e","unresolved":false,"context_lines":[{"line_number":305,"context_line":""},{"line_number":306,"context_line":"        tls_enabled \u003d False"},{"line_number":307,"context_line":"        if listener.protocol in (constants.PROTOCOL_TERMINATED_HTTPS,"},{"line_number":308,"context_line":"                                 constants.PROTOCOL_PROMETHEUS):"},{"line_number":309,"context_line":"            tls_enabled \u003d True"},{"line_number":310,"context_line":"            if listener.tls_ciphers is not None:"},{"line_number":311,"context_line":"                ret_value[\u0027tls_ciphers\u0027] \u003d listener.tls_ciphers"}],"source_content_type":"text/x-python","patch_set":13,"id":"ce2ffafa_32d68ee3","line":308,"range":{"start_line":308,"start_character":33,"end_line":308,"end_character":62},"in_reply_to":"b984506d_a1365883","updated":"2022-02-17 22:32:08.000000000","message":"Ack","commit_id":"600a0903873d2006dc4fe16311fbd292c1e4699c"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"d0f3149af70c6924a3896fb30a474387b6eb7795","unresolved":true,"context_lines":[{"line_number":171,"context_line":"        prometheus_listener \u003d False"},{"line_number":172,"context_line":"        for listener in listeners:"},{"line_number":173,"context_line":"            if listener.protocol \u003d\u003d lib_consts.PROTOCOL_PROMETHEUS:"},{"line_number":174,"context_line":"                prometheus_listener \u003d True"},{"line_number":175,"context_line":"        enable_prometheus \u003d prometheus_listener and feature_compatibility.get("},{"line_number":176,"context_line":"            lib_consts.PROTOCOL_PROMETHEUS, False)"},{"line_number":177,"context_line":"        return self._get_template().render("}],"source_content_type":"text/x-python","patch_set":14,"id":"fc853fdc_9654fa4a","line":174,"range":{"start_line":174,"start_character":16,"end_line":174,"end_character":42},"updated":"2022-02-21 10:52:11.000000000","message":"Nit, but you break out of the loop once it is set to True.","commit_id":"087e0283fdae2cd55a46a814fea1eb7c4cf89c89"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0fa4cccc6ac1b10218b10328a9262217a32ca84e","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        prometheus_listener \u003d False"},{"line_number":172,"context_line":"        for listener in listeners:"},{"line_number":173,"context_line":"            if listener.protocol \u003d\u003d lib_consts.PROTOCOL_PROMETHEUS:"},{"line_number":174,"context_line":"                prometheus_listener \u003d True"},{"line_number":175,"context_line":"        enable_prometheus \u003d prometheus_listener and feature_compatibility.get("},{"line_number":176,"context_line":"            lib_consts.PROTOCOL_PROMETHEUS, False)"},{"line_number":177,"context_line":"        return self._get_template().render("}],"source_content_type":"text/x-python","patch_set":14,"id":"7c0668cf_ed0c18a3","line":174,"range":{"start_line":174,"start_character":16,"end_line":174,"end_character":42},"in_reply_to":"fc853fdc_9654fa4a","updated":"2022-02-21 17:17:06.000000000","message":"Done","commit_id":"087e0283fdae2cd55a46a814fea1eb7c4cf89c89"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"125667b31666c5c9da90d7f57c804cf08fafe1d6","unresolved":true,"context_lines":[{"line_number":172,"context_line":"        for listener in listeners:"},{"line_number":173,"context_line":"            if listener.protocol \u003d\u003d lib_consts.PROTOCOL_PROMETHEUS:"},{"line_number":174,"context_line":"                prometheus_listener \u003d True"},{"line_number":175,"context_line":"        enable_prometheus \u003d prometheus_listener and feature_compatibility.get("},{"line_number":176,"context_line":"            lib_consts.PROTOCOL_PROMETHEUS, False)"},{"line_number":177,"context_line":"        return self._get_template().render("},{"line_number":178,"context_line":"            {\u0027loadbalancer\u0027: loadbalancer,"}],"source_content_type":"text/x-python","patch_set":14,"id":"dc1607ab_5a263bcc","line":175,"range":{"start_line":175,"start_character":8,"end_line":175,"end_character":25},"updated":"2022-02-18 13:40:46.000000000","message":"is there a way to deny the creation of the listener (or to send a notification) if the user requests a prometheus listener with an amphora (haproxy) that doesn\u0027t support it?","commit_id":"087e0283fdae2cd55a46a814fea1eb7c4cf89c89"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"b1ec64fc1e84d705bd7b083739b9e0612c33df47","unresolved":true,"context_lines":[{"line_number":172,"context_line":"        for listener in listeners:"},{"line_number":173,"context_line":"            if listener.protocol \u003d\u003d lib_consts.PROTOCOL_PROMETHEUS:"},{"line_number":174,"context_line":"                prometheus_listener \u003d True"},{"line_number":175,"context_line":"        enable_prometheus \u003d prometheus_listener and feature_compatibility.get("},{"line_number":176,"context_line":"            lib_consts.PROTOCOL_PROMETHEUS, False)"},{"line_number":177,"context_line":"        return self._get_template().render("},{"line_number":178,"context_line":"            {\u0027loadbalancer\u0027: loadbalancer,"}],"source_content_type":"text/x-python","patch_set":14,"id":"670bcf57_4650edaf","line":175,"range":{"start_line":175,"start_character":8,"end_line":175,"end_character":25},"in_reply_to":"aac6a758_309b8657","updated":"2022-02-21 05:44:22.000000000","message":"ack, I\u0027m fine with that","commit_id":"087e0283fdae2cd55a46a814fea1eb7c4cf89c89"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"4b1526355196289f0a8fa00a2743c692436f4d39","unresolved":true,"context_lines":[{"line_number":172,"context_line":"        for listener in listeners:"},{"line_number":173,"context_line":"            if listener.protocol \u003d\u003d lib_consts.PROTOCOL_PROMETHEUS:"},{"line_number":174,"context_line":"                prometheus_listener \u003d True"},{"line_number":175,"context_line":"        enable_prometheus \u003d prometheus_listener and feature_compatibility.get("},{"line_number":176,"context_line":"            lib_consts.PROTOCOL_PROMETHEUS, False)"},{"line_number":177,"context_line":"        return self._get_template().render("},{"line_number":178,"context_line":"            {\u0027loadbalancer\u0027: loadbalancer,"}],"source_content_type":"text/x-python","patch_set":14,"id":"aac6a758_309b8657","line":175,"range":{"start_line":175,"start_character":8,"end_line":175,"end_character":25},"in_reply_to":"dc1607ab_5a263bcc","updated":"2022-02-18 17:35:00.000000000","message":"The API tier does not have direct access to the amphora, so not currently.\nYou can disable the feature in the octavia configuration file if the amphora image is not able to support a prometheus listener.","commit_id":"087e0283fdae2cd55a46a814fea1eb7c4cf89c89"}]}
