)]}'
{"cinder/tests/unit/volume/drivers/pengyun/test_pengyun_driver.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3fa7e38b_e5359044","updated":"2019-12-20 23:15:46.000000000","message":"Please add negative test cases as well, asserting that exceptions are raised as expected.","commit_id":"980cb90bc94acf442140e37c3de232927509a814"}],"cinder/volume/drivers/pengyun/rest_client.py":[{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        return res_json"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def _assert_rest_result(self, result, err_str):"},{"line_number":84,"context_line":"        if result[\u0027error\u0027][\u0027code\u0027] !\u003d 0:"},{"line_number":85,"context_line":"            msg \u003d _(\u0027%(err)s\\nresult: %(res)s.\u0027) % {\u0027err\u0027: err_str,"},{"line_number":86,"context_line":"                                                    \u0027res\u0027: result}"},{"line_number":87,"context_line":"            LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_450104b5","line":84,"range":{"start_line":84,"start_character":38,"end_line":84,"end_character":39},"updated":"2019-12-20 23:15:46.000000000","message":"The code gets more readable if you define a constant to represent this magic number (e.g. constants.NO_ERROR).","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        body \u003d json.dumps(data)"},{"line_number":125,"context_line":"        LOG.info(\u0027Data %(data)s.\u0027, {\u0027data\u0027: data})"},{"line_number":126,"context_line":"        r \u003d self.do_call(url, None, \u0027POST\u0027, body)"},{"line_number":127,"context_line":"        if r[\u0027error\u0027][\u0027code\u0027] \u003d\u003d 279:"},{"line_number":128,"context_line":"            msg \u003d _(\u0027Volume name has existed in backend storage.\u0027)"},{"line_number":129,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_0a31db59","line":127,"range":{"start_line":127,"start_character":33,"end_line":127,"end_character":36},"updated":"2019-12-20 23:15:46.000000000","message":"The code gets more readable if you define a constant to represent this magic number (e.g. constants.ERR_VOLUME_NAME_ALREADY_EXISTS).","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            msg \u003d _(\u0027Volume name has existed in backend storage.\u0027)"},{"line_number":129,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        if r[\u0027error\u0027][\u0027code\u0027] \u003d\u003d 163:"},{"line_number":132,"context_line":"            msg \u003d _(\u0027Not enough space to create volume.\u0027)"},{"line_number":133,"context_line":"            raise exception.OverQuota(overs\u003dmsg)"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_2a34d748","line":131,"range":{"start_line":131,"start_character":33,"end_line":131,"end_character":36},"updated":"2019-12-20 23:15:46.000000000","message":"same as above (e.g. constants.ERR_NO_ENOUGH_SPACE).","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        data \u003d {\u0027volumeId\u0027: volume_id,"},{"line_number":153,"context_line":"                \u0027accountId\u0027: self.account_id}"},{"line_number":154,"context_line":"        r \u003d self.do_call(url, data, \u0027GET\u0027)"},{"line_number":155,"context_line":"        if r[\u0027error\u0027][\u0027code\u0027] \u003d\u003d 281:"},{"line_number":156,"context_line":"            LOG.debug(\u0027Volume not found.\u0027)"},{"line_number":157,"context_line":"            return True"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_eaa8ff21","line":155,"range":{"start_line":155,"start_character":33,"end_line":155,"end_character":36},"updated":"2019-12-20 23:15:46.000000000","message":"same as above (e.g. constants.ERR_VOLUME_NOT_FOUND).","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            LOG.debug(\u0027Volume not found.\u0027)"},{"line_number":157,"context_line":"            return True"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        if r[\u0027error\u0027][\u0027code\u0027] \u003d\u003d 0:"},{"line_number":160,"context_line":"            if not r[\u0027data\u0027]:"},{"line_number":161,"context_line":"                return True"},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_6a62cf17","line":159,"range":{"start_line":159,"start_character":33,"end_line":159,"end_character":34},"updated":"2019-12-20 23:15:46.000000000","message":"same as above (e.g. constants.NO_ERROR).","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                \u0027accountId\u0027: self.account_id}"},{"line_number":230,"context_line":"        body \u003d json.dumps(data)"},{"line_number":231,"context_line":"        r \u003d self.do_call(url, None, \u0027DELETE\u0027, body)"},{"line_number":232,"context_line":"        if r[\u0027error\u0027][\u0027code\u0027] \u003d\u003d 261 or ("},{"line_number":233,"context_line":"                r[\u0027error\u0027][\u0027code\u0027] \u003d\u003d 203) or ("},{"line_number":234,"context_line":"                r[\u0027error\u0027][\u0027code\u0027] \u003d\u003d 264):"},{"line_number":235,"context_line":"            LOG.warning(\u0027Volume not found or deleting or deleted.\u0027)"},{"line_number":236,"context_line":"            return"},{"line_number":237,"context_line":"        msg \u003d _(\u0027Delete volume error.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_aa2527c1","line":234,"range":{"start_line":232,"start_character":0,"end_line":234,"end_character":43},"updated":"2019-12-20 23:15:46.000000000","message":"same as above.","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        msg \u003d _(\u0027Delete volume error.\u0027)"},{"line_number":238,"context_line":"        self._assert_rest_result(r, msg)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def pull_exports(self, volume_id):"},{"line_number":241,"context_line":"        \"\"\"Pull exports info of volume.\"\"\""},{"line_number":242,"context_line":"        url \u003d constants.VOLUME_DRIVER_LIST"},{"line_number":243,"context_line":"        data \u003d {\u0027accountId\u0027: self.account_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_8a038b10","line":240,"range":{"start_line":240,"start_character":8,"end_line":240,"end_character":12},"updated":"2019-12-20 23:15:46.000000000","message":"\u0027get\u0027 is easier to understand than \u0027pull\u0027","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                \u0027volumeId\u0027: volume_id}"},{"line_number":245,"context_line":"        r \u003d self.do_call(url, data, \u0027GET\u0027)"},{"line_number":246,"context_line":"        msg \u003d _(\u0027Pull exports status error.\u0027)"},{"line_number":247,"context_line":"        if r[\u0027error\u0027][\u0027code\u0027] \u003d\u003d 281:"},{"line_number":248,"context_line":"            LOG.warning(\u0027Volume not found.\u0027)"},{"line_number":249,"context_line":"            return None"},{"line_number":250,"context_line":"        self._assert_rest_result(r, msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_6a196f85","line":247,"range":{"start_line":247,"start_character":33,"end_line":247,"end_character":36},"updated":"2019-12-20 23:15:46.000000000","message":"The code gets more readable if you define a constant to represent this error code (e.g. constants.ERR_VOLUME_NOT_FOUND).","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        return r[\u0027data\u0027]"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    @utils.retry(exception.VolumeBackendAPIException, interval\u003d2, retries\u003d60)"},{"line_number":255,"context_line":"    def pull_export_info(self, volume_id, export_name,"},{"line_number":256,"context_line":"                         expect_status, export_num):"},{"line_number":257,"context_line":"        \"\"\"Pull export info with specified status.\"\"\""},{"line_number":258,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_2521689f","line":255,"range":{"start_line":255,"start_character":8,"end_line":255,"end_character":12},"updated":"2019-12-20 23:15:46.000000000","message":"get instead of pull","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":267,"context_line":"            msg \u003d _(\u0027Need to retry.\u0027)"},{"line_number":268,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        for i in range(len(current_status)):"},{"line_number":271,"context_line":"            if current_status[i] in expect_status:"},{"line_number":272,"context_line":"                LOG.debug(\u0027Got volume %(volume_id)s \u0027"},{"line_number":273,"context_line":"                          \u0027%(current_status)s \u0027"},{"line_number":274,"context_line":"                          \u0027%(target_ip)s.\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_659a00c5","line":271,"range":{"start_line":270,"start_character":8,"end_line":271,"end_character":50},"updated":"2019-12-20 23:15:46.000000000","message":"python allows you to iterate a list like this [0]:\n\nfor status in current_status:\n    if status in expect_status:\n        ...\n\n[0] https://docs.python.org/3/tutorial/controlflow.html#for-statements","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        return current_status, export_info"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def _pull_export_info(self, volume_id, export_name, export_num):"},{"line_number":285,"context_line":"        \"\"\"Pull volume export info according to volume id and export name.\"\"\""},{"line_number":286,"context_line":"        url \u003d constants.VOLUME_DRIVER_LIST"},{"line_number":287,"context_line":"        data \u003d {\u0027accountId\u0027: self.account_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_85313cf0","line":284,"range":{"start_line":284,"start_character":9,"end_line":284,"end_character":13},"updated":"2019-12-20 23:15:46.000000000","message":"get","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":288,"context_line":"                \u0027volumeId\u0027: volume_id}"},{"line_number":289,"context_line":"        r \u003d self.do_call(url, data, \u0027GET\u0027)"},{"line_number":290,"context_line":"        msg \u003d _(\u0027Pull export status error.\u0027)"},{"line_number":291,"context_line":"        if r[\u0027error\u0027][\u0027code\u0027] \u003d\u003d 281:"},{"line_number":292,"context_line":"            LOG.warning(\u0027volume not found.\u0027)"},{"line_number":293,"context_line":"            return None, None"},{"line_number":294,"context_line":"        self._assert_rest_result(r, msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_a52c7893","line":291,"range":{"start_line":291,"start_character":33,"end_line":291,"end_character":36},"updated":"2019-12-20 23:15:46.000000000","message":"use a constant instead.","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":299,"context_line":"        current_status \u003d []"},{"line_number":300,"context_line":"        export_info \u003d []"},{"line_number":301,"context_line":"        LOG.debug(\u0027In _pull_export_info data %s\u0027, r[\u0027data\u0027])"},{"line_number":302,"context_line":"        for id in range(len(r[\u0027data\u0027])):"},{"line_number":303,"context_line":"            if export_name in r[\u0027data\u0027][id][\u0027driverName\u0027]:"},{"line_number":304,"context_line":"                current_status.append(r[\u0027data\u0027][id][\u0027status\u0027])"},{"line_number":305,"context_line":"                export_info.append(r[\u0027data\u0027][id])"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        return current_status, export_info"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_257de86c","line":305,"range":{"start_line":302,"start_character":8,"end_line":305,"end_character":49},"updated":"2019-12-20 23:15:46.000000000","message":"Same as L270. You can iterate like this:\n\nfor data in r[\u0027data\u0027]:\n    if export_name in data[\u0027driverName\u0027]:\n        current_status.append(data[\u0027status\u0027])\n        export_info.append(data)","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":436,"context_line":"        msg \u003d _(\u0027List domain error.\u0027)"},{"line_number":437,"context_line":"        self._assert_rest_result(r, msg)"},{"line_number":438,"context_line":"        self._assert_data_in_result(r, msg)"},{"line_number":439,"context_line":"        if len(r[\u0027data\u0027]) \u003c\u003d 0:"},{"line_number":440,"context_line":"            msg \u003d _(\"No domain found.\")"},{"line_number":441,"context_line":"            LOG.error(msg)"},{"line_number":442,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_85bb7c0d","line":439,"range":{"start_line":439,"start_character":8,"end_line":439,"end_character":31},"updated":"2019-12-20 23:15:46.000000000","message":"len() never returns negative, so this condition could be:\n\nif len(r[\u0027data\u0027]) \u003d\u003d 0:\n    ...","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":441,"context_line":"            LOG.error(msg)"},{"line_number":442,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        for id in range(len(r[\u0027data\u0027])):"},{"line_number":445,"context_line":"            if int(r[\u0027data\u0027][id][\"freeSpace\"]) \u003e 0:"},{"line_number":446,"context_line":"                return r[\u0027data\u0027][id][\"domainId\"]"},{"line_number":447,"context_line":"        err_msg \u003d _(\"Domain has no free space.\")"},{"line_number":448,"context_line":"        LOG.error(err_msg)"},{"line_number":449,"context_line":"        raise exception.VolumeBackendAPIException(data\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_45cee4b7","line":446,"range":{"start_line":444,"start_character":0,"end_line":446,"end_character":48},"updated":"2019-12-20 23:15:46.000000000","message":"for data in r[\u0027data\u0027]:\n    ...","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":468,"context_line":"        msg \u003d _(\"List pools error.\")"},{"line_number":469,"context_line":"        self._assert_rest_result(r, msg)"},{"line_number":470,"context_line":"        self._assert_data_in_result(r, msg)"},{"line_number":471,"context_line":"        for id in range(len(r[\u0027data\u0027])):"},{"line_number":472,"context_line":"            if int(r[\u0027data\u0027][id][\u0027freeSpace\u0027]) \u003e 0:"},{"line_number":473,"context_line":"                return r[\u0027data\u0027][id][\u0027poolId\u0027]"},{"line_number":474,"context_line":"        err_msg \u003d _(\"Storage pool has no free space.\")"},{"line_number":475,"context_line":"        LOG.error(err_msg)"},{"line_number":476,"context_line":"        raise exception.VolumeBackendAPIException(data\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_05c8eca5","line":473,"range":{"start_line":471,"start_character":0,"end_line":473,"end_character":46},"updated":"2019-12-20 23:15:46.000000000","message":"for data in r[\u0027data\u0027]:\n    ...","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":475,"context_line":"        LOG.error(err_msg)"},{"line_number":476,"context_line":"        raise exception.VolumeBackendAPIException(data\u003derr_msg)"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    def create_snapshot(self, volume_id, snapshot_name, snapshot_desp):"},{"line_number":479,"context_line":"        \"\"\"Create snapshot using rest api.\"\"\""},{"line_number":480,"context_line":"        url \u003d constants.VOLUME_SNAPSHOT_CREATE"},{"line_number":481,"context_line":"        data \u003d {\u0027volumeId\u0027: volume_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_653680b6","line":478,"range":{"start_line":478,"start_character":65,"end_line":478,"end_character":69},"updated":"2019-12-20 23:15:46.000000000","message":"desc sounds more like description than desp","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        msg \u003d _(\"Delete snapshot error.\")"},{"line_number":499,"context_line":"        self._assert_rest_result(r, msg)"},{"line_number":500,"context_line":""},{"line_number":501,"context_line":"    def snapshot_id_of(self, volume_id, snapshot_desp):"},{"line_number":502,"context_line":"        \"\"\"Get snapshot info according to snapshot description.\"\"\""},{"line_number":503,"context_line":"        url \u003d constants.VOLUME_SNAPSHOT_LIST"},{"line_number":504,"context_line":"        volume_id_json \u003d [volume_id]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_c56f3491","line":501,"range":{"start_line":501,"start_character":49,"end_line":501,"end_character":53},"updated":"2019-12-20 23:15:46.000000000","message":"desc","commit_id":"980cb90bc94acf442140e37c3de232927509a814"},{"author":{"_account_id":18058,"name":"Lucio Seki","email":"lseki@redhat.com","username":"lseki"},"change_message_id":"8209ef181071d8f40ea136a78034b202afa9a236","unresolved":false,"context_lines":[{"line_number":512,"context_line":"            LOG.debug(\"No snapshot found.\")"},{"line_number":513,"context_line":"            return None"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        for id in range(len(r[\u0027data\u0027][0][\u0027snapshotList\u0027])):"},{"line_number":516,"context_line":"            sp_desp \u003d r[\u0027data\u0027][0][\u0027snapshotList\u0027][id][\u0027description\u0027]"},{"line_number":517,"context_line":"            if sp_desp \u003d\u003d snapshot_desp:"},{"line_number":518,"context_line":"                return r[\u0027data\u0027][0][\u0027snapshotList\u0027][id][\u0027key\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_655f60e4","line":518,"range":{"start_line":515,"start_character":7,"end_line":518,"end_character":62},"updated":"2019-12-20 23:15:46.000000000","message":"for snapshotList in r[\u0027data\u0027][0][\u0027snapshotList\u0027]:\n    sp_desp \u003d snapshotList[\u0027description\u0027]\n    ...","commit_id":"980cb90bc94acf442140e37c3de232927509a814"}],"doc/source/configuration/block-storage/drivers/zettastor-volume-driver.rst":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3e1704fb0e8aeb94bdeb1c70eafe276562530ecb","unresolved":false,"context_lines":[{"line_number":37,"context_line":".. warning::"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"   Current versions of the Zettastor driver is used for version"},{"line_number":40,"context_line":"   release2.6 of zettastor."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":".. note::"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df33271e_fb4a2faa","line":40,"range":{"start_line":40,"start_character":9,"end_line":40,"end_character":11},"updated":"2020-04-03 16:28:07.000000000","message":"Missing space after release.","commit_id":"f4b43ca95af704b167057e22eb3fccbd342cc599"}]}
