)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"832aa93f18a658e24eaf300d0b0cd3f22dd97b34","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     abhiram moturi \u003cabhiram.moturi@oracle.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-29 22:08:32 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Oracle ZFSSA iSCSI driver to return free space for non thin provisioned storage"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This fix allows the iSCSI driver to return the \u0027free\u0027 space property"},{"line_number":10,"context_line":"instead of the \u0027available\u0027 property which is more accurate in cases"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a50d1a3_62497232","line":7,"updated":"2015-07-29 23:44:43.000000000","message":"This looks to be more than 80 chars.","commit_id":"39ca947f2c7ca12e88430a7b7a247056d10ee1e3"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"4f7f3f4218478ed17d4a947b7aa16d8adb102c45","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     abhiram moturi \u003cabhiram.moturi@oracle.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-29 22:08:32 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Oracle ZFSSA iSCSI driver to return free space for non thin provisioned storage"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This fix allows the iSCSI driver to return the \u0027free\u0027 space property"},{"line_number":10,"context_line":"instead of the \u0027available\u0027 property which is more accurate in cases"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a50d1a3_0e01ad6a","line":7,"in_reply_to":"3a50d1a3_62497232","updated":"2015-07-30 08:27:49.000000000","message":"Good suggestion. https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"39ca947f2c7ca12e88430a7b7a247056d10ee1e3"},{"author":{"_account_id":17151,"name":"chenying","email":"chenyingko@gmail.com","username":"chenying"},"change_message_id":"b8d8096a487ad962ed101b5f250dcec1e4bbd5ea","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     abhiram moturi \u003cabhiram.moturi@oracle.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-30 14:12:06 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Oracle ZFSSA iSCSI driver to return \u0027free\u0027 instead of \u0027available\u0027 space"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This fix allows the iSCSI driver to return the \u0027free\u0027 space property"},{"line_number":10,"context_line":"instead of the \u0027available\u0027 property which is more accurate in cases"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3a50d1a3_d2bd7bd8","line":7,"updated":"2015-07-31 01:43:13.000000000","message":"Commit header is supposed to be less than 50 characters. https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"6fa455036572b8429f8ecdeefc33e2da8c84364f"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"9cd730445bba06b6d4114c4ee543b5254ba3239f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Oracle ZFSSA iSCSI driver to return \u0027free\u0027 instead of \u0027available\u0027 space"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This fix allows the iSCSI driver to return the \u0027free\u0027 space property"},{"line_number":10,"context_line":"instead of the \u0027available\u0027 property which is more accurate in cases"},{"line_number":11,"context_line":"when storage is not thin provisioned."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I47ed4ea7a18a479310de01d013e27f84af3eeea4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3a50d1a3_67caae70","line":10,"updated":"2015-07-30 22:41:48.000000000","message":"It looks like you are returning the \u0027available\u0027 property, not the \u0027free\u0027 space.","commit_id":"6fa455036572b8429f8ecdeefc33e2da8c84364f"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"c6f7f46091c3e47d6212738ef3436e262870b2fc","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Abhiram Moturi \u003cabhiram.moturi@oracle.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-07-31 13:53:15 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"ZFSSA iSCSI driver to return project \u0027available\u0027 space"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This fix allows the iSCSI driver to return the \u0027available\u0027 space"},{"line_number":10,"context_line":"property at project level instead of the pool level which is more"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a50d1a3_f5da9a77","line":7,"updated":"2015-08-02 13:22:44.000000000","message":"It seems more than 50 chars \nhttps://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"1278fe4aac03c4de445bc6db9ecb7008d5c6b507"}],"cinder/volume/drivers/zfssa/zfssarest.py":[{"author":{"_account_id":11509,"name":"Juan Zuluaga","email":"juan.c.zuluaga@oracle.com","username":"juzuluag"},"change_message_id":"2866bebf892f33a4530c56e81fd9f8eb93162e26","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                      {\u0027pool\u0027: pool, \u0027host\u0027: self.host})"},{"line_number":95,"context_line":"            raise exception.InvalidInput(reason\u003dpool)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if \u0027free\u0027 in val[\u0027pool\u0027][\u0027usage\u0027]:"},{"line_number":98,"context_line":"            avail \u003d val[\u0027pool\u0027][\u0027usage\u0027][\u0027free\u0027]"},{"line_number":99,"context_line":"        else:"},{"line_number":100,"context_line":"            avail \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_c37421d0","line":97,"updated":"2015-07-29 16:00:44.000000000","message":"Don\u0027t think this property is available at the pool level.\nSo why to check for something that doesn\u0027t exist?","commit_id":"b566d12fff63154c7c927dff612ddd68d9fd9f30"},{"author":{"_account_id":11509,"name":"Juan Zuluaga","email":"juan.c.zuluaga@oracle.com","username":"juzuluag"},"change_message_id":"35d7dbbe554f79e1cce3c6574f1135a10581701b","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                      {\u0027pool\u0027: pool, \u0027host\u0027: self.host})"},{"line_number":95,"context_line":"            raise exception.InvalidInput(reason\u003dpool)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if \u0027free\u0027 in val[\u0027pool\u0027][\u0027usage\u0027]:"},{"line_number":98,"context_line":"            avail \u003d val[\u0027pool\u0027][\u0027usage\u0027][\u0027free\u0027]"},{"line_number":99,"context_line":"        else:"},{"line_number":100,"context_line":"            avail \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_6e22cd53","line":97,"updated":"2015-07-29 18:15:54.000000000","message":"why \u0027free\u0027 is checked here? Don\u0027t think pool has this property at all.","commit_id":"a95a43b8c9ed175ac6e28aa8df71acb221d8ad2e"},{"author":{"_account_id":11509,"name":"Juan Zuluaga","email":"juan.c.zuluaga@oracle.com","username":"juzuluag"},"change_message_id":"eabe5f750544f0d7805329b603bcdb959c436151","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                      {\u0027pool\u0027: pool, \u0027host\u0027: self.host})"},{"line_number":95,"context_line":"            raise exception.InvalidInput(reason\u003dpool)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if \u0027free\u0027 in val[\u0027pool\u0027][\u0027usage\u0027]:"},{"line_number":98,"context_line":"            avail \u003d val[\u0027pool\u0027][\u0027usage\u0027][\u0027free\u0027]"},{"line_number":99,"context_line":"        else:"},{"line_number":100,"context_line":"            avail \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_e4003903","line":97,"in_reply_to":"3a50d1a3_4e283197","updated":"2015-07-29 19:50:18.000000000","message":"Don\u0027t think that the fact there is going to be a version \u0027soon\u0027 \u003e 1 year, justifies a line that it doesn\u0027t exist today. It should be towards a shipped version.","commit_id":"a95a43b8c9ed175ac6e28aa8df71acb221d8ad2e"},{"author":{"_account_id":13013,"name":"abhiram moturi","email":"abhiram.moturi@oracle.com","username":"amoturi"},"change_message_id":"7cd59b9b8a4905bda581eb0a3020f81e68b6193d","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                      {\u0027pool\u0027: pool, \u0027host\u0027: self.host})"},{"line_number":95,"context_line":"            raise exception.InvalidInput(reason\u003dpool)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        if \u0027free\u0027 in val[\u0027pool\u0027][\u0027usage\u0027]:"},{"line_number":98,"context_line":"            avail \u003d val[\u0027pool\u0027][\u0027usage\u0027][\u0027free\u0027]"},{"line_number":99,"context_line":"        else:"},{"line_number":100,"context_line":"            avail \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_4e283197","line":97,"in_reply_to":"3a50d1a3_6e22cd53","updated":"2015-07-29 18:27:21.000000000","message":"It doesn\u0027t have it currently but will be added in the new appliance version.","commit_id":"a95a43b8c9ed175ac6e28aa8df71acb221d8ad2e"},{"author":{"_account_id":11509,"name":"Juan Zuluaga","email":"juan.c.zuluaga@oracle.com","username":"juzuluag"},"change_message_id":"2f6f2a0fffac8436ee54de1a2d2adddf594fb983","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        return total"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def get_project_stats(self, pool, project):"},{"line_number":102,"context_line":"        \"\"\"Get free space of a project.\"\"\""},{"line_number":103,"context_line":"        svc \u003d \u0027/api/storage/v1/pool/%s/projects/%s\u0027 % (pool, project)"},{"line_number":104,"context_line":"        ret \u003d self.rclient.get(svc)"},{"line_number":105,"context_line":"        if ret.status !\u003d restclient.Status.OK:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_c7770207","line":102,"updated":"2015-07-30 22:52:21.000000000","message":"It should say that it returns the available space of a project","commit_id":"6fa455036572b8429f8ecdeefc33e2da8c84364f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"89a23071a4f1dcf9a1a3b51aa2d8b896accf55f2","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        if ret.status !\u003d restclient.Status.OK:"},{"line_number":106,"context_line":"            exception_msg \u003d (_(\u0027Error Getting Project Stats: \u0027"},{"line_number":107,"context_line":"                               \u0027Pool: %(pool)s \u0027"},{"line_number":108,"context_line":"                               \u0027Project: %(project)s\u0027"},{"line_number":109,"context_line":"                               \u0027Return code: %(ret.status)d \u0027"},{"line_number":110,"context_line":"                               \u0027Message: %(ret.data)s.\u0027)"},{"line_number":111,"context_line":"                             % {\u0027pool\u0027: pool,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a50d1a3_f5c88823","line":108,"updated":"2015-07-31 13:46:57.000000000","message":"Missing a blank space after \"%(project)s\".","commit_id":"08315cfd5cc8adaf6019f6a9e42634d33c21d64c"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"de0c3e2a0c8e54b792d010463a16572f919129a1","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                                \u0027ret.status\u0027: ret.status,"},{"line_number":85,"context_line":"                                \u0027ret.data\u0027: ret.data})"},{"line_number":86,"context_line":"            LOG.error(exception_msg)"},{"line_number":87,"context_line":"            raise exception.InvalidVolume(reason\u003dexception_msg)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        val \u003d json.loads(ret.data)"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_764f776a","line":87,"updated":"2015-08-02 02:51:12.000000000","message":"Please use VolumeBackendAPIException here as well.","commit_id":"1278fe4aac03c4de445bc6db9ecb7008d5c6b507"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"de0c3e2a0c8e54b792d010463a16572f919129a1","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        total \u003d val[\u0027pool\u0027][\u0027usage\u0027][\u0027total\u0027]"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        return total"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def get_project_stats(self, pool, project):"},{"line_number":102,"context_line":"        \"\"\"Get available space of a project.\"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_b62e5f8a","line":99,"updated":"2015-08-02 02:51:12.000000000","message":"Please add unit test for get_pool_stats as well. ( I suspect that there is not unit test, as changing return values did not break anything )","commit_id":"1278fe4aac03c4de445bc6db9ecb7008d5c6b507"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c7096a2f9efbc99f6329266c6549784b2c10351e","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        return total"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def get_project_stats(self, pool, project):"},{"line_number":102,"context_line":"        \"\"\"Get available space of a project.\"\"\""},{"line_number":103,"context_line":"        svc \u003d \u0027/api/storage/v1/pool/%s/projects/%s\u0027 % (pool, project)"},{"line_number":104,"context_line":"        ret \u003d self.rclient.get(svc)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_02f7e759","line":101,"updated":"2015-07-31 20:29:05.000000000","message":"Can you add a test for this function, including the exception code path.","commit_id":"1278fe4aac03c4de445bc6db9ecb7008d5c6b507"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c7096a2f9efbc99f6329266c6549784b2c10351e","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                                \u0027ret.status\u0027: ret.status,"},{"line_number":114,"context_line":"                                \u0027ret.data\u0027: ret.data})"},{"line_number":115,"context_line":"            LOG.error(exception_msg)"},{"line_number":116,"context_line":"            raise exception.InvalidVolume(reason\u003dexception_msg)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        val \u003d json.loads(ret.data)"},{"line_number":119,"context_line":"        avail \u003d val[\u0027project\u0027][\u0027space_available\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_e2fbdb45","line":116,"updated":"2015-07-31 20:29:05.000000000","message":"\"InvalidVolume\" is not the right exception to throw here.  You can use VolumeBackendAPIException instead.","commit_id":"1278fe4aac03c4de445bc6db9ecb7008d5c6b507"}]}
