)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"00fdffbbffcd9e2fc6160ee64fb510fafdb1b9eb","unresolved":false,"context_lines":[{"line_number":14,"context_line":"all spaces: flavor_manage, servers."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"3. allow leading/trailing whitespacess, no strip spaces and allow"},{"line_number":17,"context_line":"all sapaces: aggregates, cells, create_backup, flavor_manage,"},{"line_number":18,"context_line":"server_external_event, security_groups, create_image."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The V2.1 API restrict those name field. It didn\u0027t allow any spaces in"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da20952f_a8747535","line":17,"updated":"2015-09-07 01:36:24.000000000","message":"sapaces \u003d\u003e spaces","commit_id":"8b3494cc4c88477dce51539046d3336070d25110"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"19f1972d46b2e571d87043a32d39d292988ebbda","unresolved":false,"context_lines":[{"line_number":17,"context_line":"all sapaces: aggregates, cells, create_backup, flavor_manage,"},{"line_number":18,"context_line":"server_external_event, security_groups, create_image."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The V2.1 API restrict those name field. It didn\u0027t allow any spaces in"},{"line_number":21,"context_line":"the name field anymore. For avoid breaking the user, this patch"},{"line_number":22,"context_line":"relax the validation of name field. This patch will allow leading/"},{"line_number":23,"context_line":"trailing spaces but will strip them, but still didn\u0027t allow all spaces"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da20952f_703f3187","line":20,"updated":"2015-09-06 08:16:28.000000000","message":"restrict \u003d\u003e restricts","commit_id":"8b3494cc4c88477dce51539046d3336070d25110"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0b8b8336d90651bd7417058c6edf237174d2559b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"all sapaces: aggregates, cells, create_backup, flavor_manage,"},{"line_number":18,"context_line":"server_external_event, security_groups, create_image."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The V2.1 API restrict those name field. It didn\u0027t allow any spaces in"},{"line_number":21,"context_line":"the name field anymore. For avoid breaking the user, this patch"},{"line_number":22,"context_line":"relax the validation of name field. This patch will allow leading/"},{"line_number":23,"context_line":"trailing spaces but will strip them, but still didn\u0027t allow all spaces"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da20952f_10fd95b0","line":20,"in_reply_to":"da20952f_703f3187","updated":"2015-09-07 01:31:34.000000000","message":"Done","commit_id":"8b3494cc4c88477dce51539046d3336070d25110"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"19f1972d46b2e571d87043a32d39d292988ebbda","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The V2.1 API restrict those name field. It didn\u0027t allow any spaces in"},{"line_number":21,"context_line":"the name field anymore. For avoid breaking the user, this patch"},{"line_number":22,"context_line":"relax the validation of name field. This patch will allow leading/"},{"line_number":23,"context_line":"trailing spaces but will strip them, but still didn\u0027t allow all spaces"},{"line_number":24,"context_line":"in the name fields."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da20952f_d03cfd94","line":22,"updated":"2015-09-06 08:16:28.000000000","message":"relax \u003d\u003e relaxes","commit_id":"8b3494cc4c88477dce51539046d3336070d25110"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0b8b8336d90651bd7417058c6edf237174d2559b","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The V2.1 API restrict those name field. It didn\u0027t allow any spaces in"},{"line_number":21,"context_line":"the name field anymore. For avoid breaking the user, this patch"},{"line_number":22,"context_line":"relax the validation of name field. This patch will allow leading/"},{"line_number":23,"context_line":"trailing spaces but will strip them, but still didn\u0027t allow all spaces"},{"line_number":24,"context_line":"in the name fields."},{"line_number":25,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da20952f_b02e2941","line":22,"in_reply_to":"da20952f_d03cfd94","updated":"2015-09-07 01:31:34.000000000","message":"thanks","commit_id":"8b3494cc4c88477dce51539046d3336070d25110"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"25ce258469810314188e1fc73d730a7ccd9869aa","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"3. allow leading/trailing whitespacess, no strip spaces and allow"},{"line_number":17,"context_line":"all sapaces: aggregates, cells, create_backup, flavor_manage,"},{"line_number":18,"context_line":"server_external_event, security_groups, create_image, servers\u0027 rebuild."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The V2.1 API restrict those name field. It didn\u0027t allow any spaces in"},{"line_number":21,"context_line":"the name field anymore. For avoid breaking the user, this patch"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da20952f_29ba4b0b","line":18,"updated":"2015-09-09 09:00:31.000000000","message":"Is it possible to write why we need to strip these spaces on the commit message?\n\nIf a client sent a request which contain spaces intentionally, this behavior seems strange even if the same behavior as v2.0 API.\n\nAre we facing actual problem about that?","commit_id":"05d14f0e0db24b7077af1388d95e639ca4615384"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0c9d0169cd5b0cf7ed2def9a4973d625d30f7c06","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"3. allow leading/trailing whitespacess, no strip spaces and allow"},{"line_number":17,"context_line":"all sapaces: aggregates, cells, create_backup, flavor_manage,"},{"line_number":18,"context_line":"server_external_event, security_groups, create_image, servers\u0027 rebuild."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The V2.1 API restrict those name field. It didn\u0027t allow any spaces in"},{"line_number":21,"context_line":"the name field anymore. For avoid breaking the user, this patch"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da20952f_97a852dd","line":18,"in_reply_to":"da20952f_29ba4b0b","updated":"2015-09-09 09:41:34.000000000","message":"What we think is no user will depend on leading/trailing spaces in the name except wrong typo. So we think it is useless use-case. For consistent, we just strip them.","commit_id":"05d14f0e0db24b7077af1388d95e639ca4615384"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fec2db0d3972f9b067111288662f03566f424987","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"3. allow leading/trailing whitespacess, no strip spaces and allow"},{"line_number":17,"context_line":"all sapaces: aggregates, cells, create_backup, flavor_manage,"},{"line_number":18,"context_line":"server_external_event, security_groups, create_image, servers\u0027 rebuild."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The V2.1 API restrict those name field. It didn\u0027t allow any spaces in"},{"line_number":21,"context_line":"the name field anymore. For avoid breaking the user, this patch"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da20952f_b75c76f1","line":18,"in_reply_to":"da20952f_97a852dd","updated":"2015-09-09 09:44:17.000000000","message":"How about dropping stripping from this patch?\n\nI am afraid that we need to revert back this patch due to this which is unclear on use cases.","commit_id":"05d14f0e0db24b7077af1388d95e639ca4615384"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e5586be56e101c682d081d1bef3f506c3c79dc04","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"3. allow leading/trailing whitespacess, no strip spaces and allow"},{"line_number":17,"context_line":"all sapaces: aggregates, cells, create_backup, flavor_manage,"},{"line_number":18,"context_line":"server_external_event, security_groups, create_image, servers\u0027 rebuild."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The V2.1 API restrict those name field. It didn\u0027t allow any spaces in"},{"line_number":21,"context_line":"the name field anymore. For avoid breaking the user, this patch"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"da20952f_a0618513","line":18,"in_reply_to":"da20952f_b75c76f1","updated":"2015-09-09 13:06:57.000000000","message":"Even we drop stripping, we relax validation for part of API.  Anyway this already discuss in nova api meeting. If we want to change the direction, we need discuss it again.","commit_id":"05d14f0e0db24b7077af1388d95e639ca4615384"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"94574364d04d2cd207feae8becbcc8f2ff83aaf9","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"3. allow leading/trailing whitespacess, no strip spaces and allow"},{"line_number":17,"context_line":"all sapaces: aggregates, cells, create_backup, flavor_manage,"},{"line_number":18,"context_line":"security_groups, create_image, servers\u0027 rebuild."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The V2.1 API restrict those name field. It didn\u0027t allow any spaces in"},{"line_number":21,"context_line":"the name field anymore. For avoid breaking the user, this patch"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da20952f_8c08132a","line":18,"updated":"2015-09-10 09:45:44.000000000","message":"Seems like rebuild in the code is in the above group, which is probably correct.\n\nNot sure about allowing this trailing stuff, but copying v2.0 seems correct.","commit_id":"044d8eaa49def1233213eae4b5a42257a140a725"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f084c82893f2cf69b5afd3b11ada4521abb64567","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"3. allow leading/trailing whitespacess, no strip spaces and allow"},{"line_number":17,"context_line":"all sapaces: aggregates, cells, create_backup, flavor_manage,"},{"line_number":18,"context_line":"security_groups, create_image, servers\u0027 rebuild."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The V2.1 API restrict those name field. It didn\u0027t allow any spaces in"},{"line_number":21,"context_line":"the name field anymore. For avoid breaking the user, this patch"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da20952f_a6173353","line":18,"in_reply_to":"da20952f_8c08132a","updated":"2015-09-10 11:30:48.000000000","message":"rebuild only validate name, didn\u0027t strip it. https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/legacy_v2/servers.py#L1005","commit_id":"044d8eaa49def1233213eae4b5a42257a140a725"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"94574364d04d2cd207feae8becbcc8f2ff83aaf9","unresolved":false,"context_lines":[{"line_number":21,"context_line":"the name field anymore. For avoid breaking the user, this patch"},{"line_number":22,"context_line":"relax the validation of name field. This patch will allow leading/"},{"line_number":23,"context_line":"trailing spaces but will strip them, but still didn\u0027t allow all spaces"},{"line_number":24,"context_line":"in the name fields."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Change-Id: Ic8d8416c77b5cd810e3c5e79b6d2df409ac72bea"},{"line_number":27,"context_line":"Partial-Bug: #1491511"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da20952f_513ff824","line":24,"updated":"2015-09-10 09:45:44.000000000","message":"not sure I understand the last bit:\n\nbut still didn\u0027t allow all spaces in the name fields.","commit_id":"044d8eaa49def1233213eae4b5a42257a140a725"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f084c82893f2cf69b5afd3b11ada4521abb64567","unresolved":false,"context_lines":[{"line_number":21,"context_line":"the name field anymore. For avoid breaking the user, this patch"},{"line_number":22,"context_line":"relax the validation of name field. This patch will allow leading/"},{"line_number":23,"context_line":"trailing spaces but will strip them, but still didn\u0027t allow all spaces"},{"line_number":24,"context_line":"in the name fields."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Change-Id: Ic8d8416c77b5cd810e3c5e79b6d2df409ac72bea"},{"line_number":27,"context_line":"Partial-Bug: #1491511"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"da20952f_86146f4d","line":24,"in_reply_to":"da20952f_513ff824","updated":"2015-09-10 11:30:48.000000000","message":"Actually I want to say it didn\u0027t allow \"     \" case. Let me adjust it, sorry for that.","commit_id":"044d8eaa49def1233213eae4b5a42257a140a725"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ebb5a66f48a281b4f986d1eb213fa79e84043b42","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"3. allow leading/trailing whitespacess, no strip spaces and allow"},{"line_number":17,"context_line":"all characters are spaces: aggregates, cells, create_backup,"},{"line_number":18,"context_line":"flavor_manage, security_groups, create_image, rebuild."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The V2.1 API restrict those name fields. It disallows any space in"},{"line_number":21,"context_line":"the name field anymore. For avoid breaking the user, this patch"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"ba15a1d1_c259e85b","line":18,"updated":"2015-09-16 03:01:07.000000000","message":"flavor_manage should be in the second case.","commit_id":"30e76e868c2f7fccbc88222d757dba4141ad424c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"eabd495174729620522aac44be3680e2049305b1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     He Jie Xu \u003chejie.xu@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-17 22:40:00 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow leading/trailing spaces for name field in v2.1 compat mode"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the V2 API, there are three cases for the name field:"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"ba15a1d1_ba98461d","line":7,"updated":"2015-09-17 15:47:44.000000000","message":"This is confusing because you\u0027re not actually allowing this, you\u0027re just filtering them out. I suggest just s/allow/filter/ and then I think it\u0027s clear.","commit_id":"bb25713763fca21694f9e66472c9564735f7d430"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a652ee9c60a6858936ff405cda9b5d2e3b63088e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     He Jie Xu \u003chejie.xu@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-17 22:40:00 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allow leading/trailing spaces for name field in v2.1 compat mode"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the V2 API, there are three cases for the name field:"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"ba15a1d1_1aa5b245","line":7,"in_reply_to":"ba15a1d1_ba98461d","updated":"2015-09-17 15:48:40.000000000","message":"thanks, I will update","commit_id":"bb25713763fca21694f9e66472c9564735f7d430"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f5199b58b43262efed556705b7ae42e953e849f3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     He Jie Xu \u003chejie.xu@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-18 01:15:59 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Filter leading/trailing spaces for name field in v2.1 compat mode"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In the V2 API, there are three cases for the name field:"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"ba15a1d1_f63c79e2","line":7,"updated":"2015-09-18 11:08:12.000000000","message":"Nit: this is a bit long, but its fine.","commit_id":"20a521755dda9f88604594b7d418ab4be9723d06"}],"nova/api/openstack/common.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d0836a80da3ba36054e10b2b19b71fa0266aeeb4","unresolved":false,"context_lines":[{"line_number":513,"context_line":""},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"def normalize_name(name):"},{"line_number":516,"context_line":"    return name.strip()"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"def raise_feature_not_supported(msg\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_233d368e","line":516,"updated":"2015-09-11 01:02:15.000000000","message":"again, I don\u0027t like this API behavior even if that is the same as v2.0.\n\nThis code deletes spaces automatically even if a client specifies them. At least, we need to write the reason of this strip() as the NOTE or something.","commit_id":"4bb0f348d2d5f8fd9955ee10d670f44a5f362b5c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"6ae4b7de8ab35acdbacf7996a0e7add4659919df","unresolved":false,"context_lines":[{"line_number":513,"context_line":""},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"def normalize_name(name):"},{"line_number":516,"context_line":"    return name.strip()"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"def raise_feature_not_supported(msg\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_237f76e0","line":516,"in_reply_to":"da20952f_233d368e","updated":"2015-09-11 01:17:38.000000000","message":"ok, actually we discuss this in previous api meeting. If you really don\u0027t like this, we can discuss this again in next api meeting.","commit_id":"4bb0f348d2d5f8fd9955ee10d670f44a5f362b5c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7106cf60a9f93fddf8dceb04c1190e47f7ca6514","unresolved":false,"context_lines":[{"line_number":513,"context_line":""},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"def normalize_name(name):"},{"line_number":516,"context_line":"    return name.strip()"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"def raise_feature_not_supported(msg\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_323d818e","line":516,"in_reply_to":"da20952f_237f76e0","updated":"2015-09-11 02:10:41.000000000","message":"It is fine if containing reasonable NOTE here, but the meeting log is not enough because we can easily forget it in the future :-(","commit_id":"4bb0f348d2d5f8fd9955ee10d670f44a5f362b5c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"9fae50735bd024dd818a6b46acd0217f448499a2","unresolved":false,"context_lines":[{"line_number":513,"context_line":""},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"def normalize_name(name):"},{"line_number":516,"context_line":"    return name.strip()"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"def raise_feature_not_supported(msg\u003dNone):"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_f2db89eb","line":516,"in_reply_to":"da20952f_323d818e","updated":"2015-09-11 02:29:13.000000000","message":"ok, I got it, let me add the note.","commit_id":"4bb0f348d2d5f8fd9955ee10d670f44a5f362b5c"}],"nova/api/openstack/compute/aggregates.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"19f1972d46b2e571d87043a32d39d292988ebbda","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        context \u003d _get_context(req)"},{"line_number":61,"context_line":"        authorize(context, action\u003d\u0027create\u0027)"},{"line_number":62,"context_line":"        host_aggregate \u003d body[\"aggregate\"]"},{"line_number":63,"context_line":"        name \u003d host_aggregate[\"name\"].strip()"},{"line_number":64,"context_line":"        avail_zone \u003d host_aggregate.get(\"availability_zone\")"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_f05341e0","line":63,"updated":"2015-09-06 08:16:28.000000000","message":"would it not be preferable to have a common method - for example:\n\ndef nomalize_name(name):\n  return name.strip()\n\nThis will allow us to have the chnage in one place if and when we decide to modify this in the future","commit_id":"8b3494cc4c88477dce51539046d3336070d25110"},{"author":{"_account_id":14101,"name":"yapeng Yang","email":"a394954369@gmail.com","username":"yapeng"},"change_message_id":"8d6a5d130dcbe402a231d2db103471354fbbedb9","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        context \u003d _get_context(req)"},{"line_number":61,"context_line":"        authorize(context, action\u003d\u0027create\u0027)"},{"line_number":62,"context_line":"        host_aggregate \u003d body[\"aggregate\"]"},{"line_number":63,"context_line":"        name \u003d host_aggregate[\"name\"].strip()"},{"line_number":64,"context_line":"        avail_zone \u003d host_aggregate.get(\"availability_zone\")"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_b0338913","line":63,"in_reply_to":"da20952f_f05341e0","updated":"2015-09-06 09:19:46.000000000","message":"this is a good idea! It\u0027s better in the future","commit_id":"8b3494cc4c88477dce51539046d3336070d25110"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"0b8b8336d90651bd7417058c6edf237174d2559b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        context \u003d _get_context(req)"},{"line_number":61,"context_line":"        authorize(context, action\u003d\u0027create\u0027)"},{"line_number":62,"context_line":"        host_aggregate \u003d body[\"aggregate\"]"},{"line_number":63,"context_line":"        name \u003d host_aggregate[\"name\"].strip()"},{"line_number":64,"context_line":"        avail_zone \u003d host_aggregate.get(\"availability_zone\")"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_f00101b0","line":63,"in_reply_to":"da20952f_f05341e0","updated":"2015-09-07 01:31:34.000000000","message":"yea, good idea.","commit_id":"8b3494cc4c88477dce51539046d3336070d25110"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"94574364d04d2cd207feae8becbcc8f2ff83aaf9","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    # NOTE(gmann): Returns 200 for backwards compatibility but should be 201"},{"line_number":54,"context_line":"    # as this operation complete the creation of aggregates resource."},{"line_number":55,"context_line":"    @extensions.expected_errors((400, 409))"},{"line_number":56,"context_line":"    @validation.schema(aggregates.create_v20, min_version\u003d\u00272.0\u0027,"},{"line_number":57,"context_line":"                       max_version\u003d\u00272.0\u0027)"},{"line_number":58,"context_line":"    @validation.schema(aggregates.create, min_version\u003d\u00272.1\u0027)"},{"line_number":59,"context_line":"    def create(self, req, body):"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_918270c7","line":56,"updated":"2015-09-10 09:45:44.000000000","message":"Do we actually need to put a min_version here?","commit_id":"044d8eaa49def1233213eae4b5a42257a140a725"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f084c82893f2cf69b5afd3b11ada4521abb64567","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    # NOTE(gmann): Returns 200 for backwards compatibility but should be 201"},{"line_number":54,"context_line":"    # as this operation complete the creation of aggregates resource."},{"line_number":55,"context_line":"    @extensions.expected_errors((400, 409))"},{"line_number":56,"context_line":"    @validation.schema(aggregates.create_v20, min_version\u003d\u00272.0\u0027,"},{"line_number":57,"context_line":"                       max_version\u003d\u00272.0\u0027)"},{"line_number":58,"context_line":"    @validation.schema(aggregates.create, min_version\u003d\u00272.1\u0027)"},{"line_number":59,"context_line":"    def create(self, req, body):"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_a9fe2403","line":56,"in_reply_to":"da20952f_918270c7","updated":"2015-09-10 11:30:48.000000000","message":"yes, we can. but I still prefer explicitly set at here. looks like more readable, what would you think?","commit_id":"044d8eaa49def1233213eae4b5a42257a140a725"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d0836a80da3ba36054e10b2b19b71fa0266aeeb4","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    # as this operation complete the creation of aggregates resource."},{"line_number":55,"context_line":"    @extensions.expected_errors((400, 409))"},{"line_number":56,"context_line":"    @validation.schema(aggregates.create_v20, min_version\u003d\u00272.0\u0027,"},{"line_number":57,"context_line":"                       max_version\u003d\u00272.0\u0027)"},{"line_number":58,"context_line":"    @validation.schema(aggregates.create, min_version\u003d\u00272.1\u0027)"},{"line_number":59,"context_line":"    def create(self, req, body):"},{"line_number":60,"context_line":"        \"\"\"Creates an aggregate, given its name and"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_a3b5c632","line":57,"updated":"2015-09-11 01:02:15.000000000","message":"Can we specify min/max_version without the argument names?\n\nTechnically, current code is no problem but it seems redundant for the reedability.\n\n @validation.schema(aggregates.create_v20, \u00272.0\u0027, \u00272.0\u0027)\n @validation.schema(aggregates.create, \u00272.1\u0027)\n\nseems easy to understand which schema is used.","commit_id":"4bb0f348d2d5f8fd9955ee10d670f44a5f362b5c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"6ae4b7de8ab35acdbacf7996a0e7add4659919df","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    # as this operation complete the creation of aggregates resource."},{"line_number":55,"context_line":"    @extensions.expected_errors((400, 409))"},{"line_number":56,"context_line":"    @validation.schema(aggregates.create_v20, min_version\u003d\u00272.0\u0027,"},{"line_number":57,"context_line":"                       max_version\u003d\u00272.0\u0027)"},{"line_number":58,"context_line":"    @validation.schema(aggregates.create, min_version\u003d\u00272.1\u0027)"},{"line_number":59,"context_line":"    def create(self, req, body):"},{"line_number":60,"context_line":"        \"\"\"Creates an aggregate, given its name and"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_2308d67f","line":57,"in_reply_to":"da20952f_a3b5c632","updated":"2015-09-11 01:17:38.000000000","message":"Emm...ok, actually I prefer to use argument names, because some parameter have default value, use the argument name can avoid mistake. But anyway, this is small thing, I also can change it.","commit_id":"4bb0f348d2d5f8fd9955ee10d670f44a5f362b5c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d0836a80da3ba36054e10b2b19b71fa0266aeeb4","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    @extensions.expected_errors((400, 404, 409))"},{"line_number":97,"context_line":"    @validation.schema(aggregates.update_v20, min_version\u003d\u00272.0\u0027,"},{"line_number":98,"context_line":"                       max_version\u003d\u00272.0\u0027)"},{"line_number":99,"context_line":"    @validation.schema(aggregates.update, min_version\u003d\u00272.1\u0027)"},{"line_number":100,"context_line":"    def update(self, req, id, body):"},{"line_number":101,"context_line":"        \"\"\"Updates the name and/or availability_zone of given aggregate.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_63824e54","line":98,"updated":"2015-09-11 01:02:15.000000000","message":"ditto","commit_id":"4bb0f348d2d5f8fd9955ee10d670f44a5f362b5c"}],"nova/api/openstack/compute/create_backup.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"94574364d04d2cd207feae8becbcc8f2ff83aaf9","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        props.update(metadata)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, id)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        try:"},{"line_number":67,"context_line":"            image \u003d self.compute_api.backup(context, instance, image_name,"},{"line_number":68,"context_line":"                    backup_type, rotation, extra_properties\u003dprops)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_b15c547e","side":"PARENT","line":65,"updated":"2015-09-10 09:45:44.000000000","message":"Nit: we should leave this alone really.","commit_id":"592f35f2e25af7795268e6fb27bf9b67271069b3"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f084c82893f2cf69b5afd3b11ada4521abb64567","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        props.update(metadata)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, id)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        try:"},{"line_number":67,"context_line":"            image \u003d self.compute_api.backup(context, instance, image_name,"},{"line_number":68,"context_line":"                    backup_type, rotation, extra_properties\u003dprops)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_2913f45d","side":"PARENT","line":65,"in_reply_to":"da20952f_b15c547e","updated":"2015-09-10 11:30:48.000000000","message":"oops, will remove it.","commit_id":"592f35f2e25af7795268e6fb27bf9b67271069b3"}],"nova/api/openstack/compute/keypairs.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"df859a8ab608f62528e3f71a8a5f0ae70c272b96","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    @wsgi.Controller.api_version(\"2.1\", \"2.1\")  # noqa"},{"line_number":96,"context_line":"    @extensions.expected_errors((400, 403, 409))"},{"line_number":97,"context_line":"    @validation.schema(keypairs.create_v20, \"2.0\", \"2.0\")"},{"line_number":98,"context_line":"    @validation.schema(keypairs.create, \"2.1\", \"2.1\")"},{"line_number":99,"context_line":"    def create(self, req, body):"},{"line_number":100,"context_line":"        \"\"\"Create or import keypair."},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"da20952f_9d2b35eb","line":98,"updated":"2015-09-11 10:43:42.000000000","message":"Here should be\n\n @validation.schema(keypairs.create, \"2.1\")\n\nfor enabling validation on 2.1+","commit_id":"30e76e868c2f7fccbc88222d757dba4141ad424c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2781f4bc2667a92affb7362caffa0e18dbf40ebd","unresolved":false,"context_lines":[{"line_number":95,"context_line":"    @wsgi.Controller.api_version(\"2.1\", \"2.1\")  # noqa"},{"line_number":96,"context_line":"    @extensions.expected_errors((400, 403, 409))"},{"line_number":97,"context_line":"    @validation.schema(keypairs.create_v20, \"2.0\", \"2.0\")"},{"line_number":98,"context_line":"    @validation.schema(keypairs.create, \"2.1\", \"2.1\")"},{"line_number":99,"context_line":"    def create(self, req, body):"},{"line_number":100,"context_line":"        \"\"\"Create or import keypair."},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba15a1d1_0130b055","line":98,"in_reply_to":"da20952f_9d2b35eb","updated":"2015-09-12 06:15:57.000000000","message":"actually this method only for 2.1","commit_id":"30e76e868c2f7fccbc88222d757dba4141ad424c"}],"nova/api/openstack/compute/schemas/aggregates.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"73d4f5456fb85a372567e6e09268264b34768ecf","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"create_v20 \u003d copy.deepcopy(create)"},{"line_number":42,"context_line":"create_v20[\u0027properties\u0027][\u0027aggregate\u0027][\u0027properties\u0027][\u0027name\u0027] \u003d (parameter_types."},{"line_number":43,"context_line":"    name_with_leading_trailing_spaces)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"update \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba15a1d1_5367bab6","line":43,"updated":"2015-09-17 01:58:31.000000000","message":"humm, can we have all modified schema for v2.1 comp mode in separate file to have v2.1 schema clean?","commit_id":"30e76e868c2f7fccbc88222d757dba4141ad424c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"b2a9bb27118e999d12b94c8bcc875aeeb2b5d002","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"create_v20 \u003d copy.deepcopy(create)"},{"line_number":42,"context_line":"create_v20[\u0027properties\u0027][\u0027aggregate\u0027][\u0027properties\u0027][\u0027name\u0027] \u003d (parameter_types."},{"line_number":43,"context_line":"    name_with_leading_trailing_spaces)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"update \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba15a1d1_ce96c0ef","line":43,"in_reply_to":"ba15a1d1_5367bab6","updated":"2015-09-17 05:32:03.000000000","message":"Emm..I think it\u0027s fine, there is version in the variable name as we treat other api version","commit_id":"30e76e868c2f7fccbc88222d757dba4141ad424c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5a9ae30e1d4a4f8152b45595679e8aa202641404","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"create_v20 \u003d copy.deepcopy(create)"},{"line_number":42,"context_line":"create_v20[\u0027properties\u0027][\u0027aggregate\u0027][\u0027properties\u0027][\u0027name\u0027] \u003d (parameter_types."},{"line_number":43,"context_line":"    name_with_leading_trailing_spaces)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"update \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba15a1d1_1384cd5b","line":43,"in_reply_to":"ba15a1d1_ce96c0ef","updated":"2015-09-17 12:26:24.000000000","message":"+1 lets not over cook this.","commit_id":"30e76e868c2f7fccbc88222d757dba4141ad424c"}],"nova/api/openstack/compute/schemas/servers.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"28dec223ea5e20ed521bbc9edeaf9aafb31ea276","unresolved":false,"context_lines":[{"line_number":21,"context_line":"        \u0027server\u0027: {"},{"line_number":22,"context_line":"            \u0027type\u0027: \u0027object\u0027,"},{"line_number":23,"context_line":"            \u0027properties\u0027: {"},{"line_number":24,"context_line":"                \u0027name\u0027: parameter_types.name_with_leading_trailing_spaces,"},{"line_number":25,"context_line":"                \u0027imageRef\u0027: parameter_types.image_ref,"},{"line_number":26,"context_line":"                \u0027flavorRef\u0027: parameter_types.flavor_ref,"},{"line_number":27,"context_line":"                \u0027adminPass\u0027: parameter_types.admin_password,"}],"source_content_type":"text/x-python","patch_set":1,"id":"da20952f_d9289de4","line":24,"updated":"2015-09-07 05:20:57.000000000","message":"should we allow it for v2.1 (or only for v2.1 compatible mode)? IMO leading and trailing space does not seems good for server name.","commit_id":"8b3494cc4c88477dce51539046d3336070d25110"}],"nova/tests/unit/api/openstack/compute/test_keypairs.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2cc5d2cc4a9f9596eb7825df4e87460b7c483853","unresolved":false,"context_lines":[{"line_number":483,"context_line":""},{"line_number":484,"context_line":"    def test_keypair_create_with_name_leading_trailing_spaces_compat_mode("},{"line_number":485,"context_line":"            self):"},{"line_number":486,"context_line":"        pass"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"    def test_create_server_keypair_name_with_leading_trailing_compat_mode("},{"line_number":489,"context_line":"            self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba15a1d1_731509e3","line":486,"updated":"2015-09-17 12:31:25.000000000","message":"its tempting to assert the validation rejects the values, but thats overkill really.","commit_id":"7bfb715a0bbc6c41b3536a73e3dd935740a60589"}],"nova/tests/unit/test_api_validation.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"94574364d04d2cd207feae8becbcc8f2ff83aaf9","unresolved":false,"context_lines":[{"line_number":691,"context_line":"    def test_validate_name(self):"},{"line_number":692,"context_line":"        self.assertEqual(\u0027Validation succeeded.\u0027,"},{"line_number":693,"context_line":"                         self.post(body\u003d{\u0027foo\u0027: \u0027m1.small\u0027},"},{"line_number":694,"context_line":"                                   req\u003dFakeRequest()))"},{"line_number":695,"context_line":"        self.assertEqual(\u0027Validation succeeded.\u0027,"},{"line_number":696,"context_line":"                         self.post(body\u003d{\u0027foo\u0027: \u0027my server\u0027},"},{"line_number":697,"context_line":"                                   req\u003dFakeRequest()))"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_aca7170a","line":694,"updated":"2015-09-10 09:45:44.000000000","message":"Nit: its nice to add messages to tests like this, so its clear which assertion has failed the test, but thats probably over kill. The alternative is having each assertion in its own test.","commit_id":"044d8eaa49def1233213eae4b5a42257a140a725"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c4096bf139722dd2747b5565caefd54cb2c17f94","unresolved":false,"context_lines":[{"line_number":691,"context_line":"    def test_validate_name(self):"},{"line_number":692,"context_line":"        self.assertEqual(\u0027Validation succeeded.\u0027,"},{"line_number":693,"context_line":"                         self.post(body\u003d{\u0027foo\u0027: \u0027m1.small\u0027},"},{"line_number":694,"context_line":"                                   req\u003dFakeRequest()))"},{"line_number":695,"context_line":"        self.assertEqual(\u0027Validation succeeded.\u0027,"},{"line_number":696,"context_line":"                         self.post(body\u003d{\u0027foo\u0027: \u0027my server\u0027},"},{"line_number":697,"context_line":"                                   req\u003dFakeRequest()))"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_697b2c7c","line":694,"in_reply_to":"da20952f_aca7170a","updated":"2015-09-10 11:35:37.000000000","message":"yea, I also prefer each assertion in its own test. Actually I copy this from line 589. If possible, how about we tidy up them later","commit_id":"044d8eaa49def1233213eae4b5a42257a140a725"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"94574364d04d2cd207feae8becbcc8f2ff83aaf9","unresolved":false,"context_lines":[{"line_number":745,"context_line":"                      u\"\\U00010000. .* does not match .*\")"},{"line_number":746,"context_line":"            self.check_validation_error(self.post, body\u003d{\u0027foo\u0027: u\u0027\\U00010000\u0027},"},{"line_number":747,"context_line":"                                        expected_detail\u003ddetail)"},{"line_number":748,"context_line":"        except ValueError:"},{"line_number":749,"context_line":"            pass"},{"line_number":750,"context_line":""},{"line_number":751,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_4c967b95","line":748,"updated":"2015-09-10 09:45:44.000000000","message":"Nit: Feels a bit like this should be a separate test with a skip condition, but maybe thats overkill.","commit_id":"044d8eaa49def1233213eae4b5a42257a140a725"}]}
