)]}'
{"nova/api/openstack/compute/legacy_v2/contrib/simple_tenant_usage.py":[{"author":{"_account_id":15424,"name":"javeme","email":"javaloveme@gmail.com","username":"javeme"},"change_message_id":"e3dee15c6da42030beed2126adb3afa4b0670cda","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                stop \u003d period_stop"},{"line_number":70,"context_line":"            dt \u003d stop - start"},{"line_number":71,"context_line":"            seconds \u003d (dt.days * 3600 * 24 + dt.seconds +"},{"line_number":72,"context_line":"                       dt.microseconds / 100000.0)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"            return seconds / 3600.0"},{"line_number":75,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_63d4a01f","side":"PARENT","line":72,"range":{"start_line":72,"start_character":41,"end_line":72,"end_character":49},"updated":"2016-01-09 07:23:09.000000000","message":"It should be 1000000.0(six \u00270\u0027 in front of the point).","commit_id":"b09bc181e76c905aa87b4897b072be6e07d9e583"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"4fdfb367a849ffe4dfa9402ad1e353d2f1271b7f","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                # instance is still running, so charge them up to current time"},{"line_number":69,"context_line":"                stop \u003d period_stop"},{"line_number":70,"context_line":"            dt \u003d stop - start"},{"line_number":71,"context_line":"            return dt.total_seconds() / 3600.0"},{"line_number":72,"context_line":"        else:"},{"line_number":73,"context_line":"            # instance hasn\u0027t launched, so no charge"},{"line_number":74,"context_line":"            return 0"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_3c0fbfe2","line":71,"updated":"2016-01-08 17:19:36.000000000","message":"I just tried this change, and I observed the following:\n\n    \u003e\u003e\u003e a \u003d datetime.timedelta(days\u003d2, seconds\u003d3302, microseconds\u003d1234)\n    \u003e\u003e\u003e a.days * 3600 * 24 + a.seconds + a.microseconds / 100000.0\n    176102.01234\n    \u003e\u003e\u003e a.total_seconds()\n    176102.001234\n\nThat may indicate a bug in the original code that we never caught, and may lead to test failures; if my analysis is correct, then it\u0027s the tests that need to be fixed, now that we\u0027re correcting this bug…","commit_id":"62fe0c6287b5bce67c1e81bc0c09b33c9a157279"},{"author":{"_account_id":15424,"name":"javeme","email":"javaloveme@gmail.com","username":"javeme"},"change_message_id":"e3dee15c6da42030beed2126adb3afa4b0670cda","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                # instance is still running, so charge them up to current time"},{"line_number":69,"context_line":"                stop \u003d period_stop"},{"line_number":70,"context_line":"            dt \u003d stop - start"},{"line_number":71,"context_line":"            return dt.total_seconds() / 3600.0"},{"line_number":72,"context_line":"        else:"},{"line_number":73,"context_line":"            # instance hasn\u0027t launched, so no charge"},{"line_number":74,"context_line":"            return 0"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_43b63cfa","line":71,"in_reply_to":"fa69d971_3c0fbfe2","updated":"2016-01-09 07:23:09.000000000","message":"Kevin, thanks! You are right, there is a bug in the original code: microseconds should be divided by 1000000.0 instead of 100000.0","commit_id":"62fe0c6287b5bce67c1e81bc0c09b33c9a157279"},{"author":{"_account_id":15424,"name":"javeme","email":"javaloveme@gmail.com","username":"javeme"},"change_message_id":"e3dee15c6da42030beed2126adb3afa4b0670cda","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            else:"},{"line_number":149,"context_line":"                delta \u003d now - info[\u0027started_at\u0027]"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"            info[\u0027uptime\u0027] \u003d int(delta.total_seconds())"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"            if info[\u0027tenant_id\u0027] not in rval:"},{"line_number":154,"context_line":"                summary \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_e34090a7","line":151,"range":{"start_line":151,"start_character":39,"end_line":151,"end_character":52},"updated":"2016-01-09 07:23:09.000000000","message":"I\u0027m not sure whether we should keep consistent with the type in original code, or should keep its original precise value?","commit_id":"62fe0c6287b5bce67c1e81bc0c09b33c9a157279"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"6172f16953844cbb285a42952cbc11baf37cdfc9","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            else:"},{"line_number":149,"context_line":"                delta \u003d now - info[\u0027started_at\u0027]"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"            info[\u0027uptime\u0027] \u003d int(delta.total_seconds())"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"            if info[\u0027tenant_id\u0027] not in rval:"},{"line_number":154,"context_line":"                summary \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_2e9c1abf","line":151,"range":{"start_line":151,"start_character":39,"end_line":151,"end_character":52},"in_reply_to":"fa69d971_e34090a7","updated":"2016-01-11 17:25:04.000000000","message":"I think we should keep consistent with the type in the original code here.  This data is being sent to a client, so the client may be expecting an int, to the point where it would barf if it received a float instead.  If we wanted to switch the data to a float, it should require a microversion, with all the requirements that entails.","commit_id":"62fe0c6287b5bce67c1e81bc0c09b33c9a157279"}],"nova/tests/unit/api/openstack/compute/test_simple_tenant_usage.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"4fdfb367a849ffe4dfa9402ad1e353d2f1271b7f","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                    x for x in range(SERVERS)]"},{"line_number":203,"context_line":"        for j in range(SERVERS):"},{"line_number":204,"context_line":"            delta \u003d STOP - START"},{"line_number":205,"context_line":"            uptime \u003d delta.total_seconds()"},{"line_number":206,"context_line":"            self.assertEqual(uptime, int(servers[j][\u0027uptime\u0027]))"},{"line_number":207,"context_line":"            self.assertEqual(HOURS, int(servers[j][\u0027hours\u0027]))"},{"line_number":208,"context_line":"            self.assertIn(servers[j][\u0027instance_id\u0027], uuids)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_bc1acf15","line":205,"updated":"2016-01-08 17:19:36.000000000","message":"total_seconds() returns a float, which is then compared with an int on line 206.","commit_id":"62fe0c6287b5bce67c1e81bc0c09b33c9a157279"},{"author":{"_account_id":15424,"name":"javeme","email":"javaloveme@gmail.com","username":"javeme"},"change_message_id":"23e7ff06604de62ea4351267b1227a285800ebe0","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                    x for x in range(SERVERS)]"},{"line_number":203,"context_line":"        for j in range(SERVERS):"},{"line_number":204,"context_line":"            delta \u003d STOP - START"},{"line_number":205,"context_line":"            uptime \u003d delta.total_seconds()"},{"line_number":206,"context_line":"            self.assertEqual(uptime, int(servers[j][\u0027uptime\u0027]))"},{"line_number":207,"context_line":"            self.assertEqual(HOURS, int(servers[j][\u0027hours\u0027]))"},{"line_number":208,"context_line":"            self.assertIn(servers[j][\u0027instance_id\u0027], uuids)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6ed579_990cd595","line":205,"in_reply_to":"da6ed579_27b92dea","updated":"2016-01-13 09:09:03.000000000","message":"OK, I will cast it to an int. thanks very much.","commit_id":"62fe0c6287b5bce67c1e81bc0c09b33c9a157279"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"6172f16953844cbb285a42952cbc11baf37cdfc9","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                    x for x in range(SERVERS)]"},{"line_number":203,"context_line":"        for j in range(SERVERS):"},{"line_number":204,"context_line":"            delta \u003d STOP - START"},{"line_number":205,"context_line":"            uptime \u003d delta.total_seconds()"},{"line_number":206,"context_line":"            self.assertEqual(uptime, int(servers[j][\u0027uptime\u0027]))"},{"line_number":207,"context_line":"            self.assertEqual(HOURS, int(servers[j][\u0027hours\u0027]))"},{"line_number":208,"context_line":"            self.assertIn(servers[j][\u0027instance_id\u0027], uuids)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_2e5f3ae6","line":205,"in_reply_to":"fa69d971_237f8818","updated":"2016-01-11 17:25:04.000000000","message":"Personally, I think it might be a good idea to cast this to an int for clarity.  I hadn\u0027t looked at the code closely enough to realize that uptime would be a \".0\" value, so I assumed there would be a value mismatch; if I thought that, then someone else is liable to as well, and so at minimum a comment should go in here somewhere to explain…and my preference would be for a full-up cast.","commit_id":"62fe0c6287b5bce67c1e81bc0c09b33c9a157279"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"642433e6b77f73270cdf7740844cef7e08a02824","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                    x for x in range(SERVERS)]"},{"line_number":203,"context_line":"        for j in range(SERVERS):"},{"line_number":204,"context_line":"            delta \u003d STOP - START"},{"line_number":205,"context_line":"            uptime \u003d delta.total_seconds()"},{"line_number":206,"context_line":"            self.assertEqual(uptime, int(servers[j][\u0027uptime\u0027]))"},{"line_number":207,"context_line":"            self.assertEqual(HOURS, int(servers[j][\u0027hours\u0027]))"},{"line_number":208,"context_line":"            self.assertIn(servers[j][\u0027instance_id\u0027], uuids)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da6ed579_27b92dea","line":205,"in_reply_to":"fa69d971_2e5f3ae6","updated":"2016-01-12 15:13:21.000000000","message":"I agree that the cast would be nice.","commit_id":"62fe0c6287b5bce67c1e81bc0c09b33c9a157279"},{"author":{"_account_id":15424,"name":"javeme","email":"javaloveme@gmail.com","username":"javeme"},"change_message_id":"e3dee15c6da42030beed2126adb3afa4b0670cda","unresolved":false,"context_lines":[{"line_number":202,"context_line":"                    x for x in range(SERVERS)]"},{"line_number":203,"context_line":"        for j in range(SERVERS):"},{"line_number":204,"context_line":"            delta \u003d STOP - START"},{"line_number":205,"context_line":"            uptime \u003d delta.total_seconds()"},{"line_number":206,"context_line":"            self.assertEqual(uptime, int(servers[j][\u0027uptime\u0027]))"},{"line_number":207,"context_line":"            self.assertEqual(HOURS, int(servers[j][\u0027hours\u0027]))"},{"line_number":208,"context_line":"            self.assertIn(servers[j][\u0027instance_id\u0027], uuids)"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_237f8818","line":205,"in_reply_to":"fa69d971_bc1acf15","updated":"2016-01-09 07:23:09.000000000","message":"Yes,total_seconds() returns a value \"86400.0\", and it equals  int \"86400\".\n\n    \u003e\u003e\u003e 86400.0 \u003d\u003d 86400\n    True\n\nI\u0027m not sure whether we should keep consistent with the type in original code.","commit_id":"62fe0c6287b5bce67c1e81bc0c09b33c9a157279"}]}
