)]}'
{"tempest/api/compute/volumes/test_attach_volume.py":[{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"a1048c913519ec62e1b52ee3023da42d9157b1cf","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.assertEqual(attached_volume[\u0027id\u0027], body[\u0027id\u0027])"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    @classmethod"},{"line_number":140,"context_line":"    def resource_cleanup(cls):"},{"line_number":141,"context_line":"        super(AttachVolumeTestJSON, cls).resource_cleanup()"},{"line_number":142,"context_line":"        cls.volumes_client.delete_volume(cls.volume[\u0027id\u0027])"},{"line_number":143,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a8ec9b2_2794ff35","line":140,"range":{"start_line":140,"start_character":28,"end_line":140,"end_character":30},"updated":"2016-09-14 07:44:55.000000000","message":"Please move it below resource_setup method","commit_id":"550e1dfb275b65a28f82453dafdf29d1d34c2c23"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"231be3e050785609f2b085ef31d7223701e4aef3","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from tempest import config"},{"line_number":17,"context_line":"from tempest import test"},{"line_number":18,"context_line":"from tempest.api.compute import base"},{"line_number":19,"context_line":"from tempest.common import compute"},{"line_number":20,"context_line":"from tempest.common import waiters"},{"line_number":21,"context_line":"from tempest.common.utils.linux import remote_client"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a8bc5a2_4c80e2c0","line":18,"updated":"2016-09-25 18:26:21.000000000","message":"The imports are not sorted alphabetically. Weird hacking didnt pick this up...","commit_id":"5aa1c8a410f2f655ac75d4e2493dba19962aab77"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"231be3e050785609f2b085ef31d7223701e4aef3","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        # List volume attachment of the server"},{"line_number":138,"context_line":"        server \u003d self._create_server()"},{"line_number":139,"context_line":"        volume \u003d self._create_volume()"},{"line_number":140,"context_line":"        attached_volume \u003d self._attach_volume(server[\u0027id\u0027], volume[\u0027id\u0027])"},{"line_number":141,"context_line":"        body \u003d self.servers_client.list_volume_attachments("},{"line_number":142,"context_line":"            server[\u0027id\u0027])[\u0027volumeAttachments\u0027]"},{"line_number":143,"context_line":"        self.assertEqual(1, len(body))"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a8bc5a2_4c19c2d6","line":140,"updated":"2016-09-25 18:26:21.000000000","message":"This variable should be named \"attachement\" because what is returned is not a volume but an \"attachement\" object.","commit_id":"5aa1c8a410f2f655ac75d4e2493dba19962aab77"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"231be3e050785609f2b085ef31d7223701e4aef3","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        volume \u003d self._create_volume()"},{"line_number":220,"context_line":"        num_vol \u003d self._count_volumes(server)"},{"line_number":221,"context_line":"        self._shelve_server(server)"},{"line_number":222,"context_line":"        attachment \u003d self._attach_volume(server[\u0027id\u0027], volume[\u0027id\u0027])"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        # Unshelve the instance and check that attached volume exists"},{"line_number":225,"context_line":"        self._unshelve_server_and_check_volumes(server, num_vol + 1)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a8bc5a2_6c0afe7a","line":222,"updated":"2016-09-25 18:26:21.000000000","message":"Like here, good variable naming here.","commit_id":"5aa1c8a410f2f655ac75d4e2493dba19962aab77"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"231be3e050785609f2b085ef31d7223701e4aef3","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        # Check the mountpoint is not None after unshelve server even in"},{"line_number":234,"context_line":"        # case of shelved_offloaded."},{"line_number":235,"context_line":"        self.assertIsNotNone(volume_attachment[\u0027device\u0027])"},{"line_number":236,"context_line":"        self._detach_volume(server[\u0027id\u0027],"},{"line_number":237,"context_line":"                            volume[\u0027id\u0027])"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    @test.idempotent_id(\u0027b54e86dd-a070-49c4-9c07-59ae6dae15aa\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a8bc5a2_ac2886e3","line":236,"updated":"2016-09-25 18:26:21.000000000","message":"That should be a single line, the line is less than 80char.","commit_id":"5aa1c8a410f2f655ac75d4e2493dba19962aab77"},{"author":{"_account_id":16437,"name":"Anna Babich","email":"anna.v.babich@gmail.com","username":"ababich"},"change_message_id":"b6b89a39dfeb2c3b876d9d056a4e94b54e5d3ca4","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _create_volume(self):"},{"line_number":59,"context_line":"        volume \u003d self.volumes_client.create_volume("},{"line_number":60,"context_line":"            size\u003dCONF.volume.volume_size, display_name\u003d\u0027test\u0027)[\u0027volume\u0027]"},{"line_number":61,"context_line":"        waiters.wait_for_volume_status(self.volumes_client,"},{"line_number":62,"context_line":"                                       volume[\u0027id\u0027], \u0027available\u0027)"},{"line_number":63,"context_line":"        self.addCleanup(self.volumes_client.wait_for_resource_deletion,"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a8bc5a2_c964c0ba","line":60,"updated":"2016-09-26 14:06:35.000000000","message":"In fact, the patch looks good, but why did you return to hard-coded \u0027test\u0027 name for created volume instead of generating it by appropriate data_utils\u0027 method with test class name\u0027s adding? It would provide clearer test\u0027s debug","commit_id":"61ba094d114acb0de5dbc3f889c7e535cbde9d2b"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"0d885c6c22dcf998cc166e5c348278c414388fdf","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _create_volume(self):"},{"line_number":59,"context_line":"        volume \u003d self.volumes_client.create_volume("},{"line_number":60,"context_line":"            size\u003dCONF.volume.volume_size, display_name\u003d\u0027test\u0027)[\u0027volume\u0027]"},{"line_number":61,"context_line":"        waiters.wait_for_volume_status(self.volumes_client,"},{"line_number":62,"context_line":"                                       volume[\u0027id\u0027], \u0027available\u0027)"},{"line_number":63,"context_line":"        self.addCleanup(self.volumes_client.wait_for_resource_deletion,"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a8bc5a2_256544b4","line":60,"in_reply_to":"5a8bc5a2_c964c0ba","updated":"2016-09-26 15:28:15.000000000","message":"You are right  , fixing it ! \nThanks","commit_id":"61ba094d114acb0de5dbc3f889c7e535cbde9d2b"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"8ebc98981c2f40170bb7e1a258e5d08ba7793cb5","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027,"},{"line_number":66,"context_line":"            adminPass\u003dself.image_ssh_password)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        # Record addresses so that we can ssh later"},{"line_number":69,"context_line":"        server[\u0027addresses\u0027] \u003d self.servers_client.list_addresses("},{"line_number":70,"context_line":"            server[\u0027id\u0027])[\u0027addresses\u0027]"},{"line_number":71,"context_line":"        return server"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a8bc5a2_f580458d","side":"PARENT","line":68,"updated":"2016-09-27 08:14:12.000000000","message":"It looks like we still need that line. It\u0027s used by the get_server_ip method.","commit_id":"b55eb3b5bac89485c420e622b92f66e901b7d743"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"3c6804a4cb738dfd39f4ea6f1d9b6b4cde1dedb4","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027,"},{"line_number":66,"context_line":"            adminPass\u003dself.image_ssh_password)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        # Record addresses so that we can ssh later"},{"line_number":69,"context_line":"        server[\u0027addresses\u0027] \u003d self.servers_client.list_addresses("},{"line_number":70,"context_line":"            server[\u0027id\u0027])[\u0027addresses\u0027]"},{"line_number":71,"context_line":"        return server"}],"source_content_type":"text/x-python","patch_set":16,"id":"5a8bc5a2_500bc7d5","side":"PARENT","line":68,"in_reply_to":"5a8bc5a2_f580458d","updated":"2016-09-27 08:20:02.000000000","message":"Fixing,\nThanks","commit_id":"b55eb3b5bac89485c420e622b92f66e901b7d743"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b607e4ba109446cb9ae355a6b5d02ed3209f4670","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027,"},{"line_number":66,"context_line":"            adminPass\u003dself.image_ssh_password)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        # Record addresses so that we can ssh later"},{"line_number":69,"context_line":"        server[\u0027addresses\u0027] \u003d self.servers_client.list_addresses("},{"line_number":70,"context_line":"            server[\u0027id\u0027])[\u0027addresses\u0027]"},{"line_number":71,"context_line":"        return server"}],"source_content_type":"text/x-python","patch_set":17,"id":"5a8bc5a2_3908a428","side":"PARENT","line":68,"updated":"2016-09-28 08:18:51.000000000","message":"Please leave that code comment. It helps understanding why we need to do this. Please don\u0027t remove code comment unless it is wrong.","commit_id":"b55eb3b5bac89485c420e622b92f66e901b7d743"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"535d78900255b31a21f24f98b27b900775756f55","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027,"},{"line_number":66,"context_line":"            adminPass\u003dself.image_ssh_password)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        # Record addresses so that we can ssh later"},{"line_number":69,"context_line":"        server[\u0027addresses\u0027] \u003d self.servers_client.list_addresses("},{"line_number":70,"context_line":"            server[\u0027id\u0027])[\u0027addresses\u0027]"},{"line_number":71,"context_line":"        return server"}],"source_content_type":"text/x-python","patch_set":17,"id":"5a8bc5a2_79406c36","side":"PARENT","line":68,"in_reply_to":"5a8bc5a2_3908a428","updated":"2016-09-28 08:20:05.000000000","message":"ok fixing","commit_id":"b55eb3b5bac89485c420e622b92f66e901b7d743"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fa280116f4d61ff9f60abe98b1dccccb2d1f17c9","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                           volume_id, \u0027available\u0027)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def _create_server(self):"},{"line_number":61,"context_line":"        # Start a server and wait for it to become ready"},{"line_number":62,"context_line":"        server \u003d self.create_test_server("},{"line_number":63,"context_line":"            validatable\u003dTrue,"},{"line_number":64,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a74a57a_bdd727ec","side":"PARENT","line":61,"range":{"start_line":61,"start_character":0,"end_line":61,"end_character":56},"updated":"2016-11-24 05:06:25.000000000","message":"we should not remove comments.","commit_id":"ca8be4ecb0700850a030acbfc9b9672ac5ddb687"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d36e981e539df21e901d538d85ddbeccc71b2f2d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        waiters.wait_for_volume_status(self.volumes_client,"},{"line_number":83,"context_line":"                                       volume[\u0027id\u0027], \u0027in-use\u0027)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        self.addCleanup(self._detach, server[\u0027id\u0027], volume[\u0027id\u0027])"},{"line_number":86,"context_line":"        return volume"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @test.idempotent_id(\u002752e9045a-e90d-4c0d-9087-79d657faffff\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a74a57a_5dcb7353","side":"PARENT","line":85,"range":{"start_line":85,"start_character":8,"end_line":85,"end_character":65},"updated":"2016-11-24 01:59:38.000000000","message":"This patch removes addCleanup for detaching.\nSo if a problem happens in the middle of the test, I guess the created resource will remain, right?","commit_id":"ca8be4ecb0700850a030acbfc9b9672ac5ddb687"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"d36e981e539df21e901d538d85ddbeccc71b2f2d","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from tempest import config"},{"line_number":17,"context_line":"from tempest import test"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from tempest.api.compute import base"},{"line_number":20,"context_line":"from tempest.common import compute"},{"line_number":21,"context_line":"from tempest.common import waiters"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from tempest.common.utils import data_utils"},{"line_number":24,"context_line":"from tempest.common.utils.linux import remote_client"},{"line_number":25,"context_line":"from tempest.lib.common.utils import test_utils"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"import testtools"},{"line_number":28,"context_line":"CONF \u003d config.CONF"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"5a74a57a_1dcbbba6","line":27,"range":{"start_line":19,"start_character":0,"end_line":27,"end_character":16},"updated":"2016-11-24 01:59:38.000000000","message":"We don\u0027t need to change the order of import here.\n\nThe order should be like\n\n standard libs\n\n 3rd-party libs (testtools in this case)\n\n local modules (tempest.xxx in this case)","commit_id":"e3abca941714b0a25d5b22975138676b93176abd"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fa280116f4d61ff9f60abe98b1dccccb2d1f17c9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            validatable\u003dTrue,"},{"line_number":55,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027,"},{"line_number":56,"context_line":"            adminPass\u003dself.image_ssh_password)"},{"line_number":57,"context_line":"        self.addCleanup(self.servers_client.delete_server, server[\u0027id\u0027])"},{"line_number":58,"context_line":"        # Record addresses so that we can ssh later"},{"line_number":59,"context_line":"        server[\u0027addresses\u0027] \u003d self.servers_client.list_addresses("},{"line_number":60,"context_line":"            server[\u0027id\u0027])[\u0027addresses\u0027]"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a74a57a_bd73a714","line":57,"range":{"start_line":57,"start_character":8,"end_line":57,"end_character":72},"updated":"2016-11-24 05:06:25.000000000","message":"self.create_test_server does take care of that. so we can remove this addCleanup","commit_id":"e3abca941714b0a25d5b22975138676b93176abd"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fa280116f4d61ff9f60abe98b1dccccb2d1f17c9","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            server[\u0027id\u0027])[\u0027addresses\u0027]"},{"line_number":61,"context_line":"        return server"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _create_volume(self):"},{"line_number":64,"context_line":"        vol_name \u003d data_utils.rand_name(self.__class__.__name__ + \u0027-volume\u0027)"},{"line_number":65,"context_line":"        volume \u003d self.volumes_client.create_volume("},{"line_number":66,"context_line":"            size\u003dCONF.volume.volume_size, display_name\u003dvol_name)[\u0027volume\u0027]"},{"line_number":67,"context_line":"        waiters.wait_for_volume_status(self.volumes_client,"},{"line_number":68,"context_line":"                                       volume[\u0027id\u0027], \u0027available\u0027)"},{"line_number":69,"context_line":"        self.addCleanup(self.volumes_client.wait_for_resource_deletion,"},{"line_number":70,"context_line":"                        volume[\u0027id\u0027])"},{"line_number":71,"context_line":"        self.addCleanup(test_utils.call_and_ignore_notfound_exc,"},{"line_number":72,"context_line":"                        self.volumes_client.delete_volume, volume[\u0027id\u0027])"},{"line_number":73,"context_line":"        return volume"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _detach_volume(self, server_id, volume_id):"},{"line_number":76,"context_line":"        self.servers_client.detach_volume(server_id, volume_id)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a74a57a_d1304ceb","line":73,"range":{"start_line":63,"start_character":0,"end_line":73,"end_character":21},"updated":"2016-11-24 05:06:25.000000000","message":"I feel tests can use volume \u003d self.create_volume() directly.","commit_id":"e3abca941714b0a25d5b22975138676b93176abd"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fa280116f4d61ff9f60abe98b1dccccb2d1f17c9","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        return volume"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def _detach_volume(self, server_id, volume_id):"},{"line_number":76,"context_line":"        self.servers_client.detach_volume(server_id, volume_id)"},{"line_number":77,"context_line":"        waiters.wait_for_volume_status(self.volumes_client,"},{"line_number":78,"context_line":"                                       volume_id, \u0027available\u0027)"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"5a74a57a_119f24b5","line":76,"range":{"start_line":76,"start_character":8,"end_line":76,"end_character":63},"updated":"2016-11-24 05:06:25.000000000","message":"web should pass error if volume is already detached.","commit_id":"e3abca941714b0a25d5b22975138676b93176abd"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fa280116f4d61ff9f60abe98b1dccccb2d1f17c9","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            volumeId\u003dvolume_id,"},{"line_number":85,"context_line":"            device\u003d\u0027/dev/%s\u0027 % self.device)[\u0027volumeAttachment\u0027]"},{"line_number":86,"context_line":"        waiters.wait_for_volume_status(self.volumes_client,"},{"line_number":87,"context_line":"                                       volume_id, \u0027in-use\u0027)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        return attachment"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"5a74a57a_916414e6","line":87,"range":{"start_line":87,"start_character":57,"end_line":87,"end_character":59},"updated":"2016-11-24 05:06:25.000000000","message":"we should add detach volume as addcleanup","commit_id":"e3abca941714b0a25d5b22975138676b93176abd"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fa280116f4d61ff9f60abe98b1dccccb2d1f17c9","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        self.assertEqual(server[\u0027id\u0027], body[\u0027serverId\u0027])"},{"line_number":157,"context_line":"        self.assertEqual(volume[\u0027id\u0027], body[\u0027volumeId\u0027])"},{"line_number":158,"context_line":"        self.assertEqual(attachment[\u0027id\u0027], body[\u0027id\u0027])"},{"line_number":159,"context_line":"        self._detach_volume(server[\u0027id\u0027], volume[\u0027id\u0027])"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"class AttachVolumeShelveTestJSON(AttachVolumeTestJSON):"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a74a57a_1178048f","line":159,"range":{"start_line":159,"start_character":8,"end_line":159,"end_character":55},"updated":"2016-11-24 05:06:25.000000000","message":"we should do detach in self._attach_volume only using addCleanup","commit_id":"e3abca941714b0a25d5b22975138676b93176abd"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9b8a73cf18a1cf2b960c7b45d48452ab13e9a3f8","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            waiters.wait_for_volume_status(self.volumes_client,"},{"line_number":68,"context_line":"                                           volume_id, \u0027available\u0027)"},{"line_number":69,"context_line":"        except lib_exc.NotFound:"},{"line_number":70,"context_line":"            LOG.warning(\"volume_id %s not detached to server %s\" % (volume_id,"},{"line_number":71,"context_line":"                        server_id))"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def _attach_volume(self, server_id, volume_id):"},{"line_number":74,"context_line":"        # Attach the volume to the server"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a74a57a_6b148a9f","line":71,"range":{"start_line":70,"start_character":24,"end_line":71,"end_character":35},"updated":"2016-11-27 09:28:19.000000000","message":"something like this-\n\n(\"Unable to detach volume \u0027%s\u0027 to server %s .\"\"\n \"Maybe it was already detached?\" % volume_id(volume_id,\n                        server_id))","commit_id":"5796c988286a476356950299142a5db4f7e13884"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"7e4ed5c5e1b7c243650660590022ba3e3e7100eb","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            waiters.wait_for_volume_status(self.volumes_client,"},{"line_number":68,"context_line":"                                           volume_id, \u0027available\u0027)"},{"line_number":69,"context_line":"        except lib_exc.NotFound:"},{"line_number":70,"context_line":"            LOG.warning(\"volume_id %s not detached to server %s\" % (volume_id,"},{"line_number":71,"context_line":"                        server_id))"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def _attach_volume(self, server_id, volume_id):"},{"line_number":74,"context_line":"        # Attach the volume to the server"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a74a57a_cbd4bebe","line":71,"range":{"start_line":70,"start_character":24,"end_line":71,"end_character":35},"in_reply_to":"5a74a57a_6b148a9f","updated":"2016-11-27 09:44:40.000000000","message":"fixing,\nThanks\nBenny","commit_id":"5796c988286a476356950299142a5db4f7e13884"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9b8a73cf18a1cf2b960c7b45d48452ab13e9a3f8","unresolved":false,"context_lines":[{"line_number":213,"context_line":"    @testtools.skipUnless(CONF.compute_feature_enabled.shelve,"},{"line_number":214,"context_line":"                          \u0027Shelve is not available.\u0027)"},{"line_number":215,"context_line":"    def test_attach_volume_shelved_or_offload_server(self):"},{"line_number":216,"context_line":"        # Count number of volumes on instance, shelve"},{"line_number":217,"context_line":"        # server and attach pre-created volume to shelved server"},{"line_number":218,"context_line":"        server \u003d self._create_server()"},{"line_number":219,"context_line":"        volume \u003d self.create_volume()"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a74a57a_ab330261","line":216,"range":{"start_line":216,"start_character":0,"end_line":216,"end_character":53},"updated":"2016-11-27 09:28:19.000000000","message":"old comment seems valid. we should not change that. note test still create server and so..","commit_id":"5796c988286a476356950299142a5db4f7e13884"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"7e4ed5c5e1b7c243650660590022ba3e3e7100eb","unresolved":false,"context_lines":[{"line_number":213,"context_line":"    @testtools.skipUnless(CONF.compute_feature_enabled.shelve,"},{"line_number":214,"context_line":"                          \u0027Shelve is not available.\u0027)"},{"line_number":215,"context_line":"    def test_attach_volume_shelved_or_offload_server(self):"},{"line_number":216,"context_line":"        # Count number of volumes on instance, shelve"},{"line_number":217,"context_line":"        # server and attach pre-created volume to shelved server"},{"line_number":218,"context_line":"        server \u003d self._create_server()"},{"line_number":219,"context_line":"        volume \u003d self.create_volume()"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a74a57a_4bf8ae49","line":216,"range":{"start_line":216,"start_character":0,"end_line":216,"end_character":53},"in_reply_to":"5a74a57a_ab330261","updated":"2016-11-27 09:44:40.000000000","message":"fixed","commit_id":"5796c988286a476356950299142a5db4f7e13884"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9b8a73cf18a1cf2b960c7b45d48452ab13e9a3f8","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        # Check the mountpoint is not None after unshelve server even in"},{"line_number":234,"context_line":"        # case of shelved_offloaded."},{"line_number":235,"context_line":"        self.assertIsNotNone(volume_attachment[\u0027device\u0027])"},{"line_number":236,"context_line":"        self._detach_volume(server[\u0027id\u0027], volume[\u0027id\u0027])"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    @test.idempotent_id(\u0027b54e86dd-a070-49c4-9c07-59ae6dae15aa\u0027)"},{"line_number":239,"context_line":"    @testtools.skipUnless(CONF.compute_feature_enabled.shelve,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a74a57a_cb383e40","line":236,"range":{"start_line":236,"start_character":6,"end_line":236,"end_character":55},"updated":"2016-11-27 09:28:19.000000000","message":"as _attach_volume does this with addCleanup we do not need this.","commit_id":"5796c988286a476356950299142a5db4f7e13884"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"7e4ed5c5e1b7c243650660590022ba3e3e7100eb","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        # Check the mountpoint is not None after unshelve server even in"},{"line_number":234,"context_line":"        # case of shelved_offloaded."},{"line_number":235,"context_line":"        self.assertIsNotNone(volume_attachment[\u0027device\u0027])"},{"line_number":236,"context_line":"        self._detach_volume(server[\u0027id\u0027], volume[\u0027id\u0027])"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    @test.idempotent_id(\u0027b54e86dd-a070-49c4-9c07-59ae6dae15aa\u0027)"},{"line_number":239,"context_line":"    @testtools.skipUnless(CONF.compute_feature_enabled.shelve,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a74a57a_cba2fe4a","line":236,"range":{"start_line":236,"start_character":6,"end_line":236,"end_character":55},"in_reply_to":"5a74a57a_cb383e40","updated":"2016-11-27 09:44:40.000000000","message":"fixed","commit_id":"5796c988286a476356950299142a5db4f7e13884"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c8a5eb21c36feb185e7d49ae8ec78e7d3ce4263a","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        return server"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _detach_volume(self, server_id, volume_id):"},{"line_number":65,"context_line":"        try:"},{"line_number":66,"context_line":"            self.servers_client.detach_volume(server_id, volume_id)"},{"line_number":67,"context_line":"            waiters.wait_for_volume_status(self.volumes_client,"},{"line_number":68,"context_line":"                                           volume_id, \u0027available\u0027)"},{"line_number":69,"context_line":"        except lib_exc.NotFound:"},{"line_number":70,"context_line":"            LOG.warning(\"Unable to detach volume %s from server %s \""},{"line_number":71,"context_line":"                        \"possibly it was already detached\" % (volume_id,"},{"line_number":72,"context_line":"                                                              server_id))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _attach_volume(self, server_id, volume_id, device\u003dNone):"},{"line_number":75,"context_line":"        # Attach the volume to the server"}],"source_content_type":"text/x-python","patch_set":23,"id":"5a74a57a_0ae1e7fe","line":72,"range":{"start_line":65,"start_character":0,"end_line":72,"end_character":73},"updated":"2016-11-29 17:51:58.000000000","message":"maybe we can replace this try-excep call_and_ignore_notfound_exc, but it is fine to do that later because of this big patch.","commit_id":"5c5f7d8de5a31df2aeca0e62fb5a2373ed92d665"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"19394ccd05f1a8917a1edc8ed87680ea00e53187","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    @testtools.skipUnless(CONF.compute_feature_enabled.shelve,"},{"line_number":244,"context_line":"                          \u0027Shelve is not available.\u0027)"},{"line_number":245,"context_line":"    def test_detach_volume_shelved_or_offload_server(self):"},{"line_number":246,"context_line":"        # Count number of volumes on instance, shelve"},{"line_number":247,"context_line":"        # server and attach pre-created volume to shelved server"},{"line_number":248,"context_line":"        server \u003d self._create_server()"},{"line_number":249,"context_line":"        volume \u003d self.create_volume()"},{"line_number":250,"context_line":"        num_vol \u003d self._count_volumes(server)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5a74a57a_c08e41cf","line":247,"range":{"start_line":246,"start_character":0,"end_line":247,"end_character":64},"updated":"2016-11-28 12:47:50.000000000","message":"you should not change this comment.","commit_id":"5c5f7d8de5a31df2aeca0e62fb5a2373ed92d665"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"ce429bd59a4c5ca0e4de60f32c5abddf44c5644a","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    @testtools.skipUnless(CONF.compute_feature_enabled.shelve,"},{"line_number":244,"context_line":"                          \u0027Shelve is not available.\u0027)"},{"line_number":245,"context_line":"    def test_detach_volume_shelved_or_offload_server(self):"},{"line_number":246,"context_line":"        # Count number of volumes on instance, shelve"},{"line_number":247,"context_line":"        # server and attach pre-created volume to shelved server"},{"line_number":248,"context_line":"        server \u003d self._create_server()"},{"line_number":249,"context_line":"        volume \u003d self.create_volume()"},{"line_number":250,"context_line":"        num_vol \u003d self._count_volumes(server)"}],"source_content_type":"text/x-python","patch_set":23,"id":"5a74a57a_63973748","line":247,"range":{"start_line":246,"start_character":0,"end_line":247,"end_character":64},"in_reply_to":"5a74a57a_c08e41cf","updated":"2016-11-28 12:54:52.000000000","message":"You are right , i missed it .\nAnyway , with your permission i will leave it as is .\nBenny","commit_id":"5c5f7d8de5a31df2aeca0e62fb5a2373ed92d665"}]}
