)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"da4fa1d16fc6d3cb3f04de82f42abc41a522c606","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"e2c4f89c_f67bd3ca","updated":"2022-03-28 12:30:53.000000000","message":"recheck","commit_id":"5cdd94dabf95a925d1c8d011aaa3b5e8ef02ac6c"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"c49aab8ee1978065de136c74d848e5da536c110f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5396f624_72c0b843","updated":"2022-08-01 14:16:23.000000000","message":"I created a multi-vip LB using the CLI and checked the dashboard (with this change). It showed no LB. I opened the developer console of the web browser and saw repeated errors:\n\nUncaught (in promise) TypeError: apiService.get(...).error is not a function\n    getLoadBalancers http://multi-vip/dashboard/static/dashboard/js/output.148a1687ff01.js:1360\n    getLoadBalancersPromise http://multi-vip/dashboard/static/dashboard/js/output.148a1687ff01.js:1513\n    listResources http://multi-vip/dashboard/static/dashboard/js/output.148a1687ff01.js:628\n    resolve http://multi-vip/dashboard/static/dashboard/js/output.148a1687ff01.js:626\n    promise callback*checkForFilterFirstAndListResources http://multi-vip/dashboard/static/dashboard/js/output.148a1687ff01.js:623\n    onListFunctionExtraParamsChange http://multi-vip/dashboard/static/dashboard/js/output.148a1687ff01.js:622\n    $digest http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1638\n    $apply http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1643\n    timeoutId http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1713\n    completeTask http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1698\n    timeoutId http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1067\n    setTimeout handler*Browser/self.defer http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1067\n    timeout http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1712\n    PanelController http://multi-vip/dashboard/static/dashboard/js/output.148a1687ff01.js:1517\n    $digest http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1638\n    $apply http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1643\n    timeoutId http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1713\n    completeTask http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1698\n    timeoutId http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1067\n    setTimeout handler*Browser/self.defer http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1067\n    timeout http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1712\n    PanelController http://multi-vip/dashboard/static/dashboard/js/output.148a1687ff01.js:1517\n    $digest http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1638\n    $apply http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1643\n    timeoutId http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1713\n    completeTask http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1698\n    timeoutId http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1067\n    setTimeout handler*Browser/self.defer http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1067\n    timeout http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1712\n    PanelController http://multi-vip/dashboard/static/dashboard/js/output.148a1687ff01.js:1517\n    $digest http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1638\n    $apply http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1643\n    timeoutId http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1713\n    completeTask http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1698\n    timeoutId http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1067\n    setTimeout handler*Browser/self.defer http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1067\n    timeout http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1712\n    PanelController http://multi-vip/dashboard/static/dashboard/js/output.148a1687ff01.js:1517\n    $digest http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1638\n    $apply http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1643\n    timeoutId http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1713\n    completeTask http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1698\n    timeoutId http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1067\n    setTimeout handler*Browser/self.defer http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1067\n    timeout http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1712\n    PanelController http://multi-vip/dashboard/static/dashboard/js/output.148a1687ff01.js:1517\n    $digest http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1638\n    $apply http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1643\n    timeoutId http://multi-vip/dashboard/static/dashboard/js/output.4036ed421c82.js:1713\n    \nThen I check the response that is received from the server and it looks okay:\n\n{\n\t\"items\": [\n\t\t{\n\t\t\t\"additional_vips\": [\n\t\t\t\t{\n\t\t\t\t\t\"ip_address\": \"2001:db8::2a3\",\n\t\t\t\t\t\"subnet_id\": \"5eb248d2-ee94-4546-859d-cc52ebc9961c\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"admin_state_up\": true,\n\t\t\t\"availability_zone\": null,\n\t\t\t\"created_at\": \"2022-08-01T12:32:34\",\n\t\t\t\"description\": \"\",\n\t\t\t\"flavor_id\": null,\n\t\t\t\"floating_ip\": {},\n\t\t\t\"id\": \"af9748f0-5940-4ec9-8ae8-b25bd7d05e13\",\n\t\t\t\"is_admin_state_up\": true,\n\t\t\t\"listeners\": [\n\t\t\t\t{\n\t\t\t\t\t\"id\": \"b1b0c664-025c-4760-afb5-8c55235cde7f\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"location\": {\n\t\t\t\t\"cloud\": \"defaults\",\n\t\t\t\t\"project\": {\n\t\t\t\t\t\"domain_id\": \"None\",\n\t\t\t\t\t\"domain_name\": null,\n\t\t\t\t\t\"id\": \"cd319017651a46ffbf2484824fa8e323\",\n\t\t\t\t\t\"name\": null\n\t\t\t\t},\n\t\t\t\t\"region_name\": \"RegionOne\",\n\t\t\t\t\"zone\": null\n\t\t\t},\n\t\t\t\"name\": \"lbmv1\",\n\t\t\t\"operating_status\": \"ONLINE\",\n\t\t\t\"pools\": [\n\t\t\t\t{\n\t\t\t\t\t\"id\": \"71ddae4b-765d-4276-aabf-81e20e4154a7\"\n\t\t\t\t}\n\t\t\t],\n\t\t\t\"project_id\": \"cd319017651a46ffbf2484824fa8e323\",\n\t\t\t\"provider\": \"amphora\",\n\t\t\t\"provisioning_status\": \"ACTIVE\",\n\t\t\t\"tags\": [],\n\t\t\t\"updated_at\": \"2022-08-01T13:58:18\",\n\t\t\t\"vip_address\": \"172.24.4.197\",\n\t\t\t\"vip_network_id\": \"7d6bbe18-384a-42f2-a258-d7c95c8189e7\",\n\t\t\t\"vip_port_id\": \"600de1c9-d2b9-49ae-bc86-ecad44f9cf19\",\n\t\t\t\"vip_qos_policy_id\": null,\n\t\t\t\"vip_subnet_id\": \"7b24688a-e80c-4c30-bdd0-ab32c552e729\",\n\t\t\t\"vips\": [\n\t\t\t\t{\n\t\t\t\t\t\"id\": \"7b24688a-e80c-4c30-bdd0-ab32c552e729\",\n\t\t\t\t\t\"ip_address\": \"172.24.4.197\"\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"id\": \"5eb248d2-ee94-4546-859d-cc52ebc9961c\",\n\t\t\t\t\t\"ip_address\": \"2001:db8::2a3\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n}\n","commit_id":"8eb8a833ffdc060d25ddc9671b0cd35d4c6e0e2b"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"3207ba3c987159ac7c1930a9bd60a4dbf36341e4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1a487a1f_434f3b05","updated":"2022-04-05 11:40:43.000000000","message":"Tried out and reviewed current version.","commit_id":"8eb8a833ffdc060d25ddc9671b0cd35d4c6e0e2b"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"18dcc82155e7aacf3e8b27122afcd6a7f914fe4c","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e069d9be_17924a78","in_reply_to":"5396f624_72c0b843","updated":"2022-08-01 15:58:32.000000000","message":"open","commit_id":"8eb8a833ffdc060d25ddc9671b0cd35d4c6e0e2b"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"4ea870b58179ed3ca6e90765079f03edd3d5fe95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"70ff1d91_814f5dea","in_reply_to":"e069d9be_17924a78","updated":"2022-08-17 13:24:52.000000000","message":"this was fixed in the \"migrate to angular\" fix last week","commit_id":"8eb8a833ffdc060d25ddc9671b0cd35d4c6e0e2b"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"4ea870b58179ed3ca6e90765079f03edd3d5fe95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"42f6aee7_4e1771e0","updated":"2022-08-17 13:24:52.000000000","message":"still wip, missing code covergge","commit_id":"097034c5401c11d021e34326a9ffb4539b7829e6"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"5e5a73b05d89f5ebb44915a30054be7dd95be89d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"31a55af9_96d14232","updated":"2022-08-22 10:11:11.000000000","message":"Chrome renders the \"Available subnets\" table well, but Firefox 103.0.2 does not: https://i.imgur.com/yXYeqAd.png","commit_id":"cb8c8dcb7d4776f599590d72859f53dcb581c267"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"711c07ea39b899b97094f3bdcf79ac53f3e5a758","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"86e9c64d_32fa1661","updated":"2022-08-22 19:26:04.000000000","message":"recheck testing CI stability","commit_id":"cb8c8dcb7d4776f599590d72859f53dcb581c267"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"101a6aa92da488094c4a41defc7b96c87494a128","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3e7a5a78_f6bed7d5","in_reply_to":"0fc68878_8fa5a053","updated":"2022-08-22 10:42:46.000000000","message":"yeah, (solution 1) there\u0027s a way to assign priorities to each column, so lower-prio columns would be \"hidden\" if they don\u0027t fit with the box (we can observe this behavior in the instance creation form)\nBut it means that users with Firefox 103.0.2 would never see those columns\n\n(solution 2) we can also display only a part of the UUIDs\n\n(solution 3) Another way would be to remove the UUIDs of the subnets and networks (note that solution 1 would have the same impact on user)","commit_id":"cb8c8dcb7d4776f599590d72859f53dcb581c267"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"33d485b1a3b267ec2955f42509431d14e827cc92","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7099dfe3_5146341e","in_reply_to":"24832546_c46e2c51","updated":"2022-08-22 12:35:50.000000000","message":"table-responsive is a workaround but it also hides an important column\n\nI would rather hide the uuids (it seems that most of the forms don\u0027t show UUIDs - cf instance create)","commit_id":"cb8c8dcb7d4776f599590d72859f53dcb581c267"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"51eeb0b35e8a0976786ae068221750245adfc243","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"0fc68878_8fa5a053","in_reply_to":"31a55af9_96d14232","updated":"2022-08-22 10:19:03.000000000","message":"I just found out that Chrome does the same if the page is less than 992 pixels wide. It\u0027s probably not a critical issue, but also not ideal.","commit_id":"cb8c8dcb7d4776f599590d72859f53dcb581c267"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"ddf5031dc7b1729a760834e06151d7d593892305","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"24832546_c46e2c51","in_reply_to":"3770fcba_df26eb1c","updated":"2022-08-22 12:21:44.000000000","message":"Another solution I just found that also works for Firefox is to use div class\u003d\"table-responsive\" \n\nhttps://getbootstrap.com/docs/4.0/content/tables/#responsive-tables\n\nI think that would be a good solution.\n\nhttps://i.imgur.com/QZ5xxNV.png","commit_id":"cb8c8dcb7d4776f599590d72859f53dcb581c267"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"a7050ebc5da8ae3cde119922c1fd81f2c68684fb","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"3770fcba_df26eb1c","in_reply_to":"3e7a5a78_f6bed7d5","updated":"2022-08-22 11:27:20.000000000","message":"In Chrome, if the page width is less than 768px it gets displayed correctly too because it hides the nagivation bar on the left. This is probably the \"xs\" class. So there this issue exists only within 767px \u003c page_width \u003c 992 px, which seems to be the \"sm\" size. In Firefox this happens with all screen widths.\n\nI don\u0027t think we need to hide information. Maybe we can make the widths of the Subnet Id and Network Id smaller?","commit_id":"cb8c8dcb7d4776f599590d72859f53dcb581c267"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"ba71735fd1a75a14c0d5770a971f2e444dbe55ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7f41aad7_8e742db1","in_reply_to":"7099dfe3_5146341e","updated":"2022-08-29 14:55:06.000000000","message":"well, now we display a shortened UUID and there\u0027s a tooltip that displays the full UUID","commit_id":"cb8c8dcb7d4776f599590d72859f53dcb581c267"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"9e5f384d6025f1fbc6795256dea5b732215ef74b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"c2a5fed2_92d06847","updated":"2022-09-02 15:16:52.000000000","message":"I think this is good enough.","commit_id":"b61e81ec889b0c9d5a385e48b21601cc1f548cd8"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"28d8fad14b654447c5c80052455c5cae089ac9f6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"f18198ec_cc36c1a2","updated":"2022-09-03 07:15:32.000000000","message":"feature freeze, W-1","commit_id":"b61e81ec889b0c9d5a385e48b21601cc1f548cd8"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"b31e294212a88155a0c2ed3033c1d07993ff7ddd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"de2c0576_7d8a986d","updated":"2023-01-12 13:48:42.000000000","message":"recheck checking CI","commit_id":"c78fa2dbcee0145a89a1e4d815112592101addaf"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"c562859e153edcaacfc4e405a1a80873989e24ba","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"7e345fa0_54aa599e","updated":"2023-01-26 08:51:27.000000000","message":"recheck tox4 fixed","commit_id":"c78fa2dbcee0145a89a1e4d815112592101addaf"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"a61e9a892ddf3fcb99d8976f2497bd0547ef7563","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"8dd9470a_3077d8da","updated":"2026-03-25 21:05:34.000000000","message":"@gthiemon@redhat.com Hello, very good implementation, I think we can back to this in current cycle 😊","commit_id":"87b14b2a9292953e7a8d2a7bf59091e3307f89db"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"ee20a860bef64079cec68b6aa2a8f2c4ce20f0fd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"43df92a0_ab541e55","updated":"2023-08-31 07:21:34.000000000","message":"Note: it had a CR+2 before a trivial rebase to fix a merge conflict","commit_id":"87b14b2a9292953e7a8d2a7bf59091e3307f89db"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"826efab4a7120c4b56794b33874de16911d25b7b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"2e2307e1_4f4e7579","updated":"2023-08-31 15:37:17.000000000","message":"This should have a release note","commit_id":"87b14b2a9292953e7a8d2a7bf59091e3307f89db"}],"octavia_dashboard/api/rest/lbaasv2.py":[{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"3207ba3c987159ac7c1930a9bd60a4dbf36341e4","unresolved":true,"context_lines":[{"line_number":209,"context_line":"    additional_vips \u003d data[\u0027loadbalancer\u0027].get(\u0027vips\u0027)"},{"line_number":210,"context_line":"    if additional_vips:"},{"line_number":211,"context_line":"        build_kwargs[\u0027additional_vips\u0027] \u003d ["},{"line_number":212,"context_line":"            dict("},{"line_number":213,"context_line":"                subnet_id\u003dvip[\u0027id\u0027],"},{"line_number":214,"context_line":"                ip_address\u003dvip.get(\u0027ip_address\u0027)"},{"line_number":215,"context_line":"            )"},{"line_number":216,"context_line":"            for vip in additional_vips]"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    loadbalancer \u003d conn.load_balancer.create_load_balancer(**build_kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"a7795fd7_b55fe057","line":215,"range":{"start_line":212,"start_character":12,"end_line":215,"end_character":13},"updated":"2022-04-05 11:40:43.000000000","message":"In general, I would try to use literal {} for creating dicts. It is also a bit more efficient (not that it matters much here).\n\ntimeit.timeit(\u0027[dict(a\u003dx, b\u003dx) for x in range(10)]\u0027)\n1.3747512779991666\ntimeit.timeit(\u0027[{\"a\": x, \"b\": x} for x in range(10)]\u0027)\n1.1170052670004225","commit_id":"8eb8a833ffdc060d25ddc9671b0cd35d4c6e0e2b"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"4ea870b58179ed3ca6e90765079f03edd3d5fe95","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    additional_vips \u003d data[\u0027loadbalancer\u0027].get(\u0027vips\u0027)"},{"line_number":210,"context_line":"    if additional_vips:"},{"line_number":211,"context_line":"        build_kwargs[\u0027additional_vips\u0027] \u003d ["},{"line_number":212,"context_line":"            dict("},{"line_number":213,"context_line":"                subnet_id\u003dvip[\u0027id\u0027],"},{"line_number":214,"context_line":"                ip_address\u003dvip.get(\u0027ip_address\u0027)"},{"line_number":215,"context_line":"            )"},{"line_number":216,"context_line":"            for vip in additional_vips]"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    loadbalancer \u003d conn.load_balancer.create_load_balancer(**build_kwargs)"}],"source_content_type":"text/x-python","patch_set":3,"id":"f35e02d5_f568bf54","line":215,"range":{"start_line":212,"start_character":12,"end_line":215,"end_character":13},"in_reply_to":"a7795fd7_b55fe057","updated":"2022-08-17 13:24:52.000000000","message":"Done","commit_id":"8eb8a833ffdc060d25ddc9671b0cd35d4c6e0e2b"}],"octavia_dashboard/static/dashboard/project/lbaasv2/loadbalancers/actions/associate-ip/modal.controller.js":[{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"3207ba3c987159ac7c1930a9bd60a4dbf36341e4","unresolved":true,"context_lines":[{"line_number":54,"context_line":"    patterns"},{"line_number":55,"context_line":"  ) {"},{"line_number":56,"context_line":"    var ctrl \u003d this;"},{"line_number":57,"context_line":"    var vipAddress \u003d loadbalancer.vips.filter(function(vip) {"},{"line_number":58,"context_line":"      return vip.ip_address.match(patterns.ipv4);"},{"line_number":59,"context_line":"    }).map(function(vip) {"},{"line_number":60,"context_line":"      return vip.ip_address;"},{"line_number":61,"context_line":"    })[0];"},{"line_number":62,"context_line":"    var port \u003d loadbalancer.vip_port_id + \u0027_\u0027 + vipAddress;"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    ctrl.cancel \u003d cancel;"}],"source_content_type":"text/javascript","patch_set":3,"id":"cecda1d7_f30ece2f","line":61,"range":{"start_line":57,"start_character":4,"end_line":61,"end_character":10},"updated":"2022-04-05 11:40:43.000000000","message":"Is there reason not to use arrow functions? This would be so much more readable:\n\n    var vipAddress \u003d loadbalancer.vips.filter(\n       vip \u003d\u003e vip.ip_address.match(patterns.ipv4)\n    ).map(vip \u003d\u003e vip.ip_address)[0];","commit_id":"8eb8a833ffdc060d25ddc9671b0cd35d4c6e0e2b"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"a7050ebc5da8ae3cde119922c1fd81f2c68684fb","unresolved":true,"context_lines":[{"line_number":44,"context_line":"   * @param loadbalancer The load balancer to associate the floating IP with."},{"line_number":45,"context_line":"   * @param floatingIps List of available floating IP addresses."},{"line_number":46,"context_line":"   * @param floatingIpPools List of available floating IP pools."},{"line_number":47,"context_line":"   * @param pattenrs The lbaasv2 pattern model."},{"line_number":48,"context_line":"   *"},{"line_number":49,"context_line":"   * @returns The Associate Floating IP modal controller."},{"line_number":50,"context_line":"   */"}],"source_content_type":"text/javascript","patch_set":6,"id":"ee8caa27_3b99d510","line":47,"range":{"start_line":47,"start_character":12,"end_line":47,"end_character":20},"updated":"2022-08-22 11:27:20.000000000","message":"typo","commit_id":"cb8c8dcb7d4776f599590d72859f53dcb581c267"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"ba71735fd1a75a14c0d5770a971f2e444dbe55ec","unresolved":false,"context_lines":[{"line_number":44,"context_line":"   * @param loadbalancer The load balancer to associate the floating IP with."},{"line_number":45,"context_line":"   * @param floatingIps List of available floating IP addresses."},{"line_number":46,"context_line":"   * @param floatingIpPools List of available floating IP pools."},{"line_number":47,"context_line":"   * @param pattenrs The lbaasv2 pattern model."},{"line_number":48,"context_line":"   *"},{"line_number":49,"context_line":"   * @returns The Associate Floating IP modal controller."},{"line_number":50,"context_line":"   */"}],"source_content_type":"text/javascript","patch_set":6,"id":"bac09bf1_3e47d8f9","line":47,"range":{"start_line":47,"start_character":12,"end_line":47,"end_character":20},"in_reply_to":"ee8caa27_3b99d510","updated":"2022-08-29 14:55:06.000000000","message":"Done","commit_id":"cb8c8dcb7d4776f599590d72859f53dcb581c267"}],"octavia_dashboard/static/dashboard/project/lbaasv2/loadbalancers/details/detail.controller.spec.js":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"9e5f384d6025f1fbc6795256dea5b732215ef74b","unresolved":true,"context_lines":[{"line_number":131,"context_line":"    describe(\u0027helpers\u0027, function() {"},{"line_number":132,"context_line":"      it(\u0027displays the list of VIP addresses\u0027, function() {"},{"line_number":133,"context_line":"        var addresses \u003d ["},{"line_number":134,"context_line":"          {ip_address: \u00271.1.1.1\u0027},"},{"line_number":135,"context_line":"          {ip_address: \u00272.2.2.2\u0027}"},{"line_number":136,"context_line":"        ];"},{"line_number":137,"context_line":"        expect(ctrl.VIPAddresses(addresses)).toBe(\u00271.1.1.1, 2.2.2.2\u0027);"}],"source_content_type":"text/javascript","patch_set":10,"id":"207cc944_75fa056a","line":134,"updated":"2022-09-02 15:16:52.000000000","message":"These should be test IPs.","commit_id":"b61e81ec889b0c9d5a385e48b21601cc1f548cd8"}],"octavia_dashboard/static/dashboard/project/lbaasv2/workflow/loadbalancer/loadbalancer.controller.spec.js":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"9e5f384d6025f1fbc6795256dea5b732215ef74b","unresolved":true,"context_lines":[{"line_number":107,"context_line":"          subnets: [{"},{"line_number":108,"context_line":"            network_id: \u00275d658cef-3402-4474-bb8a-0c1162efd9a9\u0027,"},{"line_number":109,"context_line":"            id: \u0027d8056c7e-c810-4ee5-978e-177cb4154d81\u0027,"},{"line_number":110,"context_line":"            cidr: \u00272.2.2.2/16\u0027,"},{"line_number":111,"context_line":"            name: \u0027subnet_1\u0027"},{"line_number":112,"context_line":"          },{"},{"line_number":113,"context_line":"            network_id: \u00275d658cef-3402-4474-bb8a-0c1162efd9a9\u0027,"}],"source_content_type":"text/javascript","patch_set":10,"id":"c0a9c6fb_7469f7cf","line":110,"updated":"2022-09-02 15:16:52.000000000","message":"These should be test IPs.","commit_id":"b61e81ec889b0c9d5a385e48b21601cc1f548cd8"}],"octavia_dashboard/static/dashboard/project/lbaasv2/workflow/loadbalancer/loadbalancer.html":[{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"a7050ebc5da8ae3cde119922c1fd81f2c68684fb","unresolved":true,"context_lines":[{"line_number":163,"context_line":"                hz-table class\u003d\"table table-striped table-rsp table-detail\"\u003e"},{"line_number":164,"context_line":"            \u003cthead\u003e"},{"line_number":165,"context_line":"              \u003ctr\u003e"},{"line_number":166,"context_line":"                \u003cth class\u003d\"search-header\" colspan\u003d\"5\"\u003e"},{"line_number":167,"context_line":"                  \u003chz-search-bar icon-classes\u003d\"fa-search\"\u003e\u003c/hz-search-bar\u003e"},{"line_number":168,"context_line":"                \u003c/th\u003e"},{"line_number":169,"context_line":"              \u003c/tr\u003e"}],"source_content_type":"text/html","patch_set":6,"id":"e3c1eca5_0cd3e88a","line":166,"range":{"start_line":166,"start_character":51,"end_line":166,"end_character":52},"updated":"2022-08-22 11:27:20.000000000","message":"This should be 6 to span over all table columns.","commit_id":"cb8c8dcb7d4776f599590d72859f53dcb581c267"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"ba71735fd1a75a14c0d5770a971f2e444dbe55ec","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                hz-table class\u003d\"table table-striped table-rsp table-detail\"\u003e"},{"line_number":164,"context_line":"            \u003cthead\u003e"},{"line_number":165,"context_line":"              \u003ctr\u003e"},{"line_number":166,"context_line":"                \u003cth class\u003d\"search-header\" colspan\u003d\"5\"\u003e"},{"line_number":167,"context_line":"                  \u003chz-search-bar icon-classes\u003d\"fa-search\"\u003e\u003c/hz-search-bar\u003e"},{"line_number":168,"context_line":"                \u003c/th\u003e"},{"line_number":169,"context_line":"              \u003c/tr\u003e"}],"source_content_type":"text/html","patch_set":6,"id":"ad565d92_955fea51","line":166,"range":{"start_line":166,"start_character":51,"end_line":166,"end_character":52},"in_reply_to":"e3c1eca5_0cd3e88a","updated":"2022-08-29 14:55:06.000000000","message":"Done","commit_id":"cb8c8dcb7d4776f599590d72859f53dcb581c267"},{"author":{"_account_id":34429,"name":"Tom Weininger","email":"dienste@weinimo.de","username":"tweining"},"change_message_id":"9d724fb09c409175cd19e7120239c3b89a723209","unresolved":true,"context_lines":[{"line_number":83,"context_line":"        \u003c/thead\u003e"},{"line_number":84,"context_line":"        \u003ctbody\u003e"},{"line_number":85,"context_line":"          \u003ctr ng-repeat\u003d\"row in ctrl.tableData.displayedAllocated track by row.id\"\u003e"},{"line_number":86,"context_line":"            \u003ctd class\u003d\"rsp-p1\"\u003ef{$ ctrl.getSubnetName(row.id) $}\u003c/td\u003e"},{"line_number":87,"context_line":"            \u003ctd class\u003d\"rsp-p1\" data-toggle\u003d\"tooltip\" title\u003d\"{$ row.id $}\"\u003e{$ ctrl.getShortId(row.id) $}\u003c/td\u003e"},{"line_number":88,"context_line":"            \u003ctd class\u003d\"rsp-p1\"\u003e{$ ctrl.getNetworkName(row.id) $}\u003c/td\u003e"},{"line_number":89,"context_line":"            \u003ctd class\u003d\"rsp-p1\" data-toggle\u003d\"tooltip\" title\u003d\"{$ ctrl.getNetworkId(row.id) $}\"\u003e{$ ctrl.getShortId(ctrl.getNetworkId(row.id)) $}\u003c/td\u003e"}],"source_content_type":"text/html","patch_set":9,"id":"f009183a_e304871c","line":86,"range":{"start_line":86,"start_character":31,"end_line":86,"end_character":32},"updated":"2022-09-01 10:30:32.000000000","message":"Remove the f. This is not a Python f-string. ;)","commit_id":"f3bd1b8713b135b1cfb2fdb2fef8bfd8fa235c73"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"4d0c2a5ce571c05c291fbe6a66cbd708b100000d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        \u003c/thead\u003e"},{"line_number":84,"context_line":"        \u003ctbody\u003e"},{"line_number":85,"context_line":"          \u003ctr ng-repeat\u003d\"row in ctrl.tableData.displayedAllocated track by row.id\"\u003e"},{"line_number":86,"context_line":"            \u003ctd class\u003d\"rsp-p1\"\u003ef{$ ctrl.getSubnetName(row.id) $}\u003c/td\u003e"},{"line_number":87,"context_line":"            \u003ctd class\u003d\"rsp-p1\" data-toggle\u003d\"tooltip\" title\u003d\"{$ row.id $}\"\u003e{$ ctrl.getShortId(row.id) $}\u003c/td\u003e"},{"line_number":88,"context_line":"            \u003ctd class\u003d\"rsp-p1\"\u003e{$ ctrl.getNetworkName(row.id) $}\u003c/td\u003e"},{"line_number":89,"context_line":"            \u003ctd class\u003d\"rsp-p1\" data-toggle\u003d\"tooltip\" title\u003d\"{$ ctrl.getNetworkId(row.id) $}\"\u003e{$ ctrl.getShortId(ctrl.getNetworkId(row.id)) $}\u003c/td\u003e"}],"source_content_type":"text/html","patch_set":9,"id":"41abd9a3_25b02d90","line":86,"range":{"start_line":86,"start_character":31,"end_line":86,"end_character":32},"in_reply_to":"f009183a_e304871c","updated":"2022-09-01 10:44:30.000000000","message":"oops, thanks","commit_id":"f3bd1b8713b135b1cfb2fdb2fef8bfd8fa235c73"}]}
