)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"10097f705dc357e94e15a91f7d4264c1c33da1ea","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add some debug logs for invalid segmentation_id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When supplying a subport for a trunk with invalid segmenation_id Neutron"},{"line_number":10,"context_line":"reports the error message about subport."},{"line_number":11,"context_line":"This patch provides a more friendly error for invalid segmentation_id."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f4b6375_1b9913c3","line":9,"updated":"2017-10-24 18:02:52.000000000","message":"the error stems from segmentation_id \u003d\u003d 0 alone. Any other segmentation ID is validated correctly.","commit_id":"64ee71b00923a2ce4611e0ed3224f25854b723d7"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"b079f01310819ae0909e8eb347afc5a1b843c465","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add some debug logs for invalid segmentation_id"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When supplying a subport for a trunk with invalid segmenation_id Neutron"},{"line_number":10,"context_line":"reports the error message about subport."},{"line_number":11,"context_line":"This patch provides a more friendly error for invalid segmentation_id."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f4b6375_6e539c18","line":9,"in_reply_to":"3f4b6375_1b9913c3","updated":"2017-10-26 06:46:11.000000000","message":"Done","commit_id":"64ee71b00923a2ce4611e0ed3224f25854b723d7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"ed1ed9eab3ab3fb54d2e96f7862aed6e0857629b","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When supplying a subport for a trunk with invalid segmenation_id Neutron"},{"line_number":10,"context_line":"reports the error message about subport."},{"line_number":11,"context_line":"This patch provides a more friendly error for invalid segmentation_id."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I3d164c1a1af89d7de20d90b3a6c6dcf6e8a1415b"},{"line_number":14,"context_line":"Closes-bug: 1718385"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f4b6375_9d5cf7ed","line":11,"updated":"2017-10-23 20:29:09.000000000","message":"nit: \"more friendly error message\" IMHO would be better :)","commit_id":"64ee71b00923a2ce4611e0ed3224f25854b723d7"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"306a30568b3baf67ad7629548ddb5c1ace6e21bd","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When supplying a subport for a trunk with invalid segmenation_id Neutron"},{"line_number":10,"context_line":"reports the error message about subport."},{"line_number":11,"context_line":"This patch provides a more friendly error for invalid segmentation_id."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I3d164c1a1af89d7de20d90b3a6c6dcf6e8a1415b"},{"line_number":14,"context_line":"Closes-bug: 1718385"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f4b6375_7e200e49","line":11,"in_reply_to":"3f4b6375_9d5cf7ed","updated":"2017-10-24 11:50:39.000000000","message":"Done，thanks.","commit_id":"64ee71b00923a2ce4611e0ed3224f25854b723d7"}],"neutron_lib/api/validators/__init__.py":[{"author":{"_account_id":26106,"name":"Tom Stappaerts","email":"tom.stappaerts@nokia.com","username":"TomStappaerts"},"change_message_id":"78d078d87392c1bf5adc27d697d8e37630e96d4f","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"                    \"segmentation_type\") % subport"},{"line_number":1009,"context_line":"            LOG.debug(msg)"},{"line_number":1010,"context_line":"            return msg"},{"line_number":1011,"context_line":"        if segmentation_id \u003d\u003d 0:"},{"line_number":1012,"context_line":"            msg \u003d _(\"Invalid segmentation_id \u0027%s\u0027: segmentation_id is \""},{"line_number":1013,"context_line":"                    \"equals to the VLAN ID, but the number 0 is not \""},{"line_number":1014,"context_line":"                    \"a valid VLAN ID\") % segmentation_id"},{"line_number":1015,"context_line":"            LOG.debug(msg)"},{"line_number":1016,"context_line":"            return msg"},{"line_number":1017,"context_line":"        if segmentation_id in segmentations.get(segmentation_type, []):"},{"line_number":1018,"context_line":"            msg \u003d _(\"Segmentation ID \u0027%(seg_id)s\u0027 for \u0027%(subport)s\u0027 is not \""},{"line_number":1019,"context_line":"                    \"unique\") % {\"seg_id\": segmentation_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_20e2ba02","line":1016,"range":{"start_line":1011,"start_character":9,"end_line":1016,"end_character":22},"updated":"2017-10-20 08:09:19.000000000","message":"Shouldn\u0027t there be a list of (in)valid segmentation ids somewhere, instead of hardcoding it here.\nI don\u0027\u0027t think this is necessary, as pointed out in the bugreport:\n\n\nArmando Migliaccio (armando-migliaccio) wrote on 2017-10-16: \nTrue, but 0 is not a valid VLAN ID. So if it hadn\u0027t failed there it would fail because [1,2,3].\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/services/trunk/seg_types/validators.py#L26\n[2] http://git.openstack.org/cgit/openstack/neutron/tree/neutron/plugins/common/constants.py#n81\n[3] http://git.openstack.org/cgit/openstack/neutron/tree/neutron/plugins/common/constants.py#n81","commit_id":"6cd8f180c604c9546b9f4029be6366012d7c40d9"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"6ea7bcd92c7239b8fbfcfdc6f2a0d749ffe9c7c6","unresolved":false,"context_lines":[{"line_number":1008,"context_line":"                    \"segmentation_type\") % subport"},{"line_number":1009,"context_line":"            LOG.debug(msg)"},{"line_number":1010,"context_line":"            return msg"},{"line_number":1011,"context_line":"        if segmentation_id \u003d\u003d 0:"},{"line_number":1012,"context_line":"            msg \u003d _(\"Invalid segmentation_id \u0027%s\u0027: segmentation_id is \""},{"line_number":1013,"context_line":"                    \"equals to the VLAN ID, but the number 0 is not \""},{"line_number":1014,"context_line":"                    \"a valid VLAN ID\") % segmentation_id"},{"line_number":1015,"context_line":"            LOG.debug(msg)"},{"line_number":1016,"context_line":"            return msg"},{"line_number":1017,"context_line":"        if segmentation_id in segmentations.get(segmentation_type, []):"},{"line_number":1018,"context_line":"            msg \u003d _(\"Segmentation ID \u0027%(seg_id)s\u0027 for \u0027%(subport)s\u0027 is not \""},{"line_number":1019,"context_line":"                    \"unique\") % {\"seg_id\": segmentation_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_2df16e6c","line":1016,"range":{"start_line":1011,"start_character":9,"end_line":1016,"end_character":22},"in_reply_to":"3f4b6375_20e2ba02","updated":"2017-10-23 05:09:11.000000000","message":"Done， thanks.","commit_id":"6cd8f180c604c9546b9f4029be6366012d7c40d9"},{"author":{"_account_id":26106,"name":"Tom Stappaerts","email":"tom.stappaerts@nokia.com","username":"TomStappaerts"},"change_message_id":"bf4d4ba85d3d2cb8cb1ce80b678780572f0854fc","unresolved":false,"context_lines":[{"line_number":968,"context_line":"    \"\"\""},{"line_number":969,"context_line":"    for subport in data:"},{"line_number":970,"context_line":"        segmentation_id \u003d subport.get(\"segmentation_id\")"},{"line_number":971,"context_line":"        if (segmentation_id \u003c\u003d constants.MIN_VLAN_TAG"},{"line_number":972,"context_line":"                or segmentation_id \u003e\u003d constants.MAX_VLAN_TAG):"},{"line_number":973,"context_line":"            msg \u003d _(\"Invalid segmentation_id \u0027%s\u0027: segmentation_id is \""},{"line_number":974,"context_line":"                    \"equals to the VLAN TAG, but the number is not \""},{"line_number":975,"context_line":"                    \"a valid VLAN TAG\") % segmentation_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_2bedd624","line":972,"range":{"start_line":971,"start_character":12,"end_line":972,"end_character":60},"updated":"2017-10-23 06:43:16.000000000","message":"You are excluding 1 and 4094 (min and max) as valid tags now, if I read this correctly.","commit_id":"abce7a8c9c2d7164d4c8fe776fa0b4cb0e4696b1"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"a2eac0b7d677fb5af0816f90cfc94a5e24b8b3c3","unresolved":false,"context_lines":[{"line_number":968,"context_line":"    \"\"\""},{"line_number":969,"context_line":"    for subport in data:"},{"line_number":970,"context_line":"        segmentation_id \u003d subport.get(\"segmentation_id\")"},{"line_number":971,"context_line":"        if (segmentation_id \u003c\u003d constants.MIN_VLAN_TAG"},{"line_number":972,"context_line":"                or segmentation_id \u003e\u003d constants.MAX_VLAN_TAG):"},{"line_number":973,"context_line":"            msg \u003d _(\"Invalid segmentation_id \u0027%s\u0027: segmentation_id is \""},{"line_number":974,"context_line":"                    \"equals to the VLAN TAG, but the number is not \""},{"line_number":975,"context_line":"                    \"a valid VLAN TAG\") % segmentation_id"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_ab1d4610","line":972,"range":{"start_line":971,"start_character":12,"end_line":972,"end_character":60},"in_reply_to":"3f4b6375_2bedd624","updated":"2017-10-23 06:52:03.000000000","message":"I realized the mistake and I modified it now, thanks.","commit_id":"abce7a8c9c2d7164d4c8fe776fa0b4cb0e4696b1"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"b88882327e69957b062f9f81871ce62bc609ccc5","unresolved":false,"context_lines":[{"line_number":956,"context_line":"        LOG.debug(msg)"},{"line_number":957,"context_line":"        return msg"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":""},{"line_number":960,"context_line":"def validata_segmentation_id(data, valid_values\u003dNone):"},{"line_number":961,"context_line":"    \"\"\"Validate data is a list of segmentation id."},{"line_number":962,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_d635be47","line":959,"updated":"2017-10-23 12:30:32.000000000","message":"I\u0027m not quite following what the purpose of this validator is in this patch. While it\u0027s added as a validation type (type:segmentation_id), this type isn\u0027t used.\nIs this validator for something else?","commit_id":"64ee71b00923a2ce4611e0ed3224f25854b723d7"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"306a30568b3baf67ad7629548ddb5c1ace6e21bd","unresolved":false,"context_lines":[{"line_number":956,"context_line":"        LOG.debug(msg)"},{"line_number":957,"context_line":"        return msg"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":""},{"line_number":960,"context_line":"def validata_segmentation_id(data, valid_values\u003dNone):"},{"line_number":961,"context_line":"    \"\"\"Validate data is a list of segmentation id."},{"line_number":962,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_eaa2f8fb","line":959,"in_reply_to":"3f4b6375_d635be47","updated":"2017-10-24 11:50:39.000000000","message":"The validator will be use to checkout the subport\u0027s segmentation_id. I just want to provide a friendly error message for invalid segmentation_id.","commit_id":"64ee71b00923a2ce4611e0ed3224f25854b723d7"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"b88882327e69957b062f9f81871ce62bc609ccc5","unresolved":false,"context_lines":[{"line_number":957,"context_line":"        return msg"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":""},{"line_number":960,"context_line":"def validata_segmentation_id(data, valid_values\u003dNone):"},{"line_number":961,"context_line":"    \"\"\"Validate data is a list of segmentation id."},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"    :param data: The data to validate."}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_3673f24f","line":960,"range":{"start_line":960,"start_character":4,"end_line":960,"end_character":12},"updated":"2017-10-23 12:30:32.000000000","message":"Spelling? \"validate\"?","commit_id":"64ee71b00923a2ce4611e0ed3224f25854b723d7"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"306a30568b3baf67ad7629548ddb5c1ace6e21bd","unresolved":false,"context_lines":[{"line_number":957,"context_line":"        return msg"},{"line_number":958,"context_line":""},{"line_number":959,"context_line":""},{"line_number":960,"context_line":"def validata_segmentation_id(data, valid_values\u003dNone):"},{"line_number":961,"context_line":"    \"\"\"Validate data is a list of segmentation id."},{"line_number":962,"context_line":""},{"line_number":963,"context_line":"    :param data: The data to validate."}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_765baa53","line":960,"range":{"start_line":960,"start_character":4,"end_line":960,"end_character":12},"in_reply_to":"3f4b6375_3673f24f","updated":"2017-10-24 11:50:39.000000000","message":"Done，thanks.","commit_id":"64ee71b00923a2ce4611e0ed3224f25854b723d7"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"ed1ed9eab3ab3fb54d2e96f7862aed6e0857629b","unresolved":false,"context_lines":[{"line_number":1021,"context_line":"        if segmentation_type \u003d\u003d \u0027inherit\u0027:"},{"line_number":1022,"context_line":"            return"},{"line_number":1023,"context_line":"        segmentation_id \u003d subport.get(\"segmentation_id\")"},{"line_number":1024,"context_line":"        if ((not segmentation_type or segmentation_id is UNLIMITED)"},{"line_number":1025,"context_line":"                and len(subport) \u003e 1):"},{"line_number":1026,"context_line":"            msg \u003d _(\"Invalid subport details \u0027%s\u0027: missing segmentation \""},{"line_number":1027,"context_line":"                    \"information. Must specify both segmentation_id and \""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_bd57b3ca","line":1024,"updated":"2017-10-23 20:29:09.000000000","message":"I\u0027m not sure if UNLIMITED is better here. IMO previous version was more clear and easier to understand","commit_id":"64ee71b00923a2ce4611e0ed3224f25854b723d7"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"306a30568b3baf67ad7629548ddb5c1ace6e21bd","unresolved":false,"context_lines":[{"line_number":1021,"context_line":"        if segmentation_type \u003d\u003d \u0027inherit\u0027:"},{"line_number":1022,"context_line":"            return"},{"line_number":1023,"context_line":"        segmentation_id \u003d subport.get(\"segmentation_id\")"},{"line_number":1024,"context_line":"        if ((not segmentation_type or segmentation_id is UNLIMITED)"},{"line_number":1025,"context_line":"                and len(subport) \u003e 1):"},{"line_number":1026,"context_line":"            msg \u003d _(\"Invalid subport details \u0027%s\u0027: missing segmentation \""},{"line_number":1027,"context_line":"                    \"information. Must specify both segmentation_id and \""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_ef6a0aeb","line":1024,"in_reply_to":"3f4b6375_bd57b3ca","updated":"2017-10-24 11:50:39.000000000","message":"I just want to avoid hardcoding it, but I think you are right, and I change it now:)","commit_id":"64ee71b00923a2ce4611e0ed3224f25854b723d7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"10097f705dc357e94e15a91f7d4264c1c33da1ea","unresolved":false,"context_lines":[{"line_number":1022,"context_line":"            return"},{"line_number":1023,"context_line":"        segmentation_id \u003d subport.get(\"segmentation_id\")"},{"line_number":1024,"context_line":"        if ((not segmentation_type or segmentation_id is UNLIMITED)"},{"line_number":1025,"context_line":"                and len(subport) \u003e 1):"},{"line_number":1026,"context_line":"            msg \u003d _(\"Invalid subport details \u0027%s\u0027: missing segmentation \""},{"line_number":1027,"context_line":"                    \"information. Must specify both segmentation_id and \""},{"line_number":1028,"context_line":"                    \"segmentation_type\") % subport"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_3b5ccfeb","line":1025,"updated":"2017-10-24 18:02:52.000000000","message":"this patch can simply tweak the original conditional:\n\n(not segmentation_type or not segmentation_id) and len(subport) \u003e 1:\n\nwith\n\n(not segmentation_type or segmentation_id is None) and len(subport) \u003e 1:\n\nand let 0 pass through and be validated by the trunk business logic.","commit_id":"64ee71b00923a2ce4611e0ed3224f25854b723d7"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"b079f01310819ae0909e8eb347afc5a1b843c465","unresolved":false,"context_lines":[{"line_number":1022,"context_line":"            return"},{"line_number":1023,"context_line":"        segmentation_id \u003d subport.get(\"segmentation_id\")"},{"line_number":1024,"context_line":"        if ((not segmentation_type or segmentation_id is UNLIMITED)"},{"line_number":1025,"context_line":"                and len(subport) \u003e 1):"},{"line_number":1026,"context_line":"            msg \u003d _(\"Invalid subport details \u0027%s\u0027: missing segmentation \""},{"line_number":1027,"context_line":"                    \"information. Must specify both segmentation_id and \""},{"line_number":1028,"context_line":"                    \"segmentation_type\") % subport"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f4b6375_ee39ccd6","line":1025,"in_reply_to":"3f4b6375_3b5ccfeb","updated":"2017-10-26 06:46:11.000000000","message":"Thanks for your suggesion, I will change the validator of segmentation_id, but I still think we should provide a error message here.","commit_id":"64ee71b00923a2ce4611e0ed3224f25854b723d7"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"188c29ee984f28fc442042c51dc7c21702e8728d","unresolved":false,"context_lines":[{"line_number":1010,"context_line":"            return msg"},{"line_number":1011,"context_line":"        if segmentation_id \u003d\u003d 0:"},{"line_number":1012,"context_line":"            msg \u003d _(\"Invalid segmentation_id \u0027%s\u0027: segmentation_id is \""},{"line_number":1013,"context_line":"                    \"equals to the VLAN TAG, but the number 0 is not \""},{"line_number":1014,"context_line":"                    \"a valid VLAN TAG\") % segmentation_id"},{"line_number":1015,"context_line":"            LOG.debug(msg)"},{"line_number":1016,"context_line":"            return msg"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_09951433","line":1013,"range":{"start_line":1013,"start_character":21,"end_line":1013,"end_character":27},"updated":"2017-10-26 12:24:50.000000000","message":"nit: \"equal\"","commit_id":"6e955f3a823eddace091c94293d196cc01781021"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"9750ea4dbd579bb1964534ae1e4b0fd17b6c463e","unresolved":false,"context_lines":[{"line_number":1010,"context_line":"            return msg"},{"line_number":1011,"context_line":"        if segmentation_id \u003d\u003d 0:"},{"line_number":1012,"context_line":"            msg \u003d _(\"Invalid segmentation_id \u0027%s\u0027: segmentation_id is \""},{"line_number":1013,"context_line":"                    \"equals to the VLAN TAG, but the number 0 is not \""},{"line_number":1014,"context_line":"                    \"a valid VLAN TAG\") % segmentation_id"},{"line_number":1015,"context_line":"            LOG.debug(msg)"},{"line_number":1016,"context_line":"            return msg"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f4b6375_14e08025","line":1013,"range":{"start_line":1013,"start_character":21,"end_line":1013,"end_character":27},"in_reply_to":"3f4b6375_09951433","updated":"2017-10-26 16:45:08.000000000","message":"You can\u0027t assume the segmentation type to be VLAN at this point. If you remove this if block, the trunk plugin logic will validate whether or not the ID is valid. There\u0027s no point in doing this at the API Layer. Please remove.","commit_id":"6e955f3a823eddace091c94293d196cc01781021"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"b9bc3d1d1cf14b499b76634d2e4867e442c8c767","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"                                 \"subport\": subport[\"port_id\"]}"},{"line_number":1015,"context_line":"            LOG.debug(msg)"},{"line_number":1016,"context_line":"            return msg"},{"line_number":1017,"context_line":"        if segmentation_id:"},{"line_number":1018,"context_line":"            segmentations[segmentation_type].add(segmentation_id)"},{"line_number":1019,"context_line":""},{"line_number":1020,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_34c2c035","line":1017,"range":{"start_line":1017,"start_character":8,"end_line":1017,"end_character":27},"updated":"2017-11-02 03:09:41.000000000","message":"If 0 is passed, this check doesn\u0027t work fine. You should change like the following.\n\n if segmentation_id is not None:","commit_id":"1ed69f1a4be7208d78cda739e3368a80771e3fb8"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"cf5da55bfcc1777e890bdfa0b3c5c984b0feaa04","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"                                 \"subport\": subport[\"port_id\"]}"},{"line_number":1015,"context_line":"            LOG.debug(msg)"},{"line_number":1016,"context_line":"            return msg"},{"line_number":1017,"context_line":"        if segmentation_id:"},{"line_number":1018,"context_line":"            segmentations[segmentation_type].add(segmentation_id)"},{"line_number":1019,"context_line":""},{"line_number":1020,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_57741ecf","line":1017,"range":{"start_line":1017,"start_character":8,"end_line":1017,"end_character":27},"in_reply_to":"3f4b6375_34c2c035","updated":"2017-11-02 06:17:12.000000000","message":"Done, thanks.","commit_id":"1ed69f1a4be7208d78cda739e3368a80771e3fb8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"1c7f23aa84a0a4a494d6d512d01e0e0c5fdb6584","unresolved":false,"context_lines":[{"line_number":1014,"context_line":"                                 \"subport\": subport[\"port_id\"]}"},{"line_number":1015,"context_line":"            LOG.debug(msg)"},{"line_number":1016,"context_line":"            return msg"},{"line_number":1017,"context_line":"        if segmentation_id:"},{"line_number":1018,"context_line":"            segmentations[segmentation_type].add(segmentation_id)"},{"line_number":1019,"context_line":""},{"line_number":1020,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_07f7748d","line":1017,"range":{"start_line":1017,"start_character":8,"end_line":1017,"end_character":27},"in_reply_to":"3f4b6375_57741ecf","updated":"2017-11-03 03:34:58.000000000","message":"good catch. Let\u0027s add a test that catches a duplicated 0 seg ID in two sub ports. That would catch this oversight.","commit_id":"1ed69f1a4be7208d78cda739e3368a80771e3fb8"}],"neutron_lib/tests/unit/api/validators/test_validators.py":[{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"6a0f5e7147fb24a866083bb3e631b9abe5b03ea5","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"    def test_validate_subports_with_segmentation_id_0(self):"},{"line_number":1028,"context_line":"        body \u003d ["},{"line_number":1029,"context_line":"            {\u0027port_id\u0027: \u002700000000-ffff-ffff-ffff-000000000000\u0027,"},{"line_number":1030,"context_line":"             \u0027segmentation_id\u0027: \u00270\u0027, \u0027segmentation_type\u0027: \u0027vlan\u0027}"},{"line_number":1031,"context_line":"        ]"},{"line_number":1032,"context_line":"        self.assertIsNone(validators.validate_subports(body))"},{"line_number":1033,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_4644b5b7","line":1030,"range":{"start_line":1030,"start_character":32,"end_line":1030,"end_character":35},"updated":"2017-10-31 03:49:32.000000000","message":"This should be interger. Please look at https://review.openstack.org/#/c/516505/","commit_id":"1ed69f1a4be7208d78cda739e3368a80771e3fb8"},{"author":{"_account_id":25564,"name":"yanpuqing","email":"yanpq@awcloud.com","username":"ycx"},"change_message_id":"8b076d6c230efb816a7fbbd0dc97318e371e67b5","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"    def test_validate_subports_with_segmentation_id_0(self):"},{"line_number":1028,"context_line":"        body \u003d ["},{"line_number":1029,"context_line":"            {\u0027port_id\u0027: \u002700000000-ffff-ffff-ffff-000000000000\u0027,"},{"line_number":1030,"context_line":"             \u0027segmentation_id\u0027: \u00270\u0027, \u0027segmentation_type\u0027: \u0027vlan\u0027}"},{"line_number":1031,"context_line":"        ]"},{"line_number":1032,"context_line":"        self.assertIsNone(validators.validate_subports(body))"},{"line_number":1033,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_49883ec5","line":1030,"range":{"start_line":1030,"start_character":32,"end_line":1030,"end_character":35},"in_reply_to":"3f4b6375_4644b5b7","updated":"2017-10-31 12:45:03.000000000","message":"Thank for your suggestion. I quite agree with the patch, but it isn\u0027t merged now. Should I wait for it or fix all segmentation-ids to integer in my patch?","commit_id":"1ed69f1a4be7208d78cda739e3368a80771e3fb8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"1842a2c92108fb5d3e5aa47b44ea7d385ae3b36b","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"    def test_validate_subports_with_segmentation_id_0(self):"},{"line_number":1028,"context_line":"        body \u003d ["},{"line_number":1029,"context_line":"            {\u0027port_id\u0027: \u002700000000-ffff-ffff-ffff-000000000000\u0027,"},{"line_number":1030,"context_line":"             \u0027segmentation_id\u0027: \u00270\u0027, \u0027segmentation_type\u0027: \u0027vlan\u0027}"},{"line_number":1031,"context_line":"        ]"},{"line_number":1032,"context_line":"        self.assertIsNone(validators.validate_subports(body))"},{"line_number":1033,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_bd8c8835","line":1030,"range":{"start_line":1030,"start_character":32,"end_line":1030,"end_character":35},"in_reply_to":"3f4b6375_4644b5b7","updated":"2017-10-31 14:44:41.000000000","message":"The segmentation ID type really depends on the segmentation type value. The validator does not assume the type for the ID to make it future proof and avoid polluting the logic with extra validation based on segmentation types. This is FINE by me.","commit_id":"1ed69f1a4be7208d78cda739e3368a80771e3fb8"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"5b839e8a209a526e2a84f238dbd02c6fbe6954aa","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"    def test_validate_subports_with_segmentation_id_0(self):"},{"line_number":1028,"context_line":"        body \u003d ["},{"line_number":1029,"context_line":"            {\u0027port_id\u0027: \u002700000000-ffff-ffff-ffff-000000000000\u0027,"},{"line_number":1030,"context_line":"             \u0027segmentation_id\u0027: \u00270\u0027, \u0027segmentation_type\u0027: \u0027vlan\u0027}"},{"line_number":1031,"context_line":"        ]"},{"line_number":1032,"context_line":"        self.assertIsNone(validators.validate_subports(body))"},{"line_number":1033,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_e7b711d8","line":1030,"range":{"start_line":1030,"start_character":32,"end_line":1030,"end_character":35},"in_reply_to":"3f4b6375_49883ec5","updated":"2017-10-31 13:45:36.000000000","message":"Seems we could just make this an int and not wait for that patch, but not sure what others think.","commit_id":"1ed69f1a4be7208d78cda739e3368a80771e3fb8"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"b9bc3d1d1cf14b499b76634d2e4867e442c8c767","unresolved":false,"context_lines":[{"line_number":1027,"context_line":"    def test_validate_subports_with_segmentation_id_0(self):"},{"line_number":1028,"context_line":"        body \u003d ["},{"line_number":1029,"context_line":"            {\u0027port_id\u0027: \u002700000000-ffff-ffff-ffff-000000000000\u0027,"},{"line_number":1030,"context_line":"             \u0027segmentation_id\u0027: \u00270\u0027, \u0027segmentation_type\u0027: \u0027vlan\u0027}"},{"line_number":1031,"context_line":"        ]"},{"line_number":1032,"context_line":"        self.assertIsNone(validators.validate_subports(body))"},{"line_number":1033,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f4b6375_9485f409","line":1030,"range":{"start_line":1030,"start_character":32,"end_line":1030,"end_character":35},"in_reply_to":"3f4b6375_bd8c8835","updated":"2017-11-02 03:09:41.000000000","message":"I\u0027m OK. We discuss on my patch.","commit_id":"1ed69f1a4be7208d78cda739e3368a80771e3fb8"}]}
