)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"d1f5debf46ad028a22110406847a1519b5b86bb7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8ba0978e_7dd200ce","updated":"2025-04-17 14:00:43.000000000","message":"This requires a keystone token for each request. I tested it together with https://review.opendev.org/c/openstack/python-observabilityclient/+/947584 and all the observabilityclient commands worked (except for the admin api of course)","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"},{"author":{"_account_id":4264,"name":"Matthias Runge","email":"mrunge@redhat.com","username":"mrunge"},"change_message_id":"1927d60b52e132afb41cf04b225bad12b9853e10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b07a70ac_98538c2c","updated":"2025-04-25 07:25:01.000000000","message":"The precommit hook failed? \n\npyupgrade................................................................Failed\n- hook id: pyupgrade\n- exit code: 1\n- files were modified by this hook\n\nRewriting aetos/controllers/api/v1/root.py\nRewriting aetos/middleware.py\nRewriting aetos/controllers/root.py\n\npep8: 20725 C exit 1 (20.40 seconds) /home/zuul/src/opendev.org/openstack/aetos\u003e pre-commit run -a pid\u003d1758 [tox/execute/api.py:294]\n  pep8: FAIL code 1 (20.45\u003dsetup[0.05]+cmd[20.40] seconds)\n  evaluation failed :( (20.54 seconds)","commit_id":"4863293022276a0495b9ccd2622d89c75a06fffd"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"77156ab1387d09ee85525580c2214f96b67083eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4090d092_95eb2b73","in_reply_to":"b07a70ac_98538c2c","updated":"2025-04-25 07:33:08.000000000","message":"Yes. It was added in between the check and gate pipeline runs on this patch, which is why it failed now. I\u0027ll check and fix the failures.","commit_id":"4863293022276a0495b9ccd2622d89c75a06fffd"}],"aetos/controllers/api/v1/base.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"50c48a021d0c36df2d328e50dd5ec83b86bab903","unresolved":true,"context_lines":[{"line_number":28,"context_line":"        \u0027prometheus_host\u0027,"},{"line_number":29,"context_line":"        default\u003d\"localhost\","},{"line_number":30,"context_line":"        help\u003d\"The host of Prometheus\"),"},{"line_number":31,"context_line":"    cfg.IntOpt("},{"line_number":32,"context_line":"        \u0027prometheus_port\u0027,"},{"line_number":33,"context_line":"        default\u003d9090,"},{"line_number":34,"context_line":"        help\u003d\"The port of Prometheus\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"243d6166_143d7656","line":31,"range":{"start_line":31,"start_character":8,"end_line":31,"end_character":14},"updated":"2025-04-17 15:17:16.000000000","message":"Use PortOpt","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"fd212ee53d7c45f992bc9c36fb9d7779878f4757","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        \u0027prometheus_host\u0027,"},{"line_number":29,"context_line":"        default\u003d\"localhost\","},{"line_number":30,"context_line":"        help\u003d\"The host of Prometheus\"),"},{"line_number":31,"context_line":"    cfg.IntOpt("},{"line_number":32,"context_line":"        \u0027prometheus_port\u0027,"},{"line_number":33,"context_line":"        default\u003d9090,"},{"line_number":34,"context_line":"        help\u003d\"The port of Prometheus\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ad6d43e3_9f5a2a64","line":31,"range":{"start_line":31,"start_character":8,"end_line":31,"end_character":14},"in_reply_to":"243d6166_143d7656","updated":"2025-04-22 16:09:58.000000000","message":"Done","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"50c48a021d0c36df2d328e50dd5ec83b86bab903","unresolved":true,"context_lines":[{"line_number":41,"context_line":"class Base(rest.RestController):"},{"line_number":42,"context_line":"    def __init__(self):"},{"line_number":43,"context_line":"        # TODO(jwysogla): Handle TLS"},{"line_number":44,"context_line":"        host \u003d CONF.prometheus_host"},{"line_number":45,"context_line":"        port \u003d CONF.prometheus_port"},{"line_number":46,"context_line":"        url \u003d f\"{host}:{port}\""},{"line_number":47,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"b51cde10_82817f1f","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":12},"updated":"2025-04-17 15:17:16.000000000","message":"Can we add the \"prometheus_\" prefix to make it clear that this is not the host which the api service listens on ?","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"fd212ee53d7c45f992bc9c36fb9d7779878f4757","unresolved":false,"context_lines":[{"line_number":41,"context_line":"class Base(rest.RestController):"},{"line_number":42,"context_line":"    def __init__(self):"},{"line_number":43,"context_line":"        # TODO(jwysogla): Handle TLS"},{"line_number":44,"context_line":"        host \u003d CONF.prometheus_host"},{"line_number":45,"context_line":"        port \u003d CONF.prometheus_port"},{"line_number":46,"context_line":"        url \u003d f\"{host}:{port}\""},{"line_number":47,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"46d29714_4d9d5270","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":12},"in_reply_to":"b51cde10_82817f1f","updated":"2025-04-22 16:09:58.000000000","message":"Done","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"50c48a021d0c36df2d328e50dd5ec83b86bab903","unresolved":true,"context_lines":[{"line_number":44,"context_line":"        host \u003d CONF.prometheus_host"},{"line_number":45,"context_line":"        port \u003d CONF.prometheus_port"},{"line_number":46,"context_line":"        url \u003d f\"{host}:{port}\""},{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            if type(ip_address(host)) is IPv6Address:"},{"line_number":49,"context_line":"                url \u003d f\"[{host}]:{port}\""},{"line_number":50,"context_line":"        except ValueError:"},{"line_number":51,"context_line":"            # Seems like the host isn\u0027t a valid ip address,"},{"line_number":52,"context_line":"            # so we assume it\u0027s a hostname."},{"line_number":53,"context_line":"            pass"},{"line_number":54,"context_line":"        self.prometheus_client \u003d prometheus_client.PrometheusAPIClient(url)"},{"line_number":55,"context_line":"        super(object, self).__init__()"}],"source_content_type":"text/x-python","patch_set":1,"id":"83b75426_65e1f451","line":53,"range":{"start_line":47,"start_character":0,"end_line":53,"end_character":16},"updated":"2025-04-17 15:17:16.000000000","message":"There is escape_ipv6 from oslo_utilts.netutils which you can use.","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"61eb652804b8e9974ae27af20bac4ce6a36bdee5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        host \u003d CONF.prometheus_host"},{"line_number":45,"context_line":"        port \u003d CONF.prometheus_port"},{"line_number":46,"context_line":"        url \u003d f\"{host}:{port}\""},{"line_number":47,"context_line":"        try:"},{"line_number":48,"context_line":"            if type(ip_address(host)) is IPv6Address:"},{"line_number":49,"context_line":"                url \u003d f\"[{host}]:{port}\""},{"line_number":50,"context_line":"        except ValueError:"},{"line_number":51,"context_line":"            # Seems like the host isn\u0027t a valid ip address,"},{"line_number":52,"context_line":"            # so we assume it\u0027s a hostname."},{"line_number":53,"context_line":"            pass"},{"line_number":54,"context_line":"        self.prometheus_client \u003d prometheus_client.PrometheusAPIClient(url)"},{"line_number":55,"context_line":"        super(object, self).__init__()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ded79806_f81cf758","line":53,"range":{"start_line":47,"start_character":0,"end_line":53,"end_character":16},"in_reply_to":"83b75426_65e1f451","updated":"2025-04-22 16:09:35.000000000","message":"I was actually pretty surprised that Python doesn\u0027t have something like that built-in (or at least I couldn\u0027t find anything). Thanks for the hint with oslo_utils.","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"}],"aetos/keystone_client.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"50c48a021d0c36df2d328e50dd5ec83b86bab903","unresolved":true,"context_lines":[{"line_number":103,"context_line":"               default\u003dos.environ.get("},{"line_number":104,"context_line":"                   \u0027OS_INTERFACE\u0027, os.environ.get(\u0027OS_ENDPOINT_TYPE\u0027,"},{"line_number":105,"context_line":"                                                  \u0027public\u0027)),"},{"line_number":106,"context_line":"               choices\u003d(\u0027public\u0027, \u0027internal\u0027, \u0027admin\u0027, \u0027auth\u0027, \u0027publicURL\u0027,"},{"line_number":107,"context_line":"                        \u0027internalURL\u0027, \u0027adminURL\u0027),"},{"line_number":108,"context_line":"               help\u003d\u0027Type of endpoint in Identity service catalog to use for \u0027"},{"line_number":109,"context_line":"                    \u0027communication with OpenStack services.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"af4c4a70_5841aa24","line":106,"range":{"start_line":106,"start_character":56,"end_line":106,"end_character":60},"updated":"2025-04-17 15:17:16.000000000","message":"This is probably a bug in aodh but \u0027auth\u0027 is not accepted by keystone afaik.","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"61eb652804b8e9974ae27af20bac4ce6a36bdee5","unresolved":false,"context_lines":[{"line_number":103,"context_line":"               default\u003dos.environ.get("},{"line_number":104,"context_line":"                   \u0027OS_INTERFACE\u0027, os.environ.get(\u0027OS_ENDPOINT_TYPE\u0027,"},{"line_number":105,"context_line":"                                                  \u0027public\u0027)),"},{"line_number":106,"context_line":"               choices\u003d(\u0027public\u0027, \u0027internal\u0027, \u0027admin\u0027, \u0027auth\u0027, \u0027publicURL\u0027,"},{"line_number":107,"context_line":"                        \u0027internalURL\u0027, \u0027adminURL\u0027),"},{"line_number":108,"context_line":"               help\u003d\u0027Type of endpoint in Identity service catalog to use for \u0027"},{"line_number":109,"context_line":"                    \u0027communication with OpenStack services.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9dae1c70_61693fdd","line":106,"range":{"start_line":106,"start_character":56,"end_line":106,"end_character":60},"in_reply_to":"af4c4a70_5841aa24","updated":"2025-04-22 16:09:35.000000000","message":"Actually looking at the current aetos code, the interface isn\u0027t used anywhere and also looking at where it\u0027s used in aodh, we may not even need that. So I\u0027ll remove the option for now. We can put it back in the future if needed.","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"}],"aetos/service.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"50c48a021d0c36df2d328e50dd5ec83b86bab903","unresolved":true,"context_lines":[{"line_number":61,"context_line":"    ka_loading.load_auth_from_conf_options(conf, \"service_credentials\")"},{"line_number":62,"context_line":"    log.setup(conf, \u0027aetos\u0027)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    # NOTE(tkajinam): guru cannot run with service under apache daemon, so when"},{"line_number":65,"context_line":"    # aetos running with mod_wsgi, the argv is [], we don\u0027t start guru."},{"line_number":66,"context_line":"    if argv:"},{"line_number":67,"context_line":"        gmr_opts.set_defaults(conf)"},{"line_number":68,"context_line":"        gmr.TextGuruMeditation.setup_autorun(version, conf\u003dconf)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    return conf"}],"source_content_type":"text/x-python","patch_set":1,"id":"726ebf14_c1fa684d","line":68,"range":{"start_line":64,"start_character":4,"end_line":68,"end_character":64},"updated":"2025-04-17 15:17:16.000000000","message":"This part may need to be removed, unless you expect any daemon service (like aodh-evaluator)","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"61eb652804b8e9974ae27af20bac4ce6a36bdee5","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    ka_loading.load_auth_from_conf_options(conf, \"service_credentials\")"},{"line_number":62,"context_line":"    log.setup(conf, \u0027aetos\u0027)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    # NOTE(tkajinam): guru cannot run with service under apache daemon, so when"},{"line_number":65,"context_line":"    # aetos running with mod_wsgi, the argv is [], we don\u0027t start guru."},{"line_number":66,"context_line":"    if argv:"},{"line_number":67,"context_line":"        gmr_opts.set_defaults(conf)"},{"line_number":68,"context_line":"        gmr.TextGuruMeditation.setup_autorun(version, conf\u003dconf)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    return conf"}],"source_content_type":"text/x-python","patch_set":1,"id":"2a5748d3_8e2b4189","line":68,"range":{"start_line":64,"start_character":4,"end_line":68,"end_character":64},"in_reply_to":"726ebf14_c1fa684d","updated":"2025-04-22 16:09:35.000000000","message":"OK. I wasn\u0027t entirely sure what this is.","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"}],"setup.cfg":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"50c48a021d0c36df2d328e50dd5ec83b86bab903","unresolved":true,"context_lines":[{"line_number":34,"context_line":"    aetos \u003d aetos.app:build_wsgi_app"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"#console_scripts \u003d"},{"line_number":37,"context_line":"#    aetos \u003d aetos.cmd:config_generator"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"oslo.config.opts \u003d"},{"line_number":40,"context_line":"    aetos \u003d aetos.opts:list_opts"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"a1cf4c2e_ec3854c5","line":37,"updated":"2025-04-17 15:17:16.000000000","message":"(I was hoping that I could remove it from aodh as well but) IMO this wrapper is not really useful as we can run oslo-config-generator directly. See ceilometer as an example.","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"61eb652804b8e9974ae27af20bac4ce6a36bdee5","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    aetos \u003d aetos.app:build_wsgi_app"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"#console_scripts \u003d"},{"line_number":37,"context_line":"#    aetos \u003d aetos.cmd:config_generator"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"oslo.config.opts \u003d"},{"line_number":40,"context_line":"    aetos \u003d aetos.opts:list_opts"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"f8fc2346_e1b886d0","line":37,"in_reply_to":"a1cf4c2e_ec3854c5","updated":"2025-04-22 16:09:35.000000000","message":"sounds good. removed.","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"4e0d784e8fecaf5978d62fda8d3467e4b14820b6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    aetos \u003d aetos.app:build_wsgi_app"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"#console_scripts \u003d"},{"line_number":37,"context_line":"#    aetos \u003d aetos.cmd:config_generator"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"oslo.config.opts \u003d"},{"line_number":40,"context_line":"    aetos \u003d aetos.opts:list_opts"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"4877596c_dbba8f86","line":37,"in_reply_to":"f8fc2346_e1b886d0","updated":"2025-04-25 13:58:24.000000000","message":"Or I guess not removed. I\u0027ll do that in my following patch. Not sure why I thought I removed it and then left it here.","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"50c48a021d0c36df2d328e50dd5ec83b86bab903","unresolved":true,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"oslo.config.opts \u003d"},{"line_number":40,"context_line":"    aetos \u003d aetos.opts:list_opts"},{"line_number":41,"context_line":"    aetos-auth \u003d aetos.opts:list_keystoneauth_opts"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"oslo.config.opts.defaults \u003d"},{"line_number":44,"context_line":"    aetos \u003d aetos.conf.defaults:set_lib_defaults"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"01a9e098_64cfb2dd","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":14},"updated":"2025-04-17 15:17:16.000000000","message":"This entry point is missing from the input file for config file generation.","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"},{"author":{"_account_id":34975,"name":"Jaromír Wysoglad","email":"jwysogla@redhat.com","username":"jwysogla"},"change_message_id":"fd212ee53d7c45f992bc9c36fb9d7779878f4757","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"oslo.config.opts \u003d"},{"line_number":40,"context_line":"    aetos \u003d aetos.opts:list_opts"},{"line_number":41,"context_line":"    aetos-auth \u003d aetos.opts:list_keystoneauth_opts"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"oslo.config.opts.defaults \u003d"},{"line_number":44,"context_line":"    aetos \u003d aetos.conf.defaults:set_lib_defaults"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"12a51c75_43b2b1b8","line":41,"range":{"start_line":41,"start_character":4,"end_line":41,"end_character":14},"in_reply_to":"01a9e098_64cfb2dd","updated":"2025-04-22 16:09:58.000000000","message":"Done","commit_id":"b85dfcf78ce33955474521c9e1c08c00f1b5e56a"}]}
