)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5f49b6f800b2bec5d77b9ea3b586a72e82f1566e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Code refactoring for existing veritas access cinder iSCSI driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Removed unrequired API calls as they are no more supported"},{"line_number":10,"context_line":"by backend. The logic for check_for_setup_error method is"},{"line_number":11,"context_line":"modified, now volume creation is allowed even when a single"},{"line_number":12,"context_line":"target is online at backend."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3f79a3b5_9c172954","line":9,"range":{"start_line":9,"start_character":44,"end_line":9,"end_character":48},"updated":"2018-12-06 18:46:09.000000000","message":"longer","commit_id":"b1afec342af60e6ce88f08f549927a6b7bac35b1"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"5f49b6f800b2bec5d77b9ea3b586a72e82f1566e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Code refactoring for existing veritas access cinder iSCSI driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Removed unrequired API calls as they are no more supported"},{"line_number":10,"context_line":"by backend. The logic for check_for_setup_error method is"},{"line_number":11,"context_line":"modified, now volume creation is allowed even when a single"},{"line_number":12,"context_line":"target is online at backend."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3f79a3b5_fc05fd16","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":10},"updated":"2018-12-06 18:46:09.000000000","message":"by the backend","commit_id":"b1afec342af60e6ce88f08f549927a6b7bac35b1"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"434c254493fe1f4158bf645bdb91964adcdf544b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     mayurindalkar \u003cmayur.indalkar@veritas.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-12-10 01:13:32 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Code refactoring for existing veritas access cinder iSCSI driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Removed unrequired API calls as they are no longer supported"},{"line_number":10,"context_line":"by the backend. The logic for check_for_setup_error method is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_fa43d66c","line":7,"updated":"2018-12-18 22:59:49.000000000","message":"If updating, get of redundant information here:\n\nRefactor for Veritas iSCSI driver","commit_id":"eb29930358e5f2e51500313654e91940a7a5a844"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"8321a5f31036e504fc8c074474de7981fe02c948","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     mayurindalkar \u003cmayur.indalkar@veritas.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-12-10 01:13:32 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Code refactoring for existing veritas access cinder iSCSI driver."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Removed unrequired API calls as they are no longer supported"},{"line_number":10,"context_line":"by the backend. The logic for check_for_setup_error method is"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_40c3d83a","line":7,"in_reply_to":"3f79a3b5_fa43d66c","updated":"2018-12-20 10:57:31.000000000","message":"Done","commit_id":"eb29930358e5f2e51500313654e91940a7a5a844"}],"cinder/volume/drivers/veritas_access/veritas_iscsi.py":[{"author":{"_account_id":24952,"name":"Vivek Soni","email":"viveksoni31390@gmail.com","username":"sonivi"},"change_message_id":"c0ed494efc39ed7a7668fa7dc6175f6301f8d1cd","unresolved":false,"context_lines":[{"line_number":389,"context_line":"        path \u003d self._target_list_status"},{"line_number":390,"context_line":"        provider \u003d \u0027%s:%s\u0027 % (self._va_ip, self._port)"},{"line_number":391,"context_line":"        data \u003d {}"},{"line_number":392,"context_line":"        target_status_list \u003d self._access_api(self.session, provider, path,"},{"line_number":393,"context_line":"                                              json.dumps(data), \u0027GET\u0027)"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"        target_status_output \u003d eval(target_status_list[\u0027output\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_d865f8b1","line":392,"range":{"start_line":392,"start_character":34,"end_line":392,"end_character":45},"updated":"2018-11-19 15:11:35.000000000","message":"failure scenario with \u0027def _access_api\u0027, will return False\n\nIn _access_api() function code,\n\nresponse.status_code !\u003d http_client.OK","commit_id":"b1afec342af60e6ce88f08f549927a6b7bac35b1"},{"author":{"_account_id":24952,"name":"Vivek Soni","email":"viveksoni31390@gmail.com","username":"sonivi"},"change_message_id":"c0ed494efc39ed7a7668fa7dc6175f6301f8d1cd","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        target_status_list \u003d self._access_api(self.session, provider, path,"},{"line_number":393,"context_line":"                                              json.dumps(data), \u0027GET\u0027)"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"        target_status_output \u003d eval(target_status_list[\u0027output\u0027])"},{"line_number":396,"context_line":"        for target in available_targets:"},{"line_number":397,"context_line":"            if target[\u0027name\u0027] in target_status_output.keys():"},{"line_number":398,"context_line":"                if target_status_output[target[\u0027name\u0027]] \u003d\u003d \u0027ONLINE\u0027:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_b8cefc8b","line":395,"range":{"start_line":395,"start_character":8,"end_line":395,"end_character":65},"updated":"2018-11-19 15:11:35.000000000","message":"attempting to access \"target_status_list[\u0027output\u0027]\" i.e. False[\u0027output\u0027] will fail","commit_id":"b1afec342af60e6ce88f08f549927a6b7bac35b1"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"a8de2c62a6fc880c54fb85ffe22ef4cc48ec3ecb","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                                              json.dumps(data), \u0027GET\u0027)"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        try:"},{"line_number":415,"context_line":"            target_status_output \u003d eval(target_status_list[\u0027output\u0027])"},{"line_number":416,"context_line":"        except KeyError:"},{"line_number":417,"context_line":"            message \u003d _(\u0027ACCESSIscsiDriver get online target list \u0027"},{"line_number":418,"context_line":"                        \u0027operation failed\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_da1c65c6","line":415,"updated":"2018-12-11 21:22:15.000000000","message":"Why do we need eval here? Can we omit eval usage in a driver?","commit_id":"eb29930358e5f2e51500313654e91940a7a5a844"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"434c254493fe1f4158bf645bdb91964adcdf544b","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                                              json.dumps(data), \u0027GET\u0027)"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        try:"},{"line_number":415,"context_line":"            target_status_output \u003d eval(target_status_list[\u0027output\u0027])"},{"line_number":416,"context_line":"        except KeyError:"},{"line_number":417,"context_line":"            message \u003d _(\u0027ACCESSIscsiDriver get online target list \u0027"},{"line_number":418,"context_line":"                        \u0027operation failed\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_fa5af65a","line":415,"in_reply_to":"3f79a3b5_da1c65c6","updated":"2018-12-18 22:59:49.000000000","message":"Agree, we do not want to eval() passed in data. What is in this and how can it be used without trying to execute it?","commit_id":"eb29930358e5f2e51500313654e91940a7a5a844"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"434c254493fe1f4158bf645bdb91964adcdf544b","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        if snap_info:"},{"line_number":675,"context_line":"            for snap in snap_info[\u0027output\u0027][\u0027output\u0027][\u0027snapshots\u0027]:"},{"line_number":676,"context_line":"                if snap[\u0027snapshot_name\u0027] \u003d\u003d snap_name:"},{"line_number":677,"context_line":"                    target_name \u003d snap[\u0027target_name\u0027]"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        if target_name \u003d\u003d \"\":"},{"line_number":680,"context_line":"            message \u003d (_(\u0027ACCESSIscsiDriver create volume from snapshot \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_7a6ee6ff","line":677,"updated":"2018-12-18 22:59:49.000000000","message":"Shouldn\u0027t this break out of the for loop once it finds what it is looking for so it doesn\u0027t need to continue iterating through all snapshots? Seems like something that could potentially end up with a larger number of objects to unnecessarily loop through.","commit_id":"eb29930358e5f2e51500313654e91940a7a5a844"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"8321a5f31036e504fc8c074474de7981fe02c948","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        if snap_info:"},{"line_number":675,"context_line":"            for snap in snap_info[\u0027output\u0027][\u0027output\u0027][\u0027snapshots\u0027]:"},{"line_number":676,"context_line":"                if snap[\u0027snapshot_name\u0027] \u003d\u003d snap_name:"},{"line_number":677,"context_line":"                    target_name \u003d snap[\u0027target_name\u0027]"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        if target_name \u003d\u003d \"\":"},{"line_number":680,"context_line":"            message \u003d (_(\u0027ACCESSIscsiDriver create volume from snapshot \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_80da5018","line":677,"in_reply_to":"3f79a3b5_7a6ee6ff","updated":"2018-12-20 10:57:31.000000000","message":"Done","commit_id":"eb29930358e5f2e51500313654e91940a7a5a844"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"6e7d2c6efed6363625d6e0a8e4769e260d05d22d","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        lun_id_list \u003d self._access_api(self.session, provider, path,"},{"line_number":191,"context_line":"                                       json.dumps(data), \u0027GET\u0027)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if not lun_id_list:"},{"line_number":194,"context_line":"            message \u003d _(\u0027ACCESSIscsiDriver get LUN ID list \u0027"},{"line_number":195,"context_line":"                        \u0027operation failed\u0027)"},{"line_number":196,"context_line":"            LOG.error(message)"},{"line_number":197,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmessage)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        for lun in ast.literal_eval(lun_id_list[\u0027output\u0027]):"},{"line_number":200,"context_line":"            vrts_lun_name \u003d lun[\u0027storage_object\u0027].split(\u0027/\u0027)[3]"}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_009686f1","line":197,"range":{"start_line":193,"start_character":0,"end_line":197,"end_character":70},"updated":"2019-03-11 17:27:23.000000000","message":"since this is duplicated multiple times with a slight change, can we move it to a function,\n\ndef raise_list_exceptions(self, keyword):\n    message \u003d _(\u0027ACCESSIscsiDriver get %s list \u0027\n                        \u0027operation failed\u0027 % keyword)\n            LOG.error(message)\n            raise exception.VolumeBackendAPIException(message\u003dmessage)\n\ni\u0027ve used generic words, you can define with whatever suits best.","commit_id":"0555c1bfa887d1e7e1bf3099f579572ad221ffe9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"6e7d2c6efed6363625d6e0a8e4769e260d05d22d","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        lun_list \u003d self._access_api(self.session, provider, path,"},{"line_number":256,"context_line":"                                    json.dumps(data), \u0027GET\u0027)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        if not lun_list:"},{"line_number":259,"context_line":"            message \u003d _(\u0027ACCESSIscsiDriver get LUN list \u0027"},{"line_number":260,"context_line":"                        \u0027operation failed\u0027)"},{"line_number":261,"context_line":"            LOG.error(message)"},{"line_number":262,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmessage)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"        return lun_list"},{"line_number":265,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_608e6ad1","line":262,"range":{"start_line":258,"start_character":0,"end_line":262,"end_character":70},"updated":"2019-03-11 17:27:23.000000000","message":"same","commit_id":"0555c1bfa887d1e7e1bf3099f579572ad221ffe9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"6e7d2c6efed6363625d6e0a8e4769e260d05d22d","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        fs_list \u003d self._access_api(self.session, provider, path,"},{"line_number":395,"context_line":"                                   json.dumps(data), \u0027GET\u0027)"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        if not fs_list:"},{"line_number":398,"context_line":"            message \u003d _(\u0027ACCESSIscsiDriver get FS list \u0027"},{"line_number":399,"context_line":"                        \u0027operation failed\u0027)"},{"line_number":400,"context_line":"            LOG.error(message)"},{"line_number":401,"context_line":"            raise exception.VolumeBackendAPIException(message\u003dmessage)"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        return fs_list"},{"line_number":404,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_c0b87e77","line":401,"range":{"start_line":397,"start_character":0,"end_line":401,"end_character":70},"updated":"2019-03-11 17:27:23.000000000","message":"same","commit_id":"0555c1bfa887d1e7e1bf3099f579572ad221ffe9"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"33b6ade578fc93d7063f73f9468d116656e5eb7b","unresolved":false,"context_lines":[{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        try:"},{"line_number":416,"context_line":"            target_status_output \u003d (ast."},{"line_number":417,"context_line":"                                    literal_eval(target_status_list[\u0027output\u0027]))"},{"line_number":418,"context_line":"        except KeyError:"},{"line_number":419,"context_line":"            message \u003d _(\u0027ACCESSIscsiDriver get online target list \u0027"},{"line_number":420,"context_line":"                        \u0027operation failed\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f79a3b5_4948ce87","line":417,"range":{"start_line":417,"start_character":36,"end_line":417,"end_character":48},"updated":"2018-12-21 12:48:13.000000000","message":"Question from the previous patch still not really answered, but at least this is safer than what was there before.\n\nIf you do an update, get rid of the outer () and just break after the opening ( of the literal_eval call.","commit_id":"0555c1bfa887d1e7e1bf3099f579572ad221ffe9"},{"author":{"_account_id":25838,"name":"Mayur Indalkar","email":"mayur.indalkar@veritas.com","username":"mayurindalkar"},"change_message_id":"31da8a091553ded705a05b6e8291048d7fff74f3","unresolved":false,"context_lines":[{"line_number":414,"context_line":""},{"line_number":415,"context_line":"        try:"},{"line_number":416,"context_line":"            target_status_output \u003d (ast."},{"line_number":417,"context_line":"                                    literal_eval(target_status_list[\u0027output\u0027]))"},{"line_number":418,"context_line":"        except KeyError:"},{"line_number":419,"context_line":"            message \u003d _(\u0027ACCESSIscsiDriver get online target list \u0027"},{"line_number":420,"context_line":"                        \u0027operation failed\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"dfd5e7cf_89fe8403","line":417,"range":{"start_line":417,"start_character":36,"end_line":417,"end_character":48},"in_reply_to":"3f79a3b5_4948ce87","updated":"2019-01-07 06:40:32.000000000","message":"Thanks Sean.\nI will get rid of the outer ()in future versions.\nWe are using literal_eval to \"target_status_list[\u0027output\u0027]\" into list format, as it was in string format earlier.","commit_id":"0555c1bfa887d1e7e1bf3099f579572ad221ffe9"}]}
