)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"d92ac368d3351398bc90c9ce3e728c3915a9155c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Storwize: modify hyperswap host_site configuration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The hyperswap feature introduced the storwize_preferred_host_site"},{"line_number":10,"context_line":"in the volume type."},{"line_number":11,"context_line":"Actually, the host_site of hyperswap is related to host ports"},{"line_number":12,"context_line":"instead of volume."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f96bb07_f479c392","line":10,"range":{"start_line":9,"start_character":1,"end_line":10,"end_character":19},"updated":"2018-01-16 05:33:59.000000000","message":"A new configuration storwize_preferred_host_site is introduced in volume type for hyperswap feature. Actually, the host_site is related to host rather than volume. \n\nSo this patch removes the parameter strowzie_preferred_host_site from volume type configuration and adds it to cinder back-end configuration. This patch also update it from StrOpt to DictOpt.","commit_id":"4ab2c907c6706347c1cb6f6fbf5f4278513ede27"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"c341cce50d47856a2eeb377f2a9bf0c6447fe9e4","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Storwize: modify hyperswap host_site configuration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The hyperswap feature introduced the storwize_preferred_host_site"},{"line_number":10,"context_line":"in the volume type."},{"line_number":11,"context_line":"Actually, the host_site of hyperswap is related to host ports"},{"line_number":12,"context_line":"instead of volume."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f96bb07_2ec34c3a","line":10,"range":{"start_line":9,"start_character":1,"end_line":10,"end_character":19},"in_reply_to":"7f96bb07_f479c392","updated":"2018-01-16 09:45:20.000000000","message":"Hi Xiaoqin，thanks a lot for your comment.It is addressed in the new patch.","commit_id":"4ab2c907c6706347c1cb6f6fbf5f4278513ede27"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"0b30efe93b5df1759a5706d00823f97348018d4d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"volume type configuration and adds strowize_host_site to cinder"},{"line_number":15,"context_line":"back-end configuration."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"DocImpact"},{"line_number":18,"context_line":"Closes-Bug:  1742866"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ie1df4cc45c2d1f72f33beea7ddc5bb3797a34728"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7f96bb07_d7ac7bee","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":9},"updated":"2018-01-18 00:23:57.000000000","message":"Please remove this as you have the doc change in.  We are trying to get people to stop using this tag.","commit_id":"d11a867ea909845a15e41820516aafce1a6042c5"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"2f1cad147f93f27114d3d38e8ad37ca7bc15b75e","unresolved":false,"context_lines":[{"line_number":14,"context_line":"volume type configuration and adds strowize_host_site to cinder"},{"line_number":15,"context_line":"back-end configuration."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"DocImpact"},{"line_number":18,"context_line":"Closes-Bug:  1742866"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ie1df4cc45c2d1f72f33beea7ddc5bb3797a34728"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"7f96bb07_946b4eef","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":9},"in_reply_to":"7f96bb07_d7ac7bee","updated":"2018-01-18 01:59:11.000000000","message":"Hi Jay, thank you very much for your comment, the DocImpact was removed from the commit message","commit_id":"d11a867ea909845a15e41820516aafce1a6042c5"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"01b96b0040015af72a0695b657a3b78c0c73c404","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Storwize: modify hyperswap host_site configuration"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The new configuration storwize_preferred_host_site was introduced in"},{"line_number":10,"context_line":"volume type for hyperswap feature on Queen release. Actually, the"},{"line_number":11,"context_line":"host_site is related to host rather than volume."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch removes the parameter strowzie_preferred_host_site from"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"df7087c5_a8201a9d","line":10,"range":{"start_line":10,"start_character":36,"end_line":10,"end_character":42},"updated":"2018-03-19 21:49:43.000000000","message":"Queens","commit_id":"d327bdd334a235ba196cfc323b970e52a2044e1f"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"01b96b0040015af72a0695b657a3b78c0c73c404","unresolved":false,"context_lines":[{"line_number":10,"context_line":"volume type for hyperswap feature on Queen release. Actually, the"},{"line_number":11,"context_line":"host_site is related to host rather than volume."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This patch removes the parameter strowzie_preferred_host_site from"},{"line_number":14,"context_line":"volume type configuration and updates it from StrOpt to DictOpt in cinder"},{"line_number":15,"context_line":"back-end configuration."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"df7087c5_683a02ce","line":13,"range":{"start_line":13,"start_character":33,"end_line":13,"end_character":61},"updated":"2018-03-19 21:49:43.000000000","message":"storwize_preferred_host_site","commit_id":"d327bdd334a235ba196cfc323b970e52a2044e1f"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_common.py":[{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"d92ac368d3351398bc90c9ce3e728c3915a9155c","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                    \u0027volume, the peer pool must exist on the other site.\u0027),"},{"line_number":132,"context_line":"    cfg.DictOpt(\u0027storwize_preferred_host_site\u0027,"},{"line_number":133,"context_line":"                default\u003d{},"},{"line_number":134,"context_line":"                help\u003d\u0027Specifies the preferred site for different host.\u0027"},{"line_number":135,"context_line":"                     \u0027The WWPNs or IQNs were used in the standard dict config:\u0027"},{"line_number":136,"context_line":"                     \u0027 storwize_preferred_host_site \u003d \u0027"},{"line_number":137,"context_line":"                     \u0027site1:wwpn1\u0026wwpn2\u0026wwpn3\u0026iqn1\u0026iqn2\u0026iqn3,\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_cb768c07","line":134,"range":{"start_line":134,"start_character":55,"end_line":134,"end_character":69},"updated":"2018-01-16 05:33:59.000000000","message":"Specifies the preferred host site info for hyperswap volume.","commit_id":"a35df61b25f249b8a2373af02cf8fbf0e7a69532"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"d92ac368d3351398bc90c9ce3e728c3915a9155c","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    cfg.DictOpt(\u0027storwize_preferred_host_site\u0027,"},{"line_number":133,"context_line":"                default\u003d{},"},{"line_number":134,"context_line":"                help\u003d\u0027Specifies the preferred site for different host.\u0027"},{"line_number":135,"context_line":"                     \u0027The WWPNs or IQNs were used in the standard dict config:\u0027"},{"line_number":136,"context_line":"                     \u0027 storwize_preferred_host_site \u003d \u0027"},{"line_number":137,"context_line":"                     \u0027site1:wwpn1\u0026wwpn2\u0026wwpn3\u0026iqn1\u0026iqn2\u0026iqn3,\u0027"},{"line_number":138,"context_line":"                     \u0027site2:wwpn4\u0026wwpn5\u0026wwpn6\u0026iqn4\u0026iqn5\u0026iqn6.\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"7f96bb07_4bea7c75","line":135,"range":{"start_line":135,"start_character":0,"end_line":135,"end_character":79},"updated":"2018-01-16 05:33:59.000000000","message":"One wwpn or multiple wwpns used in the host can be specified. For exmaple: storwize_preferred_host_site\u003dsite1:wwpn1,site2:wwpn2\u0026wwpn3. or storwize_preferred_host_site\u003dsite1:iqn1,site2:iqn2","commit_id":"a35df61b25f249b8a2373af02cf8fbf0e7a69532"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"d92ac368d3351398bc90c9ce3e728c3915a9155c","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                    \u0027volume, the peer pool must exist on the other site.\u0027),"},{"line_number":132,"context_line":"    cfg.DictOpt(\u0027storwize_preferred_host_site\u0027,"},{"line_number":133,"context_line":"                default\u003d{},"},{"line_number":134,"context_line":"                help\u003d\u0027Specifies the preferred site for different host.\u0027"},{"line_number":135,"context_line":"                     \u0027The WWPNs or IQNs were used in the standard dict config:\u0027"},{"line_number":136,"context_line":"                     \u0027 storwize_preferred_host_site \u003d \u0027"},{"line_number":137,"context_line":"                     \u0027site1:wwpn1\u0026wwpn2\u0026wwpn3\u0026iqn1\u0026iqn2\u0026iqn3,\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_f4d54344","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":71},"updated":"2018-01-16 05:33:59.000000000","message":"Specifies the preferred host site info for hyperswap volume.","commit_id":"4ab2c907c6706347c1cb6f6fbf5f4278513ede27"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"c341cce50d47856a2eeb377f2a9bf0c6447fe9e4","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                    \u0027volume, the peer pool must exist on the other site.\u0027),"},{"line_number":132,"context_line":"    cfg.DictOpt(\u0027storwize_preferred_host_site\u0027,"},{"line_number":133,"context_line":"                default\u003d{},"},{"line_number":134,"context_line":"                help\u003d\u0027Specifies the preferred site for different host.\u0027"},{"line_number":135,"context_line":"                     \u0027The WWPNs or IQNs were used in the standard dict config:\u0027"},{"line_number":136,"context_line":"                     \u0027 storwize_preferred_host_site \u003d \u0027"},{"line_number":137,"context_line":"                     \u0027site1:wwpn1\u0026wwpn2\u0026wwpn3\u0026iqn1\u0026iqn2\u0026iqn3,\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_eedec40f","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":71},"in_reply_to":"7f96bb07_f4d54344","updated":"2018-01-16 09:45:20.000000000","message":"Done","commit_id":"4ab2c907c6706347c1cb6f6fbf5f4278513ede27"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"d92ac368d3351398bc90c9ce3e728c3915a9155c","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    cfg.DictOpt(\u0027storwize_preferred_host_site\u0027,"},{"line_number":133,"context_line":"                default\u003d{},"},{"line_number":134,"context_line":"                help\u003d\u0027Specifies the preferred site for different host.\u0027"},{"line_number":135,"context_line":"                     \u0027The WWPNs or IQNs were used in the standard dict config:\u0027"},{"line_number":136,"context_line":"                     \u0027 storwize_preferred_host_site \u003d \u0027"},{"line_number":137,"context_line":"                     \u0027site1:wwpn1\u0026wwpn2\u0026wwpn3\u0026iqn1\u0026iqn2\u0026iqn3,\u0027"},{"line_number":138,"context_line":"                     \u0027site2:wwpn4\u0026wwpn5\u0026wwpn6\u0026iqn4\u0026iqn5\u0026iqn6.\u0027),"},{"line_number":139,"context_line":"    cfg.IntOpt(\u0027cycle_period_seconds\u0027,"},{"line_number":140,"context_line":"               default\u003d300,"},{"line_number":141,"context_line":"               min\u003d60, max\u003d86400,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_94287f34","line":138,"range":{"start_line":135,"start_character":0,"end_line":138,"end_character":64},"updated":"2018-01-16 05:33:59.000000000","message":"One wwpn or multiple wwpns used in the host can be specified. For exmaple: storwize_preferred_host_site\u003dsite1:wwpn1,site2:wwpn2\u0026wwpn3. or storwize_preferred_host_site\u003dsite1:iqn1,site2:iqn2","commit_id":"4ab2c907c6706347c1cb6f6fbf5f4278513ede27"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"c341cce50d47856a2eeb377f2a9bf0c6447fe9e4","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    cfg.DictOpt(\u0027storwize_preferred_host_site\u0027,"},{"line_number":133,"context_line":"                default\u003d{},"},{"line_number":134,"context_line":"                help\u003d\u0027Specifies the preferred site for different host.\u0027"},{"line_number":135,"context_line":"                     \u0027The WWPNs or IQNs were used in the standard dict config:\u0027"},{"line_number":136,"context_line":"                     \u0027 storwize_preferred_host_site \u003d \u0027"},{"line_number":137,"context_line":"                     \u0027site1:wwpn1\u0026wwpn2\u0026wwpn3\u0026iqn1\u0026iqn2\u0026iqn3,\u0027"},{"line_number":138,"context_line":"                     \u0027site2:wwpn4\u0026wwpn5\u0026wwpn6\u0026iqn4\u0026iqn5\u0026iqn6.\u0027),"},{"line_number":139,"context_line":"    cfg.IntOpt(\u0027cycle_period_seconds\u0027,"},{"line_number":140,"context_line":"               default\u003d300,"},{"line_number":141,"context_line":"               min\u003d60, max\u003d86400,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_0ee450e0","line":138,"range":{"start_line":135,"start_character":0,"end_line":138,"end_character":64},"in_reply_to":"7f96bb07_94287f34","updated":"2018-01-16 09:45:20.000000000","message":"Done","commit_id":"4ab2c907c6706347c1cb6f6fbf5f4278513ede27"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"d92ac368d3351398bc90c9ce3e728c3915a9155c","unresolved":false,"context_lines":[{"line_number":5467,"context_line":"    def _hyperswap_volume_host_site_select(self, volume, connector,"},{"line_number":5468,"context_line":"                                           iscsi\u003dFalse):"},{"line_number":5469,"context_line":"        host_site \u003d self.configuration.safe_get(\u0027storwize_preferred_host_site\u0027)"},{"line_number":5470,"context_line":"        if not host_site:"},{"line_number":5471,"context_line":"            msg \u003d (_(\u0027There is no host_site configured for a hyperswap\u0027"},{"line_number":5472,"context_line":"                     \u0027 volume %s.\u0027) % volume.name)"},{"line_number":5473,"context_line":"            LOG.error(msg)"},{"line_number":5474,"context_line":"            raise exception.InvalidInput(message\u003dmsg)"},{"line_number":5475,"context_line":""},{"line_number":5476,"context_line":"        select_site \u003d None"},{"line_number":5477,"context_line":"        if \u0027wwpns\u0027 in connector and not iscsi:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_e2649e24","line":5474,"range":{"start_line":5470,"start_character":0,"end_line":5474,"end_character":53},"updated":"2018-01-16 05:33:59.000000000","message":"Just return None for this function and do the verify logic when it is needed since this function may be reusing.","commit_id":"4ab2c907c6706347c1cb6f6fbf5f4278513ede27"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"c341cce50d47856a2eeb377f2a9bf0c6447fe9e4","unresolved":false,"context_lines":[{"line_number":5467,"context_line":"    def _hyperswap_volume_host_site_select(self, volume, connector,"},{"line_number":5468,"context_line":"                                           iscsi\u003dFalse):"},{"line_number":5469,"context_line":"        host_site \u003d self.configuration.safe_get(\u0027storwize_preferred_host_site\u0027)"},{"line_number":5470,"context_line":"        if not host_site:"},{"line_number":5471,"context_line":"            msg \u003d (_(\u0027There is no host_site configured for a hyperswap\u0027"},{"line_number":5472,"context_line":"                     \u0027 volume %s.\u0027) % volume.name)"},{"line_number":5473,"context_line":"            LOG.error(msg)"},{"line_number":5474,"context_line":"            raise exception.InvalidInput(message\u003dmsg)"},{"line_number":5475,"context_line":""},{"line_number":5476,"context_line":"        select_site \u003d None"},{"line_number":5477,"context_line":"        if \u0027wwpns\u0027 in connector and not iscsi:"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_cee988b7","line":5474,"range":{"start_line":5470,"start_character":0,"end_line":5474,"end_character":53},"in_reply_to":"7f96bb07_e2649e24","updated":"2018-01-16 09:45:20.000000000","message":"Hi Xiaoqin，thanks a lot for your comment.It is addressed in the new patch.","commit_id":"4ab2c907c6706347c1cb6f6fbf5f4278513ede27"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"d92ac368d3351398bc90c9ce3e728c3915a9155c","unresolved":false,"context_lines":[{"line_number":5494,"context_line":"                        raise exception.InvalidInput("},{"line_number":5495,"context_line":"                            reason\u003d_("},{"line_number":5496,"context_line":"                                \u0027Configured the host IQN in both site.\u0027))"},{"line_number":5497,"context_line":"        if select_site is None:"},{"line_number":5498,"context_line":"            raise exception.InvalidInput("},{"line_number":5499,"context_line":"                reason\u003d_("},{"line_number":5500,"context_line":"                    \u0027All the wwpns or IQNs of the host are not in the\u0027"},{"line_number":5501,"context_line":"                    \u0027 storwize_preferred_host_site configuration.\u0027))"},{"line_number":5502,"context_line":"        return select_site"},{"line_number":5503,"context_line":""},{"line_number":5504,"context_line":"    def _update_host_site_for_hyperswap_volume(self, host_name, host_site):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_4ed10323","line":5501,"range":{"start_line":5497,"start_character":0,"end_line":5501,"end_character":68},"updated":"2018-01-16 05:33:59.000000000","message":"Same above.","commit_id":"4ab2c907c6706347c1cb6f6fbf5f4278513ede27"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"c341cce50d47856a2eeb377f2a9bf0c6447fe9e4","unresolved":false,"context_lines":[{"line_number":5494,"context_line":"                        raise exception.InvalidInput("},{"line_number":5495,"context_line":"                            reason\u003d_("},{"line_number":5496,"context_line":"                                \u0027Configured the host IQN in both site.\u0027))"},{"line_number":5497,"context_line":"        if select_site is None:"},{"line_number":5498,"context_line":"            raise exception.InvalidInput("},{"line_number":5499,"context_line":"                reason\u003d_("},{"line_number":5500,"context_line":"                    \u0027All the wwpns or IQNs of the host are not in the\u0027"},{"line_number":5501,"context_line":"                    \u0027 storwize_preferred_host_site configuration.\u0027))"},{"line_number":5502,"context_line":"        return select_site"},{"line_number":5503,"context_line":""},{"line_number":5504,"context_line":"    def _update_host_site_for_hyperswap_volume(self, host_name, host_site):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_8ecf0055","line":5501,"range":{"start_line":5497,"start_character":0,"end_line":5501,"end_character":68},"in_reply_to":"7f96bb07_4ed10323","updated":"2018-01-16 09:45:20.000000000","message":"Done","commit_id":"4ab2c907c6706347c1cb6f6fbf5f4278513ede27"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"ee6ae7494524fea07b577b5ce33c703677584675","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                default\u003d{},"},{"line_number":135,"context_line":"                help\u003d\u0027Specifies the site information for host.\u0027"},{"line_number":136,"context_line":"                     \u0027One WWPN or multi WWPNs used in the host can be \u0027"},{"line_number":137,"context_line":"                     \u0027specified. For exmaple: \u0027"},{"line_number":138,"context_line":"                     \u0027storwize_preferred_host_site\u003dsite1:wwpn1,\u0027"},{"line_number":139,"context_line":"                     \u0027site2:wwpn2\u0026wwpn3 or \u0027"},{"line_number":140,"context_line":"                     \u0027storwize_preferred_host_site\u003dsite1:iqn1,site2:iqn2\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa0c359_72206049","line":137,"range":{"start_line":137,"start_character":37,"end_line":137,"end_character":44},"updated":"2018-02-13 14:27:25.000000000","message":"example","commit_id":"09b738a718c578776695dd411ecca4403f9f6882"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"59abe2d72a92e5af865920e18e00b934253469a7","unresolved":false,"context_lines":[{"line_number":134,"context_line":"                default\u003d{},"},{"line_number":135,"context_line":"                help\u003d\u0027Specifies the site information for host.\u0027"},{"line_number":136,"context_line":"                     \u0027One WWPN or multi WWPNs used in the host can be \u0027"},{"line_number":137,"context_line":"                     \u0027specified. For exmaple: \u0027"},{"line_number":138,"context_line":"                     \u0027storwize_preferred_host_site\u003dsite1:wwpn1,\u0027"},{"line_number":139,"context_line":"                     \u0027site2:wwpn2\u0026wwpn3 or \u0027"},{"line_number":140,"context_line":"                     \u0027storwize_preferred_host_site\u003dsite1:iqn1,site2:iqn2\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa0c359_902b2b93","line":137,"range":{"start_line":137,"start_character":37,"end_line":137,"end_character":44},"in_reply_to":"3fa0c359_72206049","updated":"2018-02-27 02:38:51.000000000","message":"Done","commit_id":"09b738a718c578776695dd411ecca4403f9f6882"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"01b96b0040015af72a0695b657a3b78c0c73c404","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                    \u0027volume, the peer pool must exist on the other site.\u0027),"},{"line_number":133,"context_line":"    cfg.DictOpt(\u0027storwize_preferred_host_site\u0027,"},{"line_number":134,"context_line":"                default\u003d{},"},{"line_number":135,"context_line":"                help\u003d\u0027Specifies the site information for host.\u0027"},{"line_number":136,"context_line":"                     \u0027One WWPN or multi WWPNs used in the host can be \u0027"},{"line_number":137,"context_line":"                     \u0027specified. For example: \u0027"},{"line_number":138,"context_line":"                     \u0027storwize_preferred_host_site\u003dsite1:wwpn1,\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_28340ade","line":135,"range":{"start_line":135,"start_character":61,"end_line":135,"end_character":63},"updated":"2018-03-19 21:49:43.000000000","message":"missing space at EOL","commit_id":"d327bdd334a235ba196cfc323b970e52a2044e1f"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"8d37c76f22d14cbb7108e9400943480861e668c9","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                    \u0027volume, the peer pool must exist on the other site.\u0027),"},{"line_number":133,"context_line":"    cfg.DictOpt(\u0027storwize_preferred_host_site\u0027,"},{"line_number":134,"context_line":"                default\u003d{},"},{"line_number":135,"context_line":"                help\u003d\u0027Specifies the site information for host.\u0027"},{"line_number":136,"context_line":"                     \u0027One WWPN or multi WWPNs used in the host can be \u0027"},{"line_number":137,"context_line":"                     \u0027specified. For example: \u0027"},{"line_number":138,"context_line":"                     \u0027storwize_preferred_host_site\u003dsite1:wwpn1,\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_4c03880e","line":135,"range":{"start_line":135,"start_character":61,"end_line":135,"end_character":63},"in_reply_to":"df7087c5_28340ade","updated":"2018-03-20 08:16:22.000000000","message":"Hi Jay,thanks a lot for your comments. It is addressed in the new patch.","commit_id":"d327bdd334a235ba196cfc323b970e52a2044e1f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"6699615351f709fc93d4c190c76ae7c538da0ea0","unresolved":false,"context_lines":[{"line_number":873,"context_line":"        pool_data \u003d self.get_pool_attrs(pool)"},{"line_number":874,"context_line":"        if pool_data is None:"},{"line_number":875,"context_line":"            reason \u003d (_(\u0027Failed getting details for pool %s.\u0027) % pool)"},{"line_number":876,"context_line":"            raise exception.InvalidInput(reason\u003dreason)"},{"line_number":877,"context_line":"        if \u0027site_id\u0027 in pool_data and pool_data[\u0027site_id\u0027]:"},{"line_number":878,"context_line":"            for node in state[\u0027storage_nodes\u0027].values():"},{"line_number":879,"context_line":"                if pool_data[\u0027site_id\u0027] \u003d\u003d node[\u0027site_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_21fc2d3d","line":876,"updated":"2018-03-19 18:44:33.000000000","message":"InvalidInput exception should be used to validate REST params only. It it depends on config option value it we should raise InvalidConfigurationValue exception","commit_id":"d327bdd334a235ba196cfc323b970e52a2044e1f"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"8d37c76f22d14cbb7108e9400943480861e668c9","unresolved":false,"context_lines":[{"line_number":873,"context_line":"        pool_data \u003d self.get_pool_attrs(pool)"},{"line_number":874,"context_line":"        if pool_data is None:"},{"line_number":875,"context_line":"            reason \u003d (_(\u0027Failed getting details for pool %s.\u0027) % pool)"},{"line_number":876,"context_line":"            raise exception.InvalidInput(reason\u003dreason)"},{"line_number":877,"context_line":"        if \u0027site_id\u0027 in pool_data and pool_data[\u0027site_id\u0027]:"},{"line_number":878,"context_line":"            for node in state[\u0027storage_nodes\u0027].values():"},{"line_number":879,"context_line":"                if pool_data[\u0027site_id\u0027] \u003d\u003d node[\u0027site_id\u0027]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_0c0d9036","line":876,"in_reply_to":"df7087c5_21fc2d3d","updated":"2018-03-20 08:16:22.000000000","message":"Hi Ivan,thanks a lot for your comments. It is addressed in the new patch.","commit_id":"d327bdd334a235ba196cfc323b970e52a2044e1f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"6699615351f709fc93d4c190c76ae7c538da0ea0","unresolved":false,"context_lines":[{"line_number":5575,"context_line":"                    if select_site is None:"},{"line_number":5576,"context_line":"                        select_site \u003d site"},{"line_number":5577,"context_line":"                    elif select_site !\u003d site:"},{"line_number":5578,"context_line":"                        raise exception.InvalidInput("},{"line_number":5579,"context_line":"                            reason\u003d_(\u0027Configured the host IQN in both site.\u0027))"},{"line_number":5580,"context_line":"        else:"},{"line_number":5581,"context_line":"            for wwpn in connector[\u0027wwpns\u0027]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_418e01d1","line":5578,"updated":"2018-03-19 18:44:33.000000000","message":"The same as above","commit_id":"d327bdd334a235ba196cfc323b970e52a2044e1f"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"8d37c76f22d14cbb7108e9400943480861e668c9","unresolved":false,"context_lines":[{"line_number":5575,"context_line":"                    if select_site is None:"},{"line_number":5576,"context_line":"                        select_site \u003d site"},{"line_number":5577,"context_line":"                    elif select_site !\u003d site:"},{"line_number":5578,"context_line":"                        raise exception.InvalidInput("},{"line_number":5579,"context_line":"                            reason\u003d_(\u0027Configured the host IQN in both site.\u0027))"},{"line_number":5580,"context_line":"        else:"},{"line_number":5581,"context_line":"            for wwpn in connector[\u0027wwpns\u0027]:"}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_ac110456","line":5578,"in_reply_to":"df7087c5_418e01d1","updated":"2018-03-20 08:16:22.000000000","message":"Done","commit_id":"d327bdd334a235ba196cfc323b970e52a2044e1f"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"01b96b0040015af72a0695b657a3b78c0c73c404","unresolved":false,"context_lines":[{"line_number":5576,"context_line":"                        select_site \u003d site"},{"line_number":5577,"context_line":"                    elif select_site !\u003d site:"},{"line_number":5578,"context_line":"                        raise exception.InvalidInput("},{"line_number":5579,"context_line":"                            reason\u003d_(\u0027Configured the host IQN in both site.\u0027))"},{"line_number":5580,"context_line":"        else:"},{"line_number":5581,"context_line":"            for wwpn in connector[\u0027wwpns\u0027]:"},{"line_number":5582,"context_line":"                for site, wwpn_list in host_site.items():"}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_c85a2e29","line":5579,"range":{"start_line":5579,"start_character":69,"end_line":5579,"end_character":78},"updated":"2018-03-19 21:49:43.000000000","message":"sites","commit_id":"d327bdd334a235ba196cfc323b970e52a2044e1f"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"8d37c76f22d14cbb7108e9400943480861e668c9","unresolved":false,"context_lines":[{"line_number":5576,"context_line":"                        select_site \u003d site"},{"line_number":5577,"context_line":"                    elif select_site !\u003d site:"},{"line_number":5578,"context_line":"                        raise exception.InvalidInput("},{"line_number":5579,"context_line":"                            reason\u003d_(\u0027Configured the host IQN in both site.\u0027))"},{"line_number":5580,"context_line":"        else:"},{"line_number":5581,"context_line":"            for wwpn in connector[\u0027wwpns\u0027]:"},{"line_number":5582,"context_line":"                for site, wwpn_list in host_site.items():"}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_6c1bec72","line":5579,"range":{"start_line":5579,"start_character":69,"end_line":5579,"end_character":78},"in_reply_to":"df7087c5_c85a2e29","updated":"2018-03-20 08:16:22.000000000","message":"Done","commit_id":"d327bdd334a235ba196cfc323b970e52a2044e1f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"6699615351f709fc93d4c190c76ae7c538da0ea0","unresolved":false,"context_lines":[{"line_number":5584,"context_line":"                        if select_site is None:"},{"line_number":5585,"context_line":"                            select_site \u003d site"},{"line_number":5586,"context_line":"                        elif select_site !\u003d site:"},{"line_number":5587,"context_line":"                            raise exception.InvalidInput("},{"line_number":5588,"context_line":"                                reason\u003d_("},{"line_number":5589,"context_line":"                                    \u0027Configured the host wwpns not in the\u0027"},{"line_number":5590,"context_line":"                                    \u0027 same site.\u0027))"}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_01c249ea","line":5587,"updated":"2018-03-19 18:44:33.000000000","message":"The same as above","commit_id":"d327bdd334a235ba196cfc323b970e52a2044e1f"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"8d37c76f22d14cbb7108e9400943480861e668c9","unresolved":false,"context_lines":[{"line_number":5584,"context_line":"                        if select_site is None:"},{"line_number":5585,"context_line":"                            select_site \u003d site"},{"line_number":5586,"context_line":"                        elif select_site !\u003d site:"},{"line_number":5587,"context_line":"                            raise exception.InvalidInput("},{"line_number":5588,"context_line":"                                reason\u003d_("},{"line_number":5589,"context_line":"                                    \u0027Configured the host wwpns not in the\u0027"},{"line_number":5590,"context_line":"                                    \u0027 same site.\u0027))"}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_8c18c075","line":5587,"in_reply_to":"df7087c5_01c249ea","updated":"2018-03-20 08:16:22.000000000","message":"Done","commit_id":"d327bdd334a235ba196cfc323b970e52a2044e1f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"6699615351f709fc93d4c190c76ae7c538da0ea0","unresolved":false,"context_lines":[{"line_number":5602,"context_line":"                       {\u0027ref_host_site\u0027: ref_host_site,"},{"line_number":5603,"context_line":"                        \u0027host_site\u0027: host_site})"},{"line_number":5604,"context_line":"                LOG.error(msg)"},{"line_number":5605,"context_line":"                raise exception.InvalidInput(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_c1bbf16f","line":5605,"updated":"2018-03-19 18:44:33.000000000","message":"ditto","commit_id":"d327bdd334a235ba196cfc323b970e52a2044e1f"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"8d37c76f22d14cbb7108e9400943480861e668c9","unresolved":false,"context_lines":[{"line_number":5602,"context_line":"                       {\u0027ref_host_site\u0027: ref_host_site,"},{"line_number":5603,"context_line":"                        \u0027host_site\u0027: host_site})"},{"line_number":5604,"context_line":"                LOG.error(msg)"},{"line_number":5605,"context_line":"                raise exception.InvalidInput(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":16,"id":"df7087c5_2c2734b9","line":5605,"in_reply_to":"df7087c5_c1bbf16f","updated":"2018-03-20 08:16:22.000000000","message":"Done","commit_id":"d327bdd334a235ba196cfc323b970e52a2044e1f"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_fc.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"ee6ae7494524fea07b577b5ce33c703677584675","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        is_hyper_volume \u003d backend_helper.is_volume_hyperswap(volume_name)"},{"line_number":172,"context_line":"        # The host_site is necessary for hyperswap volume."},{"line_number":173,"context_line":"        if is_hyper_volume and host_site is None:"},{"line_number":174,"context_line":"            msg \u003d (_(\u0027There is no correct host_site configured for a hyperswap\u0027"},{"line_number":175,"context_line":"                     \u0027 volume %s.\u0027) % volume.name)"},{"line_number":176,"context_line":"            LOG.error(msg)"},{"line_number":177,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa0c359_8bcd5db8","line":174,"range":{"start_line":174,"start_character":42,"end_line":174,"end_character":51},"updated":"2018-02-13 14:27:25.000000000","message":"Should this reference the option name for clarity?  \"storwize_preferred_host_site\"","commit_id":"09b738a718c578776695dd411ecca4403f9f6882"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"59abe2d72a92e5af865920e18e00b934253469a7","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        is_hyper_volume \u003d backend_helper.is_volume_hyperswap(volume_name)"},{"line_number":172,"context_line":"        # The host_site is necessary for hyperswap volume."},{"line_number":173,"context_line":"        if is_hyper_volume and host_site is None:"},{"line_number":174,"context_line":"            msg \u003d (_(\u0027There is no correct host_site configured for a hyperswap\u0027"},{"line_number":175,"context_line":"                     \u0027 volume %s.\u0027) % volume.name)"},{"line_number":176,"context_line":"            LOG.error(msg)"},{"line_number":177,"context_line":"            raise exception.VolumeDriverException(message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa0c359_90048b19","line":174,"range":{"start_line":174,"start_character":42,"end_line":174,"end_character":51},"in_reply_to":"3fa0c359_8bcd5db8","updated":"2018-02-27 02:38:51.000000000","message":"Hi Eric, thanks a lot for your comments, it was addressed in the new patch.","commit_id":"09b738a718c578776695dd411ecca4403f9f6882"}],"cinder/volume/drivers/ibm/storwize_svc/storwize_svc_iscsi.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"fb87b8d00a83a1f3f2b135d123e3da5637ef9907","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            msg \u003d (_(\u0027There is no correct host_site configured for a hyperswap\u0027"},{"line_number":173,"context_line":"                     \u0027 volume %s.\u0027) % volume.name)"},{"line_number":174,"context_line":"            LOG.error(msg)"},{"line_number":175,"context_line":"            raise exception.InvalidInput(message\u003dmsg)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        # Check if a host object is defined for this host name"},{"line_number":178,"context_line":"        host_name \u003d backend_helper.get_host_from_connector(connector,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f96bb07_378e9527","line":175,"updated":"2018-01-22 13:48:39.000000000","message":"I\u0027m not sure that it\u0027s correct type of exception. VolumeDriverException looks better here. InvalidInput is used for API and user input validations, not for config options validation","commit_id":"d55e2a9e9e4e2e4beaa78defbc8eab5f7c431ad0"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"dd3680e6e177cc1eb1496f3f03e5fda1840704c8","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            msg \u003d (_(\u0027There is no correct host_site configured for a hyperswap\u0027"},{"line_number":173,"context_line":"                     \u0027 volume %s.\u0027) % volume.name)"},{"line_number":174,"context_line":"            LOG.error(msg)"},{"line_number":175,"context_line":"            raise exception.InvalidInput(message\u003dmsg)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        # Check if a host object is defined for this host name"},{"line_number":178,"context_line":"        host_name \u003d backend_helper.get_host_from_connector(connector,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f96bb07_c7c68917","line":175,"in_reply_to":"7f96bb07_378e9527","updated":"2018-01-23 02:51:32.000000000","message":"Hi Ivan, thanks a lot for your comment, it is addressed in the new patch.","commit_id":"d55e2a9e9e4e2e4beaa78defbc8eab5f7c431ad0"}],"doc/source/configuration/block-storage/drivers/ibm-storwize-svc-driver.rst":[{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"d92ac368d3351398bc90c9ce3e728c3915a9155c","unresolved":false,"context_lines":[{"line_number":532,"context_line":"``drivers:volume_topology`` set to ``hyperswap``."},{"line_number":533,"context_line":"To support hyperswap volumes, IBM Storwize/SVC firmware version 7.6.0 or"},{"line_number":534,"context_line":"later is required."},{"line_number":535,"context_line":"Add the following to the back-end specification to specify the host preferred"},{"line_number":536,"context_line":"site for hyperswap volume."},{"line_number":537,"context_line":"FC:"},{"line_number":538,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f96bb07_d4b847c9","line":535,"range":{"start_line":535,"start_character":34,"end_line":535,"end_character":47},"updated":"2018-01-16 05:33:59.000000000","message":"configuration","commit_id":"4ab2c907c6706347c1cb6f6fbf5f4278513ede27"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"c341cce50d47856a2eeb377f2a9bf0c6447fe9e4","unresolved":false,"context_lines":[{"line_number":532,"context_line":"``drivers:volume_topology`` set to ``hyperswap``."},{"line_number":533,"context_line":"To support hyperswap volumes, IBM Storwize/SVC firmware version 7.6.0 or"},{"line_number":534,"context_line":"later is required."},{"line_number":535,"context_line":"Add the following to the back-end specification to specify the host preferred"},{"line_number":536,"context_line":"site for hyperswap volume."},{"line_number":537,"context_line":"FC:"},{"line_number":538,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f96bb07_a96bd61b","line":535,"range":{"start_line":535,"start_character":34,"end_line":535,"end_character":47},"in_reply_to":"7f96bb07_d4b847c9","updated":"2018-01-16 09:45:20.000000000","message":"Done","commit_id":"4ab2c907c6706347c1cb6f6fbf5f4278513ede27"},{"author":{"_account_id":17045,"name":"xiaoqin","email":"xiaoqin.li@hotmail.com","username":"xiaoqin"},"change_message_id":"d92ac368d3351398bc90c9ce3e728c3915a9155c","unresolved":false,"context_lines":[{"line_number":548,"context_line":"   storwize_preferred_host_site \u003d site1:iqn.1993-08.org.debian:01:eac5ccc1aaa\u0026iqn.1993-08.org.debian:01:be53b7e236be,"},{"line_number":549,"context_line":"                                  site2:iqn.1993-08.org.debian:01:eac5ccc1bbb\u0026iqn.1993-08.org.debian:01:abcdefg9876w"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"The site1 and site2 are names of the two sites on Storwize storage."},{"line_number":552,"context_line":"The WWPNs or IQNs of the instances are configured to their mapping"},{"line_number":553,"context_line":"site."},{"line_number":554,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f96bb07_34ef2bb1","line":551,"range":{"start_line":551,"start_character":0,"end_line":551,"end_character":67},"updated":"2018-01-16 05:33:59.000000000","message":"The site1 and site2 are names of the two host sites used in Storwize storage. The wwpns and iqns are the connectors used for host mapping in Storwize.","commit_id":"4ab2c907c6706347c1cb6f6fbf5f4278513ede27"},{"author":{"_account_id":11186,"name":"yixuan zhang","email":"yixuan_z@hotmail.com","username":"yixuanzhang"},"change_message_id":"c341cce50d47856a2eeb377f2a9bf0c6447fe9e4","unresolved":false,"context_lines":[{"line_number":548,"context_line":"   storwize_preferred_host_site \u003d site1:iqn.1993-08.org.debian:01:eac5ccc1aaa\u0026iqn.1993-08.org.debian:01:be53b7e236be,"},{"line_number":549,"context_line":"                                  site2:iqn.1993-08.org.debian:01:eac5ccc1bbb\u0026iqn.1993-08.org.debian:01:abcdefg9876w"},{"line_number":550,"context_line":""},{"line_number":551,"context_line":"The site1 and site2 are names of the two sites on Storwize storage."},{"line_number":552,"context_line":"The WWPNs or IQNs of the instances are configured to their mapping"},{"line_number":553,"context_line":"site."},{"line_number":554,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"7f96bb07_497492fe","line":551,"range":{"start_line":551,"start_character":0,"end_line":551,"end_character":67},"in_reply_to":"7f96bb07_34ef2bb1","updated":"2018-01-16 09:45:20.000000000","message":"Done","commit_id":"4ab2c907c6706347c1cb6f6fbf5f4278513ede27"}]}
