)]}'
{"nova/compute/api.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"931657e98e77e7cba02fd6c3d14a4d1b4056e5d4","unresolved":false,"context_lines":[{"line_number":1761,"context_line":"                    # compute manager and then call the"},{"line_number":1762,"context_line":"                    # volume_api.terminate_connection."},{"line_number":1763,"context_line":"                    # One option is to expose it via rpc, something"},{"line_number":1764,"context_line":"                    # like get_volume_connector."},{"line_number":1765,"context_line":"                    self.volume_api.detach(elevated, bdm.volume_id,"},{"line_number":1766,"context_line":"                                           instance.uuid)"},{"line_number":1767,"context_line":"                    if bdm.delete_on_termination:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_dccd0386","line":1764,"updated":"2016-01-31 12:34:13.000000000","message":"Thats not going to really work, these are cases where we can\u0027t contact the compute node, often because it has been dead / destroyed.","commit_id":"2f1b84eacb1e64ea544ee036e97223bd00573756"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"906b36d870da6d1d10f8d4443d17876d33c43896","unresolved":false,"context_lines":[{"line_number":1761,"context_line":"                    # compute manager and then call the"},{"line_number":1762,"context_line":"                    # volume_api.terminate_connection."},{"line_number":1763,"context_line":"                    # One option is to expose it via rpc, something"},{"line_number":1764,"context_line":"                    # like get_volume_connector."},{"line_number":1765,"context_line":"                    self.volume_api.detach(elevated, bdm.volume_id,"},{"line_number":1766,"context_line":"                                           instance.uuid)"},{"line_number":1767,"context_line":"                    if bdm.delete_on_termination:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_013eae27","line":1764,"in_reply_to":"7a5de9d1_dccd0386","updated":"2016-02-01 15:17:36.000000000","message":"John you are right, but in other cases, like shelved-offloaded instances it could be handy to have a way to retrieve the volume connector info, I have the impression that there could be valid use cases for cinder as well.","commit_id":"2f1b84eacb1e64ea544ee036e97223bd00573756"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"70249b19ec4632e1b24ebe77d3e87849afedc753","unresolved":false,"context_lines":[{"line_number":1774,"context_line":"        return quotas"},{"line_number":1775,"context_line":""},{"line_number":1776,"context_line":"    def _local_cleanup_bdm_volumes(self, bdms, instance, context):"},{"line_number":1777,"context_line":"        \"\"\"The method deletes the bdm records and, if a bdm is a volume, call"},{"line_number":1778,"context_line":"        the terminate connection and the detach volume via the Volume API."},{"line_number":1779,"context_line":"        Note that at this point we do not have the information about the"},{"line_number":1780,"context_line":"        correct connector so we pass a fake one."},{"line_number":1781,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_e5bf27a8","line":1778,"range":{"start_line":1777,"start_character":73,"end_line":1778,"end_character":32},"updated":"2016-07-11 15:11:09.000000000","message":"This is now wrong.","commit_id":"18bc9ad8feb60efd259611805f01002bbc07f806"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"550cf6b718af32b026f320108b004a3e567a0720","unresolved":false,"context_lines":[{"line_number":1774,"context_line":"        return quotas"},{"line_number":1775,"context_line":""},{"line_number":1776,"context_line":"    def _local_cleanup_bdm_volumes(self, bdms, instance, context):"},{"line_number":1777,"context_line":"        \"\"\"The method deletes the bdm records and, if a bdm is a volume, call"},{"line_number":1778,"context_line":"        the terminate connection and the detach volume via the Volume API."},{"line_number":1779,"context_line":"        Note that at this point we do not have the information about the"},{"line_number":1780,"context_line":"        correct connector so we pass a fake one."},{"line_number":1781,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_948d86d5","line":1778,"range":{"start_line":1777,"start_character":73,"end_line":1778,"end_character":32},"in_reply_to":"1aa78d24_e5bf27a8","updated":"2016-07-12 10:38:05.000000000","message":"Done","commit_id":"18bc9ad8feb60efd259611805f01002bbc07f806"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"70249b19ec4632e1b24ebe77d3e87849afedc753","unresolved":false,"context_lines":[{"line_number":1776,"context_line":"    def _local_cleanup_bdm_volumes(self, bdms, instance, context):"},{"line_number":1777,"context_line":"        \"\"\"The method deletes the bdm records and, if a bdm is a volume, call"},{"line_number":1778,"context_line":"        the terminate connection and the detach volume via the Volume API."},{"line_number":1779,"context_line":"        Note that at this point we do not have the information about the"},{"line_number":1780,"context_line":"        correct connector so we pass a fake one."},{"line_number":1781,"context_line":"        \"\"\""},{"line_number":1782,"context_line":"        elevated \u003d context.elevated()"},{"line_number":1783,"context_line":"        for bdm in bdms:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_25e00fcc","line":1780,"range":{"start_line":1779,"start_character":8,"end_line":1780,"end_character":48},"updated":"2016-07-11 15:11:09.000000000","message":"And this.","commit_id":"18bc9ad8feb60efd259611805f01002bbc07f806"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"550cf6b718af32b026f320108b004a3e567a0720","unresolved":false,"context_lines":[{"line_number":1776,"context_line":"    def _local_cleanup_bdm_volumes(self, bdms, instance, context):"},{"line_number":1777,"context_line":"        \"\"\"The method deletes the bdm records and, if a bdm is a volume, call"},{"line_number":1778,"context_line":"        the terminate connection and the detach volume via the Volume API."},{"line_number":1779,"context_line":"        Note that at this point we do not have the information about the"},{"line_number":1780,"context_line":"        correct connector so we pass a fake one."},{"line_number":1781,"context_line":"        \"\"\""},{"line_number":1782,"context_line":"        elevated \u003d context.elevated()"},{"line_number":1783,"context_line":"        for bdm in bdms:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_14b87674","line":1780,"range":{"start_line":1779,"start_character":8,"end_line":1780,"end_character":48},"in_reply_to":"1aa78d24_25e00fcc","updated":"2016-07-12 10:38:05.000000000","message":"Done","commit_id":"18bc9ad8feb60efd259611805f01002bbc07f806"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"70249b19ec4632e1b24ebe77d3e87849afedc753","unresolved":false,"context_lines":[{"line_number":1787,"context_line":"                    # we need to get the right volume connector from the"},{"line_number":1788,"context_line":"                    # compute manager and then call the"},{"line_number":1789,"context_line":"                    # volume_api.terminate_connection."},{"line_number":1790,"context_line":"                    # One option is to expose it via rpc, something"},{"line_number":1791,"context_line":"                    # like get_volume_connector."},{"line_number":1792,"context_line":"                    self.volume_api.detach(elevated, bdm.volume_id,"},{"line_number":1793,"context_line":"                                           instance.uuid)"},{"line_number":1794,"context_line":"                    if bdm.delete_on_termination:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_05aeb384","line":1791,"range":{"start_line":1790,"start_character":22,"end_line":1791,"end_character":48},"updated":"2016-07-11 15:11:09.000000000","message":"Don\u0027t we get here because the host is down which is why we can\u0027t RPC to the compute to get this information...?","commit_id":"18bc9ad8feb60efd259611805f01002bbc07f806"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"550cf6b718af32b026f320108b004a3e567a0720","unresolved":false,"context_lines":[{"line_number":1787,"context_line":"                    # we need to get the right volume connector from the"},{"line_number":1788,"context_line":"                    # compute manager and then call the"},{"line_number":1789,"context_line":"                    # volume_api.terminate_connection."},{"line_number":1790,"context_line":"                    # One option is to expose it via rpc, something"},{"line_number":1791,"context_line":"                    # like get_volume_connector."},{"line_number":1792,"context_line":"                    self.volume_api.detach(elevated, bdm.volume_id,"},{"line_number":1793,"context_line":"                                           instance.uuid)"},{"line_number":1794,"context_line":"                    if bdm.delete_on_termination:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1aa78d24_a80ae6cf","line":1791,"range":{"start_line":1790,"start_character":22,"end_line":1791,"end_character":48},"in_reply_to":"1aa78d24_05aeb384","updated":"2016-07-12 10:38:05.000000000","message":"I think it is more useful to put a NOTE quoting Scott comment to state what is the situation is at the moment and what we aim to achieve eventually.","commit_id":"18bc9ad8feb60efd259611805f01002bbc07f806"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f7436ead810a6b7f77b26d46121cbb2aff6d2c7a","unresolved":false,"context_lines":[{"line_number":1736,"context_line":"        for bdm in bdms:"},{"line_number":1737,"context_line":"            if bdm.is_volume:"},{"line_number":1738,"context_line":"                try:"},{"line_number":1739,"context_line":"                    # NOTE(andrearosa): To complete the cleanup of volumes"},{"line_number":1740,"context_line":"                    # we need to call the volume_api.terminate_connection"},{"line_number":1741,"context_line":"                    # passing the correct connector which is not available"},{"line_number":1742,"context_line":"                    # here."},{"line_number":1743,"context_line":"                    # Cinder does have plans to keep the connector info with"},{"line_number":1744,"context_line":"                    # some future proposed code changes."},{"line_number":1745,"context_line":"                    # And Cinder would have to provide an API to expose that."}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_e5237f56","line":1742,"range":{"start_line":1739,"start_character":20,"end_line":1742,"end_character":27},"updated":"2016-08-04 21:38:32.000000000","message":"a686185fc02ec421fd27270a343c19f668b95da6 stashes the connector in the bdm.connection_info as part of initialize_connection on the compute during attach. That wouldn\u0027t be available for volumes attached before that change, but wouldn\u0027t it be worth checking for it and using it if the BDM has it to terminate the connection?","commit_id":"e8d21347498d577bf11ae4e83d8a1a74cfa7e4d9"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"894d9ecc05b415832316253ae53619c25cc20a0c","unresolved":false,"context_lines":[{"line_number":1746,"context_line":"            # we don\u0027t have the attachment/connection information either."},{"line_number":1747,"context_line":"            connector \u003d jsonutils.loads(bdm.connection_info).get(\u0027connector\u0027)"},{"line_number":1748,"context_line":"            if connector:"},{"line_number":1749,"context_line":"                if connector.get(\u0027host\u0027) \u003d\u003d instance.host:"},{"line_number":1750,"context_line":"                    return connector"},{"line_number":1751,"context_line":"                LOG.debug(\u0027Found stashed volume connector for instance but \u0027"},{"line_number":1752,"context_line":"                          \u0027connector host %(connector_host)s does not match \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad45d7e_bdfee935","line":1749,"range":{"start_line":1749,"start_character":16,"end_line":1749,"end_character":58},"updated":"2016-08-10 02:49:20.000000000","message":"How is this supposed to work with an instance in error state that has had instance.host set to None? AFAICT, an attempt to delete such an instance would detach the volumes but not terminate the connection, leaving them \"in-use\" after the delete.","commit_id":"33510d4be990417d2a3a428106f6f745db5af6ed"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"bc9d17cc04f381ed8f0573b1851104c9dc47951b","unresolved":false,"context_lines":[{"line_number":1746,"context_line":"            # we don\u0027t have the attachment/connection information either."},{"line_number":1747,"context_line":"            connector \u003d jsonutils.loads(bdm.connection_info).get(\u0027connector\u0027)"},{"line_number":1748,"context_line":"            if connector:"},{"line_number":1749,"context_line":"                if connector.get(\u0027host\u0027) \u003d\u003d instance.host:"},{"line_number":1750,"context_line":"                    return connector"},{"line_number":1751,"context_line":"                LOG.debug(\u0027Found stashed volume connector for instance but \u0027"},{"line_number":1752,"context_line":"                          \u0027connector host %(connector_host)s does not match \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9ad45d7e_408c2635","line":1749,"range":{"start_line":1749,"start_character":16,"end_line":1749,"end_character":58},"in_reply_to":"9ad45d7e_bdfee935","updated":"2016-08-10 03:10:58.000000000","message":"Sorry, ignore my previous comment because I think this hasn\u0027t changed the current behavior. There\u0027s already an existing bug that I\u0027m working on, where volumes stay \"in-use\" after deleting error instances. I\u0027ll need to address that in my patch.","commit_id":"33510d4be990417d2a3a428106f6f745db5af6ed"}],"nova/tests/unit/compute/test_compute_api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c225d279616130d304916b14a271b5f1e6c702b1","unresolved":false,"context_lines":[{"line_number":1249,"context_line":""},{"line_number":1250,"context_line":"        self.compute_api.volume_api.terminate_connection("},{"line_number":1251,"context_line":"            mox.IgnoreArg(), mox.IgnoreArg(), mox.IgnoreArg()).\\"},{"line_number":1252,"context_line":"               AndRaise(exception.  VolumeNotFound(\u0027volume_id\u0027))"},{"line_number":1253,"context_line":"        bdms[0].destroy()"},{"line_number":1254,"context_line":""},{"line_number":1255,"context_line":"        inst.destroy()"}],"source_content_type":"text/x-python","patch_set":9,"id":"bacf61ea_7aa725a7","side":"PARENT","line":1252,"range":{"start_line":1252,"start_character":15,"end_line":1252,"end_character":64},"updated":"2016-08-05 01:48:11.000000000","message":"This is removing the error handling check in the test, which we should still do, so we can change this to detach instead of terminate_connection.","commit_id":"d219e25452c390e67060fe44a1328a0c7580cad4"}]}
