)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34452,"name":"Joan Gilabert","display_name":"jgilaber","email":"jgilaber@redhat.com","username":"jgilaber"},"change_message_id":"ad4a95300c9470d70f91830209799ad368031884","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9810e18c_929c7c47","updated":"2026-03-25 10:53:15.000000000","message":"lgtm and is backwards compatible","commit_id":"4dda142712a302bd661395c1a067642657cc5de4"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"fed962fda8e8290d6d42e518744bc1d69deec243","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b59bda70_b3c4cba2","updated":"2026-03-25 12:24:59.000000000","message":"lgtm, thanks!","commit_id":"4dda142712a302bd661395c1a067642657cc5de4"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"7090ff6747a159141d367ad6561b35456ca43b40","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a148df47_26415676","updated":"2026-03-25 09:46:22.000000000","message":"recheck","commit_id":"4dda142712a302bd661395c1a067642657cc5de4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d12ebf2d1a95e96e4c727499b7b8623998fc0213","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"cfb2155c_6a8806f4","updated":"2026-03-25 14:28:58.000000000","message":"im ok with this version but lets see what ci says","commit_id":"924551f526a40ed9328e0ff0a5d71acff9145950"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"6964a703d6c2eea6531d328dd909cc31531c9d50","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0a90c76b_cd4103b7","updated":"2026-03-25 14:56:02.000000000","message":"recheck","commit_id":"924551f526a40ed9328e0ff0a5d71acff9145950"}],"watcher_tempest_plugin/config.py":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"310cb36532393dfbc0915f1728a35075093df1d8","unresolved":false,"context_lines":[{"line_number":97,"context_line":"             \"exporters.\","},{"line_number":98,"context_line":"    ),"},{"line_number":99,"context_line":"    cfg.StrOpt("},{"line_number":100,"context_line":"        \"prometheus_write_path\","},{"line_number":101,"context_line":"        default\u003d\"/api/v1/write\","},{"line_number":102,"context_line":"        help\u003d\"The URL path to append to the Prometheus base URL for \""},{"line_number":103,"context_line":"             \"remote write operations. Set to an empty string if the \""}],"source_content_type":"text/x-python","patch_set":1,"id":"f7ad7224_becbafbc","line":100,"in_reply_to":"36a1fa79_d1b90355","updated":"2026-03-25 08:18:46.000000000","message":"Done","commit_id":"72a70312d9e09aa65d3ffd2e948228c00c84bda9"}],"watcher_tempest_plugin/services/metric/prometheus_client.py":[{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"310cb36532393dfbc0915f1728a35075093df1d8","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                 podified_ns\u003dNone, podified_kubeconfig\u003dNone,"},{"line_number":33,"context_line":"                 prometheus_ssl_cert\u003dNone,"},{"line_number":34,"context_line":"                 prometheus_fqdn_label\u003d\"fqdn\","},{"line_number":35,"context_line":"                 write_url_path\u003d\"/api/v1/write\"):"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        # Podified Control Plane"},{"line_number":38,"context_line":"        self.is_podified \u003d (\"podified\" \u003d\u003d openstack_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"376ca0fa_6676e22a","line":35,"in_reply_to":"77115e60_ba907bb6","updated":"2026-03-25 08:18:46.000000000","message":"Done","commit_id":"72a70312d9e09aa65d3ffd2e948228c00c84bda9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"60ef1735647d1b8c36da010bba489d0f009611e4","unresolved":true,"context_lines":[{"line_number":31,"context_line":"                 proxy_host_pkey\u003dNone, proxy_host_pkey_type\u003d\u0027rsa\u0027,"},{"line_number":32,"context_line":"                 podified_ns\u003dNone, podified_kubeconfig\u003dNone,"},{"line_number":33,"context_line":"                 prometheus_ssl_cert\u003dNone,"},{"line_number":34,"context_line":"                 prometheus_fqdn_label\u003d\"fqdn\","},{"line_number":35,"context_line":"                 write_url_path\u003d\"/api/v1/write\"):"},{"line_number":36,"context_line":"        \"\"\"Initialize PromtoolClient."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        :param url: Base URL of the Prometheus server (e.g."}],"source_content_type":"text/x-python","patch_set":2,"id":"c5ad7f8d_9a4a303c","line":35,"range":{"start_line":34,"start_character":17,"end_line":35,"end_character":47},"updated":"2026-03-25 12:05:18.000000000","message":"honestly both of these should be `None`\n\nif we have a config option we shoudl not repcliate the default also in the code.\n\nthe same goes for promtool and devstack or rsa above.\n\n\ncan you use None for the new option and we can fix the other exiwsting issues seperatly.","commit_id":"4dda142712a302bd661395c1a067642657cc5de4"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"fe762775d330963f320826dc224730f3e48bd777","unresolved":false,"context_lines":[{"line_number":31,"context_line":"                 proxy_host_pkey\u003dNone, proxy_host_pkey_type\u003d\u0027rsa\u0027,"},{"line_number":32,"context_line":"                 podified_ns\u003dNone, podified_kubeconfig\u003dNone,"},{"line_number":33,"context_line":"                 prometheus_ssl_cert\u003dNone,"},{"line_number":34,"context_line":"                 prometheus_fqdn_label\u003d\"fqdn\","},{"line_number":35,"context_line":"                 write_url_path\u003d\"/api/v1/write\"):"},{"line_number":36,"context_line":"        \"\"\"Initialize PromtoolClient."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        :param url: Base URL of the Prometheus server (e.g."}],"source_content_type":"text/x-python","patch_set":2,"id":"f4f83d4a_9050c9f5","line":35,"range":{"start_line":34,"start_character":17,"end_line":35,"end_character":47},"in_reply_to":"c5ad7f8d_9a4a303c","updated":"2026-03-25 14:21:21.000000000","message":"Done","commit_id":"4dda142712a302bd661395c1a067642657cc5de4"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"fed962fda8e8290d6d42e518744bc1d69deec243","unresolved":true,"context_lines":[{"line_number":85,"context_line":"            cmd_prefix \u003d self.oc_cmd + [\"rsh\", self.prometheus_pod]"},{"line_number":86,"context_line":"            self.client.cmd_prefix \u003d \" \".join(cmd_prefix)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        self.prometheus_url \u003d url"},{"line_number":89,"context_line":"        if write_url_path and not write_url_path.startswith(\u0027/\u0027):"},{"line_number":90,"context_line":"            write_url_path \u003d \u0027/\u0027 + write_url_path"},{"line_number":91,"context_line":"        self.prometheus_write_url \u003d url + write_url_path"}],"source_content_type":"text/x-python","patch_set":2,"id":"f1ff2f7f_618dbf22","line":88,"range":{"start_line":88,"start_character":30,"end_line":88,"end_character":33},"updated":"2026-03-25 12:24:59.000000000","message":"based on https://github.com/openstack/watcher-tempest-plugin/blob/master/watcher_tempest_plugin/infra_optim_clients.py#L45\nurl will be \"http://host:port\" so below check with write_url_path will work perfectly when user does not passes /.","commit_id":"4dda142712a302bd661395c1a067642657cc5de4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"60ef1735647d1b8c36da010bba489d0f009611e4","unresolved":true,"context_lines":[{"line_number":85,"context_line":"            cmd_prefix \u003d self.oc_cmd + [\"rsh\", self.prometheus_pod]"},{"line_number":86,"context_line":"            self.client.cmd_prefix \u003d \" \".join(cmd_prefix)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        self.prometheus_url \u003d url"},{"line_number":89,"context_line":"        if write_url_path and not write_url_path.startswith(\u0027/\u0027):"},{"line_number":90,"context_line":"            write_url_path \u003d \u0027/\u0027 + write_url_path"},{"line_number":91,"context_line":"        self.prometheus_write_url \u003d url + write_url_path"},{"line_number":92,"context_line":"        self.prometheus_delete_series_url \u003d ("},{"line_number":93,"context_line":"            url + \"/api/v1/admin/tsdb/delete_series\")"},{"line_number":94,"context_line":"        # active targets"},{"line_number":95,"context_line":"        self.prometheus_targets_url \u003d url + \"/api/v1/targets?state\u003dactive\""},{"line_number":96,"context_line":"        self.prometheus_fqdn_label \u003d prometheus_fqdn_label"},{"line_number":97,"context_line":"        self.promtool_cmd \u003d [promtool_path]"},{"line_number":98,"context_line":"        if prometheus_ssl_cert:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1efa6c07_76a539b0","line":95,"range":{"start_line":88,"start_character":0,"end_line":95,"end_character":74},"updated":"2026-03-25 12:05:18.000000000","message":"we should avoid raw string concationation and use pathlib or urllib to join this\n\n```\n    from urllib import parse\n    \n    ...\n\n    # We keep the raw URL for reference/labels\n    self.prometheus_url \u003d url\n    \n    # Internal base_url ensuring a trailing slash for reliable joining\n    base_url \u003d url if url.endswith(\u0027/\u0027) else url + \u0027/\u0027\n\n    # Handle write_url_path: handles None/Empty and leading slash issues\n    clean_write_path \u003d (write_url_path or \"\").lstrip(\u0027/\u0027)\n    self.prometheus_write_url \u003d parse.urljoin(base_url, clean_write_path)\n\n    self.prometheus_delete_series_url \u003d parse.urljoin(\n        base_url, \"api/v1/admin/tsdb/delete_series\"\n    )\n\n    self.prometheus_targets_url \u003d parse.urljoin(\n        base_url, \"api/v1/targets?state\u003dactive\"\n    )\n```","commit_id":"4dda142712a302bd661395c1a067642657cc5de4"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"9b69acfc9679b4e62eeeca407301a3e18fd131be","unresolved":true,"context_lines":[{"line_number":85,"context_line":"            cmd_prefix \u003d self.oc_cmd + [\"rsh\", self.prometheus_pod]"},{"line_number":86,"context_line":"            self.client.cmd_prefix \u003d \" \".join(cmd_prefix)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        self.prometheus_url \u003d url"},{"line_number":89,"context_line":"        if write_url_path and not write_url_path.startswith(\u0027/\u0027):"},{"line_number":90,"context_line":"            write_url_path \u003d \u0027/\u0027 + write_url_path"},{"line_number":91,"context_line":"        self.prometheus_write_url \u003d url + write_url_path"},{"line_number":92,"context_line":"        self.prometheus_delete_series_url \u003d ("},{"line_number":93,"context_line":"            url + \"/api/v1/admin/tsdb/delete_series\")"},{"line_number":94,"context_line":"        # active targets"},{"line_number":95,"context_line":"        self.prometheus_targets_url \u003d url + \"/api/v1/targets?state\u003dactive\""},{"line_number":96,"context_line":"        self.prometheus_fqdn_label \u003d prometheus_fqdn_label"},{"line_number":97,"context_line":"        self.promtool_cmd \u003d [promtool_path]"},{"line_number":98,"context_line":"        if prometheus_ssl_cert:"}],"source_content_type":"text/x-python","patch_set":2,"id":"eff32d74_8d733411","line":95,"range":{"start_line":88,"start_character":0,"end_line":95,"end_character":74},"in_reply_to":"1efa6c07_76a539b0","updated":"2026-03-25 12:28:35.000000000","message":"yes +1 to use urllib or pathlib to avoid slash issue.","commit_id":"4dda142712a302bd661395c1a067642657cc5de4"},{"author":{"_account_id":16312,"name":"Alfredo Moralejo","email":"amoralej@redhat.com","username":"amoralej"},"change_message_id":"fe762775d330963f320826dc224730f3e48bd777","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            cmd_prefix \u003d self.oc_cmd + [\"rsh\", self.prometheus_pod]"},{"line_number":86,"context_line":"            self.client.cmd_prefix \u003d \" \".join(cmd_prefix)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        self.prometheus_url \u003d url"},{"line_number":89,"context_line":"        if write_url_path and not write_url_path.startswith(\u0027/\u0027):"},{"line_number":90,"context_line":"            write_url_path \u003d \u0027/\u0027 + write_url_path"},{"line_number":91,"context_line":"        self.prometheus_write_url \u003d url + write_url_path"},{"line_number":92,"context_line":"        self.prometheus_delete_series_url \u003d ("},{"line_number":93,"context_line":"            url + \"/api/v1/admin/tsdb/delete_series\")"},{"line_number":94,"context_line":"        # active targets"},{"line_number":95,"context_line":"        self.prometheus_targets_url \u003d url + \"/api/v1/targets?state\u003dactive\""},{"line_number":96,"context_line":"        self.prometheus_fqdn_label \u003d prometheus_fqdn_label"},{"line_number":97,"context_line":"        self.promtool_cmd \u003d [promtool_path]"},{"line_number":98,"context_line":"        if prometheus_ssl_cert:"}],"source_content_type":"text/x-python","patch_set":2,"id":"8e00fdb8_c73f638e","line":95,"range":{"start_line":88,"start_character":0,"end_line":95,"end_character":74},"in_reply_to":"eff32d74_8d733411","updated":"2026-03-25 14:21:21.000000000","message":"Done","commit_id":"4dda142712a302bd661395c1a067642657cc5de4"}]}
