)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d7a23e9e7b74fbf81686dfb200ab13da36f0d196","unresolved":false,"context_lines":[{"line_number":10,"context_line":"before setting them."},{"line_number":11,"context_line":"This will make possible to remove those keys."},{"line_number":12,"context_line":"It allows alphanumeric characters, periods, dashes,"},{"line_number":13,"context_line":"underscores, colons and spaces."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ic2e5d7ce42c8ecb7ee45cd168bd008035fd4bbdf"},{"line_number":16,"context_line":"Closes-Bug: #1259711"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAUH%2F%2Btdc%3D","line":13,"updated":"2014-01-22 22:48:02.000000000","message":"If you are also allowing commas as the regex seems to suggest can you add that here?","commit_id":"7168eb324b43e2026aa1d0c286a0491ea4da771b"},{"author":{"_account_id":9313,"name":"alejandro emanuel paredes","email":"alejandro.e.paredes@intel.com","username":"aeparede"},"change_message_id":"8cae29a802ec22615f16a09b419eb8cba8723d77","unresolved":false,"context_lines":[{"line_number":10,"context_line":"before setting them."},{"line_number":11,"context_line":"This will make possible to remove those keys."},{"line_number":12,"context_line":"It allows alphanumeric characters, periods, dashes,"},{"line_number":13,"context_line":"underscores, colons and spaces."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ic2e5d7ce42c8ecb7ee45cd168bd008035fd4bbdf"},{"line_number":16,"context_line":"Closes-Bug: #1259711"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAUH%2F%2Bp2k%3D","line":13,"in_reply_to":"AAAAUH%2F%2Btdc%3D","updated":"2014-01-23 14:22:55.000000000","message":"Done. Removed the commas,\nTxs!","commit_id":"7168eb324b43e2026aa1d0c286a0491ea4da771b"},{"author":{"_account_id":7051,"name":"Swapnil Kulkarni","email":"skulkarn@redhat.com","username":"swapnilkulkarni2608"},"change_message_id":"5ba54593a60e9ac1bc8dd6f777255d823c4ab3c8","unresolved":false,"context_lines":[{"line_number":11,"context_line":"This will make possible to remove those keys."},{"line_number":12,"context_line":"It allows alphanumeric characters, periods, dashes,"},{"line_number":13,"context_line":"underscores, colons and spaces."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ic2e5d7ce42c8ecb7ee45cd168bd008035fd4bbdf"},{"line_number":16,"context_line":"Closes-Bug: #1259711"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAUH%2F%2BryY%3D","line":14,"updated":"2014-01-23 07:52:43.000000000","message":"Shouldn\u0027t it have DocImpact?","commit_id":"7168eb324b43e2026aa1d0c286a0491ea4da771b"},{"author":{"_account_id":9313,"name":"alejandro emanuel paredes","email":"alejandro.e.paredes@intel.com","username":"aeparede"},"change_message_id":"8cae29a802ec22615f16a09b419eb8cba8723d77","unresolved":false,"context_lines":[{"line_number":11,"context_line":"This will make possible to remove those keys."},{"line_number":12,"context_line":"It allows alphanumeric characters, periods, dashes,"},{"line_number":13,"context_line":"underscores, colons and spaces."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ic2e5d7ce42c8ecb7ee45cd168bd008035fd4bbdf"},{"line_number":16,"context_line":"Closes-Bug: #1259711"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAUH%2F%2Bp2M%3D","line":14,"in_reply_to":"AAAAUH%2F%2BryY%3D","updated":"2014-01-23 14:22:55.000000000","message":"Not found impact yet, will keep searching...\nTxs!","commit_id":"7168eb324b43e2026aa1d0c286a0491ea4da771b"}],"cinder/api/common.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"d7a23e9e7b74fbf81686dfb200ab13da36f0d196","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"XML_NS_V1 \u003d \u0027http://docs.openstack.org/volume/api/v1\u0027"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"VALID_KEY_NAME_REGEX \u003d re.compile(\"[\\w\\.\\- :,]+$\", re.UNICODE)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def validate_key_names(key_names_list):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Btdk%3D","line":50,"updated":"2014-01-22 22:48:02.000000000","message":"Could you add a comment here documenting what it is looking to match.  Would make this easier to parse.  Also, your commit message doesn\u0027t mention matching commas but it looks like you have it in your regex.  Is that right?","commit_id":"7168eb324b43e2026aa1d0c286a0491ea4da771b"},{"author":{"_account_id":9313,"name":"alejandro emanuel paredes","email":"alejandro.e.paredes@intel.com","username":"aeparede"},"change_message_id":"8cae29a802ec22615f16a09b419eb8cba8723d77","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"XML_NS_V1 \u003d \u0027http://docs.openstack.org/volume/api/v1\u0027"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"VALID_KEY_NAME_REGEX \u003d re.compile(\"[\\w\\.\\- :,]+$\", re.UNICODE)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"def validate_key_names(key_names_list):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2Bp10%3D","line":50,"in_reply_to":"AAAAUH%2F%2Btdk%3D","updated":"2014-01-23 14:22:55.000000000","message":"Done! Removed the commas. Added comment for the regex.\nTxs!","commit_id":"7168eb324b43e2026aa1d0c286a0491ea4da771b"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"16e668a461a027aa7b1c4ae2d012d6ff7fbbac99","unresolved":false,"context_lines":[{"line_number":57,"context_line":"\\_ matches the character _ literally"},{"line_number":58,"context_line":"$ assert position at end of the string"},{"line_number":59,"context_line":"\"\"\""},{"line_number":60,"context_line":"VALID_KEY_NAME_REGEX \u003d re.compile(\"^[\\w\\.\\-\\:\\_]+$\", re.UNICODE)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def validate_key_names(key_names_list):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bdms%3D","line":60,"updated":"2014-01-25 19:03:58.000000000","message":"You\u0027re missing an \u0027r\u0027 prefix for the regex here.  Also the comment is way too detailed in my opinion, and I\u0027m not sure that a docstring is proper for a global variable.  How about:\n\n # Regex that allows alphanumeric characters, underscores, periods,\n # colons and hyphens\n VALID_KEY_NAME_REGEX \u003d re.compile(r\"^[\\w\\.\\-\\:\\_]+$\", re.UNICODE)","commit_id":"922cd7cd0ddb4ce25cc1a22cbd7f28c11b61bb20"},{"author":{"_account_id":9313,"name":"alejandro emanuel paredes","email":"alejandro.e.paredes@intel.com","username":"aeparede"},"change_message_id":"9fb13d6ffd2c0b93ff20345ed8768518744236d1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"\\_ matches the character _ literally"},{"line_number":58,"context_line":"$ assert position at end of the string"},{"line_number":59,"context_line":"\"\"\""},{"line_number":60,"context_line":"VALID_KEY_NAME_REGEX \u003d re.compile(\"^[\\w\\.\\-\\:\\_]+$\", re.UNICODE)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def validate_key_names(key_names_list):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BWk8%3D","line":60,"in_reply_to":"AAAAUH%2F%2BcrQ%3D","updated":"2014-01-27 19:22:40.000000000","message":"Done.\nTxs!","commit_id":"922cd7cd0ddb4ce25cc1a22cbd7f28c11b61bb20"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"7d25e915074a78e416f2ba3bca123a03d02c46f1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"\\_ matches the character _ literally"},{"line_number":58,"context_line":"$ assert position at end of the string"},{"line_number":59,"context_line":"\"\"\""},{"line_number":60,"context_line":"VALID_KEY_NAME_REGEX \u003d re.compile(\"^[\\w\\.\\-\\:\\_]+$\", re.UNICODE)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def validate_key_names(key_names_list):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BcrQ%3D","line":60,"in_reply_to":"AAAAUH%2F%2BdhQ%3D","updated":"2014-01-26 06:58:39.000000000","message":"16 pylint warnings:\n\n W: 50,0: Anomalous backslash in string: \u0027\\w\u0027. String constant might be missing an r prefix.\n W: 50,0: Anomalous backslash in string: \u0027\\.\u0027. String constant might be missing an r prefix.\n W: 50,0: Anomalous backslash in string: \u0027\\-\u0027. String constant might be missing an r prefix.\n W: 50,0: Anomalous backslash in string: \u0027\\:\u0027. String constant might be missing an r prefix.\n W: 50,0: Anomalous backslash in string: \u0027\\_\u0027. String constant might be missing an r prefix.\n W: 50,0: Anomalous backslash in string: \u0027\\w\u0027. String constant might be missing an r prefix.\n W: 50,0: Anomalous backslash in string: \u0027\\.\u0027. String constant might be missing an r prefix.\n W: 50,0: Anomalous backslash in string: \u0027\\-\u0027. String constant might be missing an r prefix.\n W: 50,0: Anomalous backslash in string: \u0027\\:\u0027. String constant might be missing an r prefix.\n W: 50,0: Anomalous backslash in string: \u0027\\_\u0027. String constant might be missing an r prefix.\n W: 60,0: Anomalous backslash in string: \u0027\\w\u0027. String constant might be missing an r prefix.\n W: 60,0: Anomalous backslash in string: \u0027\\.\u0027. String constant might be missing an r prefix.\n W: 60,0: Anomalous backslash in string: \u0027\\-\u0027. String constant might be missing an r prefix.\n W: 60,0: Anomalous backslash in string: \u0027\\:\u0027. String constant might be missing an r prefix.\n W: 60,0: Anomalous backslash in string: \u0027\\_\u0027. String constant might be missing an r prefix.\n W: 59,-1: String statement has no effect\n\nI\u0027m not saying the code doesn\u0027t work, but why not fix it so pylint doesn\u0027t puke on it?","commit_id":"922cd7cd0ddb4ce25cc1a22cbd7f28c11b61bb20"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"323e2e7809f12714a973a34ba9028158fa9dbb6d","unresolved":false,"context_lines":[{"line_number":57,"context_line":"\\_ matches the character _ literally"},{"line_number":58,"context_line":"$ assert position at end of the string"},{"line_number":59,"context_line":"\"\"\""},{"line_number":60,"context_line":"VALID_KEY_NAME_REGEX \u003d re.compile(\"^[\\w\\.\\-\\:\\_]+$\", re.UNICODE)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def validate_key_names(key_names_list):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BdhQ%3D","line":60,"in_reply_to":"AAAAUH%2F%2Bdms%3D","updated":"2014-01-25 20:20:20.000000000","message":"Actually, the \u0027r\u0027 prefix is not needed here. You can add it as well, but there\u0027s not special character where the backslash has an specific meaning.\n\nYou can do a find . -name \\*.py|xargs grep compile|grep \\w on nova, heat, etc  for instance, and will find the same expresion without raw prefix.\n\nI agree in the comment length. Should be shorter.","commit_id":"922cd7cd0ddb4ce25cc1a22cbd7f28c11b61bb20"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"16e668a461a027aa7b1c4ae2d012d6ff7fbbac99","unresolved":false,"context_lines":[{"line_number":63,"context_line":"def validate_key_names(key_names_list):"},{"line_number":64,"context_line":"    \"\"\"Validate each item of the list to match key name regex.\"\"\""},{"line_number":65,"context_line":"    for key_name in key_names_list:"},{"line_number":66,"context_line":"        if not VALID_KEY_NAME_REGEX.match(key_name):"},{"line_number":67,"context_line":"            return False"},{"line_number":68,"context_line":"    return True"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BdmM%3D","line":66,"updated":"2014-01-25 19:03:58.000000000","message":"Should you do a cast here - unicode(key_name), to ensure that it matches re.UNICODE in the regular expression?  I\u0027m not familiar with that flag.","commit_id":"922cd7cd0ddb4ce25cc1a22cbd7f28c11b61bb20"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"7d25e915074a78e416f2ba3bca123a03d02c46f1","unresolved":false,"context_lines":[{"line_number":63,"context_line":"def validate_key_names(key_names_list):"},{"line_number":64,"context_line":"    \"\"\"Validate each item of the list to match key name regex.\"\"\""},{"line_number":65,"context_line":"    for key_name in key_names_list:"},{"line_number":66,"context_line":"        if not VALID_KEY_NAME_REGEX.match(key_name):"},{"line_number":67,"context_line":"            return False"},{"line_number":68,"context_line":"    return True"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bcqw%3D","line":66,"in_reply_to":"AAAAUH%2F%2Bdfo%3D","updated":"2014-01-26 06:58:39.000000000","message":"OK, works for me.","commit_id":"922cd7cd0ddb4ce25cc1a22cbd7f28c11b61bb20"},{"author":{"_account_id":9275,"name":"Leandro Ignacio Costantino","email":"leandro.i.costantino@intel.com","username":"lcostantino"},"change_message_id":"323e2e7809f12714a973a34ba9028158fa9dbb6d","unresolved":false,"context_lines":[{"line_number":63,"context_line":"def validate_key_names(key_names_list):"},{"line_number":64,"context_line":"    \"\"\"Validate each item of the list to match key name regex.\"\"\""},{"line_number":65,"context_line":"    for key_name in key_names_list:"},{"line_number":66,"context_line":"        if not VALID_KEY_NAME_REGEX.match(key_name):"},{"line_number":67,"context_line":"            return False"},{"line_number":68,"context_line":"    return True"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bdfo%3D","line":66,"in_reply_to":"AAAAUH%2F%2BdmM%3D","updated":"2014-01-25 20:20:20.000000000","message":"re.UNICODE will extend for instance \\w to match also unicode characters.\n\nUsing unicode(key_name) will go against python3.3 compat, but, since the py3.3 gate is not running and we have ocurrence of unicode() calls inside cinder, then i would not argue about using it.\n\nBesides that, hacking.rst says \n\"- All external text that is not explicitly encoded (database storage, commandline arguments, etc.) should be presumed to be encoded as utf-8.\n\"\n, and at least in my system, all those keys are received as unicode.","commit_id":"922cd7cd0ddb4ce25cc1a22cbd7f28c11b61bb20"}],"cinder/api/contrib/types_extra_specs.py":[{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"16e668a461a027aa7b1c4ae2d012d6ff7fbbac99","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def _check_key_names(self, keys):"},{"line_number":149,"context_line":"        if not common.validate_key_names(keys):"},{"line_number":150,"context_line":"            expl \u003d _(\u0027Key Names can only contain alphanumeric characters, \u0027"},{"line_number":151,"context_line":"                     \u0027underscores, periods, colons and hyphens.\u0027)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bdl8%3D","line":150,"updated":"2014-01-25 19:03:58.000000000","message":"s/Names/names/","commit_id":"922cd7cd0ddb4ce25cc1a22cbd7f28c11b61bb20"},{"author":{"_account_id":9313,"name":"alejandro emanuel paredes","email":"alejandro.e.paredes@intel.com","username":"aeparede"},"change_message_id":"9fb13d6ffd2c0b93ff20345ed8768518744236d1","unresolved":false,"context_lines":[{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def _check_key_names(self, keys):"},{"line_number":149,"context_line":"        if not common.validate_key_names(keys):"},{"line_number":150,"context_line":"            expl \u003d _(\u0027Key Names can only contain alphanumeric characters, \u0027"},{"line_number":151,"context_line":"                     \u0027underscores, periods, colons and hyphens.\u0027)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dexpl)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BWkM%3D","line":150,"in_reply_to":"AAAAUH%2F%2Bdl8%3D","updated":"2014-01-27 19:22:40.000000000","message":"Done. Txs!","commit_id":"922cd7cd0ddb4ce25cc1a22cbd7f28c11b61bb20"}],"cinder/tests/api/contrib/test_types_extra_specs.py":[{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"16e668a461a027aa7b1c4ae2d012d6ff7fbbac99","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        self.assertEqual(\u0027value1\u0027, res_dict[\u0027extra_specs\u0027][\u0027key1\u0027])"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def test_create_key_allowed_chars(self):"},{"line_number":147,"context_line":"        self.stubs.Set(cinder.db,"},{"line_number":148,"context_line":"                       \u0027volume_type_extra_specs_update_or_create\u0027,"},{"line_number":149,"context_line":"                       return_create_volume_type_extra_specs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2Bdlk%3D","line":146,"updated":"2014-01-25 19:03:58.000000000","message":"New unit tests should use mock rather than mox (which includes stubs.Set).  See \"Creating Unit Tests\" here: https://github.com/openstack/cinder/blob/master/HACKING.rst","commit_id":"922cd7cd0ddb4ce25cc1a22cbd7f28c11b61bb20"},{"author":{"_account_id":9313,"name":"alejandro emanuel paredes","email":"alejandro.e.paredes@intel.com","username":"aeparede"},"change_message_id":"9fb13d6ffd2c0b93ff20345ed8768518744236d1","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        self.assertEqual(\u0027value1\u0027, res_dict[\u0027extra_specs\u0027][\u0027key1\u0027])"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def test_create_key_allowed_chars(self):"},{"line_number":147,"context_line":"        self.stubs.Set(cinder.db,"},{"line_number":148,"context_line":"                       \u0027volume_type_extra_specs_update_or_create\u0027,"},{"line_number":149,"context_line":"                       return_create_volume_type_extra_specs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BWkE%3D","line":146,"in_reply_to":"AAAAUH%2F%2Bdlk%3D","updated":"2014-01-27 19:22:40.000000000","message":"Done. Txs!","commit_id":"922cd7cd0ddb4ce25cc1a22cbd7f28c11b61bb20"}]}
