)]}'
{"openstack/metric/v1/resource.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"470d54c3b2c805d0561bf11ba55ddeb965db76f2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":"import datetime"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import iso8601"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from openstack.metric import metric_service"},{"line_number":17,"context_line":"from openstack import resource"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_ab66ecea","line":14,"updated":"2015-03-09 13:24:42.000000000","message":"We might need to add that to requirements.txt since we only have that because of some other dependency.  Should get some more feedback on this, there are probably subtleties of date handling I\u0027m not aware of.","commit_id":"584c45eae13a11bd0efccf51b22839e527f7756b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"9ede4da71ca0ddad9bea2488ce2aaa303f606dcc","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# under the License."},{"line_number":12,"context_line":"import datetime"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import iso8601"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from openstack.metric import metric_service"},{"line_number":17,"context_line":"from openstack import resource"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_8bcda868","line":14,"in_reply_to":"9a80dd14_ab66ecea","updated":"2015-03-09 13:29:01.000000000","message":"Right, forgot about that. Fixed.","commit_id":"584c45eae13a11bd0efccf51b22839e527f7756b"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"470d54c3b2c805d0561bf11ba55ddeb965db76f2","unresolved":false,"context_lines":[{"line_number":23,"context_line":"            return iso8601.parse_date(s)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class Generic(resource.Resource):"},{"line_number":27,"context_line":"    base_path \u003d \u0027/resource/generic\u0027"},{"line_number":28,"context_line":"    service \u003d metric_service.MetricService()"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_4bf3b009","line":26,"updated":"2015-03-09 13:24:42.000000000","message":"Why is this file named resource.py instead of generic.py?","commit_id":"584c45eae13a11bd0efccf51b22839e527f7756b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"9ede4da71ca0ddad9bea2488ce2aaa303f606dcc","unresolved":false,"context_lines":[{"line_number":23,"context_line":"            return iso8601.parse_date(s)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class Generic(resource.Resource):"},{"line_number":27,"context_line":"    base_path \u003d \u0027/resource/generic\u0027"},{"line_number":28,"context_line":"    service \u003d metric_service.MetricService()"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_6bea34ad","line":26,"in_reply_to":"9a80dd14_4bf3b009","updated":"2015-03-09 13:29:01.000000000","message":"Because there are other resource type, that will inherit from this one (instance, volume, etc) that I will put in this file (they are under /resource/instance, etc in the API).","commit_id":"584c45eae13a11bd0efccf51b22839e527f7756b"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"c7dcb671459e83f2102a9d155e00d44d46a23b04","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from openstack import resource"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class ISO8601Datetime(datetime.datetime):"},{"line_number":21,"context_line":"    def __new__(cls, s):"},{"line_number":22,"context_line":"        if s:"},{"line_number":23,"context_line":"            return timeutils.parse_isotime(s)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_a100cd34","line":20,"updated":"2015-03-09 14:23:40.000000000","message":"This is a lot more generally useful than just for this metric - I\u0027d actually like to see this applied in a lot of other places where 8601 time strings come back in a response.\n\nCould we put this in a new module called openstack.resource_types so others could use it?","commit_id":"dc7d93f32436cdf0ee960c2fdbb48e10c1c068b8"}],"openstack/tests/metric/v1/test_resource.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"470d54c3b2c805d0561bf11ba55ddeb965db76f2","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class TestResource(testtools.TestCase):"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def setUp(self):"},{"line_number":36,"context_line":"        super(TestResource, self).setUp()"},{"line_number":37,"context_line":"        self.resp \u003d mock.Mock()"},{"line_number":38,"context_line":"        self.resp.body \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_cb6b2083","line":35,"updated":"2015-03-09 13:24:42.000000000","message":"This setup data isn\u0027t used, right?","commit_id":"584c45eae13a11bd0efccf51b22839e527f7756b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"9ede4da71ca0ddad9bea2488ce2aaa303f606dcc","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class TestResource(testtools.TestCase):"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def setUp(self):"},{"line_number":36,"context_line":"        super(TestResource, self).setUp()"},{"line_number":37,"context_line":"        self.resp \u003d mock.Mock()"},{"line_number":38,"context_line":"        self.resp.body \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_ebd544e5","line":35,"in_reply_to":"9a80dd14_cb6b2083","updated":"2015-03-09 13:29:01.000000000","message":"Too much copy paste I guess.","commit_id":"584c45eae13a11bd0efccf51b22839e527f7756b"}]}
