)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"b4459753476ab9c5faf299734b942487bd0e3c81","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Eric Young \u003ceric.young@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-09-29 10:58:11 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"ScaleIO Driver - adding cache and refactoring tests."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Changing static lists to a simple cache."},{"line_number":10,"context_line":"Refactoring some of the unit tests to simplify maintenance."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f515b1d_811742ee","line":7,"range":{"start_line":7,"start_character":51,"end_line":7,"end_character":52},"updated":"2017-10-05 02:05:01.000000000","message":"If you happen to upload a new patchset for some reason, please remove the \u0027.\u0027 from the summary line.","commit_id":"10440ef2d656c9e569715bedae604be54489e701"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"cb5be3f011f6d56279753d64202c31415d8d5eb1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Eric Young \u003ceric.young@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-09-29 10:58:11 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"ScaleIO Driver - adding cache and refactoring tests."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Changing static lists to a simple cache."},{"line_number":10,"context_line":"Refactoring some of the unit tests to simplify maintenance."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f515b1d_16437615","line":7,"range":{"start_line":7,"start_character":51,"end_line":7,"end_character":52},"in_reply_to":"7f515b1d_811742ee","updated":"2017-10-05 20:42:18.000000000","message":"Done","commit_id":"10440ef2d656c9e569715bedae604be54489e701"}],"cinder/volume/drivers/dell_emc/scaleio/driver.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b235fba17e26ff24320bd6291d280444d3cd98ee","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    VERSION \u003d \"2.0.3\""},{"line_number":138,"context_line":"    # Major changes"},{"line_number":139,"context_line":"    # 2.0.1: Added support for SIO 1.3x in addition to 2.0.x"},{"line_number":140,"context_line":"    # 2.0.2: Added consistency group support to generic volume groups"},{"line_number":141,"context_line":"    # 2.0.3: Added simple cache for storage pool and protection domain info"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    # ThirdPartySystems wiki"},{"line_number":144,"context_line":"    CI_WIKI_NAME \u003d \"EMC_ScaleIO_CI\""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff5d4b2f_129f3e51","line":141,"range":{"start_line":140,"start_character":5,"end_line":141,"end_character":75},"updated":"2017-09-19 18:01:34.000000000","message":"Unrelated to this change, but in the future this should be updated to be a docstring so it gets automatically included in our documentation.","commit_id":"f0be56cea6ac39aefdb8869ec1ac96b482c6f97b"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"9fee72cf7c362b790beb416cc6dcab9420c5beee","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    VERSION \u003d \"2.0.3\""},{"line_number":138,"context_line":"    # Major changes"},{"line_number":139,"context_line":"    # 2.0.1: Added support for SIO 1.3x in addition to 2.0.x"},{"line_number":140,"context_line":"    # 2.0.2: Added consistency group support to generic volume groups"},{"line_number":141,"context_line":"    # 2.0.3: Added simple cache for storage pool and protection domain info"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    # ThirdPartySystems wiki"},{"line_number":144,"context_line":"    CI_WIKI_NAME \u003d \"EMC_ScaleIO_CI\""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_31cc5269","line":141,"range":{"start_line":140,"start_character":5,"end_line":141,"end_character":75},"in_reply_to":"ff5d4b2f_129f3e51","updated":"2017-09-25 13:56:27.000000000","message":"changed while I was here","commit_id":"f0be56cea6ac39aefdb8869ec1ac96b482c6f97b"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b235fba17e26ff24320bd6291d280444d3cd98ee","unresolved":false,"context_lines":[{"line_number":1371,"context_line":""},{"line_number":1372,"context_line":"        if r.status_code !\u003d http_client.OK:"},{"line_number":1373,"context_line":"            msg \u003d (_(\"Error getting pool properties from id %(pool_id)s: \""},{"line_number":1374,"context_line":"                     \"%(err_msg)s.\")"},{"line_number":1375,"context_line":"                   % {\u0027pool_id\u0027: pool_id})"},{"line_number":1376,"context_line":"            LOG.error(msg)"},{"line_number":1377,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1378,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff5d4b2f_5204967b","line":1375,"range":{"start_line":1374,"start_character":0,"end_line":1375,"end_character":42},"updated":"2017-09-19 18:01:34.000000000","message":"The err_msg is missing in the variables being passed in.","commit_id":"f0be56cea6ac39aefdb8869ec1ac96b482c6f97b"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"9fee72cf7c362b790beb416cc6dcab9420c5beee","unresolved":false,"context_lines":[{"line_number":1371,"context_line":""},{"line_number":1372,"context_line":"        if r.status_code !\u003d http_client.OK:"},{"line_number":1373,"context_line":"            msg \u003d (_(\"Error getting pool properties from id %(pool_id)s: \""},{"line_number":1374,"context_line":"                     \"%(err_msg)s.\")"},{"line_number":1375,"context_line":"                   % {\u0027pool_id\u0027: pool_id})"},{"line_number":1376,"context_line":"            LOG.error(msg)"},{"line_number":1377,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1378,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_9179c694","line":1375,"range":{"start_line":1374,"start_character":0,"end_line":1375,"end_character":42},"in_reply_to":"ff5d4b2f_5204967b","updated":"2017-09-25 13:56:27.000000000","message":"Good catch! Fixed here and in one other place that was missed.","commit_id":"f0be56cea6ac39aefdb8869ec1ac96b482c6f97b"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c4d1bee59bcbfd21e7cf590a6f335e73af698f68","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            if pd is None or sp is None:"},{"line_number":294,"context_line":"                msg \u003d (_(\"Invalid storage pool name. The correct format is: \""},{"line_number":295,"context_line":"                         \"protection_domain:storage_pool. \""},{"line_number":296,"context_line":"                         \"Value supplied was: %s\"), pool)"},{"line_number":297,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            properties \u003d self._get_storage_pool_properties(pd, sp)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_74111b5d","line":296,"range":{"start_line":296,"start_character":50,"end_line":296,"end_character":51},"updated":"2017-09-28 22:47:00.000000000","message":"Same here as below.","commit_id":"f02852207ac51f2c2214f46003650454bff16e77"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"e24cf4a864edceb7eca15a6e304e43377a561a02","unresolved":false,"context_lines":[{"line_number":293,"context_line":"            if pd is None or sp is None:"},{"line_number":294,"context_line":"                msg \u003d (_(\"Invalid storage pool name. The correct format is: \""},{"line_number":295,"context_line":"                         \"protection_domain:storage_pool. \""},{"line_number":296,"context_line":"                         \"Value supplied was: %s\"), pool)"},{"line_number":297,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            properties \u003d self._get_storage_pool_properties(pd, sp)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_ded22228","line":296,"range":{"start_line":296,"start_character":50,"end_line":296,"end_character":51},"in_reply_to":"7f515b1d_74111b5d","updated":"2017-09-29 13:06:24.000000000","message":"fixed","commit_id":"f02852207ac51f2c2214f46003650454bff16e77"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c4d1bee59bcbfd21e7cf590a6f335e73af698f68","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            properties \u003d self._get_storage_pool_properties(pd, sp)"},{"line_number":300,"context_line":"            if properties is None:"},{"line_number":301,"context_line":"                msg \u003d (_(\"Unable to retrieve properties for pool, %s\"), pool)"},{"line_number":302,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":303,"context_line":"            padded \u003d properties[\u0027zeroPaddingEnabled\u0027]"},{"line_number":304,"context_line":"            if not padded:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_d428cf97","line":301,"range":{"start_line":301,"start_character":70,"end_line":301,"end_character":71},"updated":"2017-09-28 22:47:00.000000000","message":"You\u0027re making msg a tuple, which I don\u0027t think will look the way you want it for that exception message.","commit_id":"f02852207ac51f2c2214f46003650454bff16e77"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"e24cf4a864edceb7eca15a6e304e43377a561a02","unresolved":false,"context_lines":[{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            properties \u003d self._get_storage_pool_properties(pd, sp)"},{"line_number":300,"context_line":"            if properties is None:"},{"line_number":301,"context_line":"                msg \u003d (_(\"Unable to retrieve properties for pool, %s\"), pool)"},{"line_number":302,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":303,"context_line":"            padded \u003d properties[\u0027zeroPaddingEnabled\u0027]"},{"line_number":304,"context_line":"            if not padded:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_9ec82a74","line":301,"range":{"start_line":301,"start_character":70,"end_line":301,"end_character":71},"in_reply_to":"7f515b1d_d428cf97","updated":"2017-09-29 13:06:24.000000000","message":"good catch. fixed","commit_id":"f02852207ac51f2c2214f46003650454bff16e77"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"2c0a4db9fd8a2ed822539fe3cea6593834017a61","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        # validate the storage pools and check if zero padding is enabled"},{"line_number":290,"context_line":"        for pool in self.storage_pools:"},{"line_number":291,"context_line":"            pd \u003d pool.split(\u0027:\u0027)[0]"},{"line_number":292,"context_line":"            sp \u003d pool.split(\u0027:\u0027)[1]"},{"line_number":293,"context_line":"            if pd is None or sp is None:"},{"line_number":294,"context_line":"                msg \u003d (_(\"Invalid storage pool name. The correct format is: \""},{"line_number":295,"context_line":"                         \"protection_domain:storage_pool. \""},{"line_number":296,"context_line":"                         \"Value supplied was: %s\"), pool)"},{"line_number":297,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            properties \u003d self._get_storage_pool_properties(pd, sp)"},{"line_number":300,"context_line":"            if properties is None:"},{"line_number":301,"context_line":"                msg \u003d (_(\"Unable to retrieve properties for pool, %s\"), pool)"},{"line_number":302,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":303,"context_line":"            padded \u003d properties[\u0027zeroPaddingEnabled\u0027]"},{"line_number":304,"context_line":"            if not padded:"},{"line_number":305,"context_line":"                LOG.warning(\"Zero padding is disabled for pool, %s. \""},{"line_number":306,"context_line":"                            \"This could lead to existing data being \""},{"line_number":307,"context_line":"                            \"accessible on new thick provisioned volumes. \""},{"line_number":308,"context_line":"                            \"Consult the ScaleIO product documentation \""},{"line_number":309,"context_line":"                            \"for information on how to enable zero padding \""},{"line_number":310,"context_line":"                            \"and prevent this from occurring.\","},{"line_number":311,"context_line":"                            pool)"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    def _build_storage_pool_list(self):"},{"line_number":314,"context_line":"        \"\"\"Build storage pool list"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_3457235b","line":311,"range":{"start_line":290,"start_character":7,"end_line":311,"end_character":33},"updated":"2017-09-28 22:41:13.000000000","message":"Wow, that\u0027s a lot to check for valid data; any thoughts on stuffing this into it\u0027s own helper function... like a \"_check_for_pool\" or something?","commit_id":"f02852207ac51f2c2214f46003650454bff16e77"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"e24cf4a864edceb7eca15a6e304e43377a561a02","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        # validate the storage pools and check if zero padding is enabled"},{"line_number":290,"context_line":"        for pool in self.storage_pools:"},{"line_number":291,"context_line":"            pd \u003d pool.split(\u0027:\u0027)[0]"},{"line_number":292,"context_line":"            sp \u003d pool.split(\u0027:\u0027)[1]"},{"line_number":293,"context_line":"            if pd is None or sp is None:"},{"line_number":294,"context_line":"                msg \u003d (_(\"Invalid storage pool name. The correct format is: \""},{"line_number":295,"context_line":"                         \"protection_domain:storage_pool. \""},{"line_number":296,"context_line":"                         \"Value supplied was: %s\"), pool)"},{"line_number":297,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"            properties \u003d self._get_storage_pool_properties(pd, sp)"},{"line_number":300,"context_line":"            if properties is None:"},{"line_number":301,"context_line":"                msg \u003d (_(\"Unable to retrieve properties for pool, %s\"), pool)"},{"line_number":302,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":303,"context_line":"            padded \u003d properties[\u0027zeroPaddingEnabled\u0027]"},{"line_number":304,"context_line":"            if not padded:"},{"line_number":305,"context_line":"                LOG.warning(\"Zero padding is disabled for pool, %s. \""},{"line_number":306,"context_line":"                            \"This could lead to existing data being \""},{"line_number":307,"context_line":"                            \"accessible on new thick provisioned volumes. \""},{"line_number":308,"context_line":"                            \"Consult the ScaleIO product documentation \""},{"line_number":309,"context_line":"                            \"for information on how to enable zero padding \""},{"line_number":310,"context_line":"                            \"and prevent this from occurring.\","},{"line_number":311,"context_line":"                            pool)"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    def _build_storage_pool_list(self):"},{"line_number":314,"context_line":"        \"\"\"Build storage pool list"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_5ea4f2b9","line":311,"range":{"start_line":290,"start_character":7,"end_line":311,"end_character":33},"in_reply_to":"7f515b1d_3457235b","updated":"2017-09-29 13:06:24.000000000","message":"I had not considered that but will in the future. I need to remove some deprecated options in queens and will consider this as part of that cleanup.","commit_id":"f02852207ac51f2c2214f46003650454bff16e77"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c4d1bee59bcbfd21e7cf590a6f335e73af698f68","unresolved":false,"context_lines":[{"line_number":1269,"context_line":"    def _get_protection_domain_properties(self, domain_name):"},{"line_number":1270,"context_line":"        \"\"\"Get the props of the configured protection domain\"\"\""},{"line_number":1271,"context_line":"        if not domain_name:"},{"line_number":1272,"context_line":"            msg \u003d (_(\"Error getting domain id from None name.\"))"},{"line_number":1273,"context_line":"            LOG.error(msg)"},{"line_number":1274,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1275,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_140c273f","line":1272,"range":{"start_line":1272,"start_character":18,"end_line":1272,"end_character":19},"updated":"2017-09-28 22:47:00.000000000","message":"Outer () not really needed.","commit_id":"f02852207ac51f2c2214f46003650454bff16e77"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"e24cf4a864edceb7eca15a6e304e43377a561a02","unresolved":false,"context_lines":[{"line_number":1269,"context_line":"    def _get_protection_domain_properties(self, domain_name):"},{"line_number":1270,"context_line":"        \"\"\"Get the props of the configured protection domain\"\"\""},{"line_number":1271,"context_line":"        if not domain_name:"},{"line_number":1272,"context_line":"            msg \u003d (_(\"Error getting domain id from None name.\"))"},{"line_number":1273,"context_line":"            LOG.error(msg)"},{"line_number":1274,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1275,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_feacbe9f","line":1272,"range":{"start_line":1272,"start_character":18,"end_line":1272,"end_character":19},"in_reply_to":"7f515b1d_140c273f","updated":"2017-09-29 13:06:24.000000000","message":"removed","commit_id":"f02852207ac51f2c2214f46003650454bff16e77"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"1c91fd85027e83e5112b9ba6537d993e00af7b4d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 - 2017 Dell EMC"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_c2d99c22","line":1,"updated":"2017-10-05 18:53:18.000000000","message":"This isn\u0027t the right copyright header to use now, but not my issue anymore. :)","commit_id":"10440ef2d656c9e569715bedae604be54489e701"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"00c7670207ddc1532d89cf2295374816b7644876","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 - 2017 Dell EMC"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_8575ee9a","line":1,"in_reply_to":"7f515b1d_824ba485","updated":"2017-10-05 19:02:01.000000000","message":"No, which is why I didn\u0027t down vote on it. But I know the internal instructions are different.","commit_id":"10440ef2d656c9e569715bedae604be54489e701"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"4ac2edb8c2da7c1ac7123ae0ad4292f085d44ef4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 - 2017 Dell EMC"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_824ba485","line":1,"in_reply_to":"7f515b1d_c2d99c22","updated":"2017-10-05 19:00:43.000000000","message":"Copyright schmopyright, it\u0027s open source does it matter?","commit_id":"10440ef2d656c9e569715bedae604be54489e701"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"cb5be3f011f6d56279753d64202c31415d8d5eb1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 - 2017 Dell EMC"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_5008d68f","line":1,"in_reply_to":"7f515b1d_c2d99c22","updated":"2017-10-05 20:42:18.000000000","message":"Done","commit_id":"10440ef2d656c9e569715bedae604be54489e701"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"408c21e1fb72002a3a2214291597dc820bfbcb23","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Driver for Dell EMC ScaleIO based on ScaleIO remote CLI."},{"line_number":17,"context_line":"\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import base64"},{"line_number":20,"context_line":"import binascii"},{"line_number":21,"context_line":"from distutils import version"},{"line_number":22,"context_line":"import json"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_c2475cbc","line":19,"updated":"2017-10-05 18:58:05.000000000","message":"This file isn\u0027t following the standard OpenStack import conventions (math, re, etc.):\n\nhttps://docs.openstack.org/hacking/latest/user/hacking.html#import-order-template","commit_id":"10440ef2d656c9e569715bedae604be54489e701"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"cb5be3f011f6d56279753d64202c31415d8d5eb1","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Driver for Dell EMC ScaleIO based on ScaleIO remote CLI."},{"line_number":17,"context_line":"\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import base64"},{"line_number":20,"context_line":"import binascii"},{"line_number":21,"context_line":"from distutils import version"},{"line_number":22,"context_line":"import json"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_d0d60654","line":19,"in_reply_to":"7f515b1d_c2475cbc","updated":"2017-10-05 20:42:18.000000000","message":"Thanks for pointing that out.","commit_id":"10440ef2d656c9e569715bedae604be54489e701"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"408c21e1fb72002a3a2214291597dc820bfbcb23","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        # validate the storage pools and check if zero padding is enabled"},{"line_number":290,"context_line":"        for pool in self.storage_pools:"},{"line_number":291,"context_line":"            pd \u003d pool.split(\u0027:\u0027)[0]"},{"line_number":292,"context_line":"            sp \u003d pool.split(\u0027:\u0027)[1]"},{"line_number":293,"context_line":"            if pd is None or sp is None:"},{"line_number":294,"context_line":"                msg \u003d (_(\"Invalid storage pool name. The correct format is: \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_827844f8","line":291,"updated":"2017-10-05 18:58:05.000000000","message":"Could do\n    pd, sp \u003d pool.split(\u0027:\u0027)","commit_id":"10440ef2d656c9e569715bedae604be54489e701"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"cb5be3f011f6d56279753d64202c31415d8d5eb1","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"        # validate the storage pools and check if zero padding is enabled"},{"line_number":290,"context_line":"        for pool in self.storage_pools:"},{"line_number":291,"context_line":"            pd \u003d pool.split(\u0027:\u0027)[0]"},{"line_number":292,"context_line":"            sp \u003d pool.split(\u0027:\u0027)[1]"},{"line_number":293,"context_line":"            if pd is None or sp is None:"},{"line_number":294,"context_line":"                msg \u003d (_(\"Invalid storage pool name. The correct format is: \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_502d76fb","line":291,"in_reply_to":"7f515b1d_827844f8","updated":"2017-10-05 20:42:18.000000000","message":"Changed as I like this approach better","commit_id":"10440ef2d656c9e569715bedae604be54489e701"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"408c21e1fb72002a3a2214291597dc820bfbcb23","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        for pool in self.storage_pools:"},{"line_number":291,"context_line":"            pd \u003d pool.split(\u0027:\u0027)[0]"},{"line_number":292,"context_line":"            sp \u003d pool.split(\u0027:\u0027)[1]"},{"line_number":293,"context_line":"            if pd is None or sp is None:"},{"line_number":294,"context_line":"                msg \u003d (_(\"Invalid storage pool name. The correct format is: \""},{"line_number":295,"context_line":"                         \"protection_domain:storage_pool. \""},{"line_number":296,"context_line":"                         \"Value supplied was: %(pool)s\") %"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_a24900b8","line":293,"updated":"2017-10-05 18:58:05.000000000","message":"This check is not sufficient, for sp to be None, pool.split(\u0027:\u0027)[1] would have already failed with an IndexError.","commit_id":"10440ef2d656c9e569715bedae604be54489e701"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"cb5be3f011f6d56279753d64202c31415d8d5eb1","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        for pool in self.storage_pools:"},{"line_number":291,"context_line":"            pd \u003d pool.split(\u0027:\u0027)[0]"},{"line_number":292,"context_line":"            sp \u003d pool.split(\u0027:\u0027)[1]"},{"line_number":293,"context_line":"            if pd is None or sp is None:"},{"line_number":294,"context_line":"                msg \u003d (_(\"Invalid storage pool name. The correct format is: \""},{"line_number":295,"context_line":"                         \"protection_domain:storage_pool. \""},{"line_number":296,"context_line":"                         \"Value supplied was: %(pool)s\") %"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_300d5a90","line":293,"in_reply_to":"7f515b1d_a24900b8","updated":"2017-10-05 20:42:18.000000000","message":"Fixed. Checking for both IndexError and ValueError during split. Content errors will be caught when validating against ScaleIO system.","commit_id":"10440ef2d656c9e569715bedae604be54489e701"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"408c21e1fb72002a3a2214291597dc820bfbcb23","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                       {\u0027pool\u0027: pool})"},{"line_number":305,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"            padded \u003d properties[\u0027zeroPaddingEnabled\u0027]"},{"line_number":308,"context_line":"            if not padded:"},{"line_number":309,"context_line":"                LOG.warning(\"Zero padding is disabled for pool, %s. \""},{"line_number":310,"context_line":"                            \"This could lead to existing data being \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_42b7ec87","line":307,"updated":"2017-10-05 18:58:05.000000000","message":"Is \u0027zeroPaddingEnabled\u0027 guaranteed to exist as a key here?","commit_id":"10440ef2d656c9e569715bedae604be54489e701"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"cb5be3f011f6d56279753d64202c31415d8d5eb1","unresolved":false,"context_lines":[{"line_number":304,"context_line":"                       {\u0027pool\u0027: pool})"},{"line_number":305,"context_line":"                raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"            padded \u003d properties[\u0027zeroPaddingEnabled\u0027]"},{"line_number":308,"context_line":"            if not padded:"},{"line_number":309,"context_line":"                LOG.warning(\"Zero padding is disabled for pool, %s. \""},{"line_number":310,"context_line":"                            \"This could lead to existing data being \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7f515b1d_1085becf","line":307,"in_reply_to":"7f515b1d_42b7ec87","updated":"2017-10-05 20:42:18.000000000","message":"It \"should\" always be there but moved inside try, just in case.","commit_id":"10440ef2d656c9e569715bedae604be54489e701"}],"cinder/volume/drivers/dell_emc/scaleio/simplecache.py":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b235fba17e26ff24320bd6291d280444d3cd98ee","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        age \u003d now - self.cache[key][\u0027date\u0027]"},{"line_number":62,"context_line":"        if age \u003e datetime.timedelta(minutes\u003dself.age_minutes):"},{"line_number":63,"context_line":"            # if has expired, remove from cache"},{"line_number":64,"context_line":"            LOG.debug(\"Removing item from %s cache due to age: %s\","},{"line_number":65,"context_line":"                      self.name, key)"},{"line_number":66,"context_line":"            self._remove(key)"},{"line_number":67,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff5d4b2f_720d5a8f","line":64,"range":{"start_line":64,"start_character":23,"end_line":64,"end_character":65},"updated":"2017-09-19 18:01:34.000000000","message":"This message is not clear.  Could we do:\n\n\"Removing item \u0027%s\u0027 from cache \u0027%s\u0027 due to age.\"  Also, should put the variables in a dict when you have multiple variables.","commit_id":"f0be56cea6ac39aefdb8869ec1ac96b482c6f97b"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"9fee72cf7c362b790beb416cc6dcab9420c5beee","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        age \u003d now - self.cache[key][\u0027date\u0027]"},{"line_number":62,"context_line":"        if age \u003e datetime.timedelta(minutes\u003dself.age_minutes):"},{"line_number":63,"context_line":"            # if has expired, remove from cache"},{"line_number":64,"context_line":"            LOG.debug(\"Removing item from %s cache due to age: %s\","},{"line_number":65,"context_line":"                      self.name, key)"},{"line_number":66,"context_line":"            self._remove(key)"},{"line_number":67,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_314b322c","line":64,"range":{"start_line":64,"start_character":23,"end_line":64,"end_character":65},"in_reply_to":"ff5d4b2f_720d5a8f","updated":"2017-09-25 13:56:27.000000000","message":"Corrected","commit_id":"f0be56cea6ac39aefdb8869ec1ac96b482c6f97b"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b235fba17e26ff24320bd6291d280444d3cd98ee","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        self.age_minutes \u003d age_minutes"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def update(self, key, value):"},{"line_number":95,"context_line":"        \"\"\"Update/Store and item in the cache"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        :param key: Key for the item being added."},{"line_number":98,"context_line":"        :param value: Value to store"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff5d4b2f_1224de0c","line":95,"range":{"start_line":95,"start_character":24,"end_line":95,"end_character":27},"updated":"2017-09-19 18:01:34.000000000","message":"an","commit_id":"f0be56cea6ac39aefdb8869ec1ac96b482c6f97b"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"9fee72cf7c362b790beb416cc6dcab9420c5beee","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        self.age_minutes \u003d age_minutes"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def update(self, key, value):"},{"line_number":95,"context_line":"        \"\"\"Update/Store and item in the cache"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        :param key: Key for the item being added."},{"line_number":98,"context_line":"        :param value: Value to store"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_d14f3e32","line":95,"range":{"start_line":95,"start_character":24,"end_line":95,"end_character":27},"in_reply_to":"ff5d4b2f_1224de0c","updated":"2017-09-25 13:56:27.000000000","message":"Done","commit_id":"f0be56cea6ac39aefdb8869ec1ac96b482c6f97b"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"b235fba17e26ff24320bd6291d280444d3cd98ee","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        :param value: Value to store"},{"line_number":99,"context_line":"        :return:"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        LOG.debug(\"Updating value in %s cache: %s\", self.name, key)"},{"line_number":102,"context_line":"        self.cache[key] \u003d {\u0027date\u0027: timeutils.utcnow(),"},{"line_number":103,"context_line":"                           \u0027value\u0027: value}"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff5d4b2f_b27872f8","line":101,"range":{"start_line":101,"start_character":19,"end_line":101,"end_character":49},"updated":"2017-09-19 18:01:34.000000000","message":"Same comment here as above.  Need a dict and the wording is hard to follow.","commit_id":"f0be56cea6ac39aefdb8869ec1ac96b482c6f97b"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"9fee72cf7c362b790beb416cc6dcab9420c5beee","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        :param value: Value to store"},{"line_number":99,"context_line":"        :return:"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        LOG.debug(\"Updating value in %s cache: %s\", self.name, key)"},{"line_number":102,"context_line":"        self.cache[key] \u003d {\u0027date\u0027: timeutils.utcnow(),"},{"line_number":103,"context_line":"                           \u0027value\u0027: value}"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7f515b1d_1146f622","line":101,"range":{"start_line":101,"start_character":19,"end_line":101,"end_character":49},"in_reply_to":"ff5d4b2f_b27872f8","updated":"2017-09-25 13:56:27.000000000","message":"Done","commit_id":"f0be56cea6ac39aefdb8869ec1ac96b482c6f97b"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"c4d1bee59bcbfd21e7cf590a6f335e73af698f68","unresolved":false,"context_lines":[{"line_number":16,"context_line":"SimpleCache utility class for Dell EMC ScaleIO Driver."},{"line_number":17,"context_line":"\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import datetime"},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":"from oslo_utils import timeutils"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_3e02610b","line":19,"updated":"2017-09-28 22:47:00.000000000","message":"Add an extra blank line between the built in datetime import and the oslo* third party imports.","commit_id":"f02852207ac51f2c2214f46003650454bff16e77"},{"author":{"_account_id":12112,"name":"Tom Swanson","email":"tom_swanson@dell.com","username":"tomswanson"},"change_message_id":"7a83b1e77d0857614babd85a903f4716a89b03ce","unresolved":false,"context_lines":[{"line_number":16,"context_line":"SimpleCache utility class for Dell EMC ScaleIO Driver."},{"line_number":17,"context_line":"\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import datetime"},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":"from oslo_utils import timeutils"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_7e6219da","line":19,"in_reply_to":"7f515b1d_3e02610b","updated":"2017-09-28 22:55:35.000000000","message":"Shouldn\u0027t pep8 be catching this? And if it isn\u0027t then what\u0027s in it for him to change it?","commit_id":"f02852207ac51f2c2214f46003650454bff16e77"},{"author":{"_account_id":25033,"name":"Eric Young","email":"eric.young@dell.com","username":"tssgery"},"change_message_id":"e24cf4a864edceb7eca15a6e304e43377a561a02","unresolved":false,"context_lines":[{"line_number":16,"context_line":"SimpleCache utility class for Dell EMC ScaleIO Driver."},{"line_number":17,"context_line":"\"\"\""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import datetime"},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":"from oslo_utils import timeutils"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7f515b1d_9e9dca67","line":19,"in_reply_to":"7f515b1d_7e6219da","updated":"2017-09-29 13:06:24.000000000","message":"pep8 did not catch this but I changed it since I was updating the patch anyway","commit_id":"f02852207ac51f2c2214f46003650454bff16e77"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"35fea5c66c6b1e0f107eb43f067e9e2d7e0f8d82","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def __contains__(self, item):"},{"line_number":35,"context_line":"        \"\"\"Checks if a key exists in cache"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        :param key: Key for the item being checked."},{"line_number":38,"context_line":"        :return: True if item exists, otherwise False"},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":"        return item in self.cache"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_f4417daa","line":37,"range":{"start_line":37,"start_character":15,"end_line":37,"end_character":18},"updated":"2017-09-29 14:38:54.000000000","message":"This should be \u0027item\u0027 .  It looks like this who docstring is wrong.","commit_id":"38962e0313dd6148668cefe4ba9ede7147be2c3d"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"35fea5c66c6b1e0f107eb43f067e9e2d7e0f8d82","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    def set_cache_period(self, age_minutes):"},{"line_number":90,"context_line":"        \"\"\"Define the period of time to cache values for"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        :param minutes: Number of minutes to cache items for."},{"line_number":93,"context_line":"        :return:"},{"line_number":94,"context_line":"        \"\"\""},{"line_number":95,"context_line":"        self.age_minutes \u003d age_minutes"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_d425610a","line":92,"range":{"start_line":92,"start_character":15,"end_line":92,"end_character":22},"updated":"2017-09-29 14:38:54.000000000","message":"age_minutes","commit_id":"38962e0313dd6148668cefe4ba9ede7147be2c3d"}]}
