)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"0e0db69081ee834ab16322fc412ddd1b819a215a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Manage existing volume that requires a migration in VNX raises error in"},{"line_number":10,"context_line":"VNX driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The root cause is that VNX use a function to retrieve volume type from"},{"line_number":13,"context_line":"provider location.  When provider location is not initialized (such as a"},{"line_number":14,"context_line":"new LUN), it will send `None` to the VNX driver and driver didn\u0027t handle"},{"line_number":15,"context_line":"it well."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba8a016a_f81d7062","line":12,"updated":"2015-11-19 08:55:22.000000000","message":"use \u003d\u003e uses","commit_id":"d6a56774326917aecd28c87be61a6269ce5f7715"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"86e66eba068d0f441345333e25660d74e926990e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Manage existing volume that requires a migration in VNX raises error in"},{"line_number":10,"context_line":"VNX driver."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"The root cause is that VNX use a function to retrieve volume type from"},{"line_number":13,"context_line":"provider location.  When provider location is not initialized (such as a"},{"line_number":14,"context_line":"new LUN), it will send `None` to the VNX driver and driver didn\u0027t handle"},{"line_number":15,"context_line":"it well."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba8a016a_114351b3","line":12,"in_reply_to":"ba8a016a_f81d7062","updated":"2015-11-19 17:00:15.000000000","message":"Updating.  Thanks for the comments.","commit_id":"d6a56774326917aecd28c87be61a6269ce5f7715"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"408c3805686af46a17b50f3a9c948dd4446f1a99","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Cedric Zhuang \u003ccedric.zhuang@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-12-01 18:38:25 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VNX: Get volume type from location throws error"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Manage existing volume that requires a migration in VNX raises error in"},{"line_number":10,"context_line":"VNX driver."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a7e1126_3c65281d","line":7,"range":{"start_line":7,"start_character":42,"end_line":7,"end_character":47},"updated":"2015-12-21 06:17:14.000000000","message":"I believe this is exactly the problem is, not what your patch is doing. This line should be a brief about what your patch is doing","commit_id":"d4f66db7248174f135ad0fdd43b6fdddff852b77"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"f0ce2aaaeb316e7c1f350d29113df76b6e080403","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Cedric Zhuang \u003ccedric.zhuang@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-12-01 18:38:25 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VNX: Get volume type from location throws error"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Manage existing volume that requires a migration in VNX raises error in"},{"line_number":10,"context_line":"VNX driver."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a7e1126_0346c04e","line":7,"range":{"start_line":7,"start_character":42,"end_line":7,"end_character":47},"in_reply_to":"3a7e1126_3c65281d","updated":"2015-12-21 11:11:08.000000000","message":"Done","commit_id":"d4f66db7248174f135ad0fdd43b6fdddff852b77"}],"cinder/tests/unit/test_emc_vnxdirect.py":[{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"76765edcce861198129c81a0ee9b8691003878b6","unresolved":false,"context_lines":[{"line_number":5629,"context_line":"            None,"},{"line_number":5630,"context_line":"            emc_vnx_cli.EMCVnxCliBase.extract_provider_location_for_lun("},{"line_number":5631,"context_line":"                None, \u0027type\u0027))"},{"line_number":5632,"context_line":""},{"line_number":5633,"context_line":"VNXError \u003d emc_vnx_cli.VNXError"},{"line_number":5634,"context_line":""},{"line_number":5635,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_4d3e95b9","line":5632,"updated":"2015-11-17 20:07:30.000000000","message":"Should there be a test to ensure that it correctly handles an incorrectly formatted string as well?","commit_id":"d499882f363667e3eac28481d7d0f7f694ca210a"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"ef71003056868a0e904383bc07ccb1fbbd77d9ad","unresolved":false,"context_lines":[{"line_number":5629,"context_line":"            None,"},{"line_number":5630,"context_line":"            emc_vnx_cli.EMCVnxCliBase.extract_provider_location_for_lun("},{"line_number":5631,"context_line":"                None, \u0027type\u0027))"},{"line_number":5632,"context_line":""},{"line_number":5633,"context_line":"VNXError \u003d emc_vnx_cli.VNXError"},{"line_number":5634,"context_line":""},{"line_number":5635,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_3cb1f3e1","line":5632,"in_reply_to":"ba8a016a_4d3e95b9","updated":"2015-11-18 02:33:01.000000000","message":"Good suggestion, I will try to add more tests.","commit_id":"d499882f363667e3eac28481d7d0f7f694ca210a"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"2fd27ee0fb62b0b10730f30d44244a53d7e04de0","unresolved":false,"context_lines":[{"line_number":5625,"context_line":""},{"line_number":5626,"context_line":"    def test_extract_provider_location_for_lun_type_none(self):"},{"line_number":5627,"context_line":"        self.assertEqual("},{"line_number":5628,"context_line":"            None,"},{"line_number":5629,"context_line":"            emc_vnx_cli.EMCVnxCliBase.extract_provider_location_for_lun("},{"line_number":5630,"context_line":"                None, \u0027type\u0027))"},{"line_number":5631,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_29ff9c02","line":5628,"updated":"2015-12-01 15:16:17.000000000","message":"Should be asserIsNone()","commit_id":"9ed1ca23437763c038bd890403d73af1ec6e2c4e"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"f732e35198c7216bb548743a72236a86b90beec7","unresolved":false,"context_lines":[{"line_number":5625,"context_line":""},{"line_number":5626,"context_line":"    def test_extract_provider_location_for_lun_type_none(self):"},{"line_number":5627,"context_line":"        self.assertEqual("},{"line_number":5628,"context_line":"            None,"},{"line_number":5629,"context_line":"            emc_vnx_cli.EMCVnxCliBase.extract_provider_location_for_lun("},{"line_number":5630,"context_line":"                None, \u0027type\u0027))"},{"line_number":5631,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_805d1b7b","line":5628,"in_reply_to":"9a8ffd7b_29ff9c02","updated":"2015-12-02 02:44:50.000000000","message":"Done","commit_id":"9ed1ca23437763c038bd890403d73af1ec6e2c4e"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"2fd27ee0fb62b0b10730f30d44244a53d7e04de0","unresolved":false,"context_lines":[{"line_number":5631,"context_line":""},{"line_number":5632,"context_line":"    def test_extract_provider_location_for_lun_type_empty_str(self):"},{"line_number":5633,"context_line":"        self.assertEqual("},{"line_number":5634,"context_line":"            None,"},{"line_number":5635,"context_line":"            emc_vnx_cli.EMCVnxCliBase.extract_provider_location_for_lun("},{"line_number":5636,"context_line":"                \u0027\u0027, \u0027type\u0027))"},{"line_number":5637,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_4902200b","line":5634,"updated":"2015-12-01 15:16:17.000000000","message":"Should be asserIsNone()","commit_id":"9ed1ca23437763c038bd890403d73af1ec6e2c4e"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"f732e35198c7216bb548743a72236a86b90beec7","unresolved":false,"context_lines":[{"line_number":5631,"context_line":""},{"line_number":5632,"context_line":"    def test_extract_provider_location_for_lun_type_empty_str(self):"},{"line_number":5633,"context_line":"        self.assertEqual("},{"line_number":5634,"context_line":"            None,"},{"line_number":5635,"context_line":"            emc_vnx_cli.EMCVnxCliBase.extract_provider_location_for_lun("},{"line_number":5636,"context_line":"                \u0027\u0027, \u0027type\u0027))"},{"line_number":5637,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_20554f4f","line":5634,"in_reply_to":"9a8ffd7b_4902200b","updated":"2015-12-02 02:44:50.000000000","message":"Done","commit_id":"9ed1ca23437763c038bd890403d73af1ec6e2c4e"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"2fd27ee0fb62b0b10730f30d44244a53d7e04de0","unresolved":false,"context_lines":[{"line_number":5637,"context_line":""},{"line_number":5638,"context_line":"    def test_extract_provider_location_for_lun_type_not_available(self):"},{"line_number":5639,"context_line":"        self.assertEqual("},{"line_number":5640,"context_line":"            None,"},{"line_number":5641,"context_line":"            emc_vnx_cli.EMCVnxCliBase.extract_provider_location_for_lun("},{"line_number":5642,"context_line":"                \u0027system^FNM11111|id^1\u0027, \u0027type\u0027))"},{"line_number":5643,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_e908b42a","line":5640,"updated":"2015-12-01 15:16:17.000000000","message":"Should be asserIsNone()","commit_id":"9ed1ca23437763c038bd890403d73af1ec6e2c4e"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"f732e35198c7216bb548743a72236a86b90beec7","unresolved":false,"context_lines":[{"line_number":5637,"context_line":""},{"line_number":5638,"context_line":"    def test_extract_provider_location_for_lun_type_not_available(self):"},{"line_number":5639,"context_line":"        self.assertEqual("},{"line_number":5640,"context_line":"            None,"},{"line_number":5641,"context_line":"            emc_vnx_cli.EMCVnxCliBase.extract_provider_location_for_lun("},{"line_number":5642,"context_line":"                \u0027system^FNM11111|id^1\u0027, \u0027type\u0027))"},{"line_number":5643,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_e04e67c0","line":5640,"in_reply_to":"9a8ffd7b_e908b42a","updated":"2015-12-02 02:44:50.000000000","message":"Done","commit_id":"9ed1ca23437763c038bd890403d73af1ec6e2c4e"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"2fd27ee0fb62b0b10730f30d44244a53d7e04de0","unresolved":false,"context_lines":[{"line_number":5643,"context_line":""},{"line_number":5644,"context_line":"    def test_extract_provider_location_for_lun_type_error_format(self):"},{"line_number":5645,"context_line":"        self.assertEqual("},{"line_number":5646,"context_line":"            None,"},{"line_number":5647,"context_line":"            emc_vnx_cli.EMCVnxCliBase.extract_provider_location_for_lun("},{"line_number":5648,"context_line":"                \u0027abc^|def|^gh|^^|^|\u0027, \u0027type\u0027))"},{"line_number":5649,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_a9138c5b","line":5646,"updated":"2015-12-01 15:16:17.000000000","message":"Should be asserIsNone()","commit_id":"9ed1ca23437763c038bd890403d73af1ec6e2c4e"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"f732e35198c7216bb548743a72236a86b90beec7","unresolved":false,"context_lines":[{"line_number":5643,"context_line":""},{"line_number":5644,"context_line":"    def test_extract_provider_location_for_lun_type_error_format(self):"},{"line_number":5645,"context_line":"        self.assertEqual("},{"line_number":5646,"context_line":"            None,"},{"line_number":5647,"context_line":"            emc_vnx_cli.EMCVnxCliBase.extract_provider_location_for_lun("},{"line_number":5648,"context_line":"                \u0027abc^|def|^gh|^^|^|\u0027, \u0027type\u0027))"},{"line_number":5649,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_004a8bac","line":5646,"in_reply_to":"9a8ffd7b_a9138c5b","updated":"2015-12-02 02:44:50.000000000","message":"Done","commit_id":"9ed1ca23437763c038bd890403d73af1ec6e2c4e"}],"cinder/volume/drivers/emc/emc_vnx_cli.py":[{"author":{"_account_id":17275,"name":"Nate Potter","email":"nathaniel.potter@intel.com","username":"npotter"},"change_message_id":"76765edcce861198129c81a0ee9b8691003878b6","unresolved":false,"context_lines":[{"line_number":3804,"context_line":"        volume_metadata \u003d self._get_volume_metadata(volume)"},{"line_number":3805,"context_line":"        volume_metadata[\u0027lun_type\u0027] \u003d \u0027lun\u0027"},{"line_number":3806,"context_line":"        return {\u0027provider_location\u0027: location,"},{"line_number":3807,"context_line":"                \u0027metadata\u0027: volume_metadata}"},{"line_number":3808,"context_line":""},{"line_number":3809,"context_line":"    def _get_lun_pool_and_type(self, lun_id):"},{"line_number":3810,"context_line":"        client \u003d self._client"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_edc98979","line":3807,"updated":"2015-11-17 20:07:30.000000000","message":"Is this a part of fixing the thrown error that you describe in your commit message or is it for something else?","commit_id":"d499882f363667e3eac28481d7d0f7f694ca210a"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"ef71003056868a0e904383bc07ccb1fbbd77d9ad","unresolved":false,"context_lines":[{"line_number":3804,"context_line":"        volume_metadata \u003d self._get_volume_metadata(volume)"},{"line_number":3805,"context_line":"        volume_metadata[\u0027lun_type\u0027] \u003d \u0027lun\u0027"},{"line_number":3806,"context_line":"        return {\u0027provider_location\u0027: location,"},{"line_number":3807,"context_line":"                \u0027metadata\u0027: volume_metadata}"},{"line_number":3808,"context_line":""},{"line_number":3809,"context_line":"    def _get_lun_pool_and_type(self, lun_id):"},{"line_number":3810,"context_line":"        client \u003d self._client"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba8a016a_7c90db43","line":3807,"in_reply_to":"ba8a016a_edc98979","updated":"2015-11-18 02:33:01.000000000","message":"Thanks for bringing this up.  It\u0027s a patch to cover the fix that I saw when I do this fix.  It seems this `manage_existing` function\u0027s return didn\u0027t include metadata.  I am removing this change because it belongs to another issue.","commit_id":"d499882f363667e3eac28481d7d0f7f694ca210a"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"0e0db69081ee834ab16322fc412ddd1b819a215a","unresolved":false,"context_lines":[{"line_number":3002,"context_line":"                fields \u003d kvp.split(\u0027^\u0027)"},{"line_number":3003,"context_line":"                if len(fields) \u003d\u003d 2 and fields[0] \u003d\u003d key:"},{"line_number":3004,"context_line":"                    ret \u003d fields[1]"},{"line_number":3005,"context_line":"        return ret"},{"line_number":3006,"context_line":""},{"line_number":3007,"context_line":"    def _consistencygroup_creation_check(self, group):"},{"line_number":3008,"context_line":"        \"\"\"Check extra spec for consistency group.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_b89848c1","line":3005,"updated":"2015-11-19 08:55:22.000000000","message":"Is it safe to directly return None if provider_location is None?","commit_id":"d6a56774326917aecd28c87be61a6269ce5f7715"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"86e66eba068d0f441345333e25660d74e926990e","unresolved":false,"context_lines":[{"line_number":3002,"context_line":"                fields \u003d kvp.split(\u0027^\u0027)"},{"line_number":3003,"context_line":"                if len(fields) \u003d\u003d 2 and fields[0] \u003d\u003d key:"},{"line_number":3004,"context_line":"                    ret \u003d fields[1]"},{"line_number":3005,"context_line":"        return ret"},{"line_number":3006,"context_line":""},{"line_number":3007,"context_line":"    def _consistencygroup_creation_check(self, group):"},{"line_number":3008,"context_line":"        \"\"\"Check extra spec for consistency group.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_ff8779b2","line":3005,"in_reply_to":"ba8a016a_b89848c1","updated":"2015-11-19 17:00:15.000000000","message":"Yes.  Caller need to check the invalid value and decide what to do.","commit_id":"d6a56774326917aecd28c87be61a6269ce5f7715"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"0e0db69081ee834ab16322fc412ddd1b819a215a","unresolved":false,"context_lines":[{"line_number":3767,"context_line":"                                      \u0027type\u0027: tar_type,"},{"line_number":3768,"context_line":"                                      \u0027tier\u0027: tar_tier})"},{"line_number":3769,"context_line":""},{"line_number":3770,"context_line":"        do_migration \u003d (tar_type is not None and"},{"line_number":3771,"context_line":"                        tar_type !\u003d vnx_lun.provision or"},{"line_number":3772,"context_line":"                        tar_pool !\u003d vnx_lun.pool_name)"},{"line_number":3773,"context_line":"        change_tier \u003d (tar_tier is not None and"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_b84da83f","line":3770,"updated":"2015-11-19 08:55:22.000000000","message":"What\u0027s the reason to move \"and\" and \"or\"?","commit_id":"d6a56774326917aecd28c87be61a6269ce5f7715"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"86e66eba068d0f441345333e25660d74e926990e","unresolved":false,"context_lines":[{"line_number":3767,"context_line":"                                      \u0027type\u0027: tar_type,"},{"line_number":3768,"context_line":"                                      \u0027tier\u0027: tar_tier})"},{"line_number":3769,"context_line":""},{"line_number":3770,"context_line":"        do_migration \u003d (tar_type is not None and"},{"line_number":3771,"context_line":"                        tar_type !\u003d vnx_lun.provision or"},{"line_number":3772,"context_line":"                        tar_pool !\u003d vnx_lun.pool_name)"},{"line_number":3773,"context_line":"        change_tier \u003d (tar_tier is not None and"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_d1f14996","line":3770,"in_reply_to":"ba8a016a_b84da83f","updated":"2015-11-19 17:00:15.000000000","message":"To align with PEP8 W503.  Check this page for detail.\nhttp://pep8.readthedocs.org/en/latest/intro.html","commit_id":"d6a56774326917aecd28c87be61a6269ce5f7715"},{"author":{"_account_id":13900,"name":"Accela Zhao","email":"accelazh@gmail.com","username":"accelazh"},"change_message_id":"d1b69f36c85fec196c8adf0ed47e89a51e9bf6f2","unresolved":false,"context_lines":[{"line_number":3767,"context_line":"                                      \u0027type\u0027: tar_type,"},{"line_number":3768,"context_line":"                                      \u0027tier\u0027: tar_tier})"},{"line_number":3769,"context_line":""},{"line_number":3770,"context_line":"        do_migration \u003d (tar_type is not None and"},{"line_number":3771,"context_line":"                        tar_type !\u003d vnx_lun.provision or"},{"line_number":3772,"context_line":"                        tar_pool !\u003d vnx_lun.pool_name)"},{"line_number":3773,"context_line":"        change_tier \u003d (tar_tier is not None and"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_913d14df","line":3770,"in_reply_to":"ba8a016a_d1f14996","updated":"2015-11-27 15:21:23.000000000","message":"Good catch!","commit_id":"d6a56774326917aecd28c87be61a6269ce5f7715"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"408c3805686af46a17b50f3a9c948dd4446f1a99","unresolved":false,"context_lines":[{"line_number":2989,"context_line":"                   \u0027version\u0027: self.VERSION}"},{"line_number":2990,"context_line":"        return self.dumps_provider_location(pl_dict)"},{"line_number":2991,"context_line":""},{"line_number":2992,"context_line":"    @staticmethod"},{"line_number":2993,"context_line":"    def extract_provider_location_for_lun(provider_location, key\u003d\u0027id\u0027):"},{"line_number":2994,"context_line":"        \"\"\"Extracts value of the specified field from provider_location string."},{"line_number":2995,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_5c9cb40e","line":2992,"range":{"start_line":2992,"start_character":5,"end_line":2992,"end_character":17},"updated":"2015-12-21 06:17:14.000000000","message":"What is the benefit to convert three of these method into static ones?","commit_id":"d4f66db7248174f135ad0fdd43b6fdddff852b77"},{"author":{"_account_id":13206,"name":"Cedric Zhuang","email":"cedric.zhuang@emc.com","username":"CedricZhuang"},"change_message_id":"f0ce2aaaeb316e7c1f350d29113df76b6e080403","unresolved":false,"context_lines":[{"line_number":2989,"context_line":"                   \u0027version\u0027: self.VERSION}"},{"line_number":2990,"context_line":"        return self.dumps_provider_location(pl_dict)"},{"line_number":2991,"context_line":""},{"line_number":2992,"context_line":"    @staticmethod"},{"line_number":2993,"context_line":"    def extract_provider_location_for_lun(provider_location, key\u003d\u0027id\u0027):"},{"line_number":2994,"context_line":"        \"\"\"Extracts value of the specified field from provider_location string."},{"line_number":2995,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a7e1126_c32c389b","line":2992,"range":{"start_line":2992,"start_character":5,"end_line":2992,"end_character":17},"in_reply_to":"3a7e1126_5c9cb40e","updated":"2015-12-21 11:11:08.000000000","message":"These three functions do not use the `self` parameter which means they have no dependency to the instance and should be static.","commit_id":"d4f66db7248174f135ad0fdd43b6fdddff852b77"}]}
