)]}'
{"doc/source/devref/replication.rst":[{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f5e63c30a6c6ab4771a6b525467b8aefb6ef14ae","unresolved":false,"context_lines":[{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    def thaw_backend(self, context):"},{"line_number":473,"context_line":"        if self.failed_over:"},{"line_number":474,"context_line":"            msg \u003d _(\u0027Thaw is not supported by driver XYZ.\u0027) raise"},{"line_number":475,"context_line":"            exception.Invalid(msg)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a3c09a3_eb24a661","line":474,"range":{"start_line":474,"start_character":60,"end_line":474,"end_character":65},"updated":"2017-01-18 20:41:06.000000000","message":"Please move raise to the next line to be on the same line as the exception.","commit_id":"1706f5ccfb90986af6d22c1de23d332530e733ac"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"fde18e00bcadb1bf31b258d62d7a27915f60c1cb","unresolved":false,"context_lines":[{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    def thaw_backend(self, context):"},{"line_number":473,"context_line":"        if self.failed_over:"},{"line_number":474,"context_line":"            msg \u003d _(\u0027Thaw is not supported by driver XYZ.\u0027) raise"},{"line_number":475,"context_line":"            exception.Invalid(msg)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a3905b3_3bed198c","line":474,"range":{"start_line":474,"start_character":60,"end_line":474,"end_character":65},"in_reply_to":"5a3905b3_d67b1a7a","updated":"2017-01-19 09:36:14.000000000","message":"Sorry, it was close to midnight and I just changed it in my local branch and didn\u0027t submit it because I also had to  rebase the 3 patches of this series on top of one of e0ne\u0027s patches to check a migration error on PostgreSQL he mentioned on his review and I left that for today.","commit_id":"1706f5ccfb90986af6d22c1de23d332530e733ac"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c990fd9c722e6f538223255550dfb2b6bdd75449","unresolved":false,"context_lines":[{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    def thaw_backend(self, context):"},{"line_number":473,"context_line":"        if self.failed_over:"},{"line_number":474,"context_line":"            msg \u003d _(\u0027Thaw is not supported by driver XYZ.\u0027) raise"},{"line_number":475,"context_line":"            exception.Invalid(msg)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a3905b3_d67b1a7a","line":474,"range":{"start_line":474,"start_character":60,"end_line":474,"end_character":65},"in_reply_to":"7a3c09a3_7ae4feab","updated":"2017-01-19 02:30:18.000000000","message":"Did you forget to submit patch set 7?","commit_id":"1706f5ccfb90986af6d22c1de23d332530e733ac"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"eb06d01b2e3b1eaec8196a605d63573efab221f1","unresolved":false,"context_lines":[{"line_number":471,"context_line":""},{"line_number":472,"context_line":"    def thaw_backend(self, context):"},{"line_number":473,"context_line":"        if self.failed_over:"},{"line_number":474,"context_line":"            msg \u003d _(\u0027Thaw is not supported by driver XYZ.\u0027) raise"},{"line_number":475,"context_line":"            exception.Invalid(msg)"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7a3c09a3_7ae4feab","line":474,"range":{"start_line":474,"start_character":60,"end_line":474,"end_character":65},"in_reply_to":"7a3c09a3_eb24a661","updated":"2017-01-18 22:22:58.000000000","message":"Done","commit_id":"1706f5ccfb90986af6d22c1de23d332530e733ac"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7706e3a37b62967937b81d89c9c8af32dbb19adf","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Although we\u0027ll be focusing on the driver implementation there will also be some"},{"line_number":15,"context_line":"mentions on deployment configurations to provide a clear picture to developers"},{"line_number":16,"context_line":"and help them avoid implement custom solutions to solve things that were meant"},{"line_number":17,"context_line":"to be done via the cloud configuration."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Overview"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_4a148d4e","line":16,"range":{"start_line":16,"start_character":20,"end_line":16,"end_character":29},"updated":"2017-05-19 16:28:16.000000000","message":"implement -\u003e implementing","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"86e0878f300701fae6d9358368bdc030ba933696","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Although we\u0027ll be focusing on the driver implementation there will also be some"},{"line_number":15,"context_line":"mentions on deployment configurations to provide a clear picture to developers"},{"line_number":16,"context_line":"and help them avoid implement custom solutions to solve things that were meant"},{"line_number":17,"context_line":"to be done via the cloud configuration."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Overview"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_42556dc5","line":16,"range":{"start_line":16,"start_character":20,"end_line":16,"end_character":29},"in_reply_to":"ff0f0b1f_4a148d4e","updated":"2017-05-22 09:34:27.000000000","message":"Done","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"86e0878f300701fae6d9358368bdc030ba933696","unresolved":false,"context_lines":[{"line_number":20,"context_line":"--------"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"As a general rule replication is enabled and configured via the cinder.conf"},{"line_number":23,"context_line":"file under the driver\u0027s section, and volume relication is requested through the"},{"line_number":24,"context_line":"use of volume types."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"*NOTE*: Current replication implementation is v2.1 and it\u0027s meant to solve a"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_c2ddfd42","line":23,"range":{"start_line":23,"start_character":44,"end_line":23,"end_character":54},"updated":"2017-05-22 09:34:27.000000000","message":"replication","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7706e3a37b62967937b81d89c9c8af32dbb19adf","unresolved":false,"context_lines":[{"line_number":39,"context_line":"cinder-volume service perform the failover."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"After the failover is completed, the Cinder volume service will start using the"},{"line_number":42,"context_line":"failed-over secondary storage site for all operations and the user will be once"},{"line_number":43,"context_line":"again able to perform actions on all resources that were replicated, while all"},{"line_number":44,"context_line":"other resources will be in error status since they are no longer available."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Storage Device configuration"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_a530fae9","line":43,"range":{"start_line":42,"start_character":74,"end_line":43,"end_character":10},"updated":"2017-05-19 16:28:16.000000000","message":"once again be able","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"86e0878f300701fae6d9358368bdc030ba933696","unresolved":false,"context_lines":[{"line_number":39,"context_line":"cinder-volume service perform the failover."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"After the failover is completed, the Cinder volume service will start using the"},{"line_number":42,"context_line":"failed-over secondary storage site for all operations and the user will be once"},{"line_number":43,"context_line":"again able to perform actions on all resources that were replicated, while all"},{"line_number":44,"context_line":"other resources will be in error status since they are no longer available."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Storage Device configuration"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_82af05e2","line":43,"range":{"start_line":42,"start_character":74,"end_line":43,"end_character":10},"in_reply_to":"ff0f0b1f_a530fae9","updated":"2017-05-22 09:34:27.000000000","message":"I\u0027m pretty sure that this is grammatically correct, and that you can say \"will be once again able\", \"will once again be able\", or even \"will be able once again\".  Since your recommendation is the most commonly used form and as a native you prefer it I\u0027ll change it.","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7706e3a37b62967937b81d89c9c8af32dbb19adf","unresolved":false,"context_lines":[{"line_number":67,"context_line":"``replication_device`` is a multi dictionary option, that should be specified"},{"line_number":68,"context_line":"for each replication target device the admin wants to configure."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"While it is true that all driver use the same ``replication_device``"},{"line_number":71,"context_line":"configuration option this doesn\u0027t mean that they will all have the same data,"},{"line_number":72,"context_line":"as there is only one standardized and **REQUIRED** key in the configuration"},{"line_number":73,"context_line":"entry, all others are vendor specific:"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_e564b2e7","line":70,"range":{"start_line":70,"start_character":25,"end_line":70,"end_character":32},"updated":"2017-05-19 16:28:16.000000000","message":"drivers","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"86e0878f300701fae6d9358368bdc030ba933696","unresolved":false,"context_lines":[{"line_number":67,"context_line":"``replication_device`` is a multi dictionary option, that should be specified"},{"line_number":68,"context_line":"for each replication target device the admin wants to configure."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"While it is true that all driver use the same ``replication_device``"},{"line_number":71,"context_line":"configuration option this doesn\u0027t mean that they will all have the same data,"},{"line_number":72,"context_line":"as there is only one standardized and **REQUIRED** key in the configuration"},{"line_number":73,"context_line":"entry, all others are vendor specific:"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_62463124","line":70,"range":{"start_line":70,"start_character":25,"end_line":70,"end_character":32},"in_reply_to":"ff0f0b1f_e564b2e7","updated":"2017-05-22 09:34:27.000000000","message":"Done","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7706e3a37b62967937b81d89c9c8af32dbb19adf","unresolved":false,"context_lines":[{"line_number":118,"context_line":"Capabilities reporting"},{"line_number":119,"context_line":"----------------------"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"There are 2 new replication stats/capability keys that driver\u0027s supporting"},{"line_number":122,"context_line":"relication v2.1 should be reporting: ``replication_enabled`` and"},{"line_number":123,"context_line":"``replication_targets``::"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_25ae2a98","line":121,"range":{"start_line":121,"start_character":54,"end_line":121,"end_character":63},"updated":"2017-05-19 16:28:16.000000000","message":"drivers","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"86e0878f300701fae6d9358368bdc030ba933696","unresolved":false,"context_lines":[{"line_number":118,"context_line":"Capabilities reporting"},{"line_number":119,"context_line":"----------------------"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"There are 2 new replication stats/capability keys that driver\u0027s supporting"},{"line_number":122,"context_line":"relication v2.1 should be reporting: ``replication_enabled`` and"},{"line_number":123,"context_line":"``replication_targets``::"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_e26361b0","line":121,"range":{"start_line":121,"start_character":54,"end_line":121,"end_character":63},"in_reply_to":"ff0f0b1f_25ae2a98","updated":"2017-05-22 09:34:27.000000000","message":"Done","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7706e3a37b62967937b81d89c9c8af32dbb19adf","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    stats[\"replication_enabled\"] \u003d True|False"},{"line_number":126,"context_line":"    stats[\"replication_targets\"] \u003d [\u003cbackend-id_1, \u003cbackend-id_2\u003e...]"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"If a driver is behaving correctly we can expected the ``replication_targets``"},{"line_number":129,"context_line":"field to be populated whenever ``replication_enabled`` is set to ``True``, and"},{"line_number":130,"context_line":"it is expected to either be set to ``[]`` or be missing altogether when"},{"line_number":131,"context_line":"``replication_enabled`` is set to ``False``."}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_45847e0c","line":128,"range":{"start_line":128,"start_character":41,"end_line":128,"end_character":48},"updated":"2017-05-19 16:28:16.000000000","message":"expect","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"86e0878f300701fae6d9358368bdc030ba933696","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    stats[\"replication_enabled\"] \u003d True|False"},{"line_number":126,"context_line":"    stats[\"replication_targets\"] \u003d [\u003cbackend-id_1, \u003cbackend-id_2\u003e...]"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"If a driver is behaving correctly we can expected the ``replication_targets``"},{"line_number":129,"context_line":"field to be populated whenever ``replication_enabled`` is set to ``True``, and"},{"line_number":130,"context_line":"it is expected to either be set to ``[]`` or be missing altogether when"},{"line_number":131,"context_line":"``replication_enabled`` is set to ``False``."}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_a25d69ea","line":128,"range":{"start_line":128,"start_character":41,"end_line":128,"end_character":48},"in_reply_to":"ff0f0b1f_45847e0c","updated":"2017-05-22 09:34:27.000000000","message":"Done","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7706e3a37b62967937b81d89c9c8af32dbb19adf","unresolved":false,"context_lines":[{"line_number":133,"context_line":"The purpose of the ``replication_enabled`` field is to be used by the scheduler"},{"line_number":134,"context_line":"in volume types for creation and migrations."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"As for the ``replication_targets`` field it is only provided for information"},{"line_number":137,"context_line":"purposes so it can be retrieved through the ``get_capabilities`` using the"},{"line_number":138,"context_line":"admin REST API, but it will not be used for validation at the API layer.  That"},{"line_number":139,"context_line":"way Cloud Administrators will be able to know available secondary sites where"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_c5776e3a","line":136,"range":{"start_line":136,"start_character":65,"end_line":136,"end_character":76},"updated":"2017-05-19 16:28:16.000000000","message":"informational","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"86e0878f300701fae6d9358368bdc030ba933696","unresolved":false,"context_lines":[{"line_number":133,"context_line":"The purpose of the ``replication_enabled`` field is to be used by the scheduler"},{"line_number":134,"context_line":"in volume types for creation and migrations."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"As for the ``replication_targets`` field it is only provided for information"},{"line_number":137,"context_line":"purposes so it can be retrieved through the ``get_capabilities`` using the"},{"line_number":138,"context_line":"admin REST API, but it will not be used for validation at the API layer.  That"},{"line_number":139,"context_line":"way Cloud Administrators will be able to know available secondary sites where"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_426e8d95","line":136,"range":{"start_line":136,"start_character":65,"end_line":136,"end_character":76},"in_reply_to":"ff0f0b1f_c5776e3a","updated":"2017-05-22 09:34:27.000000000","message":"Done","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7706e3a37b62967937b81d89c9c8af32dbb19adf","unresolved":false,"context_lines":[{"line_number":201,"context_line":"- ``migrate_volume``"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"In these methods the driver will have to check the volume type to see if the"},{"line_number":204,"context_line":"volumes need to be replicated, we could use the same pattern describe in the"},{"line_number":205,"context_line":"`Volume Types / Extra Specs`_ section::"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def _is_replicated(self, volume):"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_8514d6a1","line":204,"range":{"start_line":204,"start_character":60,"end_line":204,"end_character":69},"updated":"2017-05-19 16:28:16.000000000","message":"described","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"86e0878f300701fae6d9358368bdc030ba933696","unresolved":false,"context_lines":[{"line_number":201,"context_line":"- ``migrate_volume``"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"In these methods the driver will have to check the volume type to see if the"},{"line_number":204,"context_line":"volumes need to be replicated, we could use the same pattern describe in the"},{"line_number":205,"context_line":"`Volume Types / Extra Specs`_ section::"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    def _is_replicated(self, volume):"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_c20f3ddf","line":204,"range":{"start_line":204,"start_character":60,"end_line":204,"end_character":69},"in_reply_to":"ff0f0b1f_8514d6a1","updated":"2017-05-22 09:34:27.000000000","message":"Done","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7706e3a37b62967937b81d89c9c8af32dbb19adf","unresolved":false,"context_lines":[{"line_number":281,"context_line":"to a secondary/target device."},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"Keep in mind the use case is that the primary backend has died a horrible death"},{"line_number":284,"context_line":"and is no longer valid, so any volumes that were on the primary and where not"},{"line_number":285,"context_line":"being replicated will no longer be available."},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"The method definition required from the driver to implement the failback"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_65f30275","line":284,"range":{"start_line":284,"start_character":68,"end_line":284,"end_character":73},"updated":"2017-05-19 16:28:16.000000000","message":"were","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"86e0878f300701fae6d9358368bdc030ba933696","unresolved":false,"context_lines":[{"line_number":281,"context_line":"to a secondary/target device."},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"Keep in mind the use case is that the primary backend has died a horrible death"},{"line_number":284,"context_line":"and is no longer valid, so any volumes that were on the primary and where not"},{"line_number":285,"context_line":"being replicated will no longer be available."},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"The method definition required from the driver to implement the failback"}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_22fef9ad","line":284,"range":{"start_line":284,"start_character":68,"end_line":284,"end_character":73},"in_reply_to":"ff0f0b1f_65f30275","updated":"2017-05-22 09:34:27.000000000","message":"Done","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"7706e3a37b62967937b81d89c9c8af32dbb19adf","unresolved":false,"context_lines":[{"line_number":461,"context_line":"remember that this is a Cloud Administrator operation, so we can return errors"},{"line_number":462,"context_line":"that reveal internals of the cloud, for example the type of storage device, and"},{"line_number":463,"context_line":"we must use the appropriate internationalization translation methods when"},{"line_number":464,"context_line":"raisin exceptions; for `VolumeDriverException` no translation is necessary"},{"line_number":465,"context_line":"since the manager doesn\u0027t log it or return to the user in any way, but any"},{"line_number":466,"context_line":"other exception should use the ``_()`` translation method since it will be"},{"line_number":467,"context_line":"returned to the REST API caller."}],"source_content_type":"text/x-rst","patch_set":12,"id":"ff0f0b1f_7799796c","line":464,"range":{"start_line":464,"start_character":0,"end_line":464,"end_character":6},"updated":"2017-05-19 16:28:16.000000000","message":"raising","commit_id":"546919c40ddb20ff656965f556d3bbc73cd21890"}]}
