)]}'
{"cinder/tests/unit/volume/drivers/test_nimble.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e058d19dd8a756327e3d96aa5c311a4072de304e","unresolved":false,"context_lines":[{"line_number":969,"context_line":"        self.mock_client_service.get_vol_info.return_value \u003d ("},{"line_number":970,"context_line":"            FAKE_GET_VOL_INFO_ONLINE)"},{"line_number":971,"context_line":"        retype, update \u003d self.driver.retype(None, FAKE_GET_VOL_INFO_ONLINE,"},{"line_number":972,"context_line":"                                            None, None, None)"},{"line_number":973,"context_line":"        self.assertTrue(retype)"},{"line_number":974,"context_line":"        self.assertIsNone(update)"},{"line_number":975,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_d443a310","line":972,"range":{"start_line":972,"start_character":44,"end_line":972,"end_character":60},"updated":"2018-09-25 20:05:20.000000000","message":"The test needs to be a little strong here, no point in retyping when there isn\u0027t a check for new_type[\u0027name\u0027] and other parameters.","commit_id":"b1bcde9f819fbc338eb5e2e725b810753b66676f"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"91a5ffbc1f9b5474629d45aa2296b2fa7b24c965","unresolved":false,"context_lines":[{"line_number":969,"context_line":"        self.mock_client_service.get_vol_info.return_value \u003d ("},{"line_number":970,"context_line":"            FAKE_GET_VOL_INFO_ONLINE)"},{"line_number":971,"context_line":"        retype, update \u003d self.driver.retype(None, FAKE_GET_VOL_INFO_ONLINE,"},{"line_number":972,"context_line":"                                            None, None, None)"},{"line_number":973,"context_line":"        self.assertTrue(retype)"},{"line_number":974,"context_line":"        self.assertIsNone(update)"},{"line_number":975,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_47d4c71f","line":972,"range":{"start_line":972,"start_character":44,"end_line":972,"end_character":60},"in_reply_to":"3f79a3b5_d443a310","updated":"2018-09-25 22:54:00.000000000","message":"Done","commit_id":"b1bcde9f819fbc338eb5e2e725b810753b66676f"}],"cinder/volume/drivers/nimble.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"aff46197b236c803fd5e2bd67e98b1fc91f3cb44","unresolved":false,"context_lines":[{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        volume_type_id \u003d new_type[\u0027id\u0027]"},{"line_number":452,"context_line":"        if volume_type_id is None:"},{"line_number":453,"context_line":"            raise NimbleAPIException(_(\"no volume_type_id present in\""},{"line_number":454,"context_line":"                                       \"%(type)s\") % {\u0027type\u0027: new_type})"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"        LOG.debug(\"volume_type id is %s\", volume_type_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_e70ab377","line":453,"range":{"start_line":453,"start_character":40,"end_line":453,"end_character":41},"updated":"2018-09-12 15:10:22.000000000","message":"N","commit_id":"26016b1420a20441d9e94a825c8f3574428d004e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"aff46197b236c803fd5e2bd67e98b1fc91f3cb44","unresolved":false,"context_lines":[{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        volume_type_id \u003d new_type[\u0027id\u0027]"},{"line_number":452,"context_line":"        if volume_type_id is None:"},{"line_number":453,"context_line":"            raise NimbleAPIException(_(\"no volume_type_id present in\""},{"line_number":454,"context_line":"                                       \"%(type)s\") % {\u0027type\u0027: new_type})"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"        LOG.debug(\"volume_type id is %s\", volume_type_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_871bbfc8","line":453,"range":{"start_line":453,"start_character":68,"end_line":453,"end_character":69},"updated":"2018-09-12 15:10:22.000000000","message":"Space needed at the end so this does not run together with the next line.","commit_id":"26016b1420a20441d9e94a825c8f3574428d004e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"a411fea6fe77614338626c843fc189674c8a5a7d","unresolved":false,"context_lines":[{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        volume_type_id \u003d new_type[\u0027id\u0027]"},{"line_number":452,"context_line":"        if volume_type_id is None:"},{"line_number":453,"context_line":"            raise NimbleAPIException(_(\"no volume_type_id present in\""},{"line_number":454,"context_line":"                                       \"%(type)s\") % {\u0027type\u0027: new_type})"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"        LOG.debug(\"volume_type id is %s\", volume_type_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_2ab5d2d0","line":453,"range":{"start_line":453,"start_character":68,"end_line":453,"end_character":69},"in_reply_to":"3f79a3b5_871bbfc8","updated":"2018-09-12 15:46:58.000000000","message":"Done","commit_id":"26016b1420a20441d9e94a825c8f3574428d004e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"a411fea6fe77614338626c843fc189674c8a5a7d","unresolved":false,"context_lines":[{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        volume_type_id \u003d new_type[\u0027id\u0027]"},{"line_number":452,"context_line":"        if volume_type_id is None:"},{"line_number":453,"context_line":"            raise NimbleAPIException(_(\"no volume_type_id present in\""},{"line_number":454,"context_line":"                                       \"%(type)s\") % {\u0027type\u0027: new_type})"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"        LOG.debug(\"volume_type id is %s\", volume_type_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_4aba8ec0","line":453,"range":{"start_line":453,"start_character":40,"end_line":453,"end_character":41},"in_reply_to":"3f79a3b5_e70ab377","updated":"2018-09-12 15:46:58.000000000","message":"Done","commit_id":"26016b1420a20441d9e94a825c8f3574428d004e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"aff46197b236c803fd5e2bd67e98b1fc91f3cb44","unresolved":false,"context_lines":[{"line_number":478,"context_line":"            # make the volume online after changing the specs"},{"line_number":479,"context_line":"            self.APIExecutor.online_vol(volume[\u0027name\u0027], True)"},{"line_number":480,"context_line":"        except NimbleAPIException as ex:"},{"line_number":481,"context_line":"            raise NimbleAPIException(_(\"unable to retype %(vol)s to \""},{"line_number":482,"context_line":"                                       \"%(type)s: %(err)s\") %"},{"line_number":483,"context_line":"                                     {\u0027vol\u0027: volume[\u0027name\u0027],"},{"line_number":484,"context_line":"                                      \u0027type\u0027: new_type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_07856fcf","line":481,"range":{"start_line":481,"start_character":40,"end_line":481,"end_character":41},"updated":"2018-09-12 15:10:22.000000000","message":"U","commit_id":"26016b1420a20441d9e94a825c8f3574428d004e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"a411fea6fe77614338626c843fc189674c8a5a7d","unresolved":false,"context_lines":[{"line_number":478,"context_line":"            # make the volume online after changing the specs"},{"line_number":479,"context_line":"            self.APIExecutor.online_vol(volume[\u0027name\u0027], True)"},{"line_number":480,"context_line":"        except NimbleAPIException as ex:"},{"line_number":481,"context_line":"            raise NimbleAPIException(_(\"unable to retype %(vol)s to \""},{"line_number":482,"context_line":"                                       \"%(type)s: %(err)s\") %"},{"line_number":483,"context_line":"                                     {\u0027vol\u0027: volume[\u0027name\u0027],"},{"line_number":484,"context_line":"                                      \u0027type\u0027: new_type,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_aac80256","line":481,"range":{"start_line":481,"start_character":40,"end_line":481,"end_character":41},"in_reply_to":"3f79a3b5_07856fcf","updated":"2018-09-12 15:46:58.000000000","message":"Done","commit_id":"26016b1420a20441d9e94a825c8f3574428d004e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"aff46197b236c803fd5e2bd67e98b1fc91f3cb44","unresolved":false,"context_lines":[{"line_number":775,"context_line":"            netconfig \u003d self.APIExecutor.get_netconfig(\u0027active\u0027)"},{"line_number":776,"context_line":"            target_portals \u003d self._get_data_ips(netconfig)"},{"line_number":777,"context_line":"            LOG.info(\"target portals %(portals)s\", {\u0027portals\u0027: target_portals})"},{"line_number":778,"context_line":"            target_luns \u003d [int(lun_num) for _ in range(len(target_portals))]"},{"line_number":779,"context_line":"            target_iqns \u003d [iqn for _ in range(len(target_portals))]"},{"line_number":780,"context_line":"            LOG.debug(\"target iqns %(iqns)s target luns %(luns)s\","},{"line_number":781,"context_line":"                      {\u0027iqns\u0027: target_iqns, \u0027luns\u0027: target_luns})"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_27c42b0e","line":778,"range":{"start_line":778,"start_character":44,"end_line":778,"end_character":45},"updated":"2018-09-12 15:10:22.000000000","message":"Since _ is used for the translation call, need to use __ or other indicator for unused variables.","commit_id":"26016b1420a20441d9e94a825c8f3574428d004e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"a411fea6fe77614338626c843fc189674c8a5a7d","unresolved":false,"context_lines":[{"line_number":775,"context_line":"            netconfig \u003d self.APIExecutor.get_netconfig(\u0027active\u0027)"},{"line_number":776,"context_line":"            target_portals \u003d self._get_data_ips(netconfig)"},{"line_number":777,"context_line":"            LOG.info(\"target portals %(portals)s\", {\u0027portals\u0027: target_portals})"},{"line_number":778,"context_line":"            target_luns \u003d [int(lun_num) for _ in range(len(target_portals))]"},{"line_number":779,"context_line":"            target_iqns \u003d [iqn for _ in range(len(target_portals))]"},{"line_number":780,"context_line":"            LOG.debug(\"target iqns %(iqns)s target luns %(luns)s\","},{"line_number":781,"context_line":"                      {\u0027iqns\u0027: target_iqns, \u0027luns\u0027: target_luns})"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_8abf46a9","line":778,"range":{"start_line":778,"start_character":44,"end_line":778,"end_character":45},"in_reply_to":"3f79a3b5_27c42b0e","updated":"2018-09-12 15:46:58.000000000","message":"Done","commit_id":"26016b1420a20441d9e94a825c8f3574428d004e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"aff46197b236c803fd5e2bd67e98b1fc91f3cb44","unresolved":false,"context_lines":[{"line_number":1208,"context_line":"                            if folder_id is not None:"},{"line_number":1209,"context_line":"                                data[\u0027data\u0027][\"folder_id\"] \u003d folder_id"},{"line_number":1210,"context_line":"                    if folder_id is None:"},{"line_number":1211,"context_line":"                        raise NimbleAPIException(_(\"Folder \u0027%(folder)s\u0027 not \""},{"line_number":1212,"context_line":"                                                   \"present in pool  \u0027%(\""},{"line_number":1213,"context_line":"                                                   \"pool)s\u0027\") %"},{"line_number":1214,"context_line":"                                                 {\u0027folder\u0027: folder_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_67fa2344","line":1211,"updated":"2018-09-12 15:10:22.000000000","message":"Might be better to start these on a new line so it\u0027s not all crammed in to the shorter space.","commit_id":"26016b1420a20441d9e94a825c8f3574428d004e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"a411fea6fe77614338626c843fc189674c8a5a7d","unresolved":false,"context_lines":[{"line_number":1208,"context_line":"                            if folder_id is not None:"},{"line_number":1209,"context_line":"                                data[\u0027data\u0027][\"folder_id\"] \u003d folder_id"},{"line_number":1210,"context_line":"                    if folder_id is None:"},{"line_number":1211,"context_line":"                        raise NimbleAPIException(_(\"Folder \u0027%(folder)s\u0027 not \""},{"line_number":1212,"context_line":"                                                   \"present in pool  \u0027%(\""},{"line_number":1213,"context_line":"                                                   \"pool)s\u0027\") %"},{"line_number":1214,"context_line":"                                                 {\u0027folder\u0027: folder_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_2a039278","line":1211,"in_reply_to":"3f79a3b5_67fa2344","updated":"2018-09-12 15:46:58.000000000","message":"Done","commit_id":"26016b1420a20441d9e94a825c8f3574428d004e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"aff46197b236c803fd5e2bd67e98b1fc91f3cb44","unresolved":false,"context_lines":[{"line_number":1233,"context_line":"            if iops_limit is not None:"},{"line_number":1234,"context_line":"                if not iops_limit.isdigit() or ("},{"line_number":1235,"context_line":"                   int(iops_limit) \u003c MIN_IOPS) or (int(iops_limit) \u003e MAX_IOPS):"},{"line_number":1236,"context_line":"                    raise NimbleAPIException(_(\"Please set valid IOPS limit in\""},{"line_number":1237,"context_line":"                                               \"the range[%(min)s, %(max)s]\") %"},{"line_number":1238,"context_line":"                                             {\u0027min\u0027: MIN_IOPS,"},{"line_number":1239,"context_line":"                                              \u0027max\u0027: MAX_IOPS})"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_a7859bb0","line":1236,"range":{"start_line":1236,"start_character":78,"end_line":1236,"end_character":79},"updated":"2018-09-12 15:10:22.000000000","message":"Missing trailing space. Maybe another reason to reformat these.","commit_id":"26016b1420a20441d9e94a825c8f3574428d004e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"a411fea6fe77614338626c843fc189674c8a5a7d","unresolved":false,"context_lines":[{"line_number":1233,"context_line":"            if iops_limit is not None:"},{"line_number":1234,"context_line":"                if not iops_limit.isdigit() or ("},{"line_number":1235,"context_line":"                   int(iops_limit) \u003c MIN_IOPS) or (int(iops_limit) \u003e MAX_IOPS):"},{"line_number":1236,"context_line":"                    raise NimbleAPIException(_(\"Please set valid IOPS limit in\""},{"line_number":1237,"context_line":"                                               \"the range[%(min)s, %(max)s]\") %"},{"line_number":1238,"context_line":"                                             {\u0027min\u0027: MIN_IOPS,"},{"line_number":1239,"context_line":"                                              \u0027max\u0027: MAX_IOPS})"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_4a2daefb","line":1236,"range":{"start_line":1236,"start_character":78,"end_line":1236,"end_character":79},"in_reply_to":"3f79a3b5_a7859bb0","updated":"2018-09-12 15:46:58.000000000","message":"Done","commit_id":"26016b1420a20441d9e94a825c8f3574428d004e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"aff46197b236c803fd5e2bd67e98b1fc91f3cb44","unresolved":false,"context_lines":[{"line_number":1813,"context_line":"    def delete_snap(self, volume_name, snap_name):"},{"line_number":1814,"context_line":"        snap_info \u003d self.get_snap_info(snap_name, volume_name)"},{"line_number":1815,"context_line":"        api \u003d \"snapshots/\" + six.text_type(snap_info[\u0027id\u0027])"},{"line_number":1816,"context_line":"        try:"},{"line_number":1817,"context_line":"            self.delete(api)"},{"line_number":1818,"context_line":"        except Exception as ex:"},{"line_number":1819,"context_line":"            LOG.debug(\"online_snap_exception: %s\", ex)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_07ba4f6d","line":1816,"updated":"2018-09-12 15:10:22.000000000","message":"How is this related to retype?","commit_id":"26016b1420a20441d9e94a825c8f3574428d004e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"a411fea6fe77614338626c843fc189674c8a5a7d","unresolved":false,"context_lines":[{"line_number":1813,"context_line":"    def delete_snap(self, volume_name, snap_name):"},{"line_number":1814,"context_line":"        snap_info \u003d self.get_snap_info(snap_name, volume_name)"},{"line_number":1815,"context_line":"        api \u003d \"snapshots/\" + six.text_type(snap_info[\u0027id\u0027])"},{"line_number":1816,"context_line":"        try:"},{"line_number":1817,"context_line":"            self.delete(api)"},{"line_number":1818,"context_line":"        except Exception as ex:"},{"line_number":1819,"context_line":"            LOG.debug(\"online_snap_exception: %s\", ex)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_4a160eaa","line":1816,"in_reply_to":"3f79a3b5_07ba4f6d","updated":"2018-09-12 15:46:58.000000000","message":"Not directly but we have some restrictions with snapshots deletions so covered in the same changeset","commit_id":"26016b1420a20441d9e94a825c8f3574428d004e"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"c475503621ae04833e5d9b8d4cbfc38ffc1bbdb2","unresolved":false,"context_lines":[{"line_number":1224,"context_line":"                                                \u0027max\u0027: MAX_IOPS})"},{"line_number":1225,"context_line":""},{"line_number":1226,"context_line":"                data[\u0027data\u0027][\u0027limit_iops\u0027] \u003d iops_limit"},{"line_number":1227,"context_line":"            if iops_limit is not None:"},{"line_number":1228,"context_line":"                if not iops_limit.isdigit() or ("},{"line_number":1229,"context_line":"                   int(iops_limit) \u003c MIN_IOPS) or (int(iops_limit) \u003e MAX_IOPS):"},{"line_number":1230,"context_line":"                    raise NimbleAPIException(_("},{"line_number":1231,"context_line":"                        \"Please set valid IOPS limit in the range[%(min)s, \""},{"line_number":1232,"context_line":"                        \"%(max)s]\") % {\u0027min\u0027: MIN_IOPS,"},{"line_number":1233,"context_line":"                                       \u0027max\u0027: MAX_IOPS})"},{"line_number":1234,"context_line":"                data[\u0027data\u0027][\u0027limit_iops\u0027] \u003d iops_limit"},{"line_number":1235,"context_line":""},{"line_number":1236,"context_line":"            LOG.debug(\"Volume metadata :%s\", volume.metadata)"},{"line_number":1237,"context_line":"            for key, value in volume.metadata.items():"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_b747257b","line":1234,"range":{"start_line":1227,"start_character":0,"end_line":1234,"end_character":55},"updated":"2018-09-24 19:00:24.000000000","message":"Why do you have this code here twice?","commit_id":"aa32f5242bd786ba2815e0a41b339cd88121f8e0"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"cfef887e1cf1a634773fc48776b83720988169dd","unresolved":false,"context_lines":[{"line_number":1224,"context_line":"                                                \u0027max\u0027: MAX_IOPS})"},{"line_number":1225,"context_line":""},{"line_number":1226,"context_line":"                data[\u0027data\u0027][\u0027limit_iops\u0027] \u003d iops_limit"},{"line_number":1227,"context_line":"            if iops_limit is not None:"},{"line_number":1228,"context_line":"                if not iops_limit.isdigit() or ("},{"line_number":1229,"context_line":"                   int(iops_limit) \u003c MIN_IOPS) or (int(iops_limit) \u003e MAX_IOPS):"},{"line_number":1230,"context_line":"                    raise NimbleAPIException(_("},{"line_number":1231,"context_line":"                        \"Please set valid IOPS limit in the range[%(min)s, \""},{"line_number":1232,"context_line":"                        \"%(max)s]\") % {\u0027min\u0027: MIN_IOPS,"},{"line_number":1233,"context_line":"                                       \u0027max\u0027: MAX_IOPS})"},{"line_number":1234,"context_line":"                data[\u0027data\u0027][\u0027limit_iops\u0027] \u003d iops_limit"},{"line_number":1235,"context_line":""},{"line_number":1236,"context_line":"            LOG.debug(\"Volume metadata :%s\", volume.metadata)"},{"line_number":1237,"context_line":"            for key, value in volume.metadata.items():"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_72943b37","line":1234,"range":{"start_line":1227,"start_character":0,"end_line":1234,"end_character":55},"in_reply_to":"3f79a3b5_b747257b","updated":"2018-09-24 19:20:49.000000000","message":"Was handling the exception twice. Thanks for catching it.","commit_id":"aa32f5242bd786ba2815e0a41b339cd88121f8e0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e058d19dd8a756327e3d96aa5c311a4072de304e","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        self.APIExecutor.online_vol(volume[\u0027name\u0027], False)"},{"line_number":218,"context_line":"        LOG.debug(\"Deleting volume %(vol)s\", {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            self.APIExecutor.delete_vol(volume[\u0027name\u0027])"},{"line_number":221,"context_line":"        except NimbleAPIException as ex:"},{"line_number":222,"context_line":"            LOG.debug(\"delete volume exception: %s\", ex)"},{"line_number":223,"context_line":"            if SM_OBJ_HAS_CLONE in six.text_type(ex):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_1feb7978","line":220,"updated":"2018-09-25 20:05:20.000000000","message":"why are these retries removed ?","commit_id":"b1bcde9f819fbc338eb5e2e725b810753b66676f"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"91a5ffbc1f9b5474629d45aa2296b2fa7b24c965","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        self.APIExecutor.online_vol(volume[\u0027name\u0027], False)"},{"line_number":218,"context_line":"        LOG.debug(\"Deleting volume %(vol)s\", {\u0027vol\u0027: volume[\u0027name\u0027]})"},{"line_number":219,"context_line":"        try:"},{"line_number":220,"context_line":"            self.APIExecutor.delete_vol(volume[\u0027name\u0027])"},{"line_number":221,"context_line":"        except NimbleAPIException as ex:"},{"line_number":222,"context_line":"            LOG.debug(\"delete volume exception: %s\", ex)"},{"line_number":223,"context_line":"            if SM_OBJ_HAS_CLONE in six.text_type(ex):"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_741defbc","line":220,"in_reply_to":"3f79a3b5_1feb7978","updated":"2018-09-25 22:54:00.000000000","message":"Will add them. It was probably not introduced by my changeset","commit_id":"b1bcde9f819fbc338eb5e2e725b810753b66676f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e058d19dd8a756327e3d96aa5c311a4072de304e","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            specs \u003d volume_types.get_volume_type_extra_specs(type_id)"},{"line_number":433,"context_line":"        return specs"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"    def retype(self, context, volume, new_type, diff, host):"},{"line_number":436,"context_line":"        \"\"\"Retype from one volume type to another."},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        At this point HPE Nimble Storage does not differentiate between"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_14291b36","line":435,"updated":"2018-09-25 20:05:20.000000000","message":"couldn\u0027t locate the line where the volume[\u0027volume_type\u0027] is updated?","commit_id":"b1bcde9f819fbc338eb5e2e725b810753b66676f"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"91a5ffbc1f9b5474629d45aa2296b2fa7b24c965","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            specs \u003d volume_types.get_volume_type_extra_specs(type_id)"},{"line_number":433,"context_line":"        return specs"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"    def retype(self, context, volume, new_type, diff, host):"},{"line_number":436,"context_line":"        \"\"\"Retype from one volume type to another."},{"line_number":437,"context_line":""},{"line_number":438,"context_line":"        At this point HPE Nimble Storage does not differentiate between"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_d4d3a3d2","line":435,"in_reply_to":"3f79a3b5_14291b36","updated":"2018-09-25 22:54:00.000000000","message":"volume_type_id is the type_id of the new_type which is referenced to get the extra specs of the new_type and accordingly update the volume with the updated specs_map","commit_id":"b1bcde9f819fbc338eb5e2e725b810753b66676f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e058d19dd8a756327e3d96aa5c311a4072de304e","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        volume types on the same array. This is a no-op for us if there are"},{"line_number":440,"context_line":"        no extra specs else honor the extra-specs."},{"line_number":441,"context_line":"        \"\"\""},{"line_number":442,"context_line":"        LOG.debug(\"retype called with volume_type %s\", new_type)"},{"line_number":443,"context_line":"        if new_type is None:"},{"line_number":444,"context_line":"            return True, None"},{"line_number":445,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_5fbfb15f","line":442,"range":{"start_line":442,"start_character":8,"end_line":442,"end_character":64},"updated":"2018-09-25 20:05:20.000000000","message":"IMO this msg will be more useful after the \nif condition, after checking new_type to None","commit_id":"b1bcde9f819fbc338eb5e2e725b810753b66676f"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"91a5ffbc1f9b5474629d45aa2296b2fa7b24c965","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        volume types on the same array. This is a no-op for us if there are"},{"line_number":440,"context_line":"        no extra specs else honor the extra-specs."},{"line_number":441,"context_line":"        \"\"\""},{"line_number":442,"context_line":"        LOG.debug(\"retype called with volume_type %s\", new_type)"},{"line_number":443,"context_line":"        if new_type is None:"},{"line_number":444,"context_line":"            return True, None"},{"line_number":445,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_14d27bd2","line":442,"range":{"start_line":442,"start_character":8,"end_line":442,"end_character":64},"in_reply_to":"3f79a3b5_5fbfb15f","updated":"2018-09-25 22:54:00.000000000","message":"Sure. updated","commit_id":"b1bcde9f819fbc338eb5e2e725b810753b66676f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e058d19dd8a756327e3d96aa5c311a4072de304e","unresolved":false,"context_lines":[{"line_number":1143,"context_line":"            specs \u003d volume_types.get_volume_type_extra_specs(type_id)"},{"line_number":1144,"context_line":"        return specs"},{"line_number":1145,"context_line":""},{"line_number":1146,"context_line":"    def _get_extra_spec_values(self, extra_specs):"},{"line_number":1147,"context_line":"        \"\"\"Nimble specific extra specs.\"\"\""},{"line_number":1148,"context_line":"        perf_policy_name \u003d extra_specs.get(EXTRA_SPEC_PERF_POLICY,"},{"line_number":1149,"context_line":"                                           DEFAULT_PERF_POLICY_SETTING)"},{"line_number":1150,"context_line":"        encryption \u003d extra_specs.get(EXTRA_SPEC_ENCRYPTION,"},{"line_number":1151,"context_line":"                                     DEFAULT_ENCRYPTION_SETTING)"},{"line_number":1152,"context_line":"        multi_initiator \u003d extra_specs.get(EXTRA_SPEC_MULTI_INITIATOR,"},{"line_number":1153,"context_line":"                                          DEFAULT_MULTI_INITIATOR_SETTING)"},{"line_number":1154,"context_line":"        iops_limit \u003d extra_specs.get(EXTRA_SPEC_IOPS_LIMIT,"},{"line_number":1155,"context_line":"                                     DEFAULT_IOPS_LIMIT_SETTING)"},{"line_number":1156,"context_line":"        folder_name \u003d extra_specs.get(EXTRA_SPEC_FOLDER,"},{"line_number":1157,"context_line":"                                      DEFAULT_FOLDER_SETTING)"},{"line_number":1158,"context_line":"        dedupe \u003d extra_specs.get(EXTRA_SPEC_DEDUPE,"},{"line_number":1159,"context_line":"                                 DEFAULT_DEDUPE_SETTING)"},{"line_number":1160,"context_line":"        extra_specs_map \u003d {}"},{"line_number":1161,"context_line":"        extra_specs_map[EXTRA_SPEC_PERF_POLICY] \u003d perf_policy_name"},{"line_number":1162,"context_line":"        extra_specs_map[EXTRA_SPEC_ENCRYPTION] \u003d encryption"},{"line_number":1163,"context_line":"        extra_specs_map[EXTRA_SPEC_MULTI_INITIATOR] \u003d multi_initiator"},{"line_number":1164,"context_line":"        extra_specs_map[EXTRA_SPEC_IOPS_LIMIT] \u003d iops_limit"},{"line_number":1165,"context_line":"        extra_specs_map[EXTRA_SPEC_DEDUPE] \u003d dedupe"},{"line_number":1166,"context_line":"        extra_specs_map[EXTRA_SPEC_FOLDER] \u003d folder_name"},{"line_number":1167,"context_line":""},{"line_number":1168,"context_line":"        return extra_specs_map"},{"line_number":1169,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_519c85be","line":1166,"range":{"start_line":1146,"start_character":4,"end_line":1166,"end_character":56},"updated":"2018-09-25 20:05:20.000000000","message":"This whole code is duplicated in the new method defined \u0027get_valid_nimble_extraspecs\u0027.\nMaybe this code can be removed and the newly created method can be used instead?","commit_id":"b1bcde9f819fbc338eb5e2e725b810753b66676f"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"91a5ffbc1f9b5474629d45aa2296b2fa7b24c965","unresolved":false,"context_lines":[{"line_number":1143,"context_line":"            specs \u003d volume_types.get_volume_type_extra_specs(type_id)"},{"line_number":1144,"context_line":"        return specs"},{"line_number":1145,"context_line":""},{"line_number":1146,"context_line":"    def _get_extra_spec_values(self, extra_specs):"},{"line_number":1147,"context_line":"        \"\"\"Nimble specific extra specs.\"\"\""},{"line_number":1148,"context_line":"        perf_policy_name \u003d extra_specs.get(EXTRA_SPEC_PERF_POLICY,"},{"line_number":1149,"context_line":"                                           DEFAULT_PERF_POLICY_SETTING)"},{"line_number":1150,"context_line":"        encryption \u003d extra_specs.get(EXTRA_SPEC_ENCRYPTION,"},{"line_number":1151,"context_line":"                                     DEFAULT_ENCRYPTION_SETTING)"},{"line_number":1152,"context_line":"        multi_initiator \u003d extra_specs.get(EXTRA_SPEC_MULTI_INITIATOR,"},{"line_number":1153,"context_line":"                                          DEFAULT_MULTI_INITIATOR_SETTING)"},{"line_number":1154,"context_line":"        iops_limit \u003d extra_specs.get(EXTRA_SPEC_IOPS_LIMIT,"},{"line_number":1155,"context_line":"                                     DEFAULT_IOPS_LIMIT_SETTING)"},{"line_number":1156,"context_line":"        folder_name \u003d extra_specs.get(EXTRA_SPEC_FOLDER,"},{"line_number":1157,"context_line":"                                      DEFAULT_FOLDER_SETTING)"},{"line_number":1158,"context_line":"        dedupe \u003d extra_specs.get(EXTRA_SPEC_DEDUPE,"},{"line_number":1159,"context_line":"                                 DEFAULT_DEDUPE_SETTING)"},{"line_number":1160,"context_line":"        extra_specs_map \u003d {}"},{"line_number":1161,"context_line":"        extra_specs_map[EXTRA_SPEC_PERF_POLICY] \u003d perf_policy_name"},{"line_number":1162,"context_line":"        extra_specs_map[EXTRA_SPEC_ENCRYPTION] \u003d encryption"},{"line_number":1163,"context_line":"        extra_specs_map[EXTRA_SPEC_MULTI_INITIATOR] \u003d multi_initiator"},{"line_number":1164,"context_line":"        extra_specs_map[EXTRA_SPEC_IOPS_LIMIT] \u003d iops_limit"},{"line_number":1165,"context_line":"        extra_specs_map[EXTRA_SPEC_DEDUPE] \u003d dedupe"},{"line_number":1166,"context_line":"        extra_specs_map[EXTRA_SPEC_FOLDER] \u003d folder_name"},{"line_number":1167,"context_line":""},{"line_number":1168,"context_line":"        return extra_specs_map"},{"line_number":1169,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_e7795382","line":1166,"range":{"start_line":1146,"start_character":4,"end_line":1166,"end_character":56},"in_reply_to":"3f79a3b5_519c85be","updated":"2018-09-25 22:54:00.000000000","message":"I agree part of the code can be reused but can\u0027t be completely replaced. I was hesitant to change original method but this definitely makes sense. Updated the code to reuse the code","commit_id":"b1bcde9f819fbc338eb5e2e725b810753b66676f"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"e058d19dd8a756327e3d96aa5c311a4072de304e","unresolved":false,"context_lines":[{"line_number":1243,"context_line":"            if EXTRA_SPEC_DEDUPE in extra_specs_map:"},{"line_number":1244,"context_line":"                dedupe \u003d extra_specs_map[EXTRA_SPEC_DEDUPE]"},{"line_number":1245,"context_line":"                if dedupe.lower() \u003d\u003d \u0027true\u0027:"},{"line_number":1246,"context_line":"                    data[\u0027data\u0027][\u0027dedupe_enabled\u0027] \u003d True"},{"line_number":1247,"context_line":""},{"line_number":1248,"context_line":"    def create_vol(self, volume, pool_name, reserve, protocol, is_gst_enabled):"},{"line_number":1249,"context_line":"        response \u003d self._execute_create_vol(volume, pool_name, reserve,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_d1fc1541","line":1246,"updated":"2018-09-25 20:05:20.000000000","message":"no return value?\nreturn data","commit_id":"b1bcde9f819fbc338eb5e2e725b810753b66676f"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"91a5ffbc1f9b5474629d45aa2296b2fa7b24c965","unresolved":false,"context_lines":[{"line_number":1243,"context_line":"            if EXTRA_SPEC_DEDUPE in extra_specs_map:"},{"line_number":1244,"context_line":"                dedupe \u003d extra_specs_map[EXTRA_SPEC_DEDUPE]"},{"line_number":1245,"context_line":"                if dedupe.lower() \u003d\u003d \u0027true\u0027:"},{"line_number":1246,"context_line":"                    data[\u0027data\u0027][\u0027dedupe_enabled\u0027] \u003d True"},{"line_number":1247,"context_line":""},{"line_number":1248,"context_line":"    def create_vol(self, volume, pool_name, reserve, protocol, is_gst_enabled):"},{"line_number":1249,"context_line":"        response \u003d self._execute_create_vol(volume, pool_name, reserve,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_47d36760","line":1246,"in_reply_to":"3f79a3b5_d1fc1541","updated":"2018-09-25 22:54:00.000000000","message":"Done","commit_id":"b1bcde9f819fbc338eb5e2e725b810753b66676f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"586cd0d7c18a4efaa1ebdf1f1801e7781a8c903a","unresolved":false,"context_lines":[{"line_number":773,"context_line":"            netconfig \u003d self.APIExecutor.get_netconfig(\u0027active\u0027)"},{"line_number":774,"context_line":"            target_portals \u003d self._get_data_ips(netconfig)"},{"line_number":775,"context_line":"            LOG.info(\"target portals %(portals)s\", {\u0027portals\u0027: target_portals})"},{"line_number":776,"context_line":"            target_luns \u003d [int(lun_num) for __ in range(len(target_portals))]"},{"line_number":777,"context_line":"            target_iqns \u003d [iqn for __ in range(len(target_portals))]"},{"line_number":778,"context_line":"            LOG.debug(\"target iqns %(iqns)s target luns %(luns)s\","},{"line_number":779,"context_line":"                      {\u0027iqns\u0027: target_iqns, \u0027luns\u0027: target_luns})"},{"line_number":780,"context_line":"            if target_luns and target_iqns and target_portals:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_a310eb5a","line":777,"range":{"start_line":776,"start_character":12,"end_line":777,"end_character":68},"updated":"2018-09-28 10:57:07.000000000","message":"Could it be simplified to?\ntarget_luns \u003d [int(lun_num)]* len(target_portals)\ntarget_iqns \u003d [iqn] * len(target_portals)","commit_id":"fc8723f6ccc19971700aca6cdbccc0d958425c3e"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"956f111bdc4cab43457edfb97ab5dcf7c9790e28","unresolved":false,"context_lines":[{"line_number":773,"context_line":"            netconfig \u003d self.APIExecutor.get_netconfig(\u0027active\u0027)"},{"line_number":774,"context_line":"            target_portals \u003d self._get_data_ips(netconfig)"},{"line_number":775,"context_line":"            LOG.info(\"target portals %(portals)s\", {\u0027portals\u0027: target_portals})"},{"line_number":776,"context_line":"            target_luns \u003d [int(lun_num) for __ in range(len(target_portals))]"},{"line_number":777,"context_line":"            target_iqns \u003d [iqn for __ in range(len(target_portals))]"},{"line_number":778,"context_line":"            LOG.debug(\"target iqns %(iqns)s target luns %(luns)s\","},{"line_number":779,"context_line":"                      {\u0027iqns\u0027: target_iqns, \u0027luns\u0027: target_luns})"},{"line_number":780,"context_line":"            if target_luns and target_iqns and target_portals:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_1eed6db7","line":777,"range":{"start_line":776,"start_character":12,"end_line":777,"end_character":68},"in_reply_to":"3f79a3b5_a310eb5a","updated":"2018-09-28 15:27:43.000000000","message":"Makes sense. Will do","commit_id":"fc8723f6ccc19971700aca6cdbccc0d958425c3e"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f36a0cf73601573fd86aafc30b42f7ed2f82c1b9","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        try:"},{"line_number":317,"context_line":"            self.APIExecutor.delete_snap(snapshot[\u0027volume_name\u0027],"},{"line_number":318,"context_line":"                                         snapshot[\u0027name\u0027])"},{"line_number":319,"context_line":"        except NimbleAPIException as ex:"},{"line_number":320,"context_line":"            LOG.debug(\"delete snapshot exception: %s\", ex)"},{"line_number":321,"context_line":"            if SM_OBJ_HAS_CLONE in six.text_type(ex):"},{"line_number":322,"context_line":"                # if snap has a clone log the error and continue ahead"},{"line_number":323,"context_line":"                LOG.warning(\u0027Snapshot %(snap)s : %(state)s\u0027,"},{"line_number":324,"context_line":"                            {\u0027snap\u0027: snapshot[\u0027name\u0027],"},{"line_number":325,"context_line":"                             \u0027state\u0027: SM_OBJ_HAS_CLONE})"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":328,"context_line":"        \"\"\"Create a volume from a snapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_96a07a93","line":325,"range":{"start_line":319,"start_character":0,"end_line":325,"end_character":56},"updated":"2018-09-29 01:58:48.000000000","message":"Error handling in this except block should be moved to APIExecutor.delete_snap(). Otherwise it won\u0027t even get here because exception will be caught there and it is not raised.","commit_id":"bd24004020d7315d8ec3f39d5ec85b56dfd608fe"},{"author":{"_account_id":16668,"name":"Raunak Kumar","email":"rkumar@nimblestorage.com","username":"rkumar"},"change_message_id":"444047fa8359423a3bce4c2b9f537df8b38b0f1b","unresolved":false,"context_lines":[{"line_number":316,"context_line":"        try:"},{"line_number":317,"context_line":"            self.APIExecutor.delete_snap(snapshot[\u0027volume_name\u0027],"},{"line_number":318,"context_line":"                                         snapshot[\u0027name\u0027])"},{"line_number":319,"context_line":"        except NimbleAPIException as ex:"},{"line_number":320,"context_line":"            LOG.debug(\"delete snapshot exception: %s\", ex)"},{"line_number":321,"context_line":"            if SM_OBJ_HAS_CLONE in six.text_type(ex):"},{"line_number":322,"context_line":"                # if snap has a clone log the error and continue ahead"},{"line_number":323,"context_line":"                LOG.warning(\u0027Snapshot %(snap)s : %(state)s\u0027,"},{"line_number":324,"context_line":"                            {\u0027snap\u0027: snapshot[\u0027name\u0027],"},{"line_number":325,"context_line":"                             \u0027state\u0027: SM_OBJ_HAS_CLONE})"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"},{"line_number":328,"context_line":"        \"\"\"Create a volume from a snapshot.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_99b89012","line":325,"range":{"start_line":319,"start_character":0,"end_line":325,"end_character":56},"in_reply_to":"3f79a3b5_96a07a93","updated":"2018-10-01 14:57:23.000000000","message":"Done","commit_id":"bd24004020d7315d8ec3f39d5ec85b56dfd608fe"}]}
