)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mingyue Qian \u003cqianmy.fnst@cn.fujitsu.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-10-11 17:28:55 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"This driver supports FUJITSU Storage ETERNUS DX."},{"line_number":8,"context_line":"This version used the different Storage interface, and did some Performance optimization."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"[Supported Protocol]"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_7a8586ad","line":7,"updated":"2018-10-11 12:46:10.000000000","message":"Need blank line after the summary line. And summary line should be something like \"Add Fujitsu ETERNUS DX driver\"","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2018-10-11 17:28:55 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"This driver supports FUJITSU Storage ETERNUS DX."},{"line_number":8,"context_line":"This version used the different Storage interface, and did some Performance optimization."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"[Supported Protocol]"},{"line_number":11,"context_line":" - iSCSI"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_3a8b8ec1","line":8,"updated":"2018-10-11 12:46:10.000000000","message":"Wrap this line to stay within 72 characters.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"e32f21fa2bdee48c3bd97afa5c6bad5ab7163777","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2018-12-24 15:33:40 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update Fujitsu ETERNUS DX driver"},{"line_number":8,"context_line":"This version used the different Storage interface, and did some"},{"line_number":9,"context_line":"Performance optimization.This version optimized some features."},{"line_number":10,"context_line":"For the compatibility of the new series, move ETERNUS DX driver"},{"line_number":11,"context_line":"to the eternus_dx folder."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1f769fc5_8b61b83c","line":8,"updated":"2018-12-24 15:14:08.000000000","message":"Add blank line after the commit summary line.","commit_id":"b97a4ab9ca9488992094ea10ff4e10671968d961"}],"cinder/tests/unit/volume/drivers/test_fujitsu_dx.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import tempfile"},{"line_number":20,"context_line":"from cinder import db"},{"line_number":21,"context_line":"from cinder import ssh_utils"},{"line_number":22,"context_line":"from cinder import exception"},{"line_number":23,"context_line":"from cinder import test"},{"line_number":24,"context_line":"from cinder.volume import configuration as conf"},{"line_number":25,"context_line":"from oslo_utils import units"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_dab5ba7e","line":22,"updated":"2018-10-11 12:46:10.000000000","message":"Imports need to be grouped by local Python imports, a blank line, third party imports, another blank line, and local cinder imports.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from oslo_utils import units"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"with mock.patch.dict(\u0027sys.modules\u0027, pywbem\u003dmock.Mock()):"},{"line_number":28,"context_line":"    from cinder.volume.drivers.fujitsu.eternus_dx import eternus_dx_common as dx_common"},{"line_number":29,"context_line":"    from cinder.volume.drivers.fujitsu.eternus_dx import eternus_dx_fc as dx_fc"},{"line_number":30,"context_line":"    from cinder.volume.drivers.fujitsu.eternus_dx import eternus_dx_iscsi as dx_iscsi"},{"line_number":31,"context_line":"    from cinder.volume.drivers.fujitsu.eternus_dx import eternus_dx_utils"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_1a65721d","line":28,"updated":"2018-10-11 12:46:10.000000000","message":"Lines must be \u003c 80 characters long.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":1204,"context_line":"        model_info \u003d self.driver.create_volume(TEST_VOLUME)"},{"line_number":1205,"context_line":"        self.assertEqual(FAKE_MODEL_INFO1, model_info)"},{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"        snap_info \u003d self.driver.create_snapshot(TEST_SNAP)"},{"line_number":1208,"context_line":"        self.assertEqual(FAKE_SNAP_INFO, snap_info)"},{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"        model_info \u003d self.driver.create_volume_from_snapshot(TEST_CLONE,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_1a333215","line":1207,"range":{"start_line":1207,"start_character":32,"end_line":1207,"end_character":47},"updated":"2018-10-11 12:46:10.000000000","message":"The tests should set up any fake volumes and snapshots needed and only test the method that needs to be tested inside the unit test. See other drivers for examples of how this is done.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":1248,"context_line":"        info \u003d self.driver.initialize_connection(DELETE_VOLUME,"},{"line_number":1249,"context_line":"                                                 TEST_CONNECTOR)"},{"line_number":1250,"context_line":"        self.assertEqual(fake_info, info)"},{"line_number":1251,"context_line":"      #  Call terminate_connection without connector."},{"line_number":1252,"context_line":"        self.driver.terminate_connection(DELETE_VOLUME,"},{"line_number":1253,"context_line":"                                         None)"},{"line_number":1254,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_7a2106b5","line":1251,"range":{"start_line":1251,"start_character":6,"end_line":1251,"end_character":7},"updated":"2018-10-11 12:46:10.000000000","message":"Under indented.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":1294,"context_line":"                                         None)"},{"line_number":1295,"context_line":"        self.driver.delete_volume(DELETE_VOLUME_2)"},{"line_number":1296,"context_line":""},{"line_number":1297,"context_line":""},{"line_number":1298,"context_line":""},{"line_number":1299,"context_line":""},{"line_number":1300,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_7a0a6627","line":1297,"updated":"2018-10-11 12:46:10.000000000","message":"Too many blank lines. Should just be two between classes and one between methods.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"}],"cinder/volume/drivers/fujitsu/eternus_dx/constants.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":148,"context_line":"FJ_ETERNUS_DX_OPT_list \u003d ["},{"line_number":149,"context_line":"    cfg.StrOpt(\u0027cinder_eternus_config_file\u0027,"},{"line_number":150,"context_line":"               default\u003d\u0027/etc/cinder/cinder_fujitsu_eternus_dx.xml\u0027,"},{"line_number":151,"context_line":"               help\u003d\u0027config file for cinder eternus_dx volume driver\u0027),"},{"line_number":152,"context_line":"    cfg.IntOpt(\u0027fujitsu_set_func_timeout\u0027,"},{"line_number":153,"context_line":"               default\u003d0,"},{"line_number":154,"context_line":"               help\u003d\u0027Timeout for fujitsu setting function.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_154f836a","line":151,"range":{"start_line":151,"start_character":21,"end_line":151,"end_character":22},"updated":"2018-10-11 12:46:10.000000000","message":"Start these help messages uppercase so the sentences are properly cased.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":163,"context_line":"               help\u003d\u0027Times for timeout retrying.\u0027),"},{"line_number":164,"context_line":"    cfg.StrOpt(\u0027fujitsu_min_image_volume_per_storage\u0027,"},{"line_number":165,"context_line":"               default\u003d\u00270\u0027,"},{"line_number":166,"context_line":"               help\u003d\u0027minimum number of image volume \u0027"},{"line_number":167,"context_line":"                    \u0027per storage(ETERNUS)\u0027),"},{"line_number":168,"context_line":"    cfg.StrOpt(\u0027fujitsu_port_host_mapping_file\u0027,"},{"line_number":169,"context_line":"               default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f52447b4","line":166,"updated":"2018-10-11 12:46:10.000000000","message":"I don\u0027t think explains well enough what this setting does.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":170,"context_line":"               help\u003d\u0027A ports-initiator configuration file, \u0027"},{"line_number":171,"context_line":"                    \u0027every line likes follow: \u0027"},{"line_number":172,"context_line":"                    \u0027000,010,.....\u003diqn.1994-05.com.redhat:2ec52e76da0\u003dAG_#1. \u0027"},{"line_number":173,"context_line":"                    \u0027000 is the port info on ETERNUS, likes: \u0027"},{"line_number":174,"context_line":"                    \u0027xyz: Fixed 3 digits, \u0027"},{"line_number":175,"context_line":"                    \u0027CM number + CA number + Port number; \u0027"},{"line_number":176,"context_line":"                    \u0027wxyz: Fixed 4 digits, \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_953ab3c1","line":173,"updated":"2018-10-11 12:46:10.000000000","message":"This may be a little too much to include in a config help string. It might be better to have this kind of detail in the driver documentation.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                    \u0027AG_#1 is affinity group name on ETERBUS.\u0027),"},{"line_number":181,"context_line":"    cfg.IntOpt(\u0027fujitsu_min_supported_capacity_gb\u0027,"},{"line_number":182,"context_line":"               default\u003d2048,"},{"line_number":183,"context_line":"               help\u003d\u0027Min supported capacity of every pool \u0027"},{"line_number":184,"context_line":"                    \u0027in cinder_eternus_config_file.\u0027),"},{"line_number":185,"context_line":"    cfg.IntOpt(\u0027fujitsu_target_port_use_number\u0027,"},{"line_number":186,"context_line":"               default\u003d4,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_7566f7f0","line":183,"updated":"2018-10-11 12:46:10.000000000","message":"This seems like a really odd configuration option to have.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":187,"context_line":"               help\u003d\u0027The number of target port to set host affinity \u0027"},{"line_number":188,"context_line":"                    \u0027in cinder_eternus_config_file.\u0027),"},{"line_number":189,"context_line":"    cfg.StrOpt(\u0027fujitsu_capacity_warning_file\u0027,"},{"line_number":190,"context_line":"               default\u003d\u0027/etc/cinder/fujitsu/check_provisioned_capacity\u0027,"},{"line_number":191,"context_line":"               help\u003d\u0027Capacity warning file for CMCC, \u0027"},{"line_number":192,"context_line":"                    \u0027if every pool in cinder_eternus_config_file \u0027"},{"line_number":193,"context_line":"                    \u0027is less than fujitsu_min_supported_capacity_gb, \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d5a26bfb","line":190,"updated":"2018-10-11 12:46:10.000000000","message":"Why have a local configuration file and not have these defined in the code?","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                    \u0027otherwise output is \"OK\".\u0027),"},{"line_number":196,"context_line":"    cfg.BoolOpt(\u0027use_fujitsu_image_volume\u0027,"},{"line_number":197,"context_line":"                default\u003dTrue,"},{"line_number":198,"context_line":"                help\u003d\u0027Use image volume when \u0027"},{"line_number":199,"context_line":"                     \u0027copying image to volume.\u0027),"},{"line_number":200,"context_line":"    cfg.BoolOpt(\u0027two_way_authentication\u0027,"},{"line_number":201,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_35b15f46","line":198,"updated":"2018-10-11 12:46:10.000000000","message":"What is this?","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":201,"context_line":"                default\u003dFalse,"},{"line_number":202,"context_line":"                help\u003d\u0027If True use two way authentication, \u0027"},{"line_number":203,"context_line":"                     \u0027If False use one way authentication.\u0027),"},{"line_number":204,"context_line":"    cfg.StrOpt(\u0027key_file_path\u0027,"},{"line_number":205,"context_line":"               default\u003d\u0027/etc/cinder/client.key\u0027,"},{"line_number":206,"context_line":"               help\u003d\u0027key file of SSL.\u0027),"},{"line_number":207,"context_line":"    cfg.StrOpt(\u0027cert_file_path\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d5f02bff","line":204,"range":{"start_line":204,"start_character":16,"end_line":204,"end_character":29},"updated":"2018-10-11 12:46:10.000000000","message":"Use the existing driver_client_cert_key config option.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b502a3af908795227df171a7ac42e5d19c600875","unresolved":false,"context_lines":[{"line_number":169,"context_line":"               default\u003d4,"},{"line_number":170,"context_line":"               help\u003d\u0027The number of target port to set host affinity \u0027"},{"line_number":171,"context_line":"                    \u0027in cinder_eternus_config_file.\u0027),"},{"line_number":172,"context_line":"    cfg.BoolOpt(\u0027two_way_authentication\u0027,"},{"line_number":173,"context_line":"                default\u003dFalse,"},{"line_number":174,"context_line":"                help\u003d\u0027If True use two way authentication, \u0027"},{"line_number":175,"context_line":"                     \u0027If False use one way authentication.\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc1f717_7f9b9765","line":172,"updated":"2019-03-21 15:20:40.000000000","message":"All of these options should be prefixed with \"fujitsu_\".","commit_id":"1d4cbcc4a7e6fc53a37adf41a119e664bb58ea74"},{"author":{"_account_id":26387,"name":"Qian Mingyue","email":"qianmy.fnst@cn.fujitsu.com","username":"qianmingyue"},"change_message_id":"549e716eec435fec7f6bab2a392f33488469b653","unresolved":false,"context_lines":[{"line_number":169,"context_line":"               default\u003d4,"},{"line_number":170,"context_line":"               help\u003d\u0027The number of target port to set host affinity \u0027"},{"line_number":171,"context_line":"                    \u0027in cinder_eternus_config_file.\u0027),"},{"line_number":172,"context_line":"    cfg.BoolOpt(\u0027two_way_authentication\u0027,"},{"line_number":173,"context_line":"                default\u003dFalse,"},{"line_number":174,"context_line":"                help\u003d\u0027If True use two way authentication, \u0027"},{"line_number":175,"context_line":"                     \u0027If False use one way authentication.\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc1f717_68074dcb","line":172,"in_reply_to":"5fc1f717_7f9b9765","updated":"2019-03-22 05:57:22.000000000","message":"First of all, thank you for your review\nwe have add all parameter with \"fujitsu_\",\nand remove some parameter which was used in https function.\nbecause the https function is on hold, we removed that.","commit_id":"1d4cbcc4a7e6fc53a37adf41a119e664bb58ea74"},{"author":{"_account_id":26387,"name":"Qian Mingyue","email":"qianmy.fnst@cn.fujitsu.com","username":"qianmingyue"},"change_message_id":"6c43e6d1fca47f42d9441df8c699b50f57c5444b","unresolved":false,"context_lines":[{"line_number":169,"context_line":"               default\u003d4,"},{"line_number":170,"context_line":"               help\u003d\u0027The number of target port to set host affinity \u0027"},{"line_number":171,"context_line":"                    \u0027in cinder_eternus_config_file.\u0027),"},{"line_number":172,"context_line":"    cfg.BoolOpt(\u0027two_way_authentication\u0027,"},{"line_number":173,"context_line":"                default\u003dFalse,"},{"line_number":174,"context_line":"                help\u003d\u0027If True use two way authentication, \u0027"},{"line_number":175,"context_line":"                     \u0027If False use one way authentication.\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"bfb3d3c7_199a10b8","line":172,"in_reply_to":"5fc1f717_7f9b9765","updated":"2019-06-04 06:48:00.000000000","message":"Fix","commit_id":"1d4cbcc4a7e6fc53a37adf41a119e664bb58ea74"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b502a3af908795227df171a7ac42e5d19c600875","unresolved":false,"context_lines":[{"line_number":173,"context_line":"                default\u003dFalse,"},{"line_number":174,"context_line":"                help\u003d\u0027If True use two way authentication, \u0027"},{"line_number":175,"context_line":"                     \u0027If False use one way authentication.\u0027),"},{"line_number":176,"context_line":"    cfg.StrOpt(\u0027ca_certs_path\u0027,"},{"line_number":177,"context_line":"               default\u003d\u0027/etc/pki/tls/certs/ca-bundle.trust.crt\u0027,"},{"line_number":178,"context_line":"               help\u003d\u0027Ca cert file of SSL.\u0027),"},{"line_number":179,"context_line":"    cfg.BoolOpt(\u0027verification\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc1f717_bfbedfd1","line":176,"updated":"2019-03-21 15:20:40.000000000","message":"Can use the \"driver_ssl_cert_path\" option instead of defining a new one here.","commit_id":"1d4cbcc4a7e6fc53a37adf41a119e664bb58ea74"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b502a3af908795227df171a7ac42e5d19c600875","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    cfg.BoolOpt(\u0027verification\u0027,"},{"line_number":180,"context_line":"                default\u003dFalse,"},{"line_number":181,"context_line":"                help\u003d\u0027If True do verification \u0027"},{"line_number":182,"context_line":"                     \u0027If False do not verification\u0027),"},{"line_number":183,"context_line":"    cfg.BoolOpt(\u0027passwordless\u0027,"},{"line_number":184,"context_line":"                default\u003dTrue,"},{"line_number":185,"context_line":"                help\u003d\u0027If True use passwordless \u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc1f717_ff71c745","line":182,"updated":"2019-03-21 15:20:40.000000000","message":"This is not descriptive enough to know what the \"verification\" option does.","commit_id":"1d4cbcc4a7e6fc53a37adf41a119e664bb58ea74"},{"author":{"_account_id":26387,"name":"Qian Mingyue","email":"qianmy.fnst@cn.fujitsu.com","username":"qianmingyue"},"change_message_id":"549e716eec435fec7f6bab2a392f33488469b653","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    cfg.BoolOpt(\u0027verification\u0027,"},{"line_number":180,"context_line":"                default\u003dFalse,"},{"line_number":181,"context_line":"                help\u003d\u0027If True do verification \u0027"},{"line_number":182,"context_line":"                     \u0027If False do not verification\u0027),"},{"line_number":183,"context_line":"    cfg.BoolOpt(\u0027passwordless\u0027,"},{"line_number":184,"context_line":"                default\u003dTrue,"},{"line_number":185,"context_line":"                help\u003d\u0027If True use passwordless \u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc1f717_c8f761d4","line":182,"in_reply_to":"5fc1f717_ff71c745","updated":"2019-03-22 05:57:22.000000000","message":"This parameter is used to verify the validity of the https certificate.Because of the remove of https function, we removed it.","commit_id":"1d4cbcc4a7e6fc53a37adf41a119e664bb58ea74"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b502a3af908795227df171a7ac42e5d19c600875","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                default\u003dTrue,"},{"line_number":185,"context_line":"                help\u003d\u0027If True use passwordless \u0027"},{"line_number":186,"context_line":"                     \u0027If False do not use passwordless\u0027),"},{"line_number":187,"context_line":"    cfg.StrOpt(\u0027private_key_path\u0027,"},{"line_number":188,"context_line":"               default\u003d\u0027/root/.ssh/eternus\u0027,"},{"line_number":189,"context_line":"               help\u003d\u0027Default path of private key\u0027),"},{"line_number":190,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc1f717_1f7db31b","line":187,"range":{"start_line":187,"start_character":15,"end_line":187,"end_character":33},"updated":"2019-03-21 15:20:40.000000000","message":"fujitsu_private_key_path","commit_id":"1d4cbcc4a7e6fc53a37adf41a119e664bb58ea74"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b502a3af908795227df171a7ac42e5d19c600875","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                help\u003d\u0027If True use passwordless \u0027"},{"line_number":186,"context_line":"                     \u0027If False do not use passwordless\u0027),"},{"line_number":187,"context_line":"    cfg.StrOpt(\u0027private_key_path\u0027,"},{"line_number":188,"context_line":"               default\u003d\u0027/root/.ssh/eternus\u0027,"},{"line_number":189,"context_line":"               help\u003d\u0027Default path of private key\u0027),"},{"line_number":190,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc1f717_ff98e775","line":188,"range":{"start_line":188,"start_character":23,"end_line":188,"end_character":44},"updated":"2019-03-21 15:20:40.000000000","message":"This is not a good default for this path -- should probably be something in /etc/cinder/.","commit_id":"1d4cbcc4a7e6fc53a37adf41a119e664bb58ea74"},{"author":{"_account_id":26387,"name":"Qian Mingyue","email":"qianmy.fnst@cn.fujitsu.com","username":"qianmingyue"},"change_message_id":"549e716eec435fec7f6bab2a392f33488469b653","unresolved":false,"context_lines":[{"line_number":185,"context_line":"                help\u003d\u0027If True use passwordless \u0027"},{"line_number":186,"context_line":"                     \u0027If False do not use passwordless\u0027),"},{"line_number":187,"context_line":"    cfg.StrOpt(\u0027private_key_path\u0027,"},{"line_number":188,"context_line":"               default\u003d\u0027/root/.ssh/eternus\u0027,"},{"line_number":189,"context_line":"               help\u003d\u0027Default path of private key\u0027),"},{"line_number":190,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc1f717_28114505","line":188,"range":{"start_line":188,"start_character":23,"end_line":188,"end_character":44},"in_reply_to":"5fc1f717_ff98e775","updated":"2019-03-22 05:57:22.000000000","message":"we moved the default path to $state_path/, that be OK?","commit_id":"1d4cbcc4a7e6fc53a37adf41a119e664bb58ea74"}],"cinder/volume/drivers/fujitsu/eternus_dx/eternus_dx_cli.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2018 FUJITSU LIMITED"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"\"\"\""},{"line_number":5,"context_line":"Cinder Volume driver for Fujitsu ETERNUS DX S3 series."},{"line_number":6,"context_line":"\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f5ce87b5","line":3,"updated":"2018-10-11 12:46:10.000000000","message":"Needs apache license header.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":5,"context_line":"Cinder Volume driver for Fujitsu ETERNUS DX S3 series."},{"line_number":6,"context_line":"\"\"\""},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"# $Date:: 2016-02-17 11:56:58 +0800#$"},{"line_number":9,"context_line":"# $Revision: 309 $"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"from cinder import ssh_utils"},{"line_number":12,"context_line":"import re"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_55dc1b70","line":9,"range":{"start_line":8,"start_character":0,"end_line":9,"end_character":18},"updated":"2018-10-11 12:46:10.000000000","message":"Remove this.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.user \u003d user"},{"line_number":30,"context_line":"        self.storage_ip \u003d storage_ip"},{"line_number":31,"context_line":"        if password and keyfile:"},{"line_number":32,"context_line":"            raise Exception(\u0027can not specifiy both password and keyfile\u0027)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        self.use_ipv6 \u003d False"},{"line_number":35,"context_line":"        if password:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_75c27788","line":32,"range":{"start_line":32,"start_character":37,"end_line":32,"end_character":45},"updated":"2018-10-11 12:46:10.000000000","message":"Specify","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        output_header \u003d \"\""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        for no, outline in enumerate(stdoutlist):"},{"line_number":99,"context_line":"            if (len(outline) \u003c\u003d 0) or (outline is None):"},{"line_number":100,"context_line":"                continue"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"            if not output_header.endswith(exec_cmdline):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_35b87f10","line":99,"range":{"start_line":99,"start_character":15,"end_line":99,"end_character":16},"updated":"2018-10-11 12:46:10.000000000","message":"() are not needed.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                continue"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"            if 0 \u003c\u003d outline.find(\u0027Error\u0027):"},{"line_number":107,"context_line":"                raise Exception(\"Output: %(outline)s: Command: %(cmdline)s\""},{"line_number":108,"context_line":"                                % {\u0027outline\u0027: outline,"},{"line_number":109,"context_line":"                                   \u0027cmdline\u0027: exec_cmdline})"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_b539efa2","line":107,"range":{"start_line":107,"start_character":32,"end_line":107,"end_character":33},"updated":"2018-10-11 12:46:10.000000000","message":"Exception strings need _() for i18n translation.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            chan \u003d ssh.invoke_shell()"},{"line_number":152,"context_line":"            chan.send(exec_cmdline + \u0027\\n\u0027)"},{"line_number":153,"context_line":"            while not chan.recv_ready():"},{"line_number":154,"context_line":"                time.sleep(0.1)"},{"line_number":155,"context_line":"            stdoutdata \u003d \u0027\u0027"},{"line_number":156,"context_line":"            start_time \u003d time.time()"},{"line_number":157,"context_line":"            while True:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_75703774","line":154,"range":{"start_line":154,"start_character":16,"end_line":154,"end_character":31},"updated":"2018-10-11 12:46:10.000000000","message":"Make sure time.sleep is mocked in unit tests so there are no unnecessary delays when running tests.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                # CLI command end with \u0027CLI\u003e\u0027."},{"line_number":160,"context_line":"                if stdoutdata \u003d\u003d \u0027\\r\\nCLI\u003e \u0027:"},{"line_number":161,"context_line":"                    continue"},{"line_number":162,"context_line":"                if stdoutdata[len(stdoutdata) - 5: len(stdoutdata) - 1] \\"},{"line_number":163,"context_line":"                        \u003d\u003d \u0027CLI\u003e\u0027:"},{"line_number":164,"context_line":"                    break"},{"line_number":165,"context_line":"                # Timeout: 300s."}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f501a7b6","line":162,"range":{"start_line":162,"start_character":72,"end_line":162,"end_character":73},"updated":"2018-10-11 12:46:10.000000000","message":"Avoid using \\ for line continuation.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                    raise Exception(\"Execute command: %s,timeout!\" %"},{"line_number":169,"context_line":"                                    exec_cmdline)"},{"line_number":170,"context_line":"        except Exception as e:"},{"line_number":171,"context_line":"            raise Exception(\"Execute CLI command error. Error: \" + str(e))"},{"line_number":172,"context_line":"        finally:"},{"line_number":173,"context_line":"            if ssh:"},{"line_number":174,"context_line":"                self.ssh_pool.put(ssh)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_751ef70d","line":171,"range":{"start_line":171,"start_character":67,"end_line":171,"end_character":70},"updated":"2018-10-11 12:46:10.000000000","message":"Perform string formatting instead and use six.text_type instead of str().","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def _default_func(self, **option):"},{"line_number":220,"context_line":"        \"\"\"Default function.\"\"\""},{"line_number":221,"context_line":"        raise Exception(\"Invalid function is specified\")"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    def _check_user_role(self, **option):"},{"line_number":224,"context_line":"        \"\"\"Check user role.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_35e95fe3","line":221,"range":{"start_line":221,"start_character":14,"end_line":221,"end_character":23},"updated":"2018-10-11 12:46:10.000000000","message":"Raise a Cinder specific exception, not the general Exception.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"}],"cinder/volume/drivers/fujitsu/eternus_dx/eternus_dx_common.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":43,"context_line":"from cinder.volume import utils as volume_utils"},{"line_number":44,"context_line":"from cinder.volume import qos_specs"},{"line_number":45,"context_line":"from cinder.volume import volume_types"},{"line_number":46,"context_line":"from defusedxml import ElementTree as ET"},{"line_number":47,"context_line":"from oslo_config import cfg"},{"line_number":48,"context_line":"from oslo_utils import excutils"},{"line_number":49,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_b5dfaf09","line":46,"updated":"2018-10-11 12:46:10.000000000","message":"Fix import grouping.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    import pywbem"},{"line_number":61,"context_line":"except ImportError:"},{"line_number":62,"context_line":"    msg \u003d (\u0027import pywbem failed!! \u0027"},{"line_number":63,"context_line":"           \u0027pywbem is necessary for this volume driver.\u0027)"},{"line_number":64,"context_line":"    LOG.error(msg)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"CINDER_CONF_OPT_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f58be713","line":63,"updated":"2018-10-11 12:46:10.000000000","message":"Add pywebm to requirements.txt. Then no need to do this.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    cfg.StrOpt(\u0027fujitsu_image_management_dir\u0027,"},{"line_number":68,"context_line":"               default\u003dCONF.image_conversion_dir,"},{"line_number":69,"context_line":"               help\u003d\u0027directory for \u0027"},{"line_number":70,"context_line":"                    \u0027image management file(xml)\u0027),"},{"line_number":71,"context_line":"]"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"CONF.register_opts(CINDER_CONF_OPT_opts)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f5020772","line":70,"updated":"2018-10-11 12:46:10.000000000","message":"No need to break this into multiple lines.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                                    run_as_root\u003dTrue)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"                if out:"},{"line_number":171,"context_line":"                    filename \u003d self.private_key_path.split(\u0027/\u0027)[-1]"},{"line_number":172,"context_line":"                    self.private_key \u003d os.path.join(CONF.state_path, filename)"},{"line_number":173,"context_line":"                    utils.execute(\u0027cp\u0027, \u0027-r\u0027, self.private_key_path,"},{"line_number":174,"context_line":"                                  self.private_key, run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_154ea395","line":171,"updated":"2018-10-11 12:46:10.000000000","message":"Why is __init__ manipulating files? Operator should configure correct location and modes, not the driver.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":183,"context_line":"                                  run_as_root\u003dTrue)"},{"line_number":184,"context_line":"                else:"},{"line_number":185,"context_line":"                    msg \u003d (_(\u0027FJDXCommon __init__, \u0027"},{"line_number":186,"context_line":"                             \u0027specfified private key is not existed \u0027"},{"line_number":187,"context_line":"                             \u0027private key %(key)s.\u0027)"},{"line_number":188,"context_line":"                           % {\u0027key\u0027: self.private_key_path})"},{"line_number":189,"context_line":"                    LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d5434b6a","line":186,"range":{"start_line":186,"start_character":53,"end_line":186,"end_character":67},"updated":"2018-10-11 12:46:10.000000000","message":"does not exist","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"        conn \u003d self._get_eternus_connection(filename)"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        volumesize \u003d int(volume[\u0027size\u0027]) * CONSTANTS.GI"},{"line_number":352,"context_line":"        volumename \u003d self._get_volume_name(volume, use_id\u003dTrue)"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"        LOG.debug(\u0027_create_volume, volumename: %(volumename)s, \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d5110b5e","line":351,"range":{"start_line":351,"start_character":43,"end_line":351,"end_character":52},"updated":"2018-10-11 12:46:10.000000000","message":"Should use oslo_util.units.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":505,"context_line":"        # Check the existence of source volume."},{"line_number":506,"context_line":"        if not source_volume_instance:"},{"line_number":507,"context_line":"            msg \u003d _(\u0027create_volume_from_snapshot, \u0027"},{"line_number":508,"context_line":"                    \u0027Source Volume is not exist in ETERNUS.\u0027)"},{"line_number":509,"context_line":"            LOG.error(msg)"},{"line_number":510,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":511,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_3015ed3e","line":508,"range":{"start_line":508,"start_character":35,"end_line":508,"end_character":37},"updated":"2018-10-11 12:46:10.000000000","message":"does","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":526,"context_line":"            LOG.error(msg)"},{"line_number":527,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        self._create_local_cloned_volume(target_volume_instance,"},{"line_number":530,"context_line":"                                         source_volume_instance,"},{"line_number":531,"context_line":"                                         timeout\u003dself.req_sec)"},{"line_number":532,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_706605f1","line":529,"updated":"2018-10-11 12:46:10.000000000","message":"I can\u0027t really tell if it\u0027s being done or not, but make sure creation from snapshot and cloning both handle the case where the new volume being requested is larger than the original.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":534,"context_line":""},{"line_number":535,"context_line":"    @dx_utils.FJDXTimeout()"},{"line_number":536,"context_line":"    def create_cloned_volume(self, volume, src_vref,"},{"line_number":537,"context_line":"                             CloneOnly\u003dFalse,"},{"line_number":538,"context_line":"                             use_service_name\u003dFalse,"},{"line_number":539,"context_line":"                             timeout\u003dNone):"},{"line_number":540,"context_line":"        \"\"\"Create clone of the specified volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_9035e1dd","line":537,"range":{"start_line":537,"start_character":29,"end_line":537,"end_character":38},"updated":"2018-10-11 12:46:10.000000000","message":"Use proper python casing for variables. clone_only","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":685,"context_line":"        deleted \u003d False"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"        self.conn \u003d self._get_eternus_connection()"},{"line_number":688,"context_line":"        vol_instance \u003d self._find_lun(volume)"},{"line_number":689,"context_line":"        if not vol_instance:"},{"line_number":690,"context_line":"            return False"},{"line_number":691,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_90a881d9","line":688,"updated":"2018-10-11 12:46:10.000000000","message":"If the user is requesting that a volume be deleted and the driver finds that the volume is not present on the storage backend, then it should return that the call succeeded since it is the desired state requested.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b502a3af908795227df171a7ac42e5d19c600875","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        self.storage_name \u003d self._get_drvcfg(\u0027EternusIP\u0027)"},{"line_number":86,"context_line":"        self.set_sec \u003d self.configuration.fujitsu_set_func_timeout"},{"line_number":87,"context_line":"        if self.set_sec \u003c CONSTANTS.TIMEOUT_MIN_SECS or ("},{"line_number":88,"context_line":"                self.set_sec \u003e CONSTANTS.TIMEOUT_MAX_SECS):"},{"line_number":89,"context_line":"            msg \u003d (_(\u0027FJDXCommon __init__, \u0027"},{"line_number":90,"context_line":"                     \u0027setting timeout value: %(timeout)d is not available, \u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"5fc1f717_bfdfbf0a","line":87,"range":{"start_line":87,"start_character":11,"end_line":87,"end_character":52},"updated":"2019-03-21 15:20:40.000000000","message":"You can set min/max options on the Opt entries themselves so that this code isn\u0027t needed.","commit_id":"1d4cbcc4a7e6fc53a37adf41a119e664bb58ea74"}],"cinder/volume/drivers/fujitsu/eternus_dx/eternus_dx_fc.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":41,"context_line":"@interface.volumedriver"},{"line_number":42,"context_line":"class FJDXFCDriver(driver.FibreChannelDriver):"},{"line_number":43,"context_line":"    \"\"\"ETERNUS FC Cinder Volume Driver for Fujitsu ETERNUS DX S3 series.\"\"\""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":46,"context_line":"        super(FJDXFCDriver, self).__init__(*args, **kwargs)"},{"line_number":47,"context_line":"        self.configuration.append_config_values("}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_b0eb3d0f","line":44,"updated":"2018-10-11 12:46:10.000000000","message":"Needs VERSION and CI_WIKI_NAME variables set.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        self._stats \u003d None"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def check_for_setup_error(self):"},{"line_number":57,"context_line":"        pass"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def create_volume(self, volume):"},{"line_number":60,"context_line":"        \"\"\"Create volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_30df2d68","line":57,"updated":"2018-10-11 12:46:10.000000000","message":"Nothing to check?","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"63aaa82e043666011873fe2efbe208cb98fe0b04","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        \"\"\"Allow connection to connector and return connection info.\"\"\""},{"line_number":221,"context_line":"        wwpns \u003d connector.get(\u0027wwpns\u0027) if connector else None"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        LOG.info(\u0027initialize_connection, volume id: %(vid)s, \u0027"},{"line_number":224,"context_line":"                 \u0027wwpns: %(wwpns)s, Enter method.\u0027,"},{"line_number":225,"context_line":"                 {\u0027vid\u0027: volume[\u0027id\u0027], \u0027wwpns\u0027: wwpns})"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_90bf21fb","line":223,"range":{"start_line":223,"start_character":12,"end_line":223,"end_character":16},"updated":"2018-10-11 12:46:10.000000000","message":"These should all be debug level and can be better handled by using our trace decorator.","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5c067148e199c9e41b2a941c0e245de05efee628","unresolved":false,"context_lines":[{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":298,"context_line":"        \"\"\"Extend volume.\"\"\""},{"line_number":299,"context_line":"        LOG.info(\u0027extend_volume, \u0027"},{"line_number":300,"context_line":"                 \u0027volume id: %s, Enter method.\u0027, volume[\u0027id\u0027])"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        used_pool_name \u003d self.common.extend_volume("}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d9d5c51b","line":299,"range":{"start_line":299,"start_character":12,"end_line":299,"end_character":16},"updated":"2018-10-11 13:52:00.000000000","message":"This is a debug message","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5c067148e199c9e41b2a941c0e245de05efee628","unresolved":false,"context_lines":[{"line_number":302,"context_line":"        used_pool_name \u003d self.common.extend_volume("},{"line_number":303,"context_line":"            volume, new_size, timeout\u003dself.common.set_sec)"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        LOG.info(\u0027extend_volume, \u0027"},{"line_number":306,"context_line":"                 \u0027used pool name: %s, Exit method.\u0027, used_pool_name)"},{"line_number":307,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_f9da0148","line":305,"range":{"start_line":305,"start_character":12,"end_line":305,"end_character":16},"updated":"2018-10-11 13:52:00.000000000","message":"Same","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"}],"cinder/volume/drivers/fujitsu/eternus_dx/eternus_dx_iscsi.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5c067148e199c9e41b2a941c0e245de05efee628","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"import six"},{"line_number":26,"context_line":"import threading"},{"line_number":27,"context_line":"from cinder import context"},{"line_number":28,"context_line":"from cinder import exception"},{"line_number":29,"context_line":"from cinder import interface"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_796351ac","line":26,"updated":"2018-10-11 13:52:00.000000000","message":"Separate imports into groups -- see \"Import order template\" at\n    https://docs.openstack.org/hacking/latest/user/hacking.html","commit_id":"7898ebee08dafa35e8c69577934bf5cb3a4db6cf"}]}
