)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     doubletao \u003cfutaotao@huawei.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-11-26 15:57:42 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"The change of fusionstorage openstack cinder driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The FusionStorage OpenStack Cinder Driver no longer used the CLI method."},{"line_number":10,"context_line":"Instead, it uses the industry-wide RESTful method to reconstruct the origin"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3f79a3b5_abb644da","line":7,"updated":"2018-11-26 13:01:41.000000000","message":"This should be changed to a more descriptive title. Maybe something like \"Update FusionStorage to use REST API\".","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The FusionStorage OpenStack Cinder Driver no longer used the CLI method."},{"line_number":10,"context_line":"Instead, it uses the industry-wide RESTful method to reconstruct the origin"},{"line_number":11,"context_line":"code so that the storage can be accessed quickly and easily.Moreover, the"},{"line_number":12,"context_line":"\"manage_existing/unmanage\" and \"manage_existing_snapshot/unmanage_snapshot\""},{"line_number":13,"context_line":"have been added to the original interface."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I2c5da50d5465b6d34ac7e9b8023a1b12eaa7d1c5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3f79a3b5_4ba770a5","line":12,"updated":"2018-11-26 13:01:41.000000000","message":"These should be added in a separate patchset.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"}],"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":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import ddt"},{"line_number":17,"context_line":"import json"},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0bcad845","line":16,"updated":"2018-11-26 13:01:41.000000000","message":"ddt and json are third party imports and should be in a separate group below the standard library imports.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from cinder import test"},{"line_number":24,"context_line":"from cinder.volume import configuration as config"},{"line_number":25,"context_line":"from cinder.volume import utils as volume_utils"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from cinder.volume.drivers.fusionstorage import constants"},{"line_number":28,"context_line":"from cinder.volume.drivers.fusionstorage import dsware"},{"line_number":29,"context_line":"from cinder.volume.drivers.fusionstorage import fs_client"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_cbcf0053","line":26,"updated":"2018-11-26 13:01:41.000000000","message":"Remove extra blank line.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"}],"cinder/tests/unit/volume/drivers/fusionstorage/test_fs_conf.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from defusedxml import ElementTree as ET"},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"import shutil"},{"line_number":19,"context_line":"import tempfile"},{"line_number":20,"context_line":"from xml.dom import minidom"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from cinder import test"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2bf0f491","line":19,"updated":"2018-11-26 13:01:41.000000000","message":"Need to separate out import groups.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        super(FusionStorageConfTestCase, self).setUp()"},{"line_number":30,"context_line":"        self.tmp_dir \u003d tempfile.mkdtemp()"},{"line_number":31,"context_line":"        conf \u003d mock.Mock()"},{"line_number":32,"context_line":"        conf.cinder_fusionstorage_conf_file \u003d \\"},{"line_number":33,"context_line":"            self.tmp_dir + \u0027/cinder_fusionstorage_conf.xml\u0027"},{"line_number":34,"context_line":"        self._create_fake_conf_file(conf.cinder_fusionstorage_conf_file)"},{"line_number":35,"context_line":"        self.fusionstorage_conf \u003d fs_conf.FusionStorageConf(conf)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0b389839","line":32,"range":{"start_line":32,"start_character":46,"end_line":32,"end_character":47},"updated":"2018-11-26 13:01:41.000000000","message":"Please avoid using \\ to span multiple lines. Wrap in () instead. String formatting is preferred over string concatenation as well.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        shutil.rmtree(self.tmp_dir)"},{"line_number":39,"context_line":"        super(FusionStorageConfTestCase, self).tearDown()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def _create_fake_conf_file(self, cinder_fusionstorage_conf_file):"},{"line_number":42,"context_line":"        def _add_text_element(parent, name, content\u003dNone):"},{"line_number":43,"context_line":"            element \u003d doc.createElement(name)"},{"line_number":44,"context_line":"            if content:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_6b082c7e","line":41,"updated":"2018-11-26 13:01:41.000000000","message":"Unit tests should avoid needing to write out to the filesystem. Better to just mock results returned from reading the config.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1a626ece34ebe18c52f8ae69f182efd28a2385ab","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"import shutil"},{"line_number":19,"context_line":"import tempfile"},{"line_number":20,"context_line":"try:"},{"line_number":21,"context_line":"    import configparser as configparser"},{"line_number":22,"context_line":"except ImportError:"},{"line_number":23,"context_line":"    import ConfigParser as configparser"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cinder import test"},{"line_number":26,"context_line":"from cinder.volume.drivers.fusionstorage import fs_conf"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f769fc5_831e650a","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":39},"updated":"2019-01-09 03:40:27.000000000","message":"nit: I guess it\u0027s for py2/py3 compatible?\n\nit\u0027s better use six to address this problem:\n\nfrom six.moves import configparser","commit_id":"1b56bf7e9fa751c9b9b83762163c399989f63b5c"},{"author":{"_account_id":29217,"name":"futaotao","email":"futaotao@huawei.com","username":"doubletao"},"change_message_id":"2cbecc2113d026887d2ce63437e3a664e46a38e2","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"import shutil"},{"line_number":19,"context_line":"import tempfile"},{"line_number":20,"context_line":"try:"},{"line_number":21,"context_line":"    import configparser as configparser"},{"line_number":22,"context_line":"except ImportError:"},{"line_number":23,"context_line":"    import ConfigParser as configparser"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cinder import test"},{"line_number":26,"context_line":"from cinder.volume.drivers.fusionstorage import fs_conf"}],"source_content_type":"text/x-python","patch_set":13,"id":"dfd5e7cf_924c3a9f","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":39},"in_reply_to":"1f769fc5_831e650a","updated":"2019-01-15 05:59:26.000000000","message":"I tried~ But it had never passed the Zuul Check.","commit_id":"1b56bf7e9fa751c9b9b83762163c399989f63b5c"},{"author":{"_account_id":29217,"name":"futaotao","email":"futaotao@huawei.com","username":"doubletao"},"change_message_id":"c1cc2881c0a3723442c8190adb16e21ef383804d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"import shutil"},{"line_number":19,"context_line":"import tempfile"},{"line_number":20,"context_line":"try:"},{"line_number":21,"context_line":"    import configparser as configparser"},{"line_number":22,"context_line":"except ImportError:"},{"line_number":23,"context_line":"    import ConfigParser as configparser"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cinder import test"},{"line_number":26,"context_line":"from cinder.volume.drivers.fusionstorage import fs_conf"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfdaf3ff_0c39c4a2","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":39},"in_reply_to":"bfdaf3ff_8093465b","updated":"2019-01-18 01:45:07.000000000","message":"It may be due to the fact that the Zuul Check is not stable. The latest code has modified in accordance with Yikun\u0027s suggestion and passed the Zuul Check.","commit_id":"1b56bf7e9fa751c9b9b83762163c399989f63b5c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"54ae574a872ada42c9f9961d230522819ee1c999","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"import shutil"},{"line_number":19,"context_line":"import tempfile"},{"line_number":20,"context_line":"try:"},{"line_number":21,"context_line":"    import configparser as configparser"},{"line_number":22,"context_line":"except ImportError:"},{"line_number":23,"context_line":"    import ConfigParser as configparser"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cinder import test"},{"line_number":26,"context_line":"from cinder.volume.drivers.fusionstorage import fs_conf"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfdaf3ff_8093465b","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":39},"in_reply_to":"dfd5e7cf_924c3a9f","updated":"2019-01-17 13:48:03.000000000","message":"What was the failure? That should work.","commit_id":"1b56bf7e9fa751c9b9b83762163c399989f63b5c"}],"cinder/tests/unit/volume/drivers/fusionstorage/test_utils.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"import json"},{"line_number":16,"context_line":"from oslo_log import log as logging"},{"line_number":17,"context_line":"import re"},{"line_number":18,"context_line":"import requests"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_cb1620a3","line":17,"updated":"2018-11-26 13:01:41.000000000","message":"Fix import grouping.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import re"},{"line_number":18,"context_line":"import requests"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class FakeBaseSession(requests.Session):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4b78d0f4","line":20,"updated":"2018-11-26 13:01:41.000000000","message":"Unit tests should not have logging. Remove this.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"}],"cinder/volume/drivers/fusionstorage/dsware.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import json"},{"line_number":17,"context_line":"from oslo_config import cfg"},{"line_number":18,"context_line":"from oslo_log import log as logging"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4b51b064","line":16,"updated":"2018-11-26 13:01:41.000000000","message":"Blank line needed after json import.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"volume_opts \u003d ["},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027cinder_fusionstorage_conf_file\u0027,"},{"line_number":33,"context_line":"               default\u003d\u0027/etc/cinder/cinder_fusionstorage_conf.xml\u0027,"},{"line_number":34,"context_line":"               help\u003d\u0027The configuration file for \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_6b990c1b","line":31,"updated":"2018-11-26 13:01:41.000000000","message":"Old options should be deprecated for a release before removal.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"volume_opts \u003d ["},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027cinder_fusionstorage_conf_file\u0027,"},{"line_number":33,"context_line":"               default\u003d\u0027/etc/cinder/cinder_fusionstorage_conf.xml\u0027,"},{"line_number":34,"context_line":"               help\u003d\u0027The configuration file for \u0027"},{"line_number":35,"context_line":"                    \u0027the Cinder fusion storage driver.\u0027),"},{"line_number":36,"context_line":"    cfg.DictOpt(\u0027hosts\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4bc69016","line":33,"updated":"2018-11-26 13:01:41.000000000","message":"Why is this xml file needed? That is a bad pattern to follow. All configuration options should be done in the cinder.conf file like normal.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":29217,"name":"futaotao","email":"futaotao@huawei.com","username":"doubletao"},"change_message_id":"563b163a5efaa3e3f3f57c29a66d7b113d18a42f","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"volume_opts \u003d ["},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027cinder_fusionstorage_conf_file\u0027,"},{"line_number":33,"context_line":"               default\u003d\u0027/etc/cinder/cinder_fusionstorage_conf.xml\u0027,"},{"line_number":34,"context_line":"               help\u003d\u0027The configuration file for \u0027"},{"line_number":35,"context_line":"                    \u0027the Cinder fusion storage driver.\u0027),"},{"line_number":36,"context_line":"    cfg.DictOpt(\u0027hosts\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_7855471e","line":33,"in_reply_to":"3f79a3b5_4bc69016","updated":"2018-12-07 10:13:50.000000000","message":"Keep in line with Huawei Cinder Driver configuration style","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    cfg.StrOpt(\u0027cinder_fusionstorage_conf_file\u0027,"},{"line_number":33,"context_line":"               default\u003d\u0027/etc/cinder/cinder_fusionstorage_conf.xml\u0027,"},{"line_number":34,"context_line":"               help\u003d\u0027The configuration file for \u0027"},{"line_number":35,"context_line":"                    \u0027the Cinder fusion storage driver.\u0027),"},{"line_number":36,"context_line":"    cfg.DictOpt(\u0027hosts\u0027,"},{"line_number":37,"context_line":"                default\u003d{},"},{"line_number":38,"context_line":"                help\u003d\u0027The manager ip for different hosts.\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_abee4487","line":35,"range":{"start_line":35,"start_character":32,"end_line":35,"end_character":46},"updated":"2018-11-26 13:01:41.000000000","message":"FusionStorage","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":33,"context_line":"               default\u003d\u0027/etc/cinder/cinder_fusionstorage_conf.xml\u0027,"},{"line_number":34,"context_line":"               help\u003d\u0027The configuration file for \u0027"},{"line_number":35,"context_line":"                    \u0027the Cinder fusion storage driver.\u0027),"},{"line_number":36,"context_line":"    cfg.DictOpt(\u0027hosts\u0027,"},{"line_number":37,"context_line":"                default\u003d{},"},{"line_number":38,"context_line":"                help\u003d\u0027The manager ip for different hosts.\u0027),"},{"line_number":39,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4bdf70d2","line":36,"updated":"2018-11-26 13:01:41.000000000","message":"This is a poor name.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                    \u0027the Cinder fusion storage driver.\u0027),"},{"line_number":36,"context_line":"    cfg.DictOpt(\u0027hosts\u0027,"},{"line_number":37,"context_line":"                default\u003d{},"},{"line_number":38,"context_line":"                help\u003d\u0027The manager ip for different hosts.\u0027),"},{"line_number":39,"context_line":"]"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_0bfdf83a","line":38,"updated":"2018-11-26 13:01:41.000000000","message":"This needs better help text.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":101,"context_line":"    def _get_capacity(self, pool_info):"},{"line_number":102,"context_line":"        pool_capacity \u003d {}"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        total \u003d float(pool_info[\u0027totalCapacity\u0027]) / constants.CAPACITY_UNIT"},{"line_number":105,"context_line":"        free \u003d (float(pool_info[\u0027totalCapacity\u0027]) -"},{"line_number":106,"context_line":"                float(pool_info[\u0027usedCapacity\u0027])) / constants.CAPACITY_UNIT"},{"line_number":107,"context_line":"        pool_capacity[\u0027total_capacity_gb\u0027] \u003d total"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_4b621016","line":104,"range":{"start_line":104,"start_character":62,"end_line":104,"end_character":75},"updated":"2018-11-26 13:01:41.000000000","message":"Should be using oslo units.\n\nhttps://docs.openstack.org/oslo.utils/latest/reference/units.html","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        vol_name \u003d self._get_vol_name(volume)"},{"line_number":129,"context_line":"        result \u003d self.client.query_volume_by_name(vol_name\u003dvol_name)"},{"line_number":130,"context_line":"        if result:"},{"line_number":131,"context_line":"            return True"},{"line_number":132,"context_line":"        else:"},{"line_number":133,"context_line":"            return False"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2b6d5400","line":131,"updated":"2018-11-26 13:01:41.000000000","message":"Just return result.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            msg \u003d _(\"Volume: %(vol_name)s does not exist!\""},{"line_number":179,"context_line":"                    ) % {\"vol_name\": vol_name}"},{"line_number":180,"context_line":"            self._assert_check_result(msg)"},{"line_number":181,"context_line":"        elif volume.size \u003e\u003d new_size:"},{"line_number":182,"context_line":"            msg \u003d _(\"Extend volume failed! New size %(size)s \""},{"line_number":183,"context_line":"                    \"should be greater than old size %(vol_size)s!\""},{"line_number":184,"context_line":"                    ) % {\"size\": new_size, \"vol_size\": volume.size}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_6b402c5f","line":181,"updated":"2018-11-26 13:01:41.000000000","message":"This is prevented by the manager.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        if snapshot_info:"},{"line_number":349,"context_line":"            return True"},{"line_number":350,"context_line":"        else:"},{"line_number":351,"context_line":"            return False"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"    def manage_existing_snapshot(self, snapshot, existing_ref):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_6b0eec3c","line":350,"updated":"2018-11-26 13:01:41.000000000","message":"else not needed.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"f6591cab1b581feb1afd57ff81641df9210abfa0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                    \u0027the Cinder FusionStorage driver.\u0027),"},{"line_number":38,"context_line":"    cfg.DictOpt(\u0027manager_ips\u0027,"},{"line_number":39,"context_line":"                default\u003d{},"},{"line_number":40,"context_line":"                help\u003d\u0027The manager ip for different FusionStorage Agent.\u0027),"},{"line_number":41,"context_line":"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_ac959731","line":40,"range":{"start_line":40,"start_character":22,"end_line":40,"end_character":70},"updated":"2018-12-13 03:19:10.000000000","message":"I think this help is already out-of-date. Could you update it to tell user how to configure this? I guess we now can add some AA ips of FSA?","commit_id":"b28524abe5e08605ab03d3253f839ecd82e00a76"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7f6fb188eec8370294cedaf98c687f682f5a598e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"volume_opts \u003d ["},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027cinder_fusionstorage_conf_file\u0027,"},{"line_number":35,"context_line":"               default\u003d\u0027/etc/cinder/cinder_fusionstorage_conf.xml\u0027,"},{"line_number":36,"context_line":"               help\u003d\u0027The configuration file for \u0027"},{"line_number":37,"context_line":"                    \u0027the Cinder FusionStorage driver.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_2dd7e54f","line":34,"updated":"2018-12-18 14:21:20.000000000","message":"Old config opts need to be deprecated for a release. And moving to a separate XML configuration file for the driver is very, very highly discouraged.","commit_id":"75515ec6b705932e5404a575784838d825ccc3e4"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"47a1fb3b29b3fc87bbbe327febd2f4f937ba0279","unresolved":false,"context_lines":[{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"volume_opts \u003d ["},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027cinder_fusionstorage_conf_file\u0027,"},{"line_number":35,"context_line":"               default\u003d\u0027/etc/cinder/cinder_fusionstorage_conf.xml\u0027,"},{"line_number":36,"context_line":"               help\u003d\u0027The configuration file for \u0027"},{"line_number":37,"context_line":"                    \u0027the Cinder FusionStorage driver.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f769fc5_8571a4e3","line":34,"in_reply_to":"3f79a3b5_017cf01e","updated":"2018-12-25 03:07:45.000000000","message":"As I know, There is only a \"secret\" opt in cfg:\n\n\u003e :param secret: true if the value should be obfuscated in log output\n\nSo, I think there is no other way to encrypted the conf in current cfg mechanism.\n\nLet\u0027s see idea from others.\n\n[1] https://github.com/openstack/oslo.config/blob/4e0e72d/oslo_config/cfg.py#L443","commit_id":"75515ec6b705932e5404a575784838d825ccc3e4"},{"author":{"_account_id":29217,"name":"futaotao","email":"futaotao@huawei.com","username":"doubletao"},"change_message_id":"8588e6c21e3042940850a0d9a876772e18a9839a","unresolved":false,"context_lines":[{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"volume_opts \u003d ["},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027cinder_fusionstorage_conf_file\u0027,"},{"line_number":35,"context_line":"               default\u003d\u0027/etc/cinder/cinder_fusionstorage_conf.xml\u0027,"},{"line_number":36,"context_line":"               help\u003d\u0027The configuration file for \u0027"},{"line_number":37,"context_line":"                    \u0027the Cinder FusionStorage driver.\u0027),"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_017cf01e","line":34,"in_reply_to":"3f79a3b5_2dd7e54f","updated":"2018-12-25 01:20:16.000000000","message":"Hi, Sean, if we do adopt the cinder.conf, the username and password would not be encrypted because of cinder.conf not supporting writing. And our company does not allow any Plaintext code to be sent out.How do we solve this problem?","commit_id":"75515ec6b705932e5404a575784838d825ccc3e4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7f6fb188eec8370294cedaf98c687f682f5a598e","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"@interface.volumedriver"},{"line_number":50,"context_line":"class DSWAREDriver(driver.VolumeDriver):"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":53,"context_line":"        super(DSWAREDriver, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_4dbd8102","line":50,"updated":"2018-12-18 14:21:20.000000000","message":"CI_WIKI_NAME and VERSION should not have been removed.","commit_id":"75515ec6b705932e5404a575784838d825ccc3e4"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ffbeb0a8771e095a572819f636ec49bd52b0827a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"volume_opts \u003d ["},{"line_number":37,"context_line":"    cfg.BoolOpt(\u0027dsware_isthin\u0027,"},{"line_number":38,"context_line":"                default\u003dFalse,"},{"line_number":39,"context_line":"                help\u003d\u0027The flag of thin storage allocation.\u0027),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027dsware_manager\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"dfd5e7cf_5924d2c6","side":"PARENT","line":37,"range":{"start_line":37,"start_character":17,"end_line":37,"end_character":30},"updated":"2019-01-08 13:15:24.000000000","message":"Do we need deprecate old options?","commit_id":"27c7829d5075a7c96bacb858f83270e35104d8a1"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a3f2160a106d94d86c5b16bb5b2047beb9fef3c1","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    cfg.BoolOpt(\u0027dsware_isthin\u0027,"},{"line_number":38,"context_line":"                default\u003dFalse,"},{"line_number":39,"context_line":"                help\u003d\u0027The flag of thin storage allocation.\u0027),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027dsware_manager\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027Fusionstorage manager ip addr for cinder-volume.\u0027),"},{"line_number":43,"context_line":"    cfg.StrOpt(\u0027fusionstorageagent\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"dfd5e7cf_b0a2a499","side":"PARENT","line":40,"range":{"start_line":40,"start_character":16,"end_line":40,"end_character":29},"updated":"2019-01-08 22:52:59.000000000","message":"We do need to deprecate these.","commit_id":"27c7829d5075a7c96bacb858f83270e35104d8a1"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1a626ece34ebe18c52f8ae69f182efd28a2385ab","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"volume_opts \u003d ["},{"line_number":33,"context_line":"    cfg.DictOpt(\u0027manager_ips\u0027,"},{"line_number":34,"context_line":"                default\u003d{},"},{"line_number":35,"context_line":"                help\u003d\u0027This option is to support the FSA to mount across the \u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"dfd5e7cf_bd47d81d","line":32,"updated":"2019-01-09 03:40:27.000000000","message":"Agree with @ivan and @jay, we should first deprecate the old options and then remove them in next release.\n\nSomething like:\n    cfg.StrOpt(\"dsware_isthin\",\n        default\u003dFalse,\n        help\u003d\u0027The flag of thin storage allocation.\u0027\n        deprecated_for_removal\u003dTrue,\n        deprecated_since\u003d\"14.0.0\",\n        deprecated_reason\u003d\"\"\"\n..............\n\"\"\")","commit_id":"1b56bf7e9fa751c9b9b83762163c399989f63b5c"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ffbeb0a8771e095a572819f636ec49bd52b0827a","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        if result:"},{"line_number":139,"context_line":"            return result"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def _assert_check_result(self, msg):"},{"line_number":142,"context_line":"        LOG.error(msg)"},{"line_number":143,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"dfd5e7cf_b9185e81","line":141,"range":{"start_line":141,"start_character":8,"end_line":141,"end_character":28},"updated":"2019-01-08 13:15:24.000000000","message":"IMO, the method name is not clear. It doesn\u0027t do any checks or asserts","commit_id":"1b56bf7e9fa751c9b9b83762163c399989f63b5c"},{"author":{"_account_id":29217,"name":"futaotao","email":"futaotao@huawei.com","username":"doubletao"},"change_message_id":"2cbecc2113d026887d2ce63437e3a664e46a38e2","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        if result:"},{"line_number":139,"context_line":"            return result"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def _assert_check_result(self, msg):"},{"line_number":142,"context_line":"        LOG.error(msg)"},{"line_number":143,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"bfdaf3ff_aac82374","line":141,"range":{"start_line":141,"start_character":8,"end_line":141,"end_character":28},"in_reply_to":"dfd5e7cf_b9185e81","updated":"2019-01-15 05:59:26.000000000","message":"Accept, I will change the method name.","commit_id":"1b56bf7e9fa751c9b9b83762163c399989f63b5c"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"a3f2160a106d94d86c5b16bb5b2047beb9fef3c1","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                pool_id \u003d pool[\u0027poolId\u0027]"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        if pool_id is None:"},{"line_number":154,"context_line":"            msg \u003d _(\u0027Storage pool %(pool)s does not exist and may be manually \u0027"},{"line_number":155,"context_line":"                    \u0027deleted. Please check.\u0027) % {\"pool\": pool_id}"},{"line_number":156,"context_line":"            LOG.error(msg)"},{"line_number":157,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"dfd5e7cf_90a9a07c","line":154,"range":{"start_line":154,"start_character":61,"end_line":154,"end_character":78},"updated":"2019-01-08 22:52:59.000000000","message":"may need to be manually","commit_id":"1b56bf7e9fa751c9b9b83762163c399989f63b5c"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"71c70e5ee0573a732b4d5eaa28849df4ea3ebe47","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                help\u003d\u0027The flag of thin storage allocation.\u0027,"},{"line_number":36,"context_line":"                deprecated_for_removal\u003dTrue,"},{"line_number":37,"context_line":"                deprecated_since\u003d\u002714.0.0\u0027,"},{"line_number":38,"context_line":"                deprecated_reason\u003d\u0027Refactoring the code in REST\u0027),"},{"line_number":39,"context_line":"    cfg.StrOpt(\"dsware_manager\","},{"line_number":40,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":41,"context_line":"               help\u003d\u0027Fusionstorage manager ip addr for cinder-volume.\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"bfdaf3ff_9d83b6cc","line":38,"range":{"start_line":38,"start_character":35,"end_line":38,"end_character":63},"updated":"2019-01-17 06:26:38.000000000","message":"I think we should make deprecated_reason more detail.","commit_id":"35aa80a37c4a738eeec8816b81dcc899be4e10c7"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"71c70e5ee0573a732b4d5eaa28849df4ea3ebe47","unresolved":false,"context_lines":[{"line_number":41,"context_line":"               help\u003d\u0027Fusionstorage manager ip addr for cinder-volume.\u0027,"},{"line_number":42,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":43,"context_line":"               deprecated_since\u003d\u002714.0.0\u0027,"},{"line_number":44,"context_line":"               deprecated_reason\u003d\u0027Refactoring the code in RES\u0027),"},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027fusionstorageagent\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":47,"context_line":"               help\u003d\u0027Fusionstorage agent ip addr range\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"bfdaf3ff_5dfa2e75","line":44,"range":{"start_line":44,"start_character":34,"end_line":44,"end_character":61},"updated":"2019-01-17 06:26:38.000000000","message":"it seems reason is not completed?","commit_id":"35aa80a37c4a738eeec8816b81dcc899be4e10c7"}],"cinder/volume/drivers/fusionstorage/fs_client.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import json"},{"line_number":17,"context_line":"import requests"},{"line_number":18,"context_line":"import six"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_8621fda3","line":16,"updated":"2018-11-26 13:01:41.000000000","message":"Need blank line after json import.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from cinder import exception"},{"line_number":21,"context_line":"from cinder.i18n import _"},{"line_number":22,"context_line":"from cinder.volume.drivers.fusionstorage import constants"},{"line_number":23,"context_line":"from oslo_log import log as logging"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_263269f4","line":23,"updated":"2018-11-26 13:01:41.000000000","message":"Needs to be moved up to group with requests and six imports.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            kwargs[\u0027data\u0027] \u003d json.dumps(data)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        if not get_version:"},{"line_number":55,"context_line":"            call_url \u003d self.address + constants.BASIC_URI + self.version + url"},{"line_number":56,"context_line":"        else:"},{"line_number":57,"context_line":"            call_url \u003d self.address + constants.BASIC_URI + url"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_063acdc3","line":55,"updated":"2018-11-26 13:01:41.000000000","message":"String formatting is preferred over concatenation.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":79,"context_line":"            Call Method:{},"},{"line_number":80,"context_line":"            Request Data:{},"},{"line_number":81,"context_line":"            Response Data:{},"},{"line_number":82,"context_line":"            Result Data:{}\u0027\u0027\u0027.format("},{"line_number":83,"context_line":"                call_url, method, data, result, result.json()))"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        if json_flag:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_a674399c","line":82,"range":{"start_line":82,"start_character":29,"end_line":82,"end_character":37},"updated":"2018-11-26 13:01:41.000000000","message":"Don\u0027t preformat in logger calls. Pass formatting values as args into the logger to handle.","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c0e378d13f69691890096bca5a48d4862e3d63a5","unresolved":false,"context_lines":[{"line_number":134,"context_line":"            except Exception as e:"},{"line_number":135,"context_line":"                LOG.error(\u0027The FusionStorage may have been powered off. \u0027"},{"line_number":136,"context_line":"                          \u0027Power on the FusionStorage and then log in.\u0027)"},{"line_number":137,"context_line":"                raise e"},{"line_number":138,"context_line":"        else:"},{"line_number":139,"context_line":"            self._assert_rest_result(result, _(\u0027Keep alive session error.\u0027))"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_c6585527","line":137,"range":{"start_line":137,"start_character":16,"end_line":137,"end_character":23},"updated":"2018-11-26 13:01:41.000000000","message":"Should just be \"raise\", not \"raise e\".","commit_id":"dce9d88384c4002c309258f3c2c8fc7bff94a7b3"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"f6591cab1b581feb1afd57ff81641df9210abfa0","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        filters \u003d {}"},{"line_number":229,"context_line":"        if snapshot_name:"},{"line_number":230,"context_line":"            filters[\"volumeName\"] \u003d snapshot_name"},{"line_number":231,"context_line":"        params \u003d {\"volName\": vol_name, \"batchLimit\": batch_limit,"},{"line_number":232,"context_line":"                  \"batchNum\": batch_num, \"filters\": filters}"},{"line_number":233,"context_line":"        result \u003d self.call(url, \"POST\", params)"},{"line_number":234,"context_line":"        self._assert_rest_result("},{"line_number":235,"context_line":"            result, _(\u0027Query snapshot by volume session error.\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_4c45e39b","line":232,"range":{"start_line":231,"start_character":0,"end_line":232,"end_character":60},"updated":"2018-12-13 03:19:10.000000000","message":"just a bit curious, does FusionStorage has the max limit of snap for one volume? Can we create more than 1000 snaps for one vol?","commit_id":"b28524abe5e08605ab03d3253f839ecd82e00a76"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7f6fb188eec8370294cedaf98c687f682f5a598e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from cinder import exception"},{"line_number":22,"context_line":"from cinder.i18n import _"},{"line_number":23,"context_line":"from cinder.volume.drivers.fusionstorage import constants"},{"line_number":24,"context_line":"from oslo_log import log as logging"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_ed332dc2","line":24,"updated":"2018-12-18 14:21:20.000000000","message":"oslo_log import should be moved above with the other third party imports.","commit_id":"75515ec6b705932e5404a575784838d825ccc3e4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7f6fb188eec8370294cedaf98c687f682f5a598e","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            result \u003d func(call_url, **kwargs)"},{"line_number":64,"context_line":"        except Exception as err:"},{"line_number":65,"context_line":"            LOG.exception(\u0027Bad response from server: %(url)s. \u0027"},{"line_number":66,"context_line":"                          \u0027Error: %(err)s\u0027), {\u0027url\u0027: url, \u0027err\u0027: err}"},{"line_number":67,"context_line":"            return {\"error\": {"},{"line_number":68,"context_line":"                \"code\": constants.CONNECT_ERROR,"},{"line_number":69,"context_line":"                \"description\": \"Connect to server error.\"}}"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_ed5c8df0","line":66,"range":{"start_line":66,"start_character":65,"end_line":66,"end_character":68},"updated":"2018-12-18 14:21:20.000000000","message":"Don\u0027t format an exception into a LOG.exception call. Drop it or use LOG.error.","commit_id":"75515ec6b705932e5404a575784838d825ccc3e4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7f6fb188eec8370294cedaf98c687f682f5a598e","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                                           \u0027data\u0027: data, \u0027res\u0027: result,"},{"line_number":85,"context_line":"                                           \u0027res_json\u0027: result.json()})"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if json_flag:"},{"line_number":88,"context_line":"            return result"},{"line_number":89,"context_line":"        else:"},{"line_number":90,"context_line":"            return result.json()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_6d687d88","line":87,"updated":"2018-12-18 14:21:20.000000000","message":"This seems backwards. If json_flag is false then don\u0027t do json()?","commit_id":"75515ec6b705932e5404a575784838d825ccc3e4"},{"author":{"_account_id":29217,"name":"futaotao","email":"futaotao@huawei.com","username":"doubletao"},"change_message_id":"8588e6c21e3042940850a0d9a876772e18a9839a","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                                           \u0027data\u0027: data, \u0027res\u0027: result,"},{"line_number":85,"context_line":"                                           \u0027res_json\u0027: result.json()})"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        if json_flag:"},{"line_number":88,"context_line":"            return result"},{"line_number":89,"context_line":"        else:"},{"line_number":90,"context_line":"            return result.json()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_d660320e","line":87,"in_reply_to":"3f79a3b5_6d687d88","updated":"2018-12-25 01:20:16.000000000","message":"There is a need to get \"X-Auth-Token\" from the requests response without json().","commit_id":"75515ec6b705932e5404a575784838d825ccc3e4"}],"cinder/volume/drivers/fusionstorage/fs_conf.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7f6fb188eec8370294cedaf98c687f682f5a598e","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import base64"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import six"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from defusedxml import ElementTree as ET"},{"line_number":21,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_cdfc31be","line":18,"updated":"2018-12-18 14:21:20.000000000","message":"Move six down with the other third party imports.","commit_id":"75515ec6b705932e5404a575784838d825ccc3e4"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"7f6fb188eec8370294cedaf98c687f682f5a598e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class FusionStorageConf(object):"},{"line_number":31,"context_line":"    def __init__(self, conf):"},{"line_number":32,"context_line":"        self.conf \u003d conf"},{"line_number":33,"context_line":"        self.last_modify_time \u003d None"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_6dedddff","line":30,"updated":"2018-12-18 14:21:20.000000000","message":"This should really all go away and switch back to using configuration options in the standard cinder.conf.","commit_id":"75515ec6b705932e5404a575784838d825ccc3e4"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1a626ece34ebe18c52f8ae69f182efd28a2385ab","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import six"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"try:"},{"line_number":21,"context_line":"    import configparser as configparser"},{"line_number":22,"context_line":"except ImportError:"},{"line_number":23,"context_line":"    import ConfigParser as configparser"},{"line_number":24,"context_line":"from oslo_log import log as logging"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":13,"id":"dfd5e7cf_9dc53491","line":23,"range":{"start_line":20,"start_character":0,"end_line":23,"end_character":39},"updated":"2019-01-09 03:40:27.000000000","message":"nit: ditto","commit_id":"1b56bf7e9fa751c9b9b83762163c399989f63b5c"}],"doc/source/configuration/tables/cinder-fusionio.inc":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1a626ece34ebe18c52f8ae69f182efd28a2385ab","unresolved":false,"context_lines":[{"line_number":39,"context_line":"   The parameters takes the standard dict config form, such as\r"},{"line_number":40,"context_line":"   manager_ips \u003d host1:ip1, host2:ip2.\r"},{"line_number":41,"context_line":"\r"},{"line_number":42,"context_line":"   * ``storage``  indicates the fusionstorage and user info, include \"UserName\",\r"},{"line_number":43,"context_line":"   \"Password\", \"RestURL\", \"StoragePool\". The parameters takes the standard\r"},{"line_number":44,"context_line":"   dict config form.\r"},{"line_number":45,"context_line":"\r"}],"source_content_type":"text/x-c++src","patch_set":13,"id":"dfd5e7cf_1d3704b3","line":42,"range":{"start_line":42,"start_character":32,"end_line":42,"end_character":45},"updated":"2019-01-09 03:40:27.000000000","message":"nit: FusionStorage","commit_id":"1b56bf7e9fa751c9b9b83762163c399989f63b5c"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"4174069c8defe0b3c83115d1b7b4d03cd501c87b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"      [VOLUME_BACKEND]\r"},{"line_number":23,"context_line":"      volume_driver \u003d cinder.volume.drivers.fusionstorage.dsware.DSWAREDriver\r"},{"line_number":24,"context_line":"      volume_backend_name \u003d backend_name\r"},{"line_number":25,"context_line":"\t  manager_ips \u003d \r"},{"line_number":26,"context_line":"\t\t\thost1:ip1,\r"},{"line_number":27,"context_line":"\t\t\thost2:ip2\r"},{"line_number":28,"context_line":"\t  storage \u003d \r"}],"source_content_type":"text/x-c++src","patch_set":15,"id":"bfdaf3ff_1de63046","line":25,"range":{"start_line":25,"start_character":0,"end_line":25,"end_character":1},"updated":"2019-01-14 07:30:50.000000000","message":"nit:tab---\u003e 4 spaces, and clean up tail space","commit_id":"d7a2b697b0db04350c7b277343caf0b384a3f07c"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"4174069c8defe0b3c83115d1b7b4d03cd501c87b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"   * ``volume_backend_name`` indicates the name of the backend.\r"},{"line_number":37,"context_line":"\r"},{"line_number":38,"context_line":"   * ``manager_ips`` indicates the management host name and its corresponding IP address;\r"},{"line_number":39,"context_line":"   The parameters takes the standard dict config form, such as \r"},{"line_number":40,"context_line":"   manager_ips \u003d host1:ip1, host2:ip2.\r"},{"line_number":41,"context_line":"\r"},{"line_number":42,"context_line":"   * ``storage``  indicates the FusionStorage and user info, include \"UserName\", \r"}],"source_content_type":"text/x-c++src","patch_set":15,"id":"bfdaf3ff_7dc2dc87","line":39,"updated":"2019-01-14 07:30:50.000000000","message":"nit:clean up tail space","commit_id":"d7a2b697b0db04350c7b277343caf0b384a3f07c"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"4174069c8defe0b3c83115d1b7b4d03cd501c87b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"   The parameters takes the standard dict config form, such as \r"},{"line_number":40,"context_line":"   manager_ips \u003d host1:ip1, host2:ip2.\r"},{"line_number":41,"context_line":"\r"},{"line_number":42,"context_line":"   * ``storage``  indicates the FusionStorage and user info, include \"UserName\", \r"},{"line_number":43,"context_line":"   \"Password\", \"RestURL\", \"StoragePool\". The parameters takes the standard \r"},{"line_number":44,"context_line":"   dict config form.\r"},{"line_number":45,"context_line":"\r"}],"source_content_type":"text/x-c++src","patch_set":15,"id":"bfdaf3ff_dd3668b5","line":42,"updated":"2019-01-14 07:30:50.000000000","message":"nit:clean up tail space","commit_id":"d7a2b697b0db04350c7b277343caf0b384a3f07c"}]}
