)]}'
{"cinder/tests/unit/test_volume.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a8e93f96824d13b717d042796d42ef732c30ed41","unresolved":false,"context_lines":[{"line_number":4163,"context_line":"        volume_api \u003d cinder.volume.api.API()"},{"line_number":4164,"context_line":"        filters \u003d {\u0027bootable\u0027: \u0027TRUE\u0027}"},{"line_number":4165,"context_line":""},{"line_number":4166,"context_line":"        #To conver filter value to True or False"},{"line_number":4167,"context_line":"        volume_api.check_volume_filters(filters)"},{"line_number":4168,"context_line":""},{"line_number":4169,"context_line":"        #result confirmation against True"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a68dd71_8d615707","line":4166,"range":{"start_line":4166,"start_character":12,"end_line":4166,"end_character":18},"updated":"2016-01-25 20:44:43.000000000","message":"conver -\u003e cover?\n\nRepeated in each of the test cases below.","commit_id":"d258bef573d615e64a018a6e3548349275072afa"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"335b9fddf08b5f72d1cc385b89c8dd2968eedaaf","unresolved":false,"context_lines":[{"line_number":4163,"context_line":"        volume_api \u003d cinder.volume.api.API()"},{"line_number":4164,"context_line":"        filters \u003d {\u0027bootable\u0027: \u0027TRUE\u0027}"},{"line_number":4165,"context_line":""},{"line_number":4166,"context_line":"        #To conver filter value to True or False"},{"line_number":4167,"context_line":"        volume_api.check_volume_filters(filters)"},{"line_number":4168,"context_line":""},{"line_number":4169,"context_line":"        #result confirmation against True"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a68dd71_b0ccb089","line":4166,"range":{"start_line":4166,"start_character":12,"end_line":4166,"end_character":18},"in_reply_to":"9a68dd71_8d615707","updated":"2016-01-25 20:56:36.000000000","message":"Done","commit_id":"d258bef573d615e64a018a6e3548349275072afa"}],"cinder/volume/api.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"91d11cd139df63d3e6d466f572b2c52c3c097c87","unresolved":false,"context_lines":[{"line_number":1702,"context_line":"        # To translate any true/false equivalent to True/False"},{"line_number":1703,"context_line":"        # which is only acceptable format in database queries."},{"line_number":1704,"context_line":"        accepted_true \u003d [\u0027True\u0027, \u0027true\u0027, \u0027TRUE\u0027]"},{"line_number":1705,"context_line":"        accepted_false \u003d [\u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027]"},{"line_number":1706,"context_line":"        for k, v in filters.items():"},{"line_number":1707,"context_line":"            try:"},{"line_number":1708,"context_line":"                if k in booleans:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a68dd71_f6b540ec","line":1705,"updated":"2016-01-25 21:41:36.000000000","message":"You should just convert the input to all lowercase (v.lower() - https://docs.python.org/3.4/library/stdtypes.html?highlight\u003dstr.lower#str.lower) and just check for \"true\" or \"false\".  This would simplify the logic.","commit_id":"a1f12942c124483153c722d16aa95b24757a3fe1"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"469dcd7db9123713b179dc6f1dba51a773ec1273","unresolved":false,"context_lines":[{"line_number":1702,"context_line":"        # To translate any true/false equivalent to True/False"},{"line_number":1703,"context_line":"        # which is only acceptable format in database queries."},{"line_number":1704,"context_line":"        accepted_true \u003d [\u0027True\u0027, \u0027true\u0027, \u0027TRUE\u0027]"},{"line_number":1705,"context_line":"        accepted_false \u003d [\u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027]"},{"line_number":1706,"context_line":"        for k, v in filters.items():"},{"line_number":1707,"context_line":"            try:"},{"line_number":1708,"context_line":"                if k in booleans:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a68dd71_bbda28e8","line":1705,"in_reply_to":"9a68dd71_45622f18","updated":"2016-01-26 15:21:08.000000000","message":"Dear Thang Pham,\n\nException is not required for non true/false values because we convert that to true/false with bool(v)..\n\nThis handling is required by keeping Horizon in mind.\nHorizon passes bootable\u003d1 while selecting volumes during launch instance.","commit_id":"a1f12942c124483153c722d16aa95b24757a3fe1"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"de9c5794d80452c3020182ac5ac4273a435f18be","unresolved":false,"context_lines":[{"line_number":1702,"context_line":"        # To translate any true/false equivalent to True/False"},{"line_number":1703,"context_line":"        # which is only acceptable format in database queries."},{"line_number":1704,"context_line":"        accepted_true \u003d [\u0027True\u0027, \u0027true\u0027, \u0027TRUE\u0027]"},{"line_number":1705,"context_line":"        accepted_false \u003d [\u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027]"},{"line_number":1706,"context_line":"        for k, v in filters.items():"},{"line_number":1707,"context_line":"            try:"},{"line_number":1708,"context_line":"                if k in booleans:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a68dd71_45622f18","line":1705,"in_reply_to":"9a68dd71_7c191379","updated":"2016-01-26 14:51:38.000000000","message":"If the input is an int or anything outside of true or false, shouldn\u0027t you raise an exception?","commit_id":"a1f12942c124483153c722d16aa95b24757a3fe1"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"cd8ec4f184ea65d5380c7329f291bb69fc8db0be","unresolved":false,"context_lines":[{"line_number":1702,"context_line":"        # To translate any true/false equivalent to True/False"},{"line_number":1703,"context_line":"        # which is only acceptable format in database queries."},{"line_number":1704,"context_line":"        accepted_true \u003d [\u0027True\u0027, \u0027true\u0027, \u0027TRUE\u0027]"},{"line_number":1705,"context_line":"        accepted_false \u003d [\u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027]"},{"line_number":1706,"context_line":"        for k, v in filters.items():"},{"line_number":1707,"context_line":"            try:"},{"line_number":1708,"context_line":"                if k in booleans:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a68dd71_07b437cf","line":1705,"in_reply_to":"9a68dd71_b64a3f26","updated":"2016-01-26 16:06:21.000000000","message":"Actually I have added functionality to handle True/False for CLI client only. \nAlso, input is already blocked from cinderClient and Horizon to true/True/false/False and 1/0 respectively.\n\nI did not change bool(v) related code as I do not want to change existing code behavior.\nI don\u0027t have background idea why bool(v) was added in code, may be to cater some specific case.\n\nIn case you are confirmed that this will not hamper any existing behavior or there is no specific reason behind this please let me know, I will remove this bool(v) part from code and add exception accodingly.\n\nI really appreciate you review efforts.\nPlease suggest.\n(May be we can check this behavior later on and provide separate patch after confirming existing behavior)","commit_id":"a1f12942c124483153c722d16aa95b24757a3fe1"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"6009373842c167dfae08583d1096c81e993028a5","unresolved":false,"context_lines":[{"line_number":1702,"context_line":"        # To translate any true/false equivalent to True/False"},{"line_number":1703,"context_line":"        # which is only acceptable format in database queries."},{"line_number":1704,"context_line":"        accepted_true \u003d [\u0027True\u0027, \u0027true\u0027, \u0027TRUE\u0027]"},{"line_number":1705,"context_line":"        accepted_false \u003d [\u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027]"},{"line_number":1706,"context_line":"        for k, v in filters.items():"},{"line_number":1707,"context_line":"            try:"},{"line_number":1708,"context_line":"                if k in booleans:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a68dd71_b64a3f26","line":1705,"in_reply_to":"9a68dd71_bbda28e8","updated":"2016-01-26 15:26:18.000000000","message":"If you have \"invalid\" as a value, it will not be caught in either of the if/elif statements you added.  It will be handled by the else statement below, which will convert it to true, and it is not what you want, according to your commit message.\n\nYou only want true or false, or 1 or 0, and nothing else, right?  If that is the case, some kind of exception should be raised.","commit_id":"a1f12942c124483153c722d16aa95b24757a3fe1"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"326d63e72c324ebb6de0f989b0f92d8f7e0929d3","unresolved":false,"context_lines":[{"line_number":1702,"context_line":"        # To translate any true/false equivalent to True/False"},{"line_number":1703,"context_line":"        # which is only acceptable format in database queries."},{"line_number":1704,"context_line":"        accepted_true \u003d [\u0027True\u0027, \u0027true\u0027, \u0027TRUE\u0027]"},{"line_number":1705,"context_line":"        accepted_false \u003d [\u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027]"},{"line_number":1706,"context_line":"        for k, v in filters.items():"},{"line_number":1707,"context_line":"            try:"},{"line_number":1708,"context_line":"                if k in booleans:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a68dd71_7c191379","line":1705,"in_reply_to":"9a68dd71_f6b540ec","updated":"2016-01-26 12:34:18.000000000","message":"Dear Thang Pham.\n\nThanks for reviewing.\nI used this way of comparing because input(v) can be anything, for ex, integer.\nSo, lower(v) will not work.\n\nroot@sheelrana-VirtualBox:/home/sheelrana/cinder/cinder/api/v2# cat test.py \nacc\u003d[\u0027true\u0027,\u0027TRUE\u0027]\nac\u003d1\nif ac.lower() in acc:\n    print \"ok\"\nelse:\n    print \"noopss\"\nroot@sheelrana-VirtualBox:/home/sheelrana/cinder/cinder/api/v2# python test.py \nTraceback (most recent call last):\n  File \"test.py\", line 3, in \u003cmodule\u003e\n    if ac.lower() in acc:\nAttributeError: \u0027int\u0027 object has no attribute \u0027lower\u0027","commit_id":"a1f12942c124483153c722d16aa95b24757a3fe1"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"974b5243c3e197b2bf80fbac4425a8ef5814128f","unresolved":false,"context_lines":[{"line_number":1701,"context_line":"        booleans \u003d self.db.get_booleans_for_table(\u0027volume\u0027)"},{"line_number":1702,"context_line":"        # To translate any true/false equivalent to True/False"},{"line_number":1703,"context_line":"        # which is only acceptable format in database queries."},{"line_number":1704,"context_line":"        accepted_true \u003d [\u0027True\u0027, \u0027true\u0027, \u0027TRUE\u0027]"},{"line_number":1705,"context_line":"        accepted_false \u003d [\u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027]"},{"line_number":1706,"context_line":"        for k, v in filters.items():"},{"line_number":1707,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_3bfaa1be","line":1704,"updated":"2016-01-28 05:16:22.000000000","message":"Also should 1 be in the list? \nYou can refer to here:\nhttp://docs.openstack.org/developer/oslo.utils/api/strutils.html","commit_id":"3f0ddccbedd655ca6c9db3a34a048a644313bcfd"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"afc5261295dc334daa9740d033c190d29a32b55a","unresolved":false,"context_lines":[{"line_number":1701,"context_line":"        booleans \u003d self.db.get_booleans_for_table(\u0027volume\u0027)"},{"line_number":1702,"context_line":"        # To translate any true/false equivalent to True/False"},{"line_number":1703,"context_line":"        # which is only acceptable format in database queries."},{"line_number":1704,"context_line":"        accepted_true \u003d [\u0027True\u0027, \u0027true\u0027, \u0027TRUE\u0027]"},{"line_number":1705,"context_line":"        accepted_false \u003d [\u0027False\u0027, \u0027false\u0027, \u0027FALSE\u0027]"},{"line_number":1706,"context_line":"        for k, v in filters.items():"},{"line_number":1707,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_8cd6f9c3","line":1704,"in_reply_to":"7a5de9d1_3bfaa1be","updated":"2016-01-28 07:48:01.000000000","message":"Actually for 1 and o bool(v) works fine.\nSo, these were not included in the list.","commit_id":"3f0ddccbedd655ca6c9db3a34a048a644313bcfd"},{"author":{"_account_id":15961,"name":"lisali","email":"xiaoyan.li@intel.com","username":"lisali"},"change_message_id":"224822a39b3c5de4ad773ee672a5d69e28210f5e","unresolved":false,"context_lines":[{"line_number":1711,"context_line":"                    elif v in accepted_true:"},{"line_number":1712,"context_line":"                        filters[k] \u003d True"},{"line_number":1713,"context_line":"                    else:"},{"line_number":1714,"context_line":"                        filters[k] \u003d bool(v)"},{"line_number":1715,"context_line":"                else:"},{"line_number":1716,"context_line":"                    filters[k] \u003d ast.literal_eval(v)"},{"line_number":1717,"context_line":"            except (ValueError, SyntaxError):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a68dd71_48e6a0e9","line":1714,"updated":"2016-01-27 07:01:26.000000000","message":"I think it\u0027s better to use oslo_utils.strutils.bool_from_string to limit the incorrect input.\n\nif k in booleans:\n    try:\n       filters[k] \u003d strutils.bool_from_string(v, strict\u003dTrue)\n       \n    except ValueError:\n       # raise an exception to ask for correct input of filters\n\nhttp://docs.openstack.org/developer/oslo.utils/api/strutils.html","commit_id":"3f0ddccbedd655ca6c9db3a34a048a644313bcfd"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"afc5261295dc334daa9740d033c190d29a32b55a","unresolved":false,"context_lines":[{"line_number":1711,"context_line":"                    elif v in accepted_true:"},{"line_number":1712,"context_line":"                        filters[k] \u003d True"},{"line_number":1713,"context_line":"                    else:"},{"line_number":1714,"context_line":"                        filters[k] \u003d bool(v)"},{"line_number":1715,"context_line":"                else:"},{"line_number":1716,"context_line":"                    filters[k] \u003d ast.literal_eval(v)"},{"line_number":1717,"context_line":"            except (ValueError, SyntaxError):"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_2cdca5e3","line":1714,"in_reply_to":"9a68dd71_48e6a0e9","updated":"2016-01-28 07:48:01.000000000","message":"yes, that\u0027s ok.","commit_id":"3f0ddccbedd655ca6c9db3a34a048a644313bcfd"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f2bcac78a94e0edbd8dcc6d108dd6e4881b31ad6","unresolved":false,"context_lines":[{"line_number":1698,"context_line":"        return self.volume_rpcapi.list_replication_targets(ctxt, volume)"},{"line_number":1699,"context_line":""},{"line_number":1700,"context_line":"    def check_volume_filters(self, filters):"},{"line_number":1701,"context_line":"        \u0027\u0027\u0027Sets the user filter value to accepted format\u0027\u0027\u0027"},{"line_number":1702,"context_line":"        booleans \u003d self.db.get_booleans_for_table(\u0027volume\u0027)"},{"line_number":1703,"context_line":""},{"line_number":1704,"context_line":"        # To translate any true/false equivalent to True/False"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_3c6e8096","line":1701,"range":{"start_line":1701,"start_character":8,"end_line":1701,"end_character":11},"updated":"2016-03-22 14:53:29.000000000","message":"Missed this, but docstring actually required double-quotes, not single quotes. Something to maybe clean up in a future patch.","commit_id":"47ec84182007024eba86b50de59a0bd5978b64a2"},{"author":{"_account_id":16308,"name":"Sheel Rana","email":"ranasheel2000@gmail.com","username":"sheel.rana"},"change_message_id":"6daa8be836f7f5117237c6f60374cfcc222a6500","unresolved":false,"context_lines":[{"line_number":1698,"context_line":"        return self.volume_rpcapi.list_replication_targets(ctxt, volume)"},{"line_number":1699,"context_line":""},{"line_number":1700,"context_line":"    def check_volume_filters(self, filters):"},{"line_number":1701,"context_line":"        \u0027\u0027\u0027Sets the user filter value to accepted format\u0027\u0027\u0027"},{"line_number":1702,"context_line":"        booleans \u003d self.db.get_booleans_for_table(\u0027volume\u0027)"},{"line_number":1703,"context_line":""},{"line_number":1704,"context_line":"        # To translate any true/false equivalent to True/False"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa0719c6_04107e4d","line":1701,"range":{"start_line":1701,"start_character":8,"end_line":1701,"end_character":11},"in_reply_to":"fa0719c6_3c6e8096","updated":"2016-03-22 15:44:34.000000000","message":"Ok sure.\nI have updated same through Change-Id: I23324d01b467b3e35cfcf19d94d4f16bf16763c6","commit_id":"47ec84182007024eba86b50de59a0bd5978b64a2"}]}
