)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"5c36827613c355cda203170e3db38948a653efd9","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch adds CHAP authentication support for the NetApp E-Series"},{"line_number":10,"context_line":"iSCSI driver by reusing the existing Cinder configuration options"},{"line_number":11,"context_line":"use_chap_auth, chap_username, and chap_password."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Jose Porrua \u003cjose.porrua@netapp.com\u003e"},{"line_number":14,"context_line":"Co-Authored-By: Rushil Chugh \u003crushil@netapp.com\u003e"},{"line_number":15,"context_line":"Partially-implements bp netapp-add-chap-authentication-iscsi"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a8ffd7b_81749cfd","line":12,"updated":"2015-11-24 15:22:33.000000000","message":"I think this needs a DocImpact since you are adding support to the driver.","commit_id":"8f27db53f9bbc7d9c3ffe84ec4ad40163ca36983"},{"author":{"_account_id":2417,"name":"Ben Swartzlander","email":"ben@swartzlander.org","username":"bswartz"},"change_message_id":"47166dfba33c5c67fd9d101e3bba44c65731b634","unresolved":false,"context_lines":[{"line_number":13,"context_line":"DocImpact"},{"line_number":14,"context_line":"Co-Authored-By: Jose Porrua \u003cjose.porrua@netapp.com\u003e"},{"line_number":15,"context_line":"Co-Authored-By: Rushil Chugh \u003crushil@netapp.com\u003e"},{"line_number":16,"context_line":"Partially-implements bp netapp-add-chap-authentication-iscsi"},{"line_number":17,"context_line":"Change-Id: I5353fa8683e975e66a6b15d1db99bb6920cd0511"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"5aef4532_e6ef1085","line":16,"updated":"2016-03-09 18:02:42.000000000","message":"Implements: netapp-eseries-chap-authentication\n\nI split the BP because we shouldn\u0027t reuse the same BP for 2 features.","commit_id":"9766ec58c135894771f4bee64ed0b54dacfd7e53"}],"cinder/volume/drivers/netapp/eseries/library.py":[{"author":{"_account_id":11903,"name":"Anthony Lee","email":"anthony.mic.lee@hpe.com","username":"leeantho"},"change_message_id":"84e1365449d57cd30b36e902362f6a7f2936a8c1","unresolved":false,"context_lines":[{"line_number":866,"context_line":"                msg \u003d _(\"E-series proxy API version %(current_version)s does \""},{"line_number":867,"context_line":"                        \"not support CHAP authentication. The proxy version \""},{"line_number":868,"context_line":"                        \"must be at least %(min_version)s.\")"},{"line_number":869,"context_line":"                min_version \u003d self.features.CHAP_AUTHENTICATION.minimum_version"},{"line_number":870,"context_line":"                msg_args \u003d {\u0027current_version\u0027: self._client.api_version,"},{"line_number":871,"context_line":"                            \u0027min_version\u0027: min_version}"},{"line_number":872,"context_line":"                LOG.info(msg % msg_args)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_9cce4782","line":869,"updated":"2015-12-03 19:18:48.000000000","message":"It looks like this should be:\n\nself._client.features.CHAP_AUTHENTICATION.minimum_version\n\ninstead of:\n\nself.features.CHAP_AUTHENTICATION.minimum_version\n\nAll unit tests were passing so coming into this else doesn\u0027t seem to be covered. Maybe a new unit test can be added to check the case where E-series proxy API does not support CHAP authentication?","commit_id":"92a34aa7b3ffc1a21b0033806541b5083e9876b9"},{"author":{"_account_id":17950,"name":"Erik Johannes","email":"erik.johannes@netapp.com","username":"ejohannes"},"change_message_id":"11d69a524d03752cb906b810511edc032031b8e5","unresolved":false,"context_lines":[{"line_number":866,"context_line":"                msg \u003d _(\"E-series proxy API version %(current_version)s does \""},{"line_number":867,"context_line":"                        \"not support CHAP authentication. The proxy version \""},{"line_number":868,"context_line":"                        \"must be at least %(min_version)s.\")"},{"line_number":869,"context_line":"                min_version \u003d self.features.CHAP_AUTHENTICATION.minimum_version"},{"line_number":870,"context_line":"                msg_args \u003d {\u0027current_version\u0027: self._client.api_version,"},{"line_number":871,"context_line":"                            \u0027min_version\u0027: min_version}"},{"line_number":872,"context_line":"                LOG.info(msg % msg_args)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_ab575a56","line":869,"in_reply_to":"7a740942_9cce4782","updated":"2015-12-09 03:43:54.000000000","message":"Done.  I also added a unit test to run through that section of code.","commit_id":"92a34aa7b3ffc1a21b0033806541b5083e9876b9"},{"author":{"_account_id":9003,"name":"Tom Barron","email":"tpb@dyncloud.net","username":"tbarron"},"change_message_id":"1e79148a3f2c2178c89dfefb1caf81463863f2d0","unresolved":false,"context_lines":[{"line_number":868,"context_line":"                msg \u003d _(\"E-series proxy API version %(current_version)s does \""},{"line_number":869,"context_line":"                        \"not support CHAP authentication. The proxy version \""},{"line_number":870,"context_line":"                        \"must be at least %(min_version)s.\")"},{"line_number":871,"context_line":"                min_version \u003d \\"},{"line_number":872,"context_line":"                    self._client.features.CHAP_AUTHENTICATION.minimum_version"},{"line_number":873,"context_line":"                msg_args \u003d {\u0027current_version\u0027: self._client.api_version,"},{"line_number":874,"context_line":"                            \u0027min_version\u0027: min_version}"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_a999ad7a","line":871,"updated":"2015-12-08 22:44:58.000000000","message":"We\u0027re supposed to use parens rather than \u0027\\\u0027 for line continuations.","commit_id":"fa88276b25334513e0667699d9075287fa5229e0"},{"author":{"_account_id":17950,"name":"Erik Johannes","email":"erik.johannes@netapp.com","username":"ejohannes"},"change_message_id":"66f6b8ac28dc18c15cf13b6baa77690e33066ffb","unresolved":false,"context_lines":[{"line_number":868,"context_line":"                msg \u003d _(\"E-series proxy API version %(current_version)s does \""},{"line_number":869,"context_line":"                        \"not support CHAP authentication. The proxy version \""},{"line_number":870,"context_line":"                        \"must be at least %(min_version)s.\")"},{"line_number":871,"context_line":"                min_version \u003d \\"},{"line_number":872,"context_line":"                    self._client.features.CHAP_AUTHENTICATION.minimum_version"},{"line_number":873,"context_line":"                msg_args \u003d {\u0027current_version\u0027: self._client.api_version,"},{"line_number":874,"context_line":"                            \u0027min_version\u0027: min_version}"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a740942_d0e6eeaf","line":871,"in_reply_to":"7a740942_a999ad7a","updated":"2015-12-09 17:01:32.000000000","message":"Done","commit_id":"fa88276b25334513e0667699d9075287fa5229e0"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"cffce2f6354046411e14059a99c18a07c660c9fa","unresolved":false,"context_lines":[{"line_number":1284,"context_line":"                               CHAP_AUTHENTICATION.minimum_version)"},{"line_number":1285,"context_line":"                msg_args \u003d {\u0027current_version\u0027: self._client.api_version,"},{"line_number":1286,"context_line":"                            \u0027min_version\u0027: min_version}"},{"line_number":1287,"context_line":"                LOG.info(msg % msg_args)"},{"line_number":1288,"context_line":"                raise exception.NetAppDriverException(msg % msg_args)"},{"line_number":1289,"context_line":"        return properties"},{"line_number":1290,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9aed3d3a_506c959b","line":1287,"range":{"start_line":1287,"start_character":29,"end_line":1287,"end_character":30},"updated":"2016-03-01 04:16:32.000000000","message":"% \u003e ,\n\nOr better yet, since you are using this for both the logging and exception, do the string formatting up front and assign to a variable, then just pass that variable to both the LOG.info call and the exception.","commit_id":"626f4494c65b2d7633e660a9ad9066387aec26e2"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"bbf409c47e76541c15991f7fa87a18a66e6344a7","unresolved":false,"context_lines":[{"line_number":1323,"context_line":"                raise exception.NetAppDriverException(msg)"},{"line_number":1324,"context_line":"        return properties"},{"line_number":1325,"context_line":""},{"line_number":1326,"context_line":"    def _configure_chap(self, target_iqn):"},{"line_number":1327,"context_line":"        chap_username \u003d self.DEFAULT_CHAP_USER_NAME"},{"line_number":1328,"context_line":"        if target_iqn in self._chap_passwords:"},{"line_number":1329,"context_line":"            chap_password \u003d self._chap_passwords[target_iqn]"},{"line_number":1330,"context_line":"        else:"},{"line_number":1331,"context_line":"            chap_password \u003d volume_utils.generate_password()"},{"line_number":1332,"context_line":"            self._chap_passwords[target_iqn] \u003d chap_password"},{"line_number":1333,"context_line":"        self._client.set_chap_authentication(target_iqn,"},{"line_number":1334,"context_line":"                                             chap_username,"},{"line_number":1335,"context_line":"                                             chap_password)"},{"line_number":1336,"context_line":"        return chap_username, chap_password"},{"line_number":1337,"context_line":""},{"line_number":1338,"context_line":"    def _get_iscsi_service_details(self):"},{"line_number":1339,"context_line":"        \"\"\"Gets iscsi iqn, ip and port information.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"dab17558_80a5b705","line":1336,"range":{"start_line":1326,"start_character":4,"end_line":1336,"end_character":43},"updated":"2016-05-06 18:40:14.000000000","message":"If you are only storing them (to look up later) on this driver class instance with self._chap_passwords won\u0027t you have problems if you restart c-vol and try to attach a volume to the same iqn? Or for A-A HA deployment scenarios?","commit_id":"4eedb277a1f4e6ba75ad0771ff732cc4c813c5c0"},{"author":{"_account_id":16821,"name":"Michael Price","email":"michael.price@netapp.com","username":"michael.price"},"change_message_id":"f31b7497f664efa8764e7a0ccccb16537ad2f86e","unresolved":false,"context_lines":[{"line_number":1323,"context_line":"                raise exception.NetAppDriverException(msg)"},{"line_number":1324,"context_line":"        return properties"},{"line_number":1325,"context_line":""},{"line_number":1326,"context_line":"    def _configure_chap(self, target_iqn):"},{"line_number":1327,"context_line":"        chap_username \u003d self.DEFAULT_CHAP_USER_NAME"},{"line_number":1328,"context_line":"        if target_iqn in self._chap_passwords:"},{"line_number":1329,"context_line":"            chap_password \u003d self._chap_passwords[target_iqn]"},{"line_number":1330,"context_line":"        else:"},{"line_number":1331,"context_line":"            chap_password \u003d volume_utils.generate_password()"},{"line_number":1332,"context_line":"            self._chap_passwords[target_iqn] \u003d chap_password"},{"line_number":1333,"context_line":"        self._client.set_chap_authentication(target_iqn,"},{"line_number":1334,"context_line":"                                             chap_username,"},{"line_number":1335,"context_line":"                                             chap_password)"},{"line_number":1336,"context_line":"        return chap_username, chap_password"},{"line_number":1337,"context_line":""},{"line_number":1338,"context_line":"    def _get_iscsi_service_details(self):"},{"line_number":1339,"context_line":"        \"\"\"Gets iscsi iqn, ip and port information.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"dab17558_0b65e7b3","line":1336,"range":{"start_line":1326,"start_character":4,"end_line":1336,"end_character":43},"in_reply_to":"dab17558_80a5b705","updated":"2016-05-10 18:50:55.000000000","message":"Hi Patrick, given that we\u0027re actually re-setting the password on the target device each time, storing the password doesn\u0027t make much sense. I\u0027m going to remove that block of code.","commit_id":"4eedb277a1f4e6ba75ad0771ff732cc4c813c5c0"}]}
