)]}'
{"nova/api/ec2/ec2utils.py":[{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"60e142ad69cd4c1b9744e26cc57617b7bdecce25","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def parse_strtime(strtime):"},{"line_number":190,"context_line":"        # NOTE(MotoKen): time format for aws-sdk-java contains millisecond"},{"line_number":191,"context_line":"        f \u003d \"%Y-%m-%dT%H:%M:%S.%fZ\" if \u0027.\u0027 in strtime else \"%Y-%m-%dT%H:%M:%SZ\""},{"line_number":192,"context_line":"        return timeutils.parse_strtime(strtime, f)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOH%2F%2F6H4%3D","line":191,"updated":"2013-03-21 12:17:35.000000000","message":"Can you make this a multi-line if statement for readability?","commit_id":"17c8737e982b24a3b22d3d53c26c2a207e9f009f"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"b6c946a881abacaaba79a81932d50e4768a47fb8","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    expiry_time \u003d request.get(\u0027Expires\u0027)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def parse_strtime(strtime):"},{"line_number":190,"context_line":"        if \u0027.\u0027 in strtime:"},{"line_number":191,"context_line":"            # NOTE(MotoKen): time format for aws-sdk-java contains millisecond"},{"line_number":192,"context_line":"            time_format \u003d \"%Y-%m-%dT%H:%M:%S.%fZ\""},{"line_number":193,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F1gw%3D","line":190,"updated":"2013-03-25 17:29:14.000000000","message":"just checking for a \u0027.\u0027 doesn\u0027t seem that robust.","commit_id":"cc547c68a323bff97bf62eb2faa2c7ca43cfeb93"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"f4138873db1c63e2809ba53909262fce6b396649","unresolved":false,"context_lines":[{"line_number":187,"context_line":"    expiry_time \u003d request.get(\u0027Expires\u0027)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def parse_strtime(strtime):"},{"line_number":190,"context_line":"        if \u0027.\u0027 in strtime:"},{"line_number":191,"context_line":"            # NOTE(MotoKen): time format for aws-sdk-java contains millisecond"},{"line_number":192,"context_line":"            time_format \u003d \"%Y-%m-%dT%H:%M:%S.%fZ\""},{"line_number":193,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2F08E%3D","line":190,"in_reply_to":"AAAAOH%2F%2F1gw%3D","updated":"2013-03-26 00:28:14.000000000","message":"I agree. A better check would be a regular expression that checks for a \u0027.\u0027 followed by digits with the string ending with a Z. Something like this?\n\n    if re.search(\u0027\\.\\d{3,6}Z$\u0027, strtime):","commit_id":"cc547c68a323bff97bf62eb2faa2c7ca43cfeb93"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"42514010d3886d0311bea86c78f77e96415dd374","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    return get_volume_uuid_from_int_id(ctxt, int_id)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"_ms_time_regex \u003d re.compile(\u0027\\.\\d{3,6}Z$\u0027)"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"def is_ec2_timestamp_expired(request, expires\u003dNone):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2FwRk%3D","line":181,"updated":"2013-03-28 23:52:44.000000000","message":"more extensive unit tests to cover the cases this regex is trying to check against would be nice.","commit_id":"ab010ff1c97ba29487ba4aa67026906aaff01b55"}],"nova/tests/api/ec2/test_ec2_validate.py":[{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"60e142ad69cd4c1b9744e26cc57617b7bdecce25","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        expired \u003d ec2utils.is_ec2_timestamp_expired(params)"},{"line_number":195,"context_line":"        self.assertFalse(expired)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    def test_validate_ec2_timestamp_aws_sdk_format(self):"},{"line_number":198,"context_line":"        params \u003d {\u0027Timestamp\u0027: \u00272011-04-22T11:29:49.123Z\u0027}"},{"line_number":199,"context_line":"        expired \u003d ec2utils.is_ec2_timestamp_expired(params)"},{"line_number":200,"context_line":"        self.assertFalse(expired)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOH%2F%2F6H0%3D","line":197,"updated":"2013-03-21 12:17:35.000000000","message":"How about adding a test case with this timestamp format where the value is expired?","commit_id":"17c8737e982b24a3b22d3d53c26c2a207e9f009f"}]}
