)]}'
{"cinder/volume/drivers/dothill/dothill_client.py":[{"author":{"_account_id":16793,"name":"Liucheng Jiang","email":"jiangliucheng@huawei.com","username":"Jiangliucheng"},"change_message_id":"9fe99d9ff2b04db2a0dd6e9c34357ee5fd35f1db","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        \"\"\"Modify an initiator name to match firmware requirements."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"           Initiator name cannot include certain characters and cannot exceed"},{"line_number":282,"context_line":"           15 bytes in \u0027T\u0027 firmware (32 bytes in \u0027G\u0027 firmware)."},{"line_number":283,"context_line":"        \"\"\""},{"line_number":284,"context_line":"        for ch in [\u0027,\u0027, \u0027\"\u0027, \u0027\\\\\u0027, \u0027\u003c\u0027, \u0027\u003e\u0027]:"},{"line_number":285,"context_line":"            if ch in hostname:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_476f11fc","line":282,"updated":"2015-08-25 16:30:39.000000000","message":"The indent of This last two line comments, remove 3 space char may be better..","commit_id":"2c5f154171c5c62c63fc239a46b448ded0a0041f"}],"cinder/volume/drivers/dothill/dothill_common.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ad6863cdd204017af6e76ab4ed49d71ed15c84b3","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        ssl_verify \u003d False"},{"line_number":76,"context_line":"        if (self.api_protocol \u003d\u003d \u0027https\u0027 and"},{"line_number":77,"context_line":"           self.config.dothill_verify_certificate):"},{"line_number":78,"context_line":"            ssl_verify \u003d self.config.dothill_verify_certificate_path or True"},{"line_number":79,"context_line":"        self.client \u003d dothill.DotHillClient(self.config.san_ip,"},{"line_number":80,"context_line":"                                            self.config.san_login,"},{"line_number":81,"context_line":"                                            self.config.san_password,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_3fc33d59","line":78,"updated":"2015-08-24 18:36:50.000000000","message":"So whether a path is specified or not, ssl_verify is set to true. Seems like it would be simpler just to do:\n\nsslverify \u003d self.api_protocol \u003d\u003d \u0027https\u0027 and self.config.dothill_verify_certificate","commit_id":"aaa51e1ed7f566b78d192163ef8206f2e1e9b4cb"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"defd174ac0e7f2417311efc7010da3d43fb2569d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        ssl_verify \u003d False"},{"line_number":76,"context_line":"        if (self.api_protocol \u003d\u003d \u0027https\u0027 and"},{"line_number":77,"context_line":"           self.config.dothill_verify_certificate):"},{"line_number":78,"context_line":"            ssl_verify \u003d self.config.dothill_verify_certificate_path or True"},{"line_number":79,"context_line":"        self.client \u003d dothill.DotHillClient(self.config.san_ip,"},{"line_number":80,"context_line":"                                            self.config.san_login,"},{"line_number":81,"context_line":"                                            self.config.san_password,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_8546b61f","line":78,"in_reply_to":"fa1b9901_0a34f5f8","updated":"2015-08-24 19:14:17.000000000","message":"Then the client code is wrong.\n\nThe problem is ssl_verify is only used for the \"verify\" argument in all of the requests calls. This is just a boolean argument that tells the requests library whether to attempt to verify the SSL certificate or not. I believe by default it will just attempt to use the default path.\n\nIf you want to use the value of dothill_verify_certificate_path, which as an end user configuring this value that would be my expectation, then you need to have the environment variable REQUESTS_CA_BUNDLE set to the path, or set a tuple assignment to the certs kwarg to do client cert.","commit_id":"aaa51e1ed7f566b78d192163ef8206f2e1e9b4cb"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"1c4785f489331f2b48ef4d2f6e47327a99584026","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        ssl_verify \u003d False"},{"line_number":76,"context_line":"        if (self.api_protocol \u003d\u003d \u0027https\u0027 and"},{"line_number":77,"context_line":"           self.config.dothill_verify_certificate):"},{"line_number":78,"context_line":"            ssl_verify \u003d self.config.dothill_verify_certificate_path or True"},{"line_number":79,"context_line":"        self.client \u003d dothill.DotHillClient(self.config.san_ip,"},{"line_number":80,"context_line":"                                            self.config.san_login,"},{"line_number":81,"context_line":"                                            self.config.san_password,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_0a34f5f8","line":78,"in_reply_to":"fa1b9901_3fc33d59","updated":"2015-08-24 19:06:34.000000000","message":"ssl_verify \u003d self.config.dothill_verify_certificate_path --\u003e It can be used for certificates which are not issued by recognized certificate authority like self signed open SSL certificates.\n\nssl_verify \u003d True    ------\u003e It can be used for certificates issued by recognized certificate authority like DigiCert. In this case standard path will be searched for certificates for example in ubuntu 14.04, it is /etc/ssl/certs","commit_id":"aaa51e1ed7f566b78d192163ef8206f2e1e9b4cb"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"d7f27bff470b8890968e82cba3066023f817f900","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        ssl_verify \u003d False"},{"line_number":76,"context_line":"        if (self.api_protocol \u003d\u003d \u0027https\u0027 and"},{"line_number":77,"context_line":"           self.config.dothill_verify_certificate):"},{"line_number":78,"context_line":"            ssl_verify \u003d self.config.dothill_verify_certificate_path or True"},{"line_number":79,"context_line":"        self.client \u003d dothill.DotHillClient(self.config.san_ip,"},{"line_number":80,"context_line":"                                            self.config.san_login,"},{"line_number":81,"context_line":"                                            self.config.san_password,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_854f96bd","line":78,"in_reply_to":"fa1b9901_8546b61f","updated":"2015-08-24 19:26:35.000000000","message":"You can pass verify the path to a CA_BUNDLE file with certificates of trusted CAs. This list of trusted CAs can also be specified through the REQUESTS_CA_BUNDLE environment variable.\nhttp://www.python-requests.org/en/latest/user/advanced/#ssl-cert-verification\n\nI have tested the code with open SSL certificate like below:\nrequests.get(url, verify\u003d\"/home/vedams/dothill_array.crt\")\n\nIt worked for me.","commit_id":"aaa51e1ed7f566b78d192163ef8206f2e1e9b4cb"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"ff6384c8784e030f00b2910aee878c1eb5aae5b8","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        ssl_verify \u003d False"},{"line_number":76,"context_line":"        if (self.api_protocol \u003d\u003d \u0027https\u0027 and"},{"line_number":77,"context_line":"           self.config.dothill_verify_certificate):"},{"line_number":78,"context_line":"            ssl_verify \u003d self.config.dothill_verify_certificate_path or True"},{"line_number":79,"context_line":"        self.client \u003d dothill.DotHillClient(self.config.san_ip,"},{"line_number":80,"context_line":"                                            self.config.san_login,"},{"line_number":81,"context_line":"                                            self.config.san_password,"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_97202d4b","line":78,"in_reply_to":"fa1b9901_854f96bd","updated":"2015-08-24 19:42:18.000000000","message":"Ah, that link was the documentation I had read. It doesn\u0027t mention anything about being able to pass in a path to verify rather than true/false. I wasn\u0027t aware of that being an option.\n\nIf you\u0027ve tested that and it works, then great. Thanks for letting me know!","commit_id":"aaa51e1ed7f566b78d192163ef8206f2e1e9b4cb"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"961058febc4d7bb466d652fcf72a357955893cee","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"common_opt \u003d ["},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027dothill_backend_name\u0027,"},{"line_number":35,"context_line":"               default\u003d\u0027A\u0027,"},{"line_number":36,"context_line":"               help\u003d\"Pool or Vdisk name to use for volume creation.\"),"},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027dothill_backend_type\u0027,"},{"line_number":38,"context_line":"               choices\u003d[\u0027linear\u0027, \u0027virtual\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_093620e7","line":35,"updated":"2015-08-25 12:03:39.000000000","message":"Could you please specify more user-friendly default name?","commit_id":"2c5f154171c5c62c63fc239a46b448ded0a0041f"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"d373abd0d4718b9923c485d30e647f4cc7b35b16","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"common_opt \u003d ["},{"line_number":34,"context_line":"    cfg.StrOpt(\u0027dothill_backend_name\u0027,"},{"line_number":35,"context_line":"               default\u003d\u0027A\u0027,"},{"line_number":36,"context_line":"               help\u003d\"Pool or Vdisk name to use for volume creation.\"),"},{"line_number":37,"context_line":"    cfg.StrOpt(\u0027dothill_backend_type\u0027,"},{"line_number":38,"context_line":"               choices\u003d[\u0027linear\u0027, \u0027virtual\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_69dd5c13","line":35,"in_reply_to":"fa1b9901_093620e7","updated":"2015-08-25 12:11:30.000000000","message":"DotHilll Array only supports virtual pools \u0027A\u0027 and \u0027B\u0027 so we are specifying A as default virtual pool.","commit_id":"2c5f154171c5c62c63fc239a46b448ded0a0041f"}],"cinder/volume/drivers/lenovo/lenovo_common.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"961058febc4d7bb466d652fcf72a357955893cee","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"common_opt \u003d ["},{"line_number":23,"context_line":"    cfg.StrOpt(\u0027lenovo_backend_name\u0027,"},{"line_number":24,"context_line":"               default\u003d\u0027A\u0027,"},{"line_number":25,"context_line":"               help\u003d\"Pool or Vdisk name to use for volume creation.\"),"},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027lenovo_backend_type\u0027,"},{"line_number":27,"context_line":"               choices\u003d[\u0027linear\u0027, \u0027virtual\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_8950f00b","line":24,"updated":"2015-08-25 12:03:39.000000000","message":"The same here","commit_id":"2c5f154171c5c62c63fc239a46b448ded0a0041f"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"d373abd0d4718b9923c485d30e647f4cc7b35b16","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"common_opt \u003d ["},{"line_number":23,"context_line":"    cfg.StrOpt(\u0027lenovo_backend_name\u0027,"},{"line_number":24,"context_line":"               default\u003d\u0027A\u0027,"},{"line_number":25,"context_line":"               help\u003d\"Pool or Vdisk name to use for volume creation.\"),"},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027lenovo_backend_type\u0027,"},{"line_number":27,"context_line":"               choices\u003d[\u0027linear\u0027, \u0027virtual\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_8915509c","line":24,"in_reply_to":"fa1b9901_8950f00b","updated":"2015-08-25 12:11:30.000000000","message":"only supports virtual pools \u0027A\u0027 and \u0027B\u0027 so we are specifying A as default virtual pool.","commit_id":"2c5f154171c5c62c63fc239a46b448ded0a0041f"}],"cinder/volume/drivers/san/hp/hpmsa_common.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"961058febc4d7bb466d652fcf72a357955893cee","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"common_opt \u003d ["},{"line_number":23,"context_line":"    cfg.StrOpt(\u0027hpmsa_backend_name\u0027,"},{"line_number":24,"context_line":"               default\u003d\u0027A\u0027,"},{"line_number":25,"context_line":"               help\u003d\"Pool or Vdisk name to use for volume creation.\"),"},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027hpmsa_backend_type\u0027,"},{"line_number":27,"context_line":"               choices\u003d[\u0027linear\u0027, \u0027virtual\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_0964e0e2","line":24,"updated":"2015-08-25 12:03:39.000000000","message":"The same","commit_id":"2c5f154171c5c62c63fc239a46b448ded0a0041f"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"d373abd0d4718b9923c485d30e647f4cc7b35b16","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"common_opt \u003d ["},{"line_number":23,"context_line":"    cfg.StrOpt(\u0027hpmsa_backend_name\u0027,"},{"line_number":24,"context_line":"               default\u003d\u0027A\u0027,"},{"line_number":25,"context_line":"               help\u003d\"Pool or Vdisk name to use for volume creation.\"),"},{"line_number":26,"context_line":"    cfg.StrOpt(\u0027hpmsa_backend_type\u0027,"},{"line_number":27,"context_line":"               choices\u003d[\u0027linear\u0027, \u0027virtual\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_a92054f8","line":24,"in_reply_to":"fa1b9901_0964e0e2","updated":"2015-08-25 12:11:30.000000000","message":"only supports virtual pools \u0027A\u0027 and \u0027B\u0027 so we are specifying A as default virtual pool.","commit_id":"2c5f154171c5c62c63fc239a46b448ded0a0041f"}]}
