)]}'
{"nova/tests/functional/notification_sample_tests/test_instance.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d73d3386fc961b5a39794ff20969dfadc16314e7","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d cfg.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"SWAP_VOL \u003d \u0027a07f71dc-8151-4e7d-a0cc-cd24a3f11113\u0027"},{"line_number":30,"context_line":"SWAP_NEW_VOL \u003d \u0027227cc671-f30b-4488-96fd-7d0bf13648d8\u0027"},{"line_number":31,"context_line":"SWAP_ERR_VOL \u003d \u0027828419fa-3efb-4533-b458-4267ca5fe9b1\u0027"},{"line_number":32,"context_line":"SWAP_ERR_NEW_VOL \u003d \u00279c6d9c2d-7a8f-4c80-938d-3bf062b8d489\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class NeutronFixture(fixtures.Fixture):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_97bece62","line":32,"range":{"start_line":29,"start_character":0,"end_line":32,"end_character":57},"updated":"2016-06-15 08:25:41.000000000","message":"This should be part of the CinderFixture to make it self contained","commit_id":"908a800fc0638119305c015a1941c2d0a62e389d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"187c9c38986c0358abe8571c930c4fe67b4aac3d","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CONF \u003d cfg.CONF"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"SWAP_VOL \u003d \u0027a07f71dc-8151-4e7d-a0cc-cd24a3f11113\u0027"},{"line_number":30,"context_line":"SWAP_NEW_VOL \u003d \u0027227cc671-f30b-4488-96fd-7d0bf13648d8\u0027"},{"line_number":31,"context_line":"SWAP_ERR_VOL \u003d \u0027828419fa-3efb-4533-b458-4267ca5fe9b1\u0027"},{"line_number":32,"context_line":"SWAP_ERR_NEW_VOL \u003d \u00279c6d9c2d-7a8f-4c80-938d-3bf062b8d489\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class NeutronFixture(fixtures.Fixture):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_0e95fc30","line":32,"range":{"start_line":29,"start_character":0,"end_line":32,"end_character":57},"in_reply_to":"7aa08908_97bece62","updated":"2016-06-18 12:31:11.000000000","message":"Done","commit_id":"908a800fc0638119305c015a1941c2d0a62e389d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d73d3386fc961b5a39794ff20969dfadc16314e7","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                             \u0027id\u0027: volume_id,"},{"line_number":140,"context_line":"                             \u0027size\u0027: 1"},{"line_number":141,"context_line":"                         }"},{"line_number":142,"context_line":"                if ((self.test.swap_volume_instance_uuid and"},{"line_number":143,"context_line":"                     volume_id \u003d\u003d SWAP_VOL) or"},{"line_number":144,"context_line":"                    (self.test.swap_volume_instance_error_uuid and"},{"line_number":145,"context_line":"                     volume_id \u003d\u003d SWAP_ERR_VOL)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_d75cd67f","line":142,"range":{"start_line":142,"start_character":26,"end_line":142,"end_character":56},"updated":"2016-06-15 08:25:41.000000000","message":"This kind of dependency makes the fixture hard to reuse. Can we configure the fixture from the test instead?","commit_id":"908a800fc0638119305c015a1941c2d0a62e389d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"187c9c38986c0358abe8571c930c4fe67b4aac3d","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                             \u0027id\u0027: volume_id,"},{"line_number":140,"context_line":"                             \u0027size\u0027: 1"},{"line_number":141,"context_line":"                         }"},{"line_number":142,"context_line":"                if ((self.test.swap_volume_instance_uuid and"},{"line_number":143,"context_line":"                     volume_id \u003d\u003d SWAP_VOL) or"},{"line_number":144,"context_line":"                    (self.test.swap_volume_instance_error_uuid and"},{"line_number":145,"context_line":"                     volume_id \u003d\u003d SWAP_ERR_VOL)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_ee99906e","line":142,"range":{"start_line":142,"start_character":26,"end_line":142,"end_character":56},"in_reply_to":"7aa08908_d75cd67f","updated":"2016-06-18 12:31:11.000000000","message":"Done","commit_id":"908a800fc0638119305c015a1941c2d0a62e389d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d73d3386fc961b5a39794ff20969dfadc16314e7","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                         }"},{"line_number":142,"context_line":"                if ((self.test.swap_volume_instance_uuid and"},{"line_number":143,"context_line":"                     volume_id \u003d\u003d SWAP_VOL) or"},{"line_number":144,"context_line":"                    (self.test.swap_volume_instance_error_uuid and"},{"line_number":145,"context_line":"                     volume_id \u003d\u003d SWAP_ERR_VOL)):"},{"line_number":146,"context_line":"                    instance_uuid \u003d (self.test.swap_volume_instance_uuid"},{"line_number":147,"context_line":"                        if volume_id \u003d\u003d SWAP_VOL"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_b7c4aa0e","line":144,"range":{"start_line":144,"start_character":26,"end_line":144,"end_character":62},"updated":"2016-06-15 08:25:41.000000000","message":"ditto","commit_id":"908a800fc0638119305c015a1941c2d0a62e389d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"187c9c38986c0358abe8571c930c4fe67b4aac3d","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                         }"},{"line_number":142,"context_line":"                if ((self.test.swap_volume_instance_uuid and"},{"line_number":143,"context_line":"                     volume_id \u003d\u003d SWAP_VOL) or"},{"line_number":144,"context_line":"                    (self.test.swap_volume_instance_error_uuid and"},{"line_number":145,"context_line":"                     volume_id \u003d\u003d SWAP_ERR_VOL)):"},{"line_number":146,"context_line":"                    instance_uuid \u003d (self.test.swap_volume_instance_uuid"},{"line_number":147,"context_line":"                        if volume_id \u003d\u003d SWAP_VOL"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_4ea3849e","line":144,"range":{"start_line":144,"start_character":26,"end_line":144,"end_character":62},"in_reply_to":"7aa08908_b7c4aa0e","updated":"2016-06-18 12:31:11.000000000","message":"Done","commit_id":"908a800fc0638119305c015a1941c2d0a62e389d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d73d3386fc961b5a39794ff20969dfadc16314e7","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                     volume_id \u003d\u003d SWAP_VOL) or"},{"line_number":144,"context_line":"                    (self.test.swap_volume_instance_error_uuid and"},{"line_number":145,"context_line":"                     volume_id \u003d\u003d SWAP_ERR_VOL)):"},{"line_number":146,"context_line":"                    instance_uuid \u003d (self.test.swap_volume_instance_uuid"},{"line_number":147,"context_line":"                        if volume_id \u003d\u003d SWAP_VOL"},{"line_number":148,"context_line":"                        else self.test.swap_volume_instance_error_uuid)"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_d7d336d4","line":146,"range":{"start_line":146,"start_character":37,"end_line":146,"end_character":72},"updated":"2016-06-15 08:25:41.000000000","message":"ditto","commit_id":"908a800fc0638119305c015a1941c2d0a62e389d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"187c9c38986c0358abe8571c930c4fe67b4aac3d","unresolved":false,"context_lines":[{"line_number":143,"context_line":"                     volume_id \u003d\u003d SWAP_VOL) or"},{"line_number":144,"context_line":"                    (self.test.swap_volume_instance_error_uuid and"},{"line_number":145,"context_line":"                     volume_id \u003d\u003d SWAP_ERR_VOL)):"},{"line_number":146,"context_line":"                    instance_uuid \u003d (self.test.swap_volume_instance_uuid"},{"line_number":147,"context_line":"                        if volume_id \u003d\u003d SWAP_VOL"},{"line_number":148,"context_line":"                        else self.test.swap_volume_instance_error_uuid)"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_2ea0b88f","line":146,"range":{"start_line":146,"start_character":37,"end_line":146,"end_character":72},"in_reply_to":"7aa08908_d7d336d4","updated":"2016-06-18 12:31:11.000000000","message":"Done","commit_id":"908a800fc0638119305c015a1941c2d0a62e389d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d73d3386fc961b5a39794ff20969dfadc16314e7","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                     volume_id \u003d\u003d SWAP_ERR_VOL)):"},{"line_number":146,"context_line":"                    instance_uuid \u003d (self.test.swap_volume_instance_uuid"},{"line_number":147,"context_line":"                        if volume_id \u003d\u003d SWAP_VOL"},{"line_number":148,"context_line":"                        else self.test.swap_volume_instance_error_uuid)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"                    volume.update({"},{"line_number":151,"context_line":"                        \u0027status\u0027: \u0027in-use\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_17d65ec3","line":148,"range":{"start_line":148,"start_character":33,"end_line":148,"end_character":70},"updated":"2016-06-15 08:25:41.000000000","message":"ditto","commit_id":"908a800fc0638119305c015a1941c2d0a62e389d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"187c9c38986c0358abe8571c930c4fe67b4aac3d","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                     volume_id \u003d\u003d SWAP_ERR_VOL)):"},{"line_number":146,"context_line":"                    instance_uuid \u003d (self.test.swap_volume_instance_uuid"},{"line_number":147,"context_line":"                        if volume_id \u003d\u003d SWAP_VOL"},{"line_number":148,"context_line":"                        else self.test.swap_volume_instance_error_uuid)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"                    volume.update({"},{"line_number":151,"context_line":"                        \u0027status\u0027: \u0027in-use\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_8ea9ec7e","line":148,"range":{"start_line":148,"start_character":33,"end_line":148,"end_character":70},"in_reply_to":"7aa08908_17d65ec3","updated":"2016-06-18 12:31:11.000000000","message":"Done","commit_id":"908a800fc0638119305c015a1941c2d0a62e389d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d73d3386fc961b5a39794ff20969dfadc16314e7","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        def fake_initialize_connection(self, context, volume_id, connector):"},{"line_number":171,"context_line":"            if volume_id \u003d\u003d SWAP_ERR_NEW_VOL:"},{"line_number":172,"context_line":"                # Return a tuple in order to raise an exception."},{"line_number":173,"context_line":"                return ()"},{"line_number":174,"context_line":"            return {}"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        def fake_migrate_volume_completion(self, context, old_volume_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_37ad5aeb","line":173,"updated":"2016-06-15 08:25:41.000000000","message":"Can we do it in a way that is closer to reality. If you check the initialize_connection in the cinder client code https://github.com/openstack/nova/blob/c525e4e7001690ccc62a522cffec130871b1cfcd/nova/volume/cinder.py#L377 then there is a hint that cinder_exception.ClientException can be raised that is translated by the decorator to nova exceptions, for example to exception.VolumeNotFound. Can we simulate this instead of simulating a software fault?","commit_id":"908a800fc0638119305c015a1941c2d0a62e389d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"187c9c38986c0358abe8571c930c4fe67b4aac3d","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        def fake_initialize_connection(self, context, volume_id, connector):"},{"line_number":171,"context_line":"            if volume_id \u003d\u003d SWAP_ERR_NEW_VOL:"},{"line_number":172,"context_line":"                # Return a tuple in order to raise an exception."},{"line_number":173,"context_line":"                return ()"},{"line_number":174,"context_line":"            return {}"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"        def fake_migrate_volume_completion(self, context, old_volume_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_4ef8a47c","line":173,"in_reply_to":"7aa08908_37ad5aeb","updated":"2016-06-18 12:31:11.000000000","message":"I would like to do it.\nBut if mock is used in order to raise an exception, \u0027function_name\u0027 and \u0027module_name\u0027 in payload are mock\u0027s function name and mock module name.\nIMO, it is not proper for a sample.","commit_id":"908a800fc0638119305c015a1941c2d0a62e389d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d73d3386fc961b5a39794ff20969dfadc16314e7","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            return {\u0027save_volume_id\u0027: new_volume_id}"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        def fake_unreserve_volume(self_api, context, volume_id):"},{"line_number":181,"context_line":"            self.test.swap_error \u003d True"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        self.test.stub_out(\u0027nova.volume.cinder.API.attach\u0027,"},{"line_number":184,"context_line":"                           lambda *args, **kwargs: None)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_f7411265","line":181,"range":{"start_line":181,"start_character":18,"end_line":181,"end_character":32},"updated":"2016-06-15 08:25:41.000000000","message":"ditto","commit_id":"908a800fc0638119305c015a1941c2d0a62e389d"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"187c9c38986c0358abe8571c930c4fe67b4aac3d","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            return {\u0027save_volume_id\u0027: new_volume_id}"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        def fake_unreserve_volume(self_api, context, volume_id):"},{"line_number":181,"context_line":"            self.test.swap_error \u003d True"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        self.test.stub_out(\u0027nova.volume.cinder.API.attach\u0027,"},{"line_number":184,"context_line":"                           lambda *args, **kwargs: None)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_6ea640ac","line":181,"range":{"start_line":181,"start_character":18,"end_line":181,"end_character":32},"in_reply_to":"7aa08908_f7411265","updated":"2016-06-18 12:31:11.000000000","message":"Done","commit_id":"908a800fc0638119305c015a1941c2d0a62e389d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b00860c4bf1c40b51e037b437cfe0c903f1b4ae6","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        super(CinderFixture, self).setUp()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        def fake_get(self_api, context, volume_id):"},{"line_number":127,"context_line":"            if volume_id in (CinderFixture.SWAP_VOL,"},{"line_number":128,"context_line":"                             CinderFixture.SWAP_ERR_VOL):"},{"line_number":129,"context_line":"                volume \u003d {"},{"line_number":130,"context_line":"                             \u0027status\u0027: \u0027available\u0027,"},{"line_number":131,"context_line":"                             \u0027display_name\u0027: \u0027TEST1\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_e4e5c9a8","line":128,"range":{"start_line":127,"start_character":0,"end_line":128,"end_character":57},"updated":"2016-06-20 10:53:48.000000000","message":"Can we simplify this by just having a flag on the Fixture like generate_exception and if that is set to True by the test then the Fixture raises exception in fake_initialize_connection. I think we can implement the Fixture with a single set of old and new volume ids instead of separate ids for normal and for error case.","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f9b2cc085df4e47773efabdb8d84c4a0b74c8b87","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        super(CinderFixture, self).setUp()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        def fake_get(self_api, context, volume_id):"},{"line_number":127,"context_line":"            if volume_id in (CinderFixture.SWAP_VOL,"},{"line_number":128,"context_line":"                             CinderFixture.SWAP_ERR_VOL):"},{"line_number":129,"context_line":"                volume \u003d {"},{"line_number":130,"context_line":"                             \u0027status\u0027: \u0027available\u0027,"},{"line_number":131,"context_line":"                             \u0027display_name\u0027: \u0027TEST1\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_676ec997","line":128,"range":{"start_line":127,"start_character":0,"end_line":128,"end_character":57},"in_reply_to":"5a9d85d2_4e848ad3","updated":"2016-06-21 08:04:04.000000000","message":"sorry, my bad.","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"121b7fd4e04697698c0f9f307e4ab952362bf897","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        super(CinderFixture, self).setUp()"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        def fake_get(self_api, context, volume_id):"},{"line_number":127,"context_line":"            if volume_id in (CinderFixture.SWAP_VOL,"},{"line_number":128,"context_line":"                             CinderFixture.SWAP_ERR_VOL):"},{"line_number":129,"context_line":"                volume \u003d {"},{"line_number":130,"context_line":"                             \u0027status\u0027: \u0027available\u0027,"},{"line_number":131,"context_line":"                             \u0027display_name\u0027: \u0027TEST1\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_4e848ad3","line":128,"range":{"start_line":127,"start_character":0,"end_line":128,"end_character":57},"in_reply_to":"5a9d85d2_e4e5c9a8","updated":"2016-06-21 06:59:31.000000000","message":"It is \u0027fake_get\u0027 function, not \u0027fake_initialize_connection\u0027.","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b00860c4bf1c40b51e037b437cfe0c903f1b4ae6","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        def fake_initialize_connection(self, context, volume_id, connector):"},{"line_number":165,"context_line":"            if volume_id \u003d\u003d CinderFixture.SWAP_ERR_NEW_VOL:"},{"line_number":166,"context_line":"                # Return a tuple in order to raise an exception."},{"line_number":167,"context_line":"                return ()"},{"line_number":168,"context_line":"            return {}"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        def fake_migrate_volume_completion(self, context, old_volume_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_87c16783","line":167,"range":{"start_line":166,"start_character":0,"end_line":167,"end_character":25},"updated":"2016-06-20 10:53:48.000000000","message":"If you look at original initialize_connection code (https://github.com/openstack/nova/blob/master/nova/volume/cinder.py#L371) then you will see that it can raise for example cinder_exception.ClientException which is translated by the decorator to something like exception.VolumeNotFound. I think this test would be more close to the reality if you also raise something similar from here.","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f9b2cc085df4e47773efabdb8d84c4a0b74c8b87","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        def fake_initialize_connection(self, context, volume_id, connector):"},{"line_number":165,"context_line":"            if volume_id \u003d\u003d CinderFixture.SWAP_ERR_NEW_VOL:"},{"line_number":166,"context_line":"                # Return a tuple in order to raise an exception."},{"line_number":167,"context_line":"                return ()"},{"line_number":168,"context_line":"            return {}"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        def fake_migrate_volume_completion(self, context, old_volume_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_c704ddc1","line":167,"range":{"start_line":166,"start_character":0,"end_line":167,"end_character":25},"in_reply_to":"5a9d85d2_2e5bfe2f","updated":"2016-06-21 08:04:04.000000000","message":"I see. Too bad that we cannot make it real, but I see your point now. Let\u0027s keep it as it is.","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"93028d6a2b82795e45ecaa01cb2d2dc845c4fbc0","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        def fake_initialize_connection(self, context, volume_id, connector):"},{"line_number":165,"context_line":"            if volume_id \u003d\u003d CinderFixture.SWAP_ERR_NEW_VOL:"},{"line_number":166,"context_line":"                # Return a tuple in order to raise an exception."},{"line_number":167,"context_line":"                return ()"},{"line_number":168,"context_line":"            return {}"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        def fake_migrate_volume_completion(self, context, old_volume_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_2e5bfe2f","line":167,"range":{"start_line":166,"start_character":0,"end_line":167,"end_character":25},"in_reply_to":"5a9d85d2_87c16783","updated":"2016-06-21 06:33:58.000000000","message":"If ClientException of cinderclinet is raised here, ExceptionPayload is as follows:\n\n\u0027fault\u0027: {\n    \u0027nova_object.version\u0027: \u00271.0\u0027,\n    \u0027nova_object.namespace\u0027: \u0027nova\u0027,\n    \u0027nova_object.data\u0027: {\n        \u0027module_name\u0027: u\u0027nova.tests.functional.notification_sample_tests.test_instance\u0027,\n        \u0027exception_message\u0027: u\u0027Test message. (HTTP 400)\u0027,\n        \u0027function_name\u0027: u\u0027fake_initialize_connection\u0027,\n        \u0027exception\u0027: u\u0027ClientException\u0027},\n    \u0027nova_object.name\u0027: \u0027ExceptionPayload\u0027\n}\n\nIMO, module_name and function_name are not proper for example.","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b00860c4bf1c40b51e037b437cfe0c903f1b4ae6","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def _wait_until_swap_volume_error(self):"},{"line_number":223,"context_line":"        for i in range(50):"},{"line_number":224,"context_line":"            if self.cf.swap_error:"},{"line_number":225,"context_line":"                return"},{"line_number":226,"context_line":"            time.sleep(0.5)"},{"line_number":227,"context_line":"        self.fail(\"Volume swap error didn\u0027t occur.\")"},{"line_number":228,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_84ade533","line":225,"range":{"start_line":224,"start_character":1,"end_line":225,"end_character":22},"updated":"2016-06-20 10:53:48.000000000","message":"Do we need this to wait until the fixture called and raised an exception? Is there any other way do detect this via the REST API?","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"5ca973c73b1ddcf1d6b952c227fdedac60ae89a6","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def _wait_until_swap_volume_error(self):"},{"line_number":223,"context_line":"        for i in range(50):"},{"line_number":224,"context_line":"            if self.cf.swap_error:"},{"line_number":225,"context_line":"                return"},{"line_number":226,"context_line":"            time.sleep(0.5)"},{"line_number":227,"context_line":"        self.fail(\"Volume swap error didn\u0027t occur.\")"},{"line_number":228,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_9affd1a9","line":225,"range":{"start_line":224,"start_character":1,"end_line":225,"end_character":22},"in_reply_to":"5a9d85d2_84ade533","updated":"2016-06-21 06:11:04.000000000","message":"Unfortunately, Yes.\nUsually cinder volume\u0027s status can be checked.\n(Call cinder REST APIs.)\nBut in nova functional tests, cinder API cannot be called.","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f9b2cc085df4e47773efabdb8d84c4a0b74c8b87","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def _wait_until_swap_volume_error(self):"},{"line_number":223,"context_line":"        for i in range(50):"},{"line_number":224,"context_line":"            if self.cf.swap_error:"},{"line_number":225,"context_line":"                return"},{"line_number":226,"context_line":"            time.sleep(0.5)"},{"line_number":227,"context_line":"        self.fail(\"Volume swap error didn\u0027t occur.\")"},{"line_number":228,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_671c0914","line":225,"range":{"start_line":224,"start_character":1,"end_line":225,"end_character":22},"in_reply_to":"5a9d85d2_9affd1a9","updated":"2016-06-21 08:04:04.000000000","message":"Then I have to accept this. :)","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b00860c4bf1c40b51e037b437cfe0c903f1b4ae6","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        self._verify_notification("},{"line_number":274,"context_line":"            \u0027instance-volume_swap-start\u0027,"},{"line_number":275,"context_line":"            replacements\u003d{"},{"line_number":276,"context_line":"                \u0027new_volume\u0027: CinderFixture.SWAP_NEW_VOL,"},{"line_number":277,"context_line":"                \u0027old_volume\u0027: CinderFixture.SWAP_VOL,"},{"line_number":278,"context_line":"                \u0027reservation_id\u0027:"},{"line_number":279,"context_line":"                    notification_sample_base.NotificationSampleTestBase.ANY,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_e49f895d","line":276,"range":{"start_line":276,"start_character":31,"end_line":276,"end_character":57},"updated":"2016-06-20 10:53:48.000000000","message":"You can put the value of this directly into the sample file","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"121b7fd4e04697698c0f9f307e4ab952362bf897","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        self._verify_notification("},{"line_number":274,"context_line":"            \u0027instance-volume_swap-start\u0027,"},{"line_number":275,"context_line":"            replacements\u003d{"},{"line_number":276,"context_line":"                \u0027new_volume\u0027: CinderFixture.SWAP_NEW_VOL,"},{"line_number":277,"context_line":"                \u0027old_volume\u0027: CinderFixture.SWAP_VOL,"},{"line_number":278,"context_line":"                \u0027reservation_id\u0027:"},{"line_number":279,"context_line":"                    notification_sample_base.NotificationSampleTestBase.ANY,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_8e6e722d","line":276,"range":{"start_line":276,"start_character":31,"end_line":276,"end_character":57},"in_reply_to":"5a9d85d2_e49f895d","updated":"2016-06-21 06:59:31.000000000","message":"Done","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b00860c4bf1c40b51e037b437cfe0c903f1b4ae6","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            \u0027instance-volume_swap-start\u0027,"},{"line_number":275,"context_line":"            replacements\u003d{"},{"line_number":276,"context_line":"                \u0027new_volume\u0027: CinderFixture.SWAP_NEW_VOL,"},{"line_number":277,"context_line":"                \u0027old_volume\u0027: CinderFixture.SWAP_VOL,"},{"line_number":278,"context_line":"                \u0027reservation_id\u0027:"},{"line_number":279,"context_line":"                    notification_sample_base.NotificationSampleTestBase.ANY,"},{"line_number":280,"context_line":"                \u0027uuid\u0027: server[\u0027id\u0027]},"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_a47c6121","line":277,"range":{"start_line":277,"start_character":30,"end_line":277,"end_character":52},"updated":"2016-06-20 10:53:48.000000000","message":"ditto","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"121b7fd4e04697698c0f9f307e4ab952362bf897","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            \u0027instance-volume_swap-start\u0027,"},{"line_number":275,"context_line":"            replacements\u003d{"},{"line_number":276,"context_line":"                \u0027new_volume\u0027: CinderFixture.SWAP_NEW_VOL,"},{"line_number":277,"context_line":"                \u0027old_volume\u0027: CinderFixture.SWAP_VOL,"},{"line_number":278,"context_line":"                \u0027reservation_id\u0027:"},{"line_number":279,"context_line":"                    notification_sample_base.NotificationSampleTestBase.ANY,"},{"line_number":280,"context_line":"                \u0027uuid\u0027: server[\u0027id\u0027]},"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_6e698625","line":277,"range":{"start_line":277,"start_character":30,"end_line":277,"end_character":52},"in_reply_to":"5a9d85d2_a47c6121","updated":"2016-06-21 06:59:31.000000000","message":"Done","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b00860c4bf1c40b51e037b437cfe0c903f1b4ae6","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        self._verify_notification("},{"line_number":283,"context_line":"            \u0027instance-volume_swap-end\u0027,"},{"line_number":284,"context_line":"            replacements\u003d{"},{"line_number":285,"context_line":"                \u0027new_volume\u0027: CinderFixture.SWAP_NEW_VOL,"},{"line_number":286,"context_line":"                \u0027old_volume\u0027: CinderFixture.SWAP_VOL,"},{"line_number":287,"context_line":"                \u0027reservation_id\u0027:"},{"line_number":288,"context_line":"                    notification_sample_base.NotificationSampleTestBase.ANY,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_84796532","line":285,"range":{"start_line":285,"start_character":30,"end_line":285,"end_character":56},"updated":"2016-06-20 10:53:48.000000000","message":"ditto","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"121b7fd4e04697698c0f9f307e4ab952362bf897","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        self._verify_notification("},{"line_number":283,"context_line":"            \u0027instance-volume_swap-end\u0027,"},{"line_number":284,"context_line":"            replacements\u003d{"},{"line_number":285,"context_line":"                \u0027new_volume\u0027: CinderFixture.SWAP_NEW_VOL,"},{"line_number":286,"context_line":"                \u0027old_volume\u0027: CinderFixture.SWAP_VOL,"},{"line_number":287,"context_line":"                \u0027reservation_id\u0027:"},{"line_number":288,"context_line":"                    notification_sample_base.NotificationSampleTestBase.ANY,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_ce787af5","line":285,"range":{"start_line":285,"start_character":30,"end_line":285,"end_character":56},"in_reply_to":"5a9d85d2_84796532","updated":"2016-06-21 06:59:31.000000000","message":"Done","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b00860c4bf1c40b51e037b437cfe0c903f1b4ae6","unresolved":false,"context_lines":[{"line_number":283,"context_line":"            \u0027instance-volume_swap-end\u0027,"},{"line_number":284,"context_line":"            replacements\u003d{"},{"line_number":285,"context_line":"                \u0027new_volume\u0027: CinderFixture.SWAP_NEW_VOL,"},{"line_number":286,"context_line":"                \u0027old_volume\u0027: CinderFixture.SWAP_VOL,"},{"line_number":287,"context_line":"                \u0027reservation_id\u0027:"},{"line_number":288,"context_line":"                    notification_sample_base.NotificationSampleTestBase.ANY,"},{"line_number":289,"context_line":"                \u0027uuid\u0027: server[\u0027id\u0027]},"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_e476693d","line":286,"range":{"start_line":286,"start_character":30,"end_line":286,"end_character":52},"updated":"2016-06-20 10:53:48.000000000","message":"ditto","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"121b7fd4e04697698c0f9f307e4ab952362bf897","unresolved":false,"context_lines":[{"line_number":283,"context_line":"            \u0027instance-volume_swap-end\u0027,"},{"line_number":284,"context_line":"            replacements\u003d{"},{"line_number":285,"context_line":"                \u0027new_volume\u0027: CinderFixture.SWAP_NEW_VOL,"},{"line_number":286,"context_line":"                \u0027old_volume\u0027: CinderFixture.SWAP_VOL,"},{"line_number":287,"context_line":"                \u0027reservation_id\u0027:"},{"line_number":288,"context_line":"                    notification_sample_base.NotificationSampleTestBase.ANY,"},{"line_number":289,"context_line":"                \u0027uuid\u0027: server[\u0027id\u0027]},"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_ae736e14","line":286,"range":{"start_line":286,"start_character":30,"end_line":286,"end_character":52},"in_reply_to":"5a9d85d2_e476693d","updated":"2016-06-21 06:59:31.000000000","message":"Done","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b00860c4bf1c40b51e037b437cfe0c903f1b4ae6","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        # Three versioned notifications are generated."},{"line_number":306,"context_line":"        # 0. instance-volume_swap-start"},{"line_number":307,"context_line":"        # 1. instance-volume_swap-error"},{"line_number":308,"context_line":"        # 2. compute.exception"},{"line_number":309,"context_line":"        self.assertEqual(3, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":310,"context_line":"        self._verify_notification("},{"line_number":311,"context_line":"            \u0027instance-volume_swap-start\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_2431910c","line":308,"range":{"start_line":308,"start_character":8,"end_line":308,"end_character":30},"updated":"2016-06-20 10:53:48.000000000","message":"Could you check that the #2 is really a compute.exception, checking the event_type is enough in that case. \nAfter that this comment is unnecessary, I think.","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"121b7fd4e04697698c0f9f307e4ab952362bf897","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        # Three versioned notifications are generated."},{"line_number":306,"context_line":"        # 0. instance-volume_swap-start"},{"line_number":307,"context_line":"        # 1. instance-volume_swap-error"},{"line_number":308,"context_line":"        # 2. compute.exception"},{"line_number":309,"context_line":"        self.assertEqual(3, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":310,"context_line":"        self._verify_notification("},{"line_number":311,"context_line":"            \u0027instance-volume_swap-start\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_2ed5beb8","line":308,"range":{"start_line":308,"start_character":8,"end_line":308,"end_character":30},"in_reply_to":"5a9d85d2_2431910c","updated":"2016-06-21 06:59:31.000000000","message":"IMO, it is not necessary because it is a sample test.\nThe \u0027compute.exception\u0027 sample test should be another test method.","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f9b2cc085df4e47773efabdb8d84c4a0b74c8b87","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        # Three versioned notifications are generated."},{"line_number":306,"context_line":"        # 0. instance-volume_swap-start"},{"line_number":307,"context_line":"        # 1. instance-volume_swap-error"},{"line_number":308,"context_line":"        # 2. compute.exception"},{"line_number":309,"context_line":"        self.assertEqual(3, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":310,"context_line":"        self._verify_notification("},{"line_number":311,"context_line":"            \u0027instance-volume_swap-start\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_c7c97d7a","line":308,"range":{"start_line":308,"start_character":8,"end_line":308,"end_character":30},"in_reply_to":"5a9d85d2_2ed5beb8","updated":"2016-06-21 08:04:04.000000000","message":"fair enough.","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b00860c4bf1c40b51e037b437cfe0c903f1b4ae6","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        self._verify_notification("},{"line_number":311,"context_line":"            \u0027instance-volume_swap-start\u0027,"},{"line_number":312,"context_line":"            replacements\u003d{"},{"line_number":313,"context_line":"                \u0027new_volume\u0027: CinderFixture.SWAP_ERR_NEW_VOL,"},{"line_number":314,"context_line":"                \u0027old_volume\u0027: CinderFixture.SWAP_ERR_VOL,"},{"line_number":315,"context_line":"                \u0027reservation_id\u0027:"},{"line_number":316,"context_line":"                    notification_sample_base.NotificationSampleTestBase.ANY,"},{"line_number":317,"context_line":"                \u0027uuid\u0027: server[\u0027id\u0027]},"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_0409f595","line":314,"range":{"start_line":313,"start_character":0,"end_line":314,"end_character":57},"updated":"2016-06-20 10:53:48.000000000","message":"I guess you can use the same volume ids as in the normal case in this test too. This way the value in the sample file does not need to be replaced","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"121b7fd4e04697698c0f9f307e4ab952362bf897","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        self._verify_notification("},{"line_number":311,"context_line":"            \u0027instance-volume_swap-start\u0027,"},{"line_number":312,"context_line":"            replacements\u003d{"},{"line_number":313,"context_line":"                \u0027new_volume\u0027: CinderFixture.SWAP_ERR_NEW_VOL,"},{"line_number":314,"context_line":"                \u0027old_volume\u0027: CinderFixture.SWAP_ERR_VOL,"},{"line_number":315,"context_line":"                \u0027reservation_id\u0027:"},{"line_number":316,"context_line":"                    notification_sample_base.NotificationSampleTestBase.ANY,"},{"line_number":317,"context_line":"                \u0027uuid\u0027: server[\u0027id\u0027]},"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_d11e5f62","line":314,"range":{"start_line":313,"start_character":0,"end_line":314,"end_character":57},"in_reply_to":"5a9d85d2_0409f595","updated":"2016-06-21 06:59:31.000000000","message":"No.\nThe \u0027instance-volume_swap-start\u0027 sample file is shared in this method and \u0027test_volume_swap_server\u0027 method.\nAnd volume ids are different because of concurrent execution.","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b00860c4bf1c40b51e037b437cfe0c903f1b4ae6","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        self._verify_notification("},{"line_number":320,"context_line":"            \u0027instance-volume_swap-error\u0027,"},{"line_number":321,"context_line":"            replacements\u003d{"},{"line_number":322,"context_line":"                \u0027new_volume\u0027: CinderFixture.SWAP_ERR_NEW_VOL,"},{"line_number":323,"context_line":"                \u0027old_volume\u0027: CinderFixture.SWAP_ERR_VOL,"},{"line_number":324,"context_line":"                \u0027reservation_id\u0027:"},{"line_number":325,"context_line":"                    notification_sample_base.NotificationSampleTestBase.ANY,"},{"line_number":326,"context_line":"                \u0027uuid\u0027: server[\u0027id\u0027]},"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_242b51ed","line":323,"range":{"start_line":322,"start_character":1,"end_line":323,"end_character":57},"updated":"2016-06-20 10:53:48.000000000","message":"same as above","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"121b7fd4e04697698c0f9f307e4ab952362bf897","unresolved":false,"context_lines":[{"line_number":319,"context_line":"        self._verify_notification("},{"line_number":320,"context_line":"            \u0027instance-volume_swap-error\u0027,"},{"line_number":321,"context_line":"            replacements\u003d{"},{"line_number":322,"context_line":"                \u0027new_volume\u0027: CinderFixture.SWAP_ERR_NEW_VOL,"},{"line_number":323,"context_line":"                \u0027old_volume\u0027: CinderFixture.SWAP_ERR_VOL,"},{"line_number":324,"context_line":"                \u0027reservation_id\u0027:"},{"line_number":325,"context_line":"                    notification_sample_base.NotificationSampleTestBase.ANY,"},{"line_number":326,"context_line":"                \u0027uuid\u0027: server[\u0027id\u0027]},"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_6ed7c6bf","line":323,"range":{"start_line":322,"start_character":1,"end_line":323,"end_character":57},"in_reply_to":"5a9d85d2_242b51ed","updated":"2016-06-21 06:59:31.000000000","message":"Done","commit_id":"3f730dbd6c1ee8c96e45fdb8d6a3ec554228338e"}],"releasenotes/notes/add-swap-volume-notifications-bb7e14230fccfd6e.yaml":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3dcb116098c222e9e19ec31efddf9dbc017fa6d5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    The versioned swap volume notifications have been added"},{"line_number":4,"context_line":"    in the compute manager."},{"line_number":5,"context_line":"features:"},{"line_number":6,"context_line":"  - The following versioned swap volume notifications have been added"},{"line_number":7,"context_line":"    in the compute manager."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3aaa91ec_98a3644f","line":4,"updated":"2016-06-28 11:04:14.000000000","message":"We should not use this section, it renders really strangely (at the very top of the release notes, miles from the other text).\n\nPlease only put items in the features section, for this kind of change.","commit_id":"ab7b34be54f8c797d9d06193ba29e98aba6f8005"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"cdad523299ff8e1f898670e5f11cbb116c82c239","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"prelude: \u003e"},{"line_number":3,"context_line":"    The versioned swap volume notifications have been added"},{"line_number":4,"context_line":"    in the compute manager."},{"line_number":5,"context_line":"features:"},{"line_number":6,"context_line":"  - The following versioned swap volume notifications have been added"},{"line_number":7,"context_line":"    in the compute manager."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3aaa91ec_4a775f3b","line":4,"in_reply_to":"3aaa91ec_98a3644f","updated":"2016-06-28 12:19:44.000000000","message":"Done","commit_id":"ab7b34be54f8c797d9d06193ba29e98aba6f8005"}]}
