)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"436d35830ff0a4af06320b4e388abce142397a41","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow adding a subnet without gateway ip to a router"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently neutron and horizon support adding a subnet to a router"},{"line_number":10,"context_line":"using a fixed ip, and in this case gateway ip is not required because"},{"line_number":11,"context_line":"the given ip is used for a connector interface instead."},{"line_number":12,"context_line":"This change allows subnets without gateway ip show up in a subnet"},{"line_number":13,"context_line":"list for adding a router interface."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1930499"},{"line_number":16,"context_line":"Change-Id: I2545b3f7f4ea4b847062d165e61d00e0e9f94922"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"86b40413_2edcf9f2","line":13,"range":{"start_line":9,"start_character":0,"end_line":13,"end_character":35},"updated":"2021-07-06 13:01:26.000000000","message":"Could you please add some related neutron docs reference so that it is easy for reviewer.","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"436d35830ff0a4af06320b4e388abce142397a41","unresolved":true,"context_lines":[{"line_number":12,"context_line":"This change allows subnets without gateway ip show up in a subnet"},{"line_number":13,"context_line":"list for adding a router interface."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1930499"},{"line_number":16,"context_line":"Change-Id: I2545b3f7f4ea4b847062d165e61d00e0e9f94922"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"e7fea0db_25f0302a","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":10},"updated":"2021-07-06 13:01:26.000000000","message":"It also fixes bug 1532091. Please link that as well.","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"ac72d40236f125d8355027724ddf117903ade10b","unresolved":true,"context_lines":[{"line_number":12,"context_line":"This change allows subnets without gateway ip show up in a subnet"},{"line_number":13,"context_line":"list for adding a router interface."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1930499"},{"line_number":16,"context_line":"Change-Id: I2545b3f7f4ea4b847062d165e61d00e0e9f94922"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"b08b9972_2f34f333","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":10},"in_reply_to":"e7fea0db_25f0302a","updated":"2021-07-06 15:30:06.000000000","message":"Ignore this comment*","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"3ed947adf23998f95ae79cd53cf366d3395ec974","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d165d6ad_9b9ea617","updated":"2025-05-21 18:42:35.000000000","message":"@dcu995@gmail.com please check this MR.","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"},{"author":{"_account_id":37632,"name":"Dmitriy Chubinidze","email":"dcu995@gmail.com","username":"chubinidzedr"},"change_message_id":"7f8d55d4643abf312e582cbd2feeea96c900ee8f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d1b3fd06_656537f6","in_reply_to":"d165d6ad_9b9ea617","updated":"2025-05-22 08:14:46.000000000","message":"Acknowledged","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"fd0ab27f239634034045362dc5e37a62bb4a5602","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"85d46b2e_cfdfb961","updated":"2025-05-28 10:07:23.000000000","message":"@kajinamit@oss.nttdata.com hello, may be you find time for fix this little problems 😊","commit_id":"e27bdeb08302debed690dd840cec6413cc3d3fa3"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"9c5de113fa797668d2d11a8604d3a123ec418237","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5dd0bb9d_876af784","updated":"2025-05-22 08:24:05.000000000","message":"@kajinamit@oss.nttdata.com hello, please check this moment.","commit_id":"e27bdeb08302debed690dd840cec6413cc3d3fa3"},{"author":{"_account_id":37632,"name":"Dmitriy Chubinidze","email":"dcu995@gmail.com","username":"chubinidzedr"},"change_message_id":"7b76a612c6fbe46f846abb4af2c10124f8f15a4c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"af63bb10_a2356ea4","updated":"2025-05-22 08:13:41.000000000","message":"Works fine, but in that case specifying IP for subnet is mandatory, cause otherwise we\u0027re getting error in dashboard and in logs:\n\ndjango.core.exceptions.ValidationError: [\u0027IP address is required because the subnet does not have gateway ip\u0027]","commit_id":"e27bdeb08302debed690dd840cec6413cc3d3fa3"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"3f891892fbbcf8fbba4ac15f8f2547e656d6d221","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"289463bb_41eaddb1","updated":"2025-06-13 10:13:26.000000000","message":"@kajinamit@oss.nttdata.com : is this patch or the problem you address is related to this one in Neutron: https://review.opendev.org/q/I3bdd260f0f6b0259ff15cfe16a111bfe93b40749 (bug: https://bugs.launchpad.net/neutron/+bug/2112453 ) ?","commit_id":"a6b841271e17532e850feabc4b613565ebc8f569"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d63caa677acf3ee81d2d1f13ae8ead98b80e704a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ea4eb809_8c80a1ae","in_reply_to":"289463bb_41eaddb1","updated":"2025-06-13 11:19:31.000000000","message":"It is \"related\" because this change relies on the fact that neutron should allow creating a subnet without gateway ip, but the problem I\u0027m trying to resolve in horizon is independent. When I was looking into my problem initially (with Train, IIRC) it was allowed. So I guess that is the regression added at some point.","commit_id":"a6b841271e17532e850feabc4b613565ebc8f569"}],"openstack_dashboard/dashboards/project/routers/ports/forms.py":[{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"436d35830ff0a4af06320b4e388abce142397a41","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        return choices"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def handle(self, request, data):"},{"line_number":82,"context_line":"        subnet \u003d api.neutron.subnet_get(request, subnet_id\u003ddata[\u0027subnet_id\u0027])"},{"line_number":83,"context_line":"        if not subnet.gateway_ip and not data[\u0027ip_address\u0027]:"},{"line_number":84,"context_line":"            error_message \u003d (_(\u0027IP address is required because the subnet \u0027"},{"line_number":85,"context_line":"                               \u0027does not have gateway ip\u0027))"},{"line_number":86,"context_line":"            raise ValidationError(error_message)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        if data[\u0027ip_address\u0027]:"},{"line_number":89,"context_line":"            port \u003d self._add_interface_by_port(request, data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"0fabeff5_e13828d5","line":86,"range":{"start_line":82,"start_character":8,"end_line":86,"end_character":48},"updated":"2021-07-06 13:01:26.000000000","message":"When I tested this patch in my local env. and didn\u0027t pass IP address value then \nit throws an error i.e. \"There was an error submitting the form. Please try again\"\nbut it needs to raise error_message which you passed at L84.","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0d4fc7dc701c5a6b78610b12df67ed64ca95701d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        return choices"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def handle(self, request, data):"},{"line_number":82,"context_line":"        subnet \u003d api.neutron.subnet_get(request, subnet_id\u003ddata[\u0027subnet_id\u0027])"},{"line_number":83,"context_line":"        if not subnet.gateway_ip and not data[\u0027ip_address\u0027]:"},{"line_number":84,"context_line":"            error_message \u003d (_(\u0027IP address is required because the subnet \u0027"},{"line_number":85,"context_line":"                               \u0027does not have gateway ip\u0027))"},{"line_number":86,"context_line":"            raise ValidationError(error_message)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        if data[\u0027ip_address\u0027]:"},{"line_number":89,"context_line":"            port \u003d self._add_interface_by_port(request, data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"e2f66e03_474316d0","line":86,"range":{"start_line":82,"start_character":8,"end_line":86,"end_character":48},"in_reply_to":"0fabeff5_e13828d5","updated":"2025-06-04 14:15:20.000000000","message":"The problem is caused by my wrong usage of ValidationError within handle...","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"38bbefd41e0c8e9f3ffe488dab65ddab7a995e23","unresolved":true,"context_lines":[{"line_number":84,"context_line":"            error_message \u003d (_(\u0027IP address is required because the subnet \u0027"},{"line_number":85,"context_line":"                               \u0027does not have gateway ip\u0027))"},{"line_number":86,"context_line":"            raise ValidationError(error_message)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        if data[\u0027ip_address\u0027]:"},{"line_number":89,"context_line":"            port \u003d self._add_interface_by_port(request, data)"},{"line_number":90,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"6f20d411_7bf2ba4f","line":87,"updated":"2021-07-06 13:02:12.000000000","message":"Also, Could we also add some conditions and make ``IP Address`` field as mandatory field when\nan interface without gateway ip is added to router.","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"436d35830ff0a4af06320b4e388abce142397a41","unresolved":true,"context_lines":[{"line_number":84,"context_line":"            error_message \u003d (_(\u0027IP address is required because the subnet \u0027"},{"line_number":85,"context_line":"                               \u0027does not have gateway ip\u0027))"},{"line_number":86,"context_line":"            raise ValidationError(error_message)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        if data[\u0027ip_address\u0027]:"},{"line_number":89,"context_line":"            port \u003d self._add_interface_by_port(request, data)"},{"line_number":90,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"660f3744_8d7967c2","line":87,"updated":"2021-07-06 13:01:26.000000000","message":"If we allow adding a subnet without gateway ip to a router then ``Description`` from\nports\\_create.html [1] looks incorrect. Could also update the information that ``IP Address``\nis mandatory in this case.\n\n[1]https://github.com/openstack/horizon/blob/master/openstack_dashboard/dashboards/project/routers/templates/routers/ports/_create.html#L23","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0d4fc7dc701c5a6b78610b12df67ed64ca95701d","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            error_message \u003d (_(\u0027IP address is required because the subnet \u0027"},{"line_number":85,"context_line":"                               \u0027does not have gateway ip\u0027))"},{"line_number":86,"context_line":"            raise ValidationError(error_message)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        if data[\u0027ip_address\u0027]:"},{"line_number":89,"context_line":"            port \u003d self._add_interface_by_port(request, data)"},{"line_number":90,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"98a67ebd_07ca9bec","line":87,"in_reply_to":"660f3744_8d7967c2","updated":"2025-06-04 14:15:20.000000000","message":"Done","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"0d4fc7dc701c5a6b78610b12df67ed64ca95701d","unresolved":true,"context_lines":[{"line_number":84,"context_line":"            error_message \u003d (_(\u0027IP address is required because the subnet \u0027"},{"line_number":85,"context_line":"                               \u0027does not have gateway ip\u0027))"},{"line_number":86,"context_line":"            raise ValidationError(error_message)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        if data[\u0027ip_address\u0027]:"},{"line_number":89,"context_line":"            port \u003d self._add_interface_by_port(request, data)"},{"line_number":90,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"f6b7d322_ef922320","line":87,"in_reply_to":"6f20d411_7bf2ba4f","updated":"2025-06-04 14:15:20.000000000","message":"The problem is that we have to change the required field according to the gateway_ip property of the selected subnet and I could not find any good reference I can use... If anyone can guide me with the code snippet I can try that would be awesome.","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5f7bd7b9e34119f44779d8e58409bcb0ba415422","unresolved":true,"context_lines":[{"line_number":84,"context_line":"            error_message \u003d (_(\u0027IP address is required because the subnet \u0027"},{"line_number":85,"context_line":"                               \u0027does not have gateway ip\u0027))"},{"line_number":86,"context_line":"            raise ValidationError(error_message)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        if data[\u0027ip_address\u0027]:"},{"line_number":89,"context_line":"            port \u003d self._add_interface_by_port(request, data)"},{"line_number":90,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"c2cb39e0_02fca8e8","line":87,"in_reply_to":"7845b7fb_15548fa2","updated":"2025-06-10 08:05:17.000000000","message":"I try to allocate some time to it, I am on a training for 3 days, so perhaps only end of this week will be available","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"bff90fc5101f14164ee138afb33cce87b5476f3f","unresolved":true,"context_lines":[{"line_number":84,"context_line":"            error_message \u003d (_(\u0027IP address is required because the subnet \u0027"},{"line_number":85,"context_line":"                               \u0027does not have gateway ip\u0027))"},{"line_number":86,"context_line":"            raise ValidationError(error_message)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        if data[\u0027ip_address\u0027]:"},{"line_number":89,"context_line":"            port \u003d self._add_interface_by_port(request, data)"},{"line_number":90,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"a7bdaee8_0ae53285","line":87,"in_reply_to":"a1017ce3_43183087","updated":"2025-06-13 13:36:59.000000000","message":"I am always lost in javascript 😊","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"e563fb494f6cdade100e31ba94a60538e9f5743c","unresolved":true,"context_lines":[{"line_number":84,"context_line":"            error_message \u003d (_(\u0027IP address is required because the subnet \u0027"},{"line_number":85,"context_line":"                               \u0027does not have gateway ip\u0027))"},{"line_number":86,"context_line":"            raise ValidationError(error_message)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        if data[\u0027ip_address\u0027]:"},{"line_number":89,"context_line":"            port \u003d self._add_interface_by_port(request, data)"},{"line_number":90,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"a1017ce3_43183087","line":87,"in_reply_to":"c2cb39e0_02fca8e8","updated":"2025-06-13 13:36:06.000000000","message":"for tehcnical solution I can\u0027t give advice","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"df8bc6086c0b1fefd9546ceda61fa21c51997bf9","unresolved":true,"context_lines":[{"line_number":84,"context_line":"            error_message \u003d (_(\u0027IP address is required because the subnet \u0027"},{"line_number":85,"context_line":"                               \u0027does not have gateway ip\u0027))"},{"line_number":86,"context_line":"            raise ValidationError(error_message)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        if data[\u0027ip_address\u0027]:"},{"line_number":89,"context_line":"            port \u003d self._add_interface_by_port(request, data)"},{"line_number":90,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7845b7fb_15548fa2","line":87,"in_reply_to":"f6b7d322_ef922320","updated":"2025-06-04 16:22:45.000000000","message":"@katonalala@gmail.com hello, may be you can help?","commit_id":"67e0f3a545d4015fb9d03ed39d7bf5a987f80fb4"}]}
