)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"317a3d9723637fdaac93a973f1efce6256d3d21f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Currently, VNX driver provides SP toggle feature which would try"},{"line_number":10,"context_line":"another IP if primary IP became unavailable."},{"line_number":11,"context_line":"Unfortunately, driver did not protect the toggling SP logic in a"},{"line_number":12,"context_line":"lock section so if many toggling happen in a short time, race"},{"line_number":13,"context_line":"condition may occur and driver would try the unavailable IP again."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This fix provides a safe way to toggle and swap current primary IP"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa69d971_7c4f9ebd","line":12,"range":{"start_line":12,"start_character":24,"end_line":12,"end_character":32},"updated":"2016-01-01 21:31:04.000000000","message":"I would change this to \u0027toggles\u0027 if you push up another patch set.","commit_id":"d5409efb197f4952ba3a10b087e6a0e95444d080"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"d97ccc7390029f0590c4a554f0fd78c71d1d54f2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     peter_wang \u003cpeter.wang13@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-03 22:13:37 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix race condition when Toggling SP"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, VNX driver provides SP toggle feature which would try"},{"line_number":10,"context_line":"another IP if primary IP became unavailable."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa69d971_4b0b5c7d","line":7,"range":{"start_line":7,"start_character":24,"end_line":7,"end_character":32},"updated":"2016-01-06 17:26:52.000000000","message":"Don\u0027t think this needs to be capitalized, but not that big a deal.","commit_id":"9e792f8771c66c0e6b68e2bb6ed8bf4105973ac1"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"2162499bdf84ec402dd2907dd7381ce16a7ed72b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     peter_wang \u003cpeter.wang13@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-01-03 22:13:37 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix race condition when Toggling SP"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, VNX driver provides SP toggle feature which would try"},{"line_number":10,"context_line":"another IP if primary IP became unavailable."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da6ed579_22b59b7d","line":7,"range":{"start_line":7,"start_character":24,"end_line":7,"end_character":32},"in_reply_to":"fa69d971_4b0b5c7d","updated":"2016-01-18 02:45:44.000000000","message":"Done","commit_id":"9e792f8771c66c0e6b68e2bb6ed8bf4105973ac1"}],"cinder/volume/drivers/emc/emc_vnx_cli.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e5f160c7c82c929aed75aaeb912adc62040449f7","unresolved":false,"context_lines":[{"line_number":2053,"context_line":"        \"\"\""},{"line_number":2054,"context_line":"        @lockutils.synchronized("},{"line_number":2055,"context_line":"            \u0027vnx-toggle-\u0027 + self.toggle_lock_name, \u0027vnx-toggle-\u0027, True)"},{"line_number":2056,"context_line":"        def inner():"},{"line_number":2057,"context_line":"            if self.secondary_storage_ip is None:"},{"line_number":2058,"context_line":"                return False"},{"line_number":2059,"context_line":"            self.active_storage_ip \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_fc3d9cbb","line":2056,"updated":"2016-01-04 19:46:27.000000000","message":"This would be a lot cleaner if split into two separate methods rather than defining inner() here.","commit_id":"9e792f8771c66c0e6b68e2bb6ed8bf4105973ac1"},{"author":{"_account_id":10628,"name":"Peter Wang","email":"peter.wang13@emc.com","username":"peter_wang"},"change_message_id":"946b6b16b72fb45756574cde037b2dd3945e604c","unresolved":false,"context_lines":[{"line_number":2053,"context_line":"        \"\"\""},{"line_number":2054,"context_line":"        @lockutils.synchronized("},{"line_number":2055,"context_line":"            \u0027vnx-toggle-\u0027 + self.toggle_lock_name, \u0027vnx-toggle-\u0027, True)"},{"line_number":2056,"context_line":"        def inner():"},{"line_number":2057,"context_line":"            if self.secondary_storage_ip is None:"},{"line_number":2058,"context_line":"                return False"},{"line_number":2059,"context_line":"            self.active_storage_ip \u003d ("}],"source_content_type":"text/x-python","patch_set":3,"id":"fa69d971_af37c84b","line":2056,"in_reply_to":"fa69d971_fc3d9cbb","updated":"2016-01-11 07:25:12.000000000","message":"Hi Eric\nI place all logic of _toggle_sp into inner just because I want to add a dynamic lock for this all of the logic.\n\nthe inner is never and will never be used by functions other than _toggle_sp.","commit_id":"9e792f8771c66c0e6b68e2bb6ed8bf4105973ac1"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"54f84ddc1b42edf2bcf4f7f9e8e4e8925a351678","unresolved":false,"context_lines":[{"line_number":2062,"context_line":""},{"line_number":2063,"context_line":"        :param current_ip: active ip before toggle"},{"line_number":2064,"context_line":"        :returns True or False: if toggle happens, return True, otherwise False"},{"line_number":2065,"context_line":""},{"line_number":2066,"context_line":"        \"\"\""},{"line_number":2067,"context_line":"        @lockutils.synchronized("},{"line_number":2068,"context_line":"            \u0027vnx-toggle-\u0027 + self.toggle_lock_name, \u0027vnx-toggle-\u0027, True)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af94dfe_01c69347","line":2065,"updated":"2016-03-17 10:45:51.000000000","message":"nit: unnecessary blank line","commit_id":"5785c74ce1ea4cae2edf06e96e856a0587dcddff"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"54f84ddc1b42edf2bcf4f7f9e8e4e8925a351678","unresolved":false,"context_lines":[{"line_number":2064,"context_line":"        :returns True or False: if toggle happens, return True, otherwise False"},{"line_number":2065,"context_line":""},{"line_number":2066,"context_line":"        \"\"\""},{"line_number":2067,"context_line":"        @lockutils.synchronized("},{"line_number":2068,"context_line":"            \u0027vnx-toggle-\u0027 + self.toggle_lock_name, \u0027vnx-toggle-\u0027, True)"},{"line_number":2069,"context_line":"        def inner():"},{"line_number":2070,"context_line":"            if self.secondary_storage_ip is None:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af94dfe_c1402ba8","line":2067,"updated":"2016-03-17 10:45:51.000000000","message":"nit: Using locks as context manager would have been considerable easier to read","commit_id":"5785c74ce1ea4cae2edf06e96e856a0587dcddff"}]}
