)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"e8690820e7763c3cd28bdddbae73072c257a834a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Validate start time is earlier than end time in simple_tenant_usage"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Simple check and respond with a http 400 if the start time is earlier"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Fixes LP# 1118910"},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"AAAAM3%2F%2B73c%3D","line":9,"updated":"2013-02-13 22:35:50.000000000","message":"start time is *later*, right?","commit_id":"989c67cd9b571f57b5127a87b96cea7c390ce594"}],"nova/api/openstack/compute/contrib/simple_tenant_usage.py":[{"author":{"_account_id":4601,"name":"Tiago Mello","email":"tmello@linux.vnet.ibm.com","username":"tmello"},"change_message_id":"21123d498ca9237ddbd6cc40ad7854386723202e","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        (period_start, period_stop, detailed) \u003d self._get_datetime_range(req)"},{"line_number":220,"context_line":"        if period_start \u003e period_stop:"},{"line_number":221,"context_line":"            msg \u003d _(\"start time is earlier than the end time\")"},{"line_number":222,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":223,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":224,"context_line":"        if period_stop \u003e now:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FD5c%3D","line":221,"updated":"2013-02-08 14:32:23.000000000","message":"Maybe that\u0027s only me, but I think the error message got me confused... maybe you can rephrase it. \"The start time should happen before the end time\" or something like that.","commit_id":"d5d496cb09a26f9b81ea64a7f6344afdcb72f752"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"65359a55d9b2e089765d35a1a5ed48d255363d40","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        (period_start, period_stop, detailed) \u003d self._get_datetime_range(req)"},{"line_number":220,"context_line":"        if period_start \u003e period_stop:"},{"line_number":221,"context_line":"            msg \u003d _(\"start time is earlier than the end time\")"},{"line_number":222,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":223,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":224,"context_line":"        if period_stop \u003e now:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FD20%3D","line":221,"in_reply_to":"AAAAM3%2F%2FD5c%3D","updated":"2013-02-08 15:06:15.000000000","message":"I came up with another error message, please take a look at the next patch.","commit_id":"d5d496cb09a26f9b81ea64a7f6344afdcb72f752"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"a005004545e1b72f9ee3f74ae0a31365d7832487","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        (period_start, period_stop, detailed) \u003d self._get_datetime_range(req)"},{"line_number":220,"context_line":"        if period_start \u003e period_stop:"},{"line_number":221,"context_line":"            msg \u003d _(\"Invalid start time. The end time should occur after the \""},{"line_number":222,"context_line":"                    \"start time.\")"},{"line_number":223,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":224,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":225,"context_line":"        if period_stop \u003e now:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FD2U%3D","line":222,"updated":"2013-02-08 15:16:40.000000000","message":"Just a nitpick, but I guess technically it should be \"Invalid start time\". The start time cannot be after the end time.\" Because the start and end times could be the same and that would be ok?","commit_id":"104d6b2995e5a49be9922a05b26bde96bd7ea60b"},{"author":{"_account_id":4598,"name":"Giampaolo Lauria","email":"lauria@us.ibm.com","username":"lauria"},"change_message_id":"84d0c7247a0ebb07c7a4262b185a8d78f67042d1","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        (period_start, period_stop, detailed) \u003d self._get_datetime_range(req)"},{"line_number":220,"context_line":"        if period_start \u003e period_stop:"},{"line_number":221,"context_line":"            msg \u003d _(\"Invalid start time\")"},{"line_number":222,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":223,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":224,"context_line":"        if period_stop \u003e now:"},{"line_number":225,"context_line":"            period_stop \u003d now"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FC9g%3D","line":222,"updated":"2013-02-09 03:52:55.000000000","message":"Why not move this test and the one below into _get_datetime_range and have the method throw the exception? Here you can catch the exception.","commit_id":"130611ca20c73aa5bbe00070f7f2d50c6e756e96"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"0e798e56a42ac9e83b963c40dbeea2410b68c399","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        (period_start, period_stop, detailed) \u003d self._get_datetime_range(req)"},{"line_number":220,"context_line":"        if period_start \u003e period_stop:"},{"line_number":221,"context_line":"            msg \u003d _(\"Invalid start time\")"},{"line_number":222,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":223,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":224,"context_line":"        if period_stop \u003e now:"},{"line_number":225,"context_line":"            period_stop \u003d now"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FBxk%3D","line":222,"in_reply_to":"AAAAM3%2F%2FC9g%3D","updated":"2013-02-11 04:16:34.000000000","message":"Done","commit_id":"130611ca20c73aa5bbe00070f7f2d50c6e756e96"},{"author":{"_account_id":4598,"name":"Giampaolo Lauria","email":"lauria@us.ibm.com","username":"lauria"},"change_message_id":"84d0c7247a0ebb07c7a4262b185a8d78f67042d1","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        (period_start, period_stop, ignore) \u003d self._get_datetime_range(req)"},{"line_number":241,"context_line":"        if period_start \u003e period_stop:"},{"line_number":242,"context_line":"            msg \u003d _(\"Invalid start time\")"},{"line_number":243,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":244,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":245,"context_line":"        if period_stop \u003e now:"},{"line_number":246,"context_line":"            period_stop \u003d now"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FC9c%3D","line":243,"updated":"2013-02-09 03:52:55.000000000","message":"Same as comment above","commit_id":"130611ca20c73aa5bbe00070f7f2d50c6e756e96"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"0e798e56a42ac9e83b963c40dbeea2410b68c399","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        (period_start, period_stop, ignore) \u003d self._get_datetime_range(req)"},{"line_number":241,"context_line":"        if period_start \u003e period_stop:"},{"line_number":242,"context_line":"            msg \u003d _(\"Invalid start time\")"},{"line_number":243,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":244,"context_line":"        now \u003d timeutils.utcnow()"},{"line_number":245,"context_line":"        if period_stop \u003e now:"},{"line_number":246,"context_line":"            period_stop \u003d now"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FBxg%3D","line":243,"in_reply_to":"AAAAM3%2F%2FC9c%3D","updated":"2013-02-11 04:16:34.000000000","message":"Done","commit_id":"130611ca20c73aa5bbe00070f7f2d50c6e756e96"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"da9a69fcbf1d5c7d827863cf64e692f895796d1b","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        period_stop \u003d self._parse_datetime(env.get(\u0027end\u0027, [None])[0])"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        if period_start \u003e period_stop:"},{"line_number":210,"context_line":"            msg \u003d _(\"Invalid start time\")"},{"line_number":211,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        detailed \u003d env.get(\u0027detailed\u0027, [\u00270\u0027])[0] \u003d\u003d \u00271\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2B8Ts%3D","line":210,"updated":"2013-02-13 19:17:04.000000000","message":"I more explicit error message would be nice, something that says the start time is after the end time","commit_id":"989c67cd9b571f57b5127a87b96cea7c390ce594"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"f5279c9faecac2f48c8f7c7e3b1678e79fcba991","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        period_stop \u003d self._parse_datetime(env.get(\u0027end\u0027, [None])[0])"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        if period_start \u003e period_stop:"},{"line_number":210,"context_line":"            msg \u003d _(\"Invalid start time\")"},{"line_number":211,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        detailed \u003d env.get(\u0027detailed\u0027, [\u00270\u0027])[0] \u003d\u003d \u00271\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2B6LA%3D","line":210,"updated":"2013-02-14 19:13:08.000000000","message":"I would still prefer a message saying why the start time is invalid.  If i got this message I would just be scratching my head.","commit_id":"b43d32a3f8b7850ea2e7ce0b98cfe3d8c87a8eff"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"7fc2247fe0595889635fff26c8b97d0c2fbecc72","unresolved":false,"context_lines":[{"line_number":207,"context_line":"        period_stop \u003d self._parse_datetime(env.get(\u0027end\u0027, [None])[0])"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        if period_start \u003e period_stop:"},{"line_number":210,"context_line":"            msg \u003d _(\"Invalid start time\")"},{"line_number":211,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        detailed \u003d env.get(\u0027detailed\u0027, [\u00270\u0027])[0] \u003d\u003d \u00271\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAM3%2F%2B6Es%3D","line":210,"in_reply_to":"AAAAM3%2F%2B6LA%3D","updated":"2013-02-14 20:04:53.000000000","message":"Done","commit_id":"b43d32a3f8b7850ea2e7ce0b98cfe3d8c87a8eff"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"eeea67ab88f974ba461f17bbab147d018d3d8cb3","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        period_start \u003d self._parse_datetime(env.get(\u0027start\u0027, [None])[0])"},{"line_number":207,"context_line":"        period_stop \u003d self._parse_datetime(env.get(\u0027end\u0027, [None])[0])"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        if period_start \u003e period_stop:"},{"line_number":210,"context_line":"            msg \u003d _(\"Invalid start time. The start time cannot occur after \""},{"line_number":211,"context_line":"                    \"the end time.\")"},{"line_number":212,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2B5D4%3D","line":209,"updated":"2013-02-15 11:42:39.000000000","message":"Wouldn\u0027t we want this to be \u003e\u003d?\n\nAlso, if this is changing can we make it\n\nif not period_start \u003c period_stop:\n\nit\u0027s just slightly quicker to see what\u0027s going on because the equalities are in the direction you are expecting.","commit_id":"e0ef7084afc8c42e164ad77ffca9ca95671c5a79"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"1d74a4b03a1c048c490dc396312f6e3f8b29aa44","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        period_start \u003d self._parse_datetime(env.get(\u0027start\u0027, [None])[0])"},{"line_number":207,"context_line":"        period_stop \u003d self._parse_datetime(env.get(\u0027end\u0027, [None])[0])"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"        if period_start \u003e period_stop:"},{"line_number":210,"context_line":"            msg \u003d _(\"Invalid start time. The start time cannot occur after \""},{"line_number":211,"context_line":"                    \"the end time.\")"},{"line_number":212,"context_line":"            raise exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2B41I%3D","line":209,"in_reply_to":"AAAAM3%2F%2B5D4%3D","updated":"2013-02-15 15:18:58.000000000","message":"Done","commit_id":"e0ef7084afc8c42e164ad77ffca9ca95671c5a79"}],"nova/tests/integrated/test_api_samples.py":[{"author":{"_account_id":4598,"name":"Giampaolo Lauria","email":"lauria@us.ibm.com","username":"lauria"},"change_message_id":"84d0c7247a0ebb07c7a4262b185a8d78f67042d1","unresolved":false,"context_lines":[{"line_number":1946,"context_line":"        response \u003d self._do_get(\u0027os-simple-tenant-usage?%s\u0027 % ("},{"line_number":1947,"context_line":"                                                urllib.urlencode(self.query)))"},{"line_number":1948,"context_line":"        self.assertEqual(response.status, 400)"},{"line_number":1949,"context_line":""},{"line_number":1950,"context_line":"    def test_get_tenant_usage_details(self):"},{"line_number":1951,"context_line":"        # Get api sample to get specific tenant usage request."},{"line_number":1952,"context_line":"        tenant_id \u003d \u0027openstack\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FC9I%3D","line":1949,"updated":"2013-02-09 03:52:55.000000000","message":"The unit test does not belong here. I think it belongs to:\nnova/tests/api/openstack/compute/contrib/test_simple_tenant_usage.py","commit_id":"130611ca20c73aa5bbe00070f7f2d50c6e756e96"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"0e798e56a42ac9e83b963c40dbeea2410b68c399","unresolved":false,"context_lines":[{"line_number":1946,"context_line":"        response \u003d self._do_get(\u0027os-simple-tenant-usage?%s\u0027 % ("},{"line_number":1947,"context_line":"                                                urllib.urlencode(self.query)))"},{"line_number":1948,"context_line":"        self.assertEqual(response.status, 400)"},{"line_number":1949,"context_line":""},{"line_number":1950,"context_line":"    def test_get_tenant_usage_details(self):"},{"line_number":1951,"context_line":"        # Get api sample to get specific tenant usage request."},{"line_number":1952,"context_line":"        tenant_id \u003d \u0027openstack\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FByY%3D","line":1949,"in_reply_to":"AAAAM3%2F%2FC9I%3D","updated":"2013-02-11 04:16:34.000000000","message":"Done","commit_id":"130611ca20c73aa5bbe00070f7f2d50c6e756e96"}]}
