)]}'
{"cinder/tests/unit/volume/drivers/fusionstorage/test_dsware.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c2a54c2bcfb42149479ab74657112ee048a0d330","unresolved":false,"context_lines":[{"line_number":361,"context_line":"        ref2 \u003d {\"source-name\": \"fake_name\"}"},{"line_number":362,"context_line":"        ref3 \u003d {\"source-id\": \"fake_id\"}"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"        try:"},{"line_number":365,"context_line":"            self.fake_driver._get_volume_info(\u0027fake_id\u0027, ref1)"},{"line_number":366,"context_line":"        except Exception as e:"},{"line_number":367,"context_line":"            self.assertEqual(exception.ManageExistingInvalidReference, type(e))"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_4b270166","line":364,"updated":"2019-03-21 13:09:21.000000000","message":"Use assertRaises here. Unit tests should be deterministic, so there almost should never be a case where you use try/except in a test. Either it raises and you explicitly check for it or it doesn\u0027t and blows up if something unexpected happens.","commit_id":"9fa35566f6cbd2cf490cdfa30cea8839cac9beba"}],"cinder/volume/drivers/fusionstorage/dsware.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c2a54c2bcfb42149479ab74657112ee048a0d330","unresolved":false,"context_lines":[{"line_number":388,"context_line":"    def _check_snapshot_match_volume(self, vol_name, snapshot_name):"},{"line_number":389,"context_line":"        snapshot_info \u003d self.client.query_snapshots_of_volume("},{"line_number":390,"context_line":"            vol_name, snapshot_name)"},{"line_number":391,"context_line":"        if snapshot_info:"},{"line_number":392,"context_line":"            return snapshot_info"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    def manage_existing_snapshot(self, snapshot, existing_ref):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_ebea6dd6","line":391,"updated":"2019-03-21 13:09:21.000000000","message":"If not really needed, since the default return is None. So if snapshot_info is None and fails this evaluation, it will just be the same as just having a \"return snapshot_info\" without the evaluation.","commit_id":"9fa35566f6cbd2cf490cdfa30cea8839cac9beba"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c2a54c2bcfb42149479ab74657112ee048a0d330","unresolved":false,"context_lines":[{"line_number":409,"context_line":"        snapshot_info \u003d self._get_snapshot_info(snapshot.volume, existing_ref)"},{"line_number":410,"context_line":"        remainder \u003d float(snapshot_info.get(\"snapSize\")) % units.Ki"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        if remainder !\u003d 0:"},{"line_number":413,"context_line":"            msg \u003d _(\"The snapshot size must be an integer multiple of 1 GB.\")"},{"line_number":414,"context_line":"            LOG.error(msg)"},{"line_number":415,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_0b949943","line":412,"updated":"2019-03-21 13:09:21.000000000","message":"The size should just be rounded up to the GB increment. This could be confusing for an end user if they can\u0027t manage a snapshot just because it\u0027s not exactly on a GB boundary.","commit_id":"9fa35566f6cbd2cf490cdfa30cea8839cac9beba"}],"cinder/volume/drivers/fusionstorage/fs_client.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c2a54c2bcfb42149479ab74657112ee048a0d330","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        if result.get(\u0027errorCode\u0027) \u003d\u003d constants.VOLUME_NOT_EXIST:"},{"line_number":170,"context_line":"            return None"},{"line_number":171,"context_line":"        self._assert_rest_result("},{"line_number":172,"context_line":"            result, _(\"Query all volume session error\"))"},{"line_number":173,"context_line":"        return result.get(\u0027volumeList\u0027)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def get_volume_by_id(self, pool_id, vol_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_ab8c6535","line":172,"range":{"start_line":172,"start_character":20,"end_line":172,"end_character":22},"updated":"2019-03-21 13:09:21.000000000","message":"Why is this being translated?","commit_id":"9fa35566f6cbd2cf490cdfa30cea8839cac9beba"}]}
