)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"8ba0c30aee2a733021e745c2b2c5e999131d0141","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"98f275b6_21f68804","updated":"2023-06-08 07:01:54.000000000","message":"+1 because it works and the UX is good","commit_id":"879391db94a4b948e75c76533b41740349a26213"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"4842dcc95b68558e2da6e1b7f5872d1706ee9ddf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c4ccdd94_290ec0e4","updated":"2023-06-08 06:45:31.000000000","message":"the feature looks good, it works for me\nI think we need other reviewer\u0027s feedback about some detail in the patch","commit_id":"879391db94a4b948e75c76533b41740349a26213"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"2aabab80b5cf5edff7a0980b0dcdcfb29a92a7ba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"f4fb4a7d_828d3e0f","updated":"2025-09-15 18:56:28.000000000","message":"@Michael.Johnson@sas.com @gthiemon@redhat.com Could you have a look at this change? It\u0027s been almost 3 years now.","commit_id":"e002f77c3393ac79cfaacf27a78db35deb444355"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"b0a7d7ffcc74bc5ffe914af7654d982de5762b4f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"2bbed59b_4b286301","updated":"2026-04-10 14:34:13.000000000","message":"Claude Code found a couple of issues during code review. I haven\u0027t been able to test them to confirm yet so not giving -1 for now. If anyone has any testing to show they aren\u0027t issues then feel free to resolve them","commit_id":"e002f77c3393ac79cfaacf27a78db35deb444355"},{"author":{"_account_id":27442,"name":"Quentin GROLLEAU","email":"quentin.grolleau@corp.ovh.com","username":"QG"},"change_message_id":"fe48cd636cd9ed388d7c99824e405559e23cfb0f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"38d8895b_d4a3dfad","updated":"2025-09-12 13:43:17.000000000","message":"Hello team ! \nSince the last rebase on Master, Can we move forward with this patch?","commit_id":"e002f77c3393ac79cfaacf27a78db35deb444355"},{"author":{"_account_id":34034,"name":"Franciszek Przewoźny","display_name":"Franciszek Przewozny","email":"przewozny.franciszek@gmail.com","username":"fprzewozn","status":"OpenStack Engineer / SRE @ Opera Software"},"change_message_id":"a547b49f099e39d5d90d3cf546ea6dee1066079c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"c69a88e7_8f0e3d9e","updated":"2025-10-21 09:04:20.000000000","message":"Hey! Anyone with +2 abilities could have a look?","commit_id":"e002f77c3393ac79cfaacf27a78db35deb444355"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"96aaec6f20bcb89b770da383b29b35fef5176be7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"77498421_f33c52ba","updated":"2025-10-22 19:31:13.000000000","message":"The code looks ok to me, but I need to test it.","commit_id":"e002f77c3393ac79cfaacf27a78db35deb444355"}],"octavia_dashboard/static/dashboard/project/lbaasv2/workflow/listener/listener.controller.js":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"4842dcc95b68558e2da6e1b7f5872d1706ee9ddf","unresolved":true,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    function protocolChange(protocol) {"},{"line_number":57,"context_line":"      var defaultPort \u003d { HTTP: 80, TERMINATED_HTTPS: 443, PROMETHEUS: 9100 }[protocol];"},{"line_number":58,"context_line":"      var nextButtonSelector \u003d \"div.modal-footer button:nth-last-of-type(2)\";"},{"line_number":59,"context_line":"      while (listenerPortExists(defaultPort)) {"},{"line_number":60,"context_line":"        defaultPort +\u003d 1;"},{"line_number":61,"context_line":"      }"}],"source_content_type":"text/javascript","patch_set":6,"id":"e450e63f_1ebdebb8","line":58,"range":{"start_line":58,"start_character":49,"end_line":58,"end_character":75},"updated":"2023-06-08 06:45:31.000000000","message":"not sure about that, that looks a bit nasty\ndo we have a test that checks that we are disabling the \"next\" button and not another button in the dashboard? (I\u0027m thinking about future potential patches that may change the index of a button)","commit_id":"879391db94a4b948e75c76533b41740349a26213"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"27b3cdce83f04e8fdeb598b33716ece38558dd12","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    function protocolChange(protocol) {"},{"line_number":57,"context_line":"      var defaultPort \u003d { HTTP: 80, TERMINATED_HTTPS: 443, PROMETHEUS: 9100 }[protocol];"},{"line_number":58,"context_line":"      var nextButtonSelector \u003d \"div.modal-footer button:nth-last-of-type(2)\";"},{"line_number":59,"context_line":"      while (listenerPortExists(defaultPort)) {"},{"line_number":60,"context_line":"        defaultPort +\u003d 1;"},{"line_number":61,"context_line":"      }"}],"source_content_type":"text/javascript","patch_set":6,"id":"62eb8dd2_724b8afe","line":58,"range":{"start_line":58,"start_character":49,"end_line":58,"end_character":75},"in_reply_to":"380515e4_2fa90e9c","updated":"2023-08-30 17:31:37.000000000","message":"Updated","commit_id":"879391db94a4b948e75c76533b41740349a26213"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"0289a8662d58cf5ea3101e9d42e1e464dd6402d1","unresolved":true,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    function protocolChange(protocol) {"},{"line_number":57,"context_line":"      var defaultPort \u003d { HTTP: 80, TERMINATED_HTTPS: 443, PROMETHEUS: 9100 }[protocol];"},{"line_number":58,"context_line":"      var nextButtonSelector \u003d \"div.modal-footer button:nth-last-of-type(2)\";"},{"line_number":59,"context_line":"      while (listenerPortExists(defaultPort)) {"},{"line_number":60,"context_line":"        defaultPort +\u003d 1;"},{"line_number":61,"context_line":"      }"}],"source_content_type":"text/javascript","patch_set":6,"id":"380515e4_2fa90e9c","line":58,"range":{"start_line":58,"start_character":49,"end_line":58,"end_character":75},"in_reply_to":"e450e63f_1ebdebb8","updated":"2023-08-29 13:00:42.000000000","message":"I agree that hardcoding such things is bad. A quick experiment in my browser\u0027s web console showed me that `document.getElementsByClassName(\"btn btn-default next\")` should also give you that element and it seems to be less error prone. Maybe you can try to use that instead?","commit_id":"879391db94a4b948e75c76533b41740349a26213"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"4842dcc95b68558e2da6e1b7f5872d1706ee9ddf","unresolved":true,"context_lines":[{"line_number":67,"context_line":"      });"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"      if (protocol \u003d\u003d\u003d \u0027PROMETHEUS\u0027) {"},{"line_number":70,"context_line":"        $(\u0027#wizard-side-nav ul\u0027).children().slice(-4).hide();"},{"line_number":71,"context_line":"        $scope.model.context.create_pool \u003d false;"},{"line_number":72,"context_line":"        $scope.model.context.create_monitor \u003d false;"},{"line_number":73,"context_line":"        $(nextButtonSelector).attr(\"disabled\", \"\");"}],"source_content_type":"text/javascript","patch_set":6,"id":"ea515250_b9ffdb0f","line":70,"range":{"start_line":70,"start_character":44,"end_line":70,"end_character":58},"updated":"2023-06-08 06:45:31.000000000","message":"same here, it looks like a hack (ok I have to admit that the section for TERMINATED_HTTPS below looks similar)\nwe don\u0027t hide the other tabs when we click on \"Create Listener -\u003e No\" in the listener tab, should we do it when selecting PROMETHEUS?","commit_id":"879391db94a4b948e75c76533b41740349a26213"},{"author":{"_account_id":27838,"name":"Vadym Markov","email":"vmarkov@mirantis.com","username":"vmarkov"},"change_message_id":"27b3cdce83f04e8fdeb598b33716ece38558dd12","unresolved":false,"context_lines":[{"line_number":67,"context_line":"      });"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"      if (protocol \u003d\u003d\u003d \u0027PROMETHEUS\u0027) {"},{"line_number":70,"context_line":"        $(\u0027#wizard-side-nav ul\u0027).children().slice(-4).hide();"},{"line_number":71,"context_line":"        $scope.model.context.create_pool \u003d false;"},{"line_number":72,"context_line":"        $scope.model.context.create_monitor \u003d false;"},{"line_number":73,"context_line":"        $(nextButtonSelector).attr(\"disabled\", \"\");"}],"source_content_type":"text/javascript","patch_set":6,"id":"6123f3ac_ce57499f","line":70,"range":{"start_line":70,"start_character":44,"end_line":70,"end_character":58},"in_reply_to":"15b01428_13423a2d","updated":"2023-08-30 17:31:37.000000000","message":"Also updated. Linter doesn\u0027t like arrow function, so rewrote to anon function. Also, tried to select cut point based on current tab. Not sure, if select by name supports i18n","commit_id":"879391db94a4b948e75c76533b41740349a26213"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"0289a8662d58cf5ea3101e9d42e1e464dd6402d1","unresolved":true,"context_lines":[{"line_number":67,"context_line":"      });"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"      if (protocol \u003d\u003d\u003d \u0027PROMETHEUS\u0027) {"},{"line_number":70,"context_line":"        $(\u0027#wizard-side-nav ul\u0027).children().slice(-4).hide();"},{"line_number":71,"context_line":"        $scope.model.context.create_pool \u003d false;"},{"line_number":72,"context_line":"        $scope.model.context.create_monitor \u003d false;"},{"line_number":73,"context_line":"        $(nextButtonSelector).attr(\"disabled\", \"\");"}],"source_content_type":"text/javascript","patch_set":6,"id":"f08b1467_5680df23","line":70,"range":{"start_line":70,"start_character":44,"end_line":70,"end_character":58},"in_reply_to":"ea515250_b9ffdb0f","updated":"2023-08-29 13:00:42.000000000","message":"Yeah, that is not good. Please try to get the index of the slice programmatically. I\u0027ve experimented a bit, and this seems to work: `Object.values($(\u0027#wizard-side-nav ul\u0027).children()).findIndex((e) \u003d\u003e e.innerText \u003d\u003d\u003d \"Pool Members\")`. I\u0027m not a JavaScript wizard though, and there is probably a cleaner way to do this.","commit_id":"879391db94a4b948e75c76533b41740349a26213"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"b276b7d1e0b108ea0fde020dfc6987cce0111517","unresolved":true,"context_lines":[{"line_number":67,"context_line":"      });"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"      if (protocol \u003d\u003d\u003d \u0027PROMETHEUS\u0027) {"},{"line_number":70,"context_line":"        $(\u0027#wizard-side-nav ul\u0027).children().slice(-4).hide();"},{"line_number":71,"context_line":"        $scope.model.context.create_pool \u003d false;"},{"line_number":72,"context_line":"        $scope.model.context.create_monitor \u003d false;"},{"line_number":73,"context_line":"        $(nextButtonSelector).attr(\"disabled\", \"\");"}],"source_content_type":"text/javascript","patch_set":6,"id":"15b01428_13423a2d","line":70,"range":{"start_line":70,"start_character":44,"end_line":70,"end_character":58},"in_reply_to":"f08b1467_5680df23","updated":"2023-08-29 13:13:53.000000000","message":"... and regarding hiding or not. I find hiding it is a bit better, because users don\u0027t need to click through irrelevant pages in that case, but I guess it is a minor issue with \"Create Listener No\".","commit_id":"879391db94a4b948e75c76533b41740349a26213"},{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"b0a7d7ffcc74bc5ffe914af7654d982de5762b4f","unresolved":true,"context_lines":[{"line_number":77,"context_line":"        $scope.model.context.create_monitor \u003d false;"},{"line_number":78,"context_line":"        $(nextButtonSelector).attr(\"disabled\", \"\");"},{"line_number":79,"context_line":"      } else {"},{"line_number":80,"context_line":"        $(\u0027#wizard-side-nav ul\u0027).children().slice(-4).show();"},{"line_number":81,"context_line":"        $scope.model.context.create_pool \u003d true;"},{"line_number":82,"context_line":"        $scope.model.context.create_monitor \u003d true;"},{"line_number":83,"context_line":"        $(nextButtonSelector).removeAttr(\"disabled\");"}],"source_content_type":"text/javascript","patch_set":10,"id":"30b5b132_2fbe7769","line":80,"updated":"2026-04-10 14:34:13.000000000","message":"Is it possible to use something other than a magic -4 here? Any changes to the children panel will require an update to this number which isn\u0027t ideal","commit_id":"e002f77c3393ac79cfaacf27a78db35deb444355"}],"octavia_dashboard/static/dashboard/project/lbaasv2/workflow/listener/listener.controller.spec.js":[{"author":{"_account_id":38562,"name":"Richard Cruise","email":"rcruise@redhat.com","username":"rcruise"},"change_message_id":"b0a7d7ffcc74bc5ffe914af7654d982de5762b4f","unresolved":true,"context_lines":[{"line_number":88,"context_line":"      });"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"      it(\u0027should update port on protocol change to PROMETHEUS\u0027, function() {"},{"line_number":91,"context_line":"        ctrl.protocolChange(\u0027PROMETHEUS\u0027);"},{"line_number":92,"context_line":"        expect(listener.protocol_port).toBe(9100);"},{"line_number":93,"context_line":"      });"},{"line_number":94,"context_line":""}],"source_content_type":"text/javascript","patch_set":10,"id":"cea943f2_8902c72d","line":91,"updated":"2026-04-10 14:34:13.000000000","message":"I don\u0027t think this will be called when editing an existing listener, only creating one","commit_id":"e002f77c3393ac79cfaacf27a78db35deb444355"}],"octavia_dashboard/static/dashboard/project/lbaasv2/workflow/model.service.spec.js":[{"author":{"_account_id":27442,"name":"Quentin GROLLEAU","email":"quentin.grolleau@corp.ovh.com","username":"QG"},"change_message_id":"a2d09127a8ecd89687d900133b3e35b64ff58b67","unresolved":true,"context_lines":[{"line_number":868,"context_line":"      it(\u0027should initialize listener protocols\u0027, function() {"},{"line_number":869,"context_line":"        expect(model.listenerProtocols.length).toBe(7);"},{"line_number":870,"context_line":"        expect(model.listenerProtocols.indexOf(\u0027TERMINATED_HTTPS\u0027)).toBe(2);"},{"line_number":871,"context_line":"        expect(model.listenerProtocols.indexOf(\u0027PROMETHEUS\u0027).toBe(6));"},{"line_number":872,"context_line":"      });"},{"line_number":873,"context_line":"    });"},{"line_number":874,"context_line":""}],"source_content_type":"text/javascript","patch_set":3,"id":"47078d4e_3e3180d8","line":871,"updated":"2022-11-30 12:44:22.000000000","message":"Shouldn\u0027t be ?\nexpect(model.listenerProtocols.indexOf(\u0027PROMETHEUS\u0027)).toBe(6);","commit_id":"c2cc4ccdc122e6407a573b1c64bfe1cf8a59df8b"},{"author":{"_account_id":33408,"name":"Pierre-Yves Jourel","email":"pierre-yves.jourel@ovhcloud.com","username":"PYJ"},"change_message_id":"6683618037ed4662d595f844ad4201aee61f2496","unresolved":false,"context_lines":[{"line_number":868,"context_line":"      it(\u0027should initialize listener protocols\u0027, function() {"},{"line_number":869,"context_line":"        expect(model.listenerProtocols.length).toBe(7);"},{"line_number":870,"context_line":"        expect(model.listenerProtocols.indexOf(\u0027TERMINATED_HTTPS\u0027)).toBe(2);"},{"line_number":871,"context_line":"        expect(model.listenerProtocols.indexOf(\u0027PROMETHEUS\u0027).toBe(6));"},{"line_number":872,"context_line":"      });"},{"line_number":873,"context_line":"    });"},{"line_number":874,"context_line":""}],"source_content_type":"text/javascript","patch_set":3,"id":"8f4349bf_872c16fb","line":871,"in_reply_to":"03de95a7_6eaa4aa9","updated":"2022-11-30 14:49:43.000000000","message":"Yeah finally you\u0027re right. It\u0027s not 7, it\u0027s 6 and I made a typo.","commit_id":"c2cc4ccdc122e6407a573b1c64bfe1cf8a59df8b"},{"author":{"_account_id":33408,"name":"Pierre-Yves Jourel","email":"pierre-yves.jourel@ovhcloud.com","username":"PYJ"},"change_message_id":"24c21167baacc67b16c2de2815988797c4901b14","unresolved":false,"context_lines":[{"line_number":868,"context_line":"      it(\u0027should initialize listener protocols\u0027, function() {"},{"line_number":869,"context_line":"        expect(model.listenerProtocols.length).toBe(7);"},{"line_number":870,"context_line":"        expect(model.listenerProtocols.indexOf(\u0027TERMINATED_HTTPS\u0027)).toBe(2);"},{"line_number":871,"context_line":"        expect(model.listenerProtocols.indexOf(\u0027PROMETHEUS\u0027).toBe(6));"},{"line_number":872,"context_line":"      });"},{"line_number":873,"context_line":"    });"},{"line_number":874,"context_line":""}],"source_content_type":"text/javascript","patch_set":3,"id":"03de95a7_6eaa4aa9","line":871,"in_reply_to":"47078d4e_3e3180d8","updated":"2022-11-30 14:06:26.000000000","message":"yes indeed it is the 7","commit_id":"c2cc4ccdc122e6407a573b1c64bfe1cf8a59df8b"}]}
