)]}'
{"cinder/volume/drivers/zfssa/zfssaiscsi.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"a5f2397c61af9492aee70c671aa5a9f65eb1c646","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"                \u0027safe_to_manage\u0027: True,"},{"line_number":1106,"context_line":"                \u0027reason_not_safe\u0027: None,"},{"line_number":1107,"context_line":"            }"},{"line_number":1108,"context_line":"            if \u0027cinder_managed\u0027 not in lun and \\"},{"line_number":1109,"context_line":"                    lcfg.zfssa_manage_policy !\u003d \u0027loose\u0027:"},{"line_number":1110,"context_line":"                lun_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1111,"context_line":"                lun_info[\u0027reason_not_safe\u0027] \u003d \u0027cinder_managed schema \u0027 \\"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_a278748e","line":1108,"updated":"2018-09-21 09:11:55.000000000","message":"Please, use \u0027()\u0027 instead of \u0027\\\u0027 for multi-line statements","commit_id":"a08580f587f1440e21dbcf93a28745a736811900"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"ce9513843eed960d9c8c614d0af39d2453500bb5","unresolved":false,"context_lines":[{"line_number":1107,"context_line":"                \u0027safe_to_manage\u0027: True,"},{"line_number":1108,"context_line":"                \u0027reason_not_safe\u0027: None,"},{"line_number":1109,"context_line":"            }"},{"line_number":1110,"context_line":"            if (\u0027cinder_managed\u0027 not in lun and"},{"line_number":1111,"context_line":"                    lcfg.zfssa_manage_policy !\u003d \u0027loose\u0027):"},{"line_number":1112,"context_line":"                lun_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1113,"context_line":"                lun_info[\u0027reason_not_safe\u0027] \u003d \u0027cinder_managed schema \u0027 \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_3537984e","line":1110,"updated":"2018-09-24 12:53:42.000000000","message":"nit: parenthesis is not needed","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"f3d650d79147b48208d7872304ef0313386e0b95","unresolved":false,"context_lines":[{"line_number":1107,"context_line":"                \u0027safe_to_manage\u0027: True,"},{"line_number":1108,"context_line":"                \u0027reason_not_safe\u0027: None,"},{"line_number":1109,"context_line":"            }"},{"line_number":1110,"context_line":"            if (\u0027cinder_managed\u0027 not in lun and"},{"line_number":1111,"context_line":"                    lcfg.zfssa_manage_policy !\u003d \u0027loose\u0027):"},{"line_number":1112,"context_line":"                lun_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1113,"context_line":"                lun_info[\u0027reason_not_safe\u0027] \u003d \u0027cinder_managed schema \u0027 \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_6dd54847","line":1110,"in_reply_to":"3f79a3b5_3537984e","updated":"2018-09-24 14:20:46.000000000","message":"OK, this is getting silly. I added the parenthesis because of a nit-pick on PS1.","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"02b9970ede54c5ad96df785e76d47a1c11f12e2b","unresolved":false,"context_lines":[{"line_number":1107,"context_line":"                \u0027safe_to_manage\u0027: True,"},{"line_number":1108,"context_line":"                \u0027reason_not_safe\u0027: None,"},{"line_number":1109,"context_line":"            }"},{"line_number":1110,"context_line":"            if (\u0027cinder_managed\u0027 not in lun and"},{"line_number":1111,"context_line":"                    lcfg.zfssa_manage_policy !\u003d \u0027loose\u0027):"},{"line_number":1112,"context_line":"                lun_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1113,"context_line":"                lun_info[\u0027reason_not_safe\u0027] \u003d \u0027cinder_managed schema \u0027 \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_669b2564","line":1110,"in_reply_to":"3f79a3b5_6dd54847","updated":"2018-09-24 16:50:38.000000000","message":"My bad then, looks good otherwise","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"acb6501881af33633037e972ccb38a46ce582254","unresolved":false,"context_lines":[{"line_number":1107,"context_line":"                \u0027safe_to_manage\u0027: True,"},{"line_number":1108,"context_line":"                \u0027reason_not_safe\u0027: None,"},{"line_number":1109,"context_line":"            }"},{"line_number":1110,"context_line":"            if (\u0027cinder_managed\u0027 not in lun and"},{"line_number":1111,"context_line":"                    lcfg.zfssa_manage_policy !\u003d \u0027loose\u0027):"},{"line_number":1112,"context_line":"                lun_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1113,"context_line":"                lun_info[\u0027reason_not_safe\u0027] \u003d \u0027cinder_managed schema \u0027 \\"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_a30fefde","line":1110,"in_reply_to":"3f79a3b5_6dd54847","updated":"2018-09-24 15:59:19.000000000","message":"The parenthesis looks fine here according to PEP8 rules,\nhttps://www.python.org/dev/peps/pep-0008/#multiline-if-statements","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"acb6501881af33633037e972ccb38a46ce582254","unresolved":false,"context_lines":[{"line_number":1110,"context_line":"            if (\u0027cinder_managed\u0027 not in lun and"},{"line_number":1111,"context_line":"                    lcfg.zfssa_manage_policy !\u003d \u0027loose\u0027):"},{"line_number":1112,"context_line":"                lun_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1113,"context_line":"                lun_info[\u0027reason_not_safe\u0027] \u003d \u0027cinder_managed schema \u0027 \\"},{"line_number":1114,"context_line":"                                              \u0027not present\u0027"},{"line_number":1115,"context_line":"            elif lun.get(\u0027cinder_managed\u0027, False):"},{"line_number":1116,"context_line":"                lun_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1117,"context_line":"                vol_id \u003d volume_utils.extract_id_from_volume_name(lun[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_c3154b4e","line":1114,"range":{"start_line":1113,"start_character":46,"end_line":1114,"end_character":59},"updated":"2018-09-24 15:59:19.000000000","message":"maybe consider using parenthesis here? or this too looks fine for me","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"eac6627fb0a39a7ec23a4b1da49948310ab6c240","unresolved":false,"context_lines":[{"line_number":1110,"context_line":"            if (\u0027cinder_managed\u0027 not in lun and"},{"line_number":1111,"context_line":"                    lcfg.zfssa_manage_policy !\u003d \u0027loose\u0027):"},{"line_number":1112,"context_line":"                lun_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1113,"context_line":"                lun_info[\u0027reason_not_safe\u0027] \u003d \u0027cinder_managed schema \u0027 \\"},{"line_number":1114,"context_line":"                                              \u0027not present\u0027"},{"line_number":1115,"context_line":"            elif lun.get(\u0027cinder_managed\u0027, False):"},{"line_number":1116,"context_line":"                lun_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1117,"context_line":"                vol_id \u003d volume_utils.extract_id_from_volume_name(lun[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_022c8fff","line":1114,"range":{"start_line":1113,"start_character":46,"end_line":1114,"end_character":59},"in_reply_to":"3f79a3b5_578d7133","updated":"2018-09-25 08:16:07.000000000","message":"Ok. This was a clear explanation. Looks good then.","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a80639065f4e3eeee39d55d3f85b276c484b1623","unresolved":false,"context_lines":[{"line_number":1110,"context_line":"            if (\u0027cinder_managed\u0027 not in lun and"},{"line_number":1111,"context_line":"                    lcfg.zfssa_manage_policy !\u003d \u0027loose\u0027):"},{"line_number":1112,"context_line":"                lun_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1113,"context_line":"                lun_info[\u0027reason_not_safe\u0027] \u003d \u0027cinder_managed schema \u0027 \\"},{"line_number":1114,"context_line":"                                              \u0027not present\u0027"},{"line_number":1115,"context_line":"            elif lun.get(\u0027cinder_managed\u0027, False):"},{"line_number":1116,"context_line":"                lun_info[\u0027safe_to_manage\u0027] \u003d False"},{"line_number":1117,"context_line":"                vol_id \u003d volume_utils.extract_id_from_volume_name(lun[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_578d7133","line":1114,"range":{"start_line":1113,"start_character":46,"end_line":1114,"end_character":59},"in_reply_to":"3f79a3b5_c3154b4e","updated":"2018-09-24 18:40:15.000000000","message":"Yes, it is preferred that we use parenthesis over \\ for line continuation but it can\u0027t always be done.  In the case that this is code that is being pulled over from elsewhere then it really isn\u0027t helpful to nit-pick changes into place.  It can actually lead to the code being less stable.  So, lets not nit pick this stuff please.","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"acb6501881af33633037e972ccb38a46ce582254","unresolved":false,"context_lines":[{"line_number":1119,"context_line":"                    lun_info[\u0027reason_not_safe\u0027] \u003d \u0027already managed\u0027"},{"line_number":1120,"context_line":"                    lun_info[\u0027cinder_id\u0027] \u003d vol_id"},{"line_number":1121,"context_line":"                else:"},{"line_number":1122,"context_line":"                    lun_info[\u0027reason_not_safe\u0027] \u003d \\"},{"line_number":1123,"context_line":"                        \u0027managed by another cinder instance?\u0027"},{"line_number":1124,"context_line":"            manageable_volumes.append(lun_info)"},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":"        return volume_utils.paginate_entries_list("}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_a314cf4e","line":1123,"range":{"start_line":1122,"start_character":50,"end_line":1123,"end_character":61},"updated":"2018-09-24 15:59:19.000000000","message":"ditto","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"}],"cinder/volume/drivers/zfssa/zfssarest.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"a5f2397c61af9492aee70c671aa5a9f65eb1c646","unresolved":false,"context_lines":[{"line_number":760,"context_line":"        def _listify(item):"},{"line_number":761,"context_line":"            return item if isinstance(item, list) else [item]"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"        initiatorgroup \u003d _listify(lun[\u0027initiatorgroup\u0027])"},{"line_number":764,"context_line":"        number \u003d _listify(lun[\u0027assignednumber\u0027])"},{"line_number":765,"context_line":""},{"line_number":766,"context_line":"        # Hide special maskAll value when LUN is not currently presented to"},{"line_number":767,"context_line":"        # any initiatorgroups:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_829a18c2","line":764,"range":{"start_line":763,"start_character":8,"end_line":764,"end_character":48},"updated":"2018-09-21 09:11:55.000000000","message":"IMO, it would be better to move it under \u0027else\u0027 statement to line #771","commit_id":"a08580f587f1440e21dbcf93a28745a736811900"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"3eca91c60dab196f54e4645ed1b9f546e82d41c8","unresolved":false,"context_lines":[{"line_number":760,"context_line":"        def _listify(item):"},{"line_number":761,"context_line":"            return item if isinstance(item, list) else [item]"},{"line_number":762,"context_line":""},{"line_number":763,"context_line":"        initiatorgroup \u003d _listify(lun[\u0027initiatorgroup\u0027])"},{"line_number":764,"context_line":"        number \u003d _listify(lun[\u0027assignednumber\u0027])"},{"line_number":765,"context_line":""},{"line_number":766,"context_line":"        # Hide special maskAll value when LUN is not currently presented to"},{"line_number":767,"context_line":"        # any initiatorgroups:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d868f4ba","line":764,"range":{"start_line":763,"start_character":8,"end_line":764,"end_character":48},"in_reply_to":"3f79a3b5_829a18c2","updated":"2018-09-21 16:53:31.000000000","message":"This code was moved up from get_lun() as-is, but this seems reasonable.","commit_id":"a08580f587f1440e21dbcf93a28745a736811900"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"a5f2397c61af9492aee70c671aa5a9f65eb1c646","unresolved":false,"context_lines":[{"line_number":779,"context_line":"            \u0027targetgroup\u0027: lun[\u0027targetgroup\u0027]"},{"line_number":780,"context_line":"        }"},{"line_number":781,"context_line":"        if \u0027origin\u0027 in lun:"},{"line_number":782,"context_line":"            canonical.update({\u0027origin\u0027: lun[\u0027origin\u0027]})"},{"line_number":783,"context_line":"        if \u0027custom:image_id\u0027 in lun:"},{"line_number":784,"context_line":"            canonical.update({\u0027image_id\u0027: lun[\u0027custom:image_id\u0027]})"},{"line_number":785,"context_line":"            canonical.update({\u0027updated_at\u0027: lun[\u0027custom:updated_at\u0027]})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_426ba0b7","line":782,"updated":"2018-09-21 09:11:55.000000000","message":"Why do we need to call \u0027update\u0027 method here?","commit_id":"a08580f587f1440e21dbcf93a28745a736811900"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"3eca91c60dab196f54e4645ed1b9f546e82d41c8","unresolved":false,"context_lines":[{"line_number":779,"context_line":"            \u0027targetgroup\u0027: lun[\u0027targetgroup\u0027]"},{"line_number":780,"context_line":"        }"},{"line_number":781,"context_line":"        if \u0027origin\u0027 in lun:"},{"line_number":782,"context_line":"            canonical.update({\u0027origin\u0027: lun[\u0027origin\u0027]})"},{"line_number":783,"context_line":"        if \u0027custom:image_id\u0027 in lun:"},{"line_number":784,"context_line":"            canonical.update({\u0027image_id\u0027: lun[\u0027custom:image_id\u0027]})"},{"line_number":785,"context_line":"            canonical.update({\u0027updated_at\u0027: lun[\u0027custom:updated_at\u0027]})"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_385568f9","line":782,"in_reply_to":"3f79a3b5_426ba0b7","updated":"2018-09-21 16:53:31.000000000","message":"Don\u0027t know. It\u0027s been that way for years. All of the code in this new method was just moved up out of get_lun() so I could reuse it (and be consistent) in the new get_all_luns().","commit_id":"a08580f587f1440e21dbcf93a28745a736811900"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"a5f2397c61af9492aee70c671aa5a9f65eb1c646","unresolved":false,"context_lines":[{"line_number":808,"context_line":""},{"line_number":809,"context_line":"        canonical \u003d []"},{"line_number":810,"context_line":"        for lun in json.loads(ret.data)[\u0027luns\u0027]:"},{"line_number":811,"context_line":"            canonical.append(self._canonify_lun_info(lun))"},{"line_number":812,"context_line":"        return canonical"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    def get_lun(self, pool, project, lun):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_a2863464","line":811,"range":{"start_line":811,"start_character":0,"end_line":811,"end_character":58},"updated":"2018-09-21 09:11:55.000000000","message":"nit: why don\u0027t pass luns list to the \u0027_canonify_lun_info\u0027 method? it would be a bit better from the performance perspective","commit_id":"a08580f587f1440e21dbcf93a28745a736811900"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"3eca91c60dab196f54e4645ed1b9f546e82d41c8","unresolved":false,"context_lines":[{"line_number":808,"context_line":""},{"line_number":809,"context_line":"        canonical \u003d []"},{"line_number":810,"context_line":"        for lun in json.loads(ret.data)[\u0027luns\u0027]:"},{"line_number":811,"context_line":"            canonical.append(self._canonify_lun_info(lun))"},{"line_number":812,"context_line":"        return canonical"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    def get_lun(self, pool, project, lun):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f83a90c1","line":811,"range":{"start_line":811,"start_character":0,"end_line":811,"end_character":58},"in_reply_to":"3f79a3b5_a2863464","updated":"2018-09-21 16:53:31.000000000","message":"Because _canonify_lun_info() is also used for a single LUN (not a list) in get_lun() below.","commit_id":"a08580f587f1440e21dbcf93a28745a736811900"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"acb6501881af33633037e972ccb38a46ce582254","unresolved":false,"context_lines":[{"line_number":781,"context_line":"        if \u0027origin\u0027 in lun:"},{"line_number":782,"context_line":"            canonical[\u0027origin\u0027] \u003d lun[\u0027origin\u0027]"},{"line_number":783,"context_line":"        for custom in [\u0027image_id\u0027, \u0027updated_at\u0027, \u0027cinder_managed\u0027]:"},{"line_number":784,"context_line":"            custom_value \u003d lun.get(\u0027custom:\u0027 + custom)"},{"line_number":785,"context_line":"            if custom_value:"},{"line_number":786,"context_line":"                canonical[custom] \u003d custom_value"},{"line_number":787,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_03d6e3f3","line":784,"range":{"start_line":784,"start_character":36,"end_line":784,"end_character":43},"updated":"2018-09-24 15:59:19.000000000","message":"maybe a space would be good here\n\u0027custom: \u0027 + custom","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"ea9b699b3b4d0c4e6c3a2ca0fa593f4efb0e1e87","unresolved":false,"context_lines":[{"line_number":781,"context_line":"        if \u0027origin\u0027 in lun:"},{"line_number":782,"context_line":"            canonical[\u0027origin\u0027] \u003d lun[\u0027origin\u0027]"},{"line_number":783,"context_line":"        for custom in [\u0027image_id\u0027, \u0027updated_at\u0027, \u0027cinder_managed\u0027]:"},{"line_number":784,"context_line":"            custom_value \u003d lun.get(\u0027custom:\u0027 + custom)"},{"line_number":785,"context_line":"            if custom_value:"},{"line_number":786,"context_line":"                canonical[custom] \u003d custom_value"},{"line_number":787,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_9c6d7005","line":784,"range":{"start_line":784,"start_character":36,"end_line":784,"end_character":43},"in_reply_to":"3f79a3b5_03d6e3f3","updated":"2018-09-24 18:11:14.000000000","message":"It might look nice, but it wouldn\u0027t work, because it wouldn\u0027t match what\u0027s being returned from the API call to the ZFSSA.","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"eac6627fb0a39a7ec23a4b1da49948310ab6c240","unresolved":false,"context_lines":[{"line_number":781,"context_line":"        if \u0027origin\u0027 in lun:"},{"line_number":782,"context_line":"            canonical[\u0027origin\u0027] \u003d lun[\u0027origin\u0027]"},{"line_number":783,"context_line":"        for custom in [\u0027image_id\u0027, \u0027updated_at\u0027, \u0027cinder_managed\u0027]:"},{"line_number":784,"context_line":"            custom_value \u003d lun.get(\u0027custom:\u0027 + custom)"},{"line_number":785,"context_line":"            if custom_value:"},{"line_number":786,"context_line":"                canonical[custom] \u003d custom_value"},{"line_number":787,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_c283f7ca","line":784,"range":{"start_line":784,"start_character":36,"end_line":784,"end_character":43},"in_reply_to":"3f79a3b5_9c6d7005","updated":"2018-09-25 08:16:07.000000000","message":"In that case, its better as it is.","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"acb6501881af33633037e972ccb38a46ce582254","unresolved":false,"context_lines":[{"line_number":789,"context_line":""},{"line_number":790,"context_line":"    def get_all_luns(self, pool, project):"},{"line_number":791,"context_line":"        \"\"\"return all luns in project.\"\"\""},{"line_number":792,"context_line":"        svc \u003d \u0027/api/storage/v1/pools/\u0027 + pool + \u0027/projects/\u0027 + \\"},{"line_number":793,"context_line":"            project + \"/luns\""},{"line_number":794,"context_line":"        ret \u003d self.rclient.get(svc)"},{"line_number":795,"context_line":"        if ret.status !\u003d restclient.Status.OK:"},{"line_number":796,"context_line":"            exception_msg \u003d (_(\u0027Error Getting LUNs on \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0344a3b7","line":793,"range":{"start_line":792,"start_character":14,"end_line":793,"end_character":29},"updated":"2018-09-24 15:59:19.000000000","message":"looks like parenthesis could also be used here to avoid \\","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"acb6501881af33633037e972ccb38a46ce582254","unresolved":false,"context_lines":[{"line_number":806,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_msg)"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        canonical \u003d []"},{"line_number":809,"context_line":"        for lun in json.loads(ret.data)[\u0027luns\u0027]:"},{"line_number":810,"context_line":"            canonical.append(self._canonify_lun_info(lun))"},{"line_number":811,"context_line":"        return canonical"},{"line_number":812,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_034b43b1","line":809,"range":{"start_line":809,"start_character":39,"end_line":809,"end_character":47},"updated":"2018-09-24 15:59:19.000000000","message":"hopefully it doesn\u0027t throw a KeyError in any scenario else \ndict.get() would be useful in case","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"},{"author":{"_account_id":23561,"name":"iain MacDonnell","email":"iain.macdonnell@oracle.com","username":"imacdonn"},"change_message_id":"ea9b699b3b4d0c4e6c3a2ca0fa593f4efb0e1e87","unresolved":false,"context_lines":[{"line_number":806,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_msg)"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        canonical \u003d []"},{"line_number":809,"context_line":"        for lun in json.loads(ret.data)[\u0027luns\u0027]:"},{"line_number":810,"context_line":"            canonical.append(self._canonify_lun_info(lun))"},{"line_number":811,"context_line":"        return canonical"},{"line_number":812,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_5caa781a","line":809,"range":{"start_line":809,"start_character":39,"end_line":809,"end_character":47},"in_reply_to":"3f79a3b5_034b43b1","updated":"2018-09-24 18:11:14.000000000","message":"The JSON response to that API call should always be in an object named \"luns\". If the API call was successful (restclient.Status.OK) and the JSON didn\u0027t include that object, something very unexpected would have happened, so I think it\u0027d be OK to throw a KeyError here.","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"eac6627fb0a39a7ec23a4b1da49948310ab6c240","unresolved":false,"context_lines":[{"line_number":806,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dexception_msg)"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        canonical \u003d []"},{"line_number":809,"context_line":"        for lun in json.loads(ret.data)[\u0027luns\u0027]:"},{"line_number":810,"context_line":"            canonical.append(self._canonify_lun_info(lun))"},{"line_number":811,"context_line":"        return canonical"},{"line_number":812,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_02156f9b","line":809,"range":{"start_line":809,"start_character":39,"end_line":809,"end_character":47},"in_reply_to":"3f79a3b5_5caa781a","updated":"2018-09-25 08:16:07.000000000","message":"So considering majority of cases, this seems to work fine.","commit_id":"fe0a71b593fe0a89f9093ffb163d6e08f4a0f11d"}]}
