)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"f67f3579b9eb5db570d6616926399a19e5c3f6e7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     pengyuesheng \u003cpengyuesheng@gohighsec.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2019-01-25 10:50:00 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"modify the prompt message on create flavor form"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"On create flavor form,"},{"line_number":10,"context_line":"The ID message is \"Flavor ID should be UUID4 or integer."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9fdfeff1_16633144","line":7,"updated":"2019-01-25 07:49:56.000000000","message":"Please, start a comment message with an upper-case letter if you do one more patch","commit_id":"9cc38adda5294ef468ba67621dba0f2347a98e21"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"082c628c16e422bf85a023c21d33384deb206111","unresolved":false,"context_lines":[{"line_number":10,"context_line":"The ID message is \"Flavor ID should be UUID4 or integer."},{"line_number":11,"context_line":"Leave this field blank or use \u0027auto\u0027 to set a random UUID4.\","},{"line_number":12,"context_line":"However,if the ID is a decimal number such as 9.9,"},{"line_number":13,"context_line":"the flavor can still be successfully created."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ib247cc0cbbf8e340f0ab19002d0010f571b9a33c"},{"line_number":16,"context_line":"Closes-Bug: #1813236"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9fdfeff1_3e45d0b4","line":13,"updated":"2019-02-12 10:51:30.000000000","message":"Sorry for late. The commit message is no longer correct as we changes flavor ID regex. Could you update the commit message accordingly?\n\n(or if you are okay I can update it)","commit_id":"523419996d4d3f4098e8208e4d844f04d4db8fbd"}],"openstack_dashboard/dashboards/admin/flavors/workflows.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"663ceb3cab7fd1924b727253d7ce07ff5bce38af","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class CreateFlavorInfoAction(workflows.Action):"},{"line_number":30,"context_line":"    _flavor_id_regex \u003d (r\u0027^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-\u0027"},{"line_number":31,"context_line":"                        r\u0027[0-9a-fA-F]{4}-[0-9a-fA-F]{12}|[0-9]+|auto$\u0027)"},{"line_number":32,"context_line":"    _flavor_id_help_text \u003d _(\"Flavor ID is recommended to be set to the UUID4.\""},{"line_number":33,"context_line":"                             \"Leave this field blank or use \u0027auto\u0027 to set \""},{"line_number":34,"context_line":"                             \"a random UUID4.\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_002a50e6","line":31,"range":{"start_line":30,"start_character":4,"end_line":31,"end_character":71},"updated":"2019-02-06 04:30:47.000000000","message":"This regex looks odd from several points:\n\n- \u0027^\u0027 is applied to UUID regex only\n- \u0027$\u0027 is applied to \"auto\" only\n- The part of \"[0-9]+\" does not enforce \"integer\" ID. It actually requires a specified ID contains at least one integer.\n\nNova API does not limit a flavor ID to UUID or integer. It accepts all strings.\n\nThis leads to the following question:\nDo we really need this regex?","commit_id":"c193613dc715e03d906468e9c66becf32caa4ab4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1ea3261109811ede658f88386474b9be7a1ebc09","unresolved":false,"context_lines":[{"line_number":29,"context_line":"class CreateFlavorInfoAction(workflows.Action):"},{"line_number":30,"context_line":"    _flavor_id_regex \u003d (r\u0027^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-\u0027"},{"line_number":31,"context_line":"                        r\u0027[0-9a-fA-F]{4}-[0-9a-fA-F]{12}|[0-9]+|auto$\u0027)"},{"line_number":32,"context_line":"    _flavor_id_help_text \u003d _(\"Flavor ID is recommended to be set to the UUID4.\""},{"line_number":33,"context_line":"                             \"Leave this field blank or use \u0027auto\u0027 to set \""},{"line_number":34,"context_line":"                             \"a random UUID4.\")"},{"line_number":35,"context_line":"    name \u003d forms.CharField("}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_58ad2899","line":32,"updated":"2019-01-29 18:09:29.000000000","message":"Could you provide the source which recommends UUID?\nThe compute API reference just says \"While people often make this look like an int, this is really a string.\".\nI would like to confirm the source which recommends UUID before approving this patch.","commit_id":"c193613dc715e03d906468e9c66becf32caa4ab4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"3a8e2bdafbb76f830892296de868525232b168ef","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class CreateFlavorInfoAction(workflows.Action):"},{"line_number":30,"context_line":"    _flavor_id_regex \u003d (r\u0027^[a-zA-Z0-9. _-]+$\u0027)"},{"line_number":31,"context_line":"    _flavor_id_help_text \u003d _(\"flavor id can only contain alphanumeric, \""},{"line_number":32,"context_line":"                             \"characters, underscores, periods, hyphens, \""},{"line_number":33,"context_line":"                             \"spaces.\")"},{"line_number":34,"context_line":"    name \u003d forms.CharField("}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_e801d26b","line":31,"range":{"start_line":31,"start_character":69,"end_line":31,"end_character":70},"updated":"2019-02-12 09:14:06.000000000","message":"This comma is unnecessary. \"alphanumeric characters\"","commit_id":"67cf6620d0559f15c9063a5dc871e83cc05d04ae"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"14f750b01de5ca2d294c164124434ca5d0c1e065","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    _flavor_id_regex \u003d (r\u0027^[a-zA-Z0-9. _-]+$\u0027)"},{"line_number":31,"context_line":"    _flavor_id_help_text \u003d _(\"flavor id can only contain alphanumeric, \""},{"line_number":32,"context_line":"                             \"characters, underscores, periods, hyphens, \""},{"line_number":33,"context_line":"                             \"spaces.\")"},{"line_number":34,"context_line":"    name \u003d forms.CharField("},{"line_number":35,"context_line":"        label\u003d_(\"Name\"),"},{"line_number":36,"context_line":"        max_length\u003d255)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_f42beee7","line":33,"updated":"2019-02-12 08:04:23.000000000","message":"Could you provide the source where you confirmed this description matches the nova behavior precisely?","commit_id":"67cf6620d0559f15c9063a5dc871e83cc05d04ae"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"3a8e2bdafbb76f830892296de868525232b168ef","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    _flavor_id_regex \u003d (r\u0027^[a-zA-Z0-9. _-]+$\u0027)"},{"line_number":31,"context_line":"    _flavor_id_help_text \u003d _(\"flavor id can only contain alphanumeric, \""},{"line_number":32,"context_line":"                             \"characters, underscores, periods, hyphens, \""},{"line_number":33,"context_line":"                             \"spaces.\")"},{"line_number":34,"context_line":"    name \u003d forms.CharField("},{"line_number":35,"context_line":"        label\u003d_(\"Name\"),"},{"line_number":36,"context_line":"        max_length\u003d255)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_a8ce6a57","line":33,"in_reply_to":"9fdfeff1_149b1218","updated":"2019-02-12 09:14:06.000000000","message":"Thanks for clarification. Makes sense.\n\nLooking at the nova code [1], max_length is 255.\nIt looks better to add max_length check to flavor_id.\n\n[1] https://github.com/openstack/nova/blob/5a09c81af3b438ecbcf27fa653095ff55abb3ed4/nova/api/openstack/compute/schemas/flavor_manage.py#L28-L32","commit_id":"67cf6620d0559f15c9063a5dc871e83cc05d04ae"},{"author":{"_account_id":27822,"name":"pengyuesheng","email":"pengyuesheng@gohighsec.com","username":"pengyuesheng"},"change_message_id":"4f670e0f926c85d0eca6b46d94abb4e93ef9efdb","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    _flavor_id_regex \u003d (r\u0027^[a-zA-Z0-9. _-]+$\u0027)"},{"line_number":31,"context_line":"    _flavor_id_help_text \u003d _(\"flavor id can only contain alphanumeric, \""},{"line_number":32,"context_line":"                             \"characters, underscores, periods, hyphens, \""},{"line_number":33,"context_line":"                             \"spaces.\")"},{"line_number":34,"context_line":"    name \u003d forms.CharField("},{"line_number":35,"context_line":"        label\u003d_(\"Name\"),"},{"line_number":36,"context_line":"        max_length\u003d255)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_149b1218","line":33,"in_reply_to":"9fdfeff1_f42beee7","updated":"2019-02-12 08:20:06.000000000","message":"I use the command openstack flavor create --id *gghh 1236\nerror message:\nInvalid input for field/attribute id. Value: *gghh. u\u0027*gghh\u0027 does not match \u0027^(?! )[a-zA-Z0-9. _-]+(?\u003c! )$\u0027 (HTTP 400) (Request-ID: req-e058603d-d741-4230-ae4e-4d3d6641bd63)\n\nso I use [a-zA-Z0-9. _-]+$","commit_id":"67cf6620d0559f15c9063a5dc871e83cc05d04ae"}]}
