)]}'
{"releasenotes/notes/add-update-backup-api-to-v3-backups-client-e8465b2b66617dc0.yaml":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"8a40ac9826d24b8ec6a8e22eb218b2cdcebbe57e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Define v3 backups_client for the volume service as a library interface,"},{"line_number":5,"context_line":"    allowing other projects to use this module as a stable library without"},{"line_number":6,"context_line":"    maintenance changes."},{"line_number":7,"context_line":"    Add update backup API to v3 backups_client library, min_microversion"},{"line_number":8,"context_line":"    of this API is 3.9."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    * backups_client(v3)"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff0f0b1f_d0a987df","line":8,"range":{"start_line":4,"start_character":4,"end_line":8,"end_character":23},"updated":"2017-05-19 00:19:24.000000000","message":"Not sure if this is your wording, but I basically stole it for my own patch...hope you don\u0027t mind :)","commit_id":"f5363b46d3eb09dc54351148f13ee232a1c4cb42"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"6e28dd8f7f26b7d5cf690b838c25919c9997f81c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Define v3 backups_client for the volume service as a library interface,"},{"line_number":5,"context_line":"    allowing other projects to use this module as a stable library without"},{"line_number":6,"context_line":"    maintenance changes."},{"line_number":7,"context_line":"    Add update backup API to v3 backups_client library, min_microversion"},{"line_number":8,"context_line":"    of this API is 3.9."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    * backups_client(v3)"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff0f0b1f_6281ce4a","line":8,"range":{"start_line":4,"start_character":4,"end_line":8,"end_character":23},"in_reply_to":"ff0f0b1f_d0a987df","updated":"2017-05-19 01:57:39.000000000","message":"Hah, my pleasure, :)","commit_id":"f5363b46d3eb09dc54351148f13ee232a1c4cb42"}],"tempest/api/volume/base.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"ed67483bc80bc2043ea10448bb50be5aa8200120","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        cls.messages_client \u003d cls.os_primary.volume_v3_messages_client"},{"line_number":81,"context_line":"        cls.versions_client \u003d cls.os_primary.volume_v3_versions_client"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        if cls._api_version \u003d\u003d 3:"},{"line_number":84,"context_line":"            cls.backups_client \u003d cls.os_primary.backups_v3_client"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def setUp(self):"},{"line_number":87,"context_line":"        super(BaseVolumeTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f013ff3_3ccf9b80","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":65},"updated":"2017-05-15 06:37:47.000000000","message":"is it better to group this with line #74?","commit_id":"9e767d47d2cbcbe9a7911c6c43962af23b9373f9"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"8d1d1624283e352e5f7e2f6aad310f59633d57e6","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        cls.messages_client \u003d cls.os_primary.volume_v3_messages_client"},{"line_number":81,"context_line":"        cls.versions_client \u003d cls.os_primary.volume_v3_versions_client"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        if cls._api_version \u003d\u003d 3:"},{"line_number":84,"context_line":"            cls.backups_client \u003d cls.os_primary.backups_v3_client"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def setUp(self):"},{"line_number":87,"context_line":"        super(BaseVolumeTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f013ff3_dc8e77cf","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":65},"in_reply_to":"1f013ff3_3c6c3b35","updated":"2017-05-15 06:53:41.000000000","message":"how about:\nif cls._api_version \u003d\u003d 3:\n   cls.backups_client \u003d cls.os_primary.backups_v3_client\nelse:\n   cls.backups_client \u003d cls.os_primary.backups_v2_client","commit_id":"9e767d47d2cbcbe9a7911c6c43962af23b9373f9"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"1183e4ecef10b1b5df2078207d410518ae7e28e9","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        cls.messages_client \u003d cls.os_primary.volume_v3_messages_client"},{"line_number":81,"context_line":"        cls.versions_client \u003d cls.os_primary.volume_v3_versions_client"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        if cls._api_version \u003d\u003d 3:"},{"line_number":84,"context_line":"            cls.backups_client \u003d cls.os_primary.backups_v3_client"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def setUp(self):"},{"line_number":87,"context_line":"        super(BaseVolumeTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f013ff3_3c6c3b35","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":65},"in_reply_to":"1f013ff3_3ccf9b80","updated":"2017-05-15 06:50:54.000000000","message":"Thanks, zhufl.\nI wonder if code like this is better?:\nif cls._api_version \u003d\u003d 2:\n   cls.backups_client \u003d cls.os_primary.backups_v2_client\nelif cls._api_version \u003d\u003d 3:\n   cls.backups_client \u003d cls.os_primary.backups_v3_client","commit_id":"9e767d47d2cbcbe9a7911c6c43962af23b9373f9"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"22b6fed76ce9ea380b0fa124907e0f8cc1d1aff5","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        cls.messages_client \u003d cls.os_primary.volume_v3_messages_client"},{"line_number":81,"context_line":"        cls.versions_client \u003d cls.os_primary.volume_v3_versions_client"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        if cls._api_version \u003d\u003d 3:"},{"line_number":84,"context_line":"            cls.backups_client \u003d cls.os_primary.backups_v3_client"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def setUp(self):"},{"line_number":87,"context_line":"        super(BaseVolumeTest, self).setUp()"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f013ff3_07548cc9","line":84,"range":{"start_line":83,"start_character":0,"end_line":84,"end_character":65},"in_reply_to":"1f013ff3_dc8e77cf","updated":"2017-05-15 07:19:20.000000000","message":"yes, it would be better, thanks, :)","commit_id":"9e767d47d2cbcbe9a7911c6c43962af23b9373f9"}],"tempest/api/volume/test_volumes_backup.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"ed67483bc80bc2043ea10448bb50be5aa8200120","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            \u0027name\u0027: data_utils.rand_name(self.__class__.__name__ + \u0027-Backup\u0027),"},{"line_number":167,"context_line":"            \u0027description\u0027: data_utils.rand_name(\"volume-backup-description\")"},{"line_number":168,"context_line":"        }"},{"line_number":169,"context_line":"        # Assert response body for update_backup method"},{"line_number":170,"context_line":"        update_backup \u003d self.backups_client.update_backup("},{"line_number":171,"context_line":"            backup[\u0027id\u0027], **update_kwargs)[\u0027backup\u0027]"},{"line_number":172,"context_line":"        self.assertEqual(update_backup[\u0027id\u0027], backup[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f013ff3_fc1a5315","line":169,"updated":"2017-05-15 06:37:47.000000000","message":"better to add a blank line before this","commit_id":"9e767d47d2cbcbe9a7911c6c43962af23b9373f9"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"1183e4ecef10b1b5df2078207d410518ae7e28e9","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            \u0027name\u0027: data_utils.rand_name(self.__class__.__name__ + \u0027-Backup\u0027),"},{"line_number":167,"context_line":"            \u0027description\u0027: data_utils.rand_name(\"volume-backup-description\")"},{"line_number":168,"context_line":"        }"},{"line_number":169,"context_line":"        # Assert response body for update_backup method"},{"line_number":170,"context_line":"        update_backup \u003d self.backups_client.update_backup("},{"line_number":171,"context_line":"            backup[\u0027id\u0027], **update_kwargs)[\u0027backup\u0027]"},{"line_number":172,"context_line":"        self.assertEqual(update_backup[\u0027id\u0027], backup[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f013ff3_5c602733","line":169,"in_reply_to":"1f013ff3_fc1a5315","updated":"2017-05-15 06:50:54.000000000","message":"Done","commit_id":"9e767d47d2cbcbe9a7911c6c43962af23b9373f9"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"ed67483bc80bc2043ea10448bb50be5aa8200120","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        self.assertEqual(update_backup[\u0027id\u0027], backup[\u0027id\u0027])"},{"line_number":173,"context_line":"        self.assertEqual(update_backup[\u0027name\u0027], update_kwargs[\u0027name\u0027])"},{"line_number":174,"context_line":"        self.assertIn(\u0027links\u0027, update_backup)"},{"line_number":175,"context_line":"        # Assert response body for show_backup method"},{"line_number":176,"context_line":"        updated_backup \u003d self.backups_client.show_backup("},{"line_number":177,"context_line":"            backup[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":178,"context_line":"        for key in update_kwargs:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f013ff3_dc1797ed","line":175,"updated":"2017-05-15 06:37:47.000000000","message":"ditto","commit_id":"9e767d47d2cbcbe9a7911c6c43962af23b9373f9"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"1183e4ecef10b1b5df2078207d410518ae7e28e9","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        self.assertEqual(update_backup[\u0027id\u0027], backup[\u0027id\u0027])"},{"line_number":173,"context_line":"        self.assertEqual(update_backup[\u0027name\u0027], update_kwargs[\u0027name\u0027])"},{"line_number":174,"context_line":"        self.assertIn(\u0027links\u0027, update_backup)"},{"line_number":175,"context_line":"        # Assert response body for show_backup method"},{"line_number":176,"context_line":"        updated_backup \u003d self.backups_client.show_backup("},{"line_number":177,"context_line":"            backup[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":178,"context_line":"        for key in update_kwargs:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f013ff3_3c555b51","line":175,"in_reply_to":"1f013ff3_dc1797ed","updated":"2017-05-15 06:50:54.000000000","message":"Done","commit_id":"9e767d47d2cbcbe9a7911c6c43962af23b9373f9"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"9906e96e18c7da440114d6159859ef9f2c28863e","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        \"\"\""},{"line_number":107,"context_line":"        # Create a server"},{"line_number":108,"context_line":"        volume \u003d self.create_volume()"},{"line_number":109,"context_line":"        self.addCleanup(self.volumes_client.delete_volume,"},{"line_number":110,"context_line":"                        volume[\u0027id\u0027])"},{"line_number":111,"context_line":"        server \u003d self.create_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":112,"context_line":"        # Attach volume to instance"},{"line_number":113,"context_line":"        self.attach_volume(server[\u0027id\u0027], volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_516c8835","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":37},"updated":"2017-05-17 20:29:08.000000000","message":"This can be removed. It\u0027s done inside self.create_volume.","commit_id":"fc6e4e7a6b31157f078ef622dc933d8009a11ac3"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"24b4b3217d085a30bdb94b47c8edb75e1ba0bed2","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        \"\"\""},{"line_number":107,"context_line":"        # Create a server"},{"line_number":108,"context_line":"        volume \u003d self.create_volume()"},{"line_number":109,"context_line":"        self.addCleanup(self.volumes_client.delete_volume,"},{"line_number":110,"context_line":"                        volume[\u0027id\u0027])"},{"line_number":111,"context_line":"        server \u003d self.create_server(wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":112,"context_line":"        # Attach volume to instance"},{"line_number":113,"context_line":"        self.attach_volume(server[\u0027id\u0027], volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_6f3e802a","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":37},"in_reply_to":"ff0f0b1f_516c8835","updated":"2017-05-18 00:43:11.000000000","message":"Yeah, I agree with you, but this may not be the issue in this patch. It can be updated in another patch, looking forward your opinions, :)","commit_id":"fc6e4e7a6b31157f078ef622dc933d8009a11ac3"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"9906e96e18c7da440114d6159859ef9f2c28863e","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    @decorators.idempotent_id(\u00279b374cbc-be5f-4d37-8848-7efb8a873dcc\u0027)"},{"line_number":159,"context_line":"    def test_update_backup(self):"},{"line_number":160,"context_line":"        # Create volume and backup"},{"line_number":161,"context_line":"        volume \u003d self.create_volume()"},{"line_number":162,"context_line":"        backup \u003d self.create_backup(volume_id\u003dvolume[\u0027id\u0027])"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        # Update backup and assert response body for update_backup method"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_b1cbe41c","line":161,"range":{"start_line":161,"start_character":8,"end_line":161,"end_character":37},"updated":"2017-05-17 20:29:08.000000000","message":"Is it possible to reduce the number of these by using a class-wide volume?","commit_id":"fc6e4e7a6b31157f078ef622dc933d8009a11ac3"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"24b4b3217d085a30bdb94b47c8edb75e1ba0bed2","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    @decorators.idempotent_id(\u00279b374cbc-be5f-4d37-8848-7efb8a873dcc\u0027)"},{"line_number":159,"context_line":"    def test_update_backup(self):"},{"line_number":160,"context_line":"        # Create volume and backup"},{"line_number":161,"context_line":"        volume \u003d self.create_volume()"},{"line_number":162,"context_line":"        backup \u003d self.create_backup(volume_id\u003dvolume[\u0027id\u0027])"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        # Update backup and assert response body for update_backup method"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_efef3085","line":161,"range":{"start_line":161,"start_character":8,"end_line":161,"end_character":37},"in_reply_to":"ff0f0b1f_b1cbe41c","updated":"2017-05-18 00:43:11.000000000","message":"When creating volume backup, the original volume\u0027s status will be changed to \u0027backing-up\u0027(maybe in a short time), but this status may have effect on other volume actions. So I think it\u0027s better to create a new volume for this test.","commit_id":"fc6e4e7a6b31157f078ef622dc933d8009a11ac3"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"9906e96e18c7da440114d6159859ef9f2c28863e","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.assertIn(\u0027links\u0027, update_backup)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # Assert response body for show_backup method"},{"line_number":176,"context_line":"        updated_backup \u003d self.backups_client.show_backup("},{"line_number":177,"context_line":"            backup[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":178,"context_line":"        for key in update_kwargs:"},{"line_number":179,"context_line":"            self.assertEqual(update_kwargs[key], updated_backup[key])"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_31523469","line":176,"range":{"start_line":176,"start_character":8,"end_line":176,"end_character":22},"updated":"2017-05-17 20:29:08.000000000","message":"retrieved_backup","commit_id":"fc6e4e7a6b31157f078ef622dc933d8009a11ac3"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"24b4b3217d085a30bdb94b47c8edb75e1ba0bed2","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.assertIn(\u0027links\u0027, update_backup)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # Assert response body for show_backup method"},{"line_number":176,"context_line":"        updated_backup \u003d self.backups_client.show_backup("},{"line_number":177,"context_line":"            backup[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":178,"context_line":"        for key in update_kwargs:"},{"line_number":179,"context_line":"            self.assertEqual(update_kwargs[key], updated_backup[key])"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_2ffd283a","line":176,"range":{"start_line":176,"start_character":8,"end_line":176,"end_character":22},"in_reply_to":"ff0f0b1f_31523469","updated":"2017-05-18 00:43:11.000000000","message":"Done, thanks.","commit_id":"fc6e4e7a6b31157f078ef622dc933d8009a11ac3"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"9906e96e18c7da440114d6159859ef9f2c28863e","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        updated_backup \u003d self.backups_client.show_backup("},{"line_number":177,"context_line":"            backup[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":178,"context_line":"        for key in update_kwargs:"},{"line_number":179,"context_line":"            self.assertEqual(update_kwargs[key], updated_backup[key])"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_114f30be","line":179,"range":{"start_line":179,"start_character":49,"end_line":179,"end_character":63},"updated":"2017-05-17 20:29:08.000000000","message":"retrieved_backup","commit_id":"fc6e4e7a6b31157f078ef622dc933d8009a11ac3"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"24b4b3217d085a30bdb94b47c8edb75e1ba0bed2","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        updated_backup \u003d self.backups_client.show_backup("},{"line_number":177,"context_line":"            backup[\u0027id\u0027])[\u0027backup\u0027]"},{"line_number":178,"context_line":"        for key in update_kwargs:"},{"line_number":179,"context_line":"            self.assertEqual(update_kwargs[key], updated_backup[key])"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff0f0b1f_0ffa6441","line":179,"range":{"start_line":179,"start_character":49,"end_line":179,"end_character":63},"in_reply_to":"ff0f0b1f_114f30be","updated":"2017-05-18 00:43:11.000000000","message":"Done","commit_id":"fc6e4e7a6b31157f078ef622dc933d8009a11ac3"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"8a40ac9826d24b8ec6a8e22eb218b2cdcebbe57e","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        update_backup \u003d self.backups_client.update_backup("},{"line_number":170,"context_line":"            backup[\u0027id\u0027], **update_kwargs)[\u0027backup\u0027]"},{"line_number":171,"context_line":"        self.assertEqual(backup[\u0027id\u0027], update_backup[\u0027id\u0027])"},{"line_number":172,"context_line":"        self.assertEqual(update_kwargs[\u0027name\u0027], update_backup[\u0027name\u0027])"},{"line_number":173,"context_line":"        self.assertIn(\u0027links\u0027, update_backup)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # Assert response body for show_backup method"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff0f0b1f_b0ae13e5","line":172,"range":{"start_line":172,"start_character":8,"end_line":172,"end_character":70},"updated":"2017-05-19 00:19:24.000000000","message":"I take it only name is returned, not description, or else you could check both are equal.","commit_id":"f5363b46d3eb09dc54351148f13ee232a1c4cb42"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"6e28dd8f7f26b7d5cf690b838c25919c9997f81c","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        update_backup \u003d self.backups_client.update_backup("},{"line_number":170,"context_line":"            backup[\u0027id\u0027], **update_kwargs)[\u0027backup\u0027]"},{"line_number":171,"context_line":"        self.assertEqual(backup[\u0027id\u0027], update_backup[\u0027id\u0027])"},{"line_number":172,"context_line":"        self.assertEqual(update_kwargs[\u0027name\u0027], update_backup[\u0027name\u0027])"},{"line_number":173,"context_line":"        self.assertIn(\u0027links\u0027, update_backup)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        # Assert response body for show_backup method"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff0f0b1f_c5d2e45c","line":172,"range":{"start_line":172,"start_character":8,"end_line":172,"end_character":70},"in_reply_to":"ff0f0b1f_b0ae13e5","updated":"2017-05-19 01:57:39.000000000","message":"I have read the source code about backups in Cinder, and found that the response body of update backup api doesn\u0027t provide the \u0027description\u0027 object. \n\n# cinder/cinder/api/v3/backups.py\n\n    @wsgi.Controller.api_version(BACKUP_UPDATE_MICRO_VERSION)\n    def update(self, req, id, body):\n        \"\"\"Update a backup.\"\"\"\n        context \u003d req.environ[\u0027cinder.context\u0027]\n        self.assert_valid_body(body, \u0027backup\u0027)\n\n        backup_update \u003d body[\u0027backup\u0027]\n\n        self.validate_name_and_description(backup_update)\n        update_dict \u003d {}\n        if \u0027name\u0027 in backup_update:\n            update_dict[\u0027display_name\u0027] \u003d backup_update.pop(\u0027name\u0027)\n        if \u0027description\u0027 in backup_update:\n            update_dict[\u0027display_description\u0027] \u003d (\n                backup_update.pop(\u0027description\u0027))\n        # Check no unsupported fields.\n        if backup_update:\n            msg \u003d _(\"Unsupported fields %s.\") % (\", \".join(backup_update))\n            raise exc.HTTPBadRequest(explanation\u003dmsg)\n\n        new_backup \u003d self.backup_api.update(context, id, update_dict)\n\n        return self._view_builder.summary(req, new_backup)\n\n\n# cinder/cinder/api/views/backups.py\n\n    def summary(self, request, backup):\n        \"\"\"Generic, non-detailed view of a backup.\"\"\"\n        return {\n            \u0027backup\u0027: {\n                \u0027id\u0027: backup[\u0027id\u0027],\n                \u0027name\u0027: backup[\u0027display_name\u0027],\n                \u0027links\u0027: self._get_links(request,\n                                         backup[\u0027id\u0027]),\n            },\n        }","commit_id":"f5363b46d3eb09dc54351148f13ee232a1c4cb42"}],"tempest/lib/services/volume/v3/__init__.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"8a40ac9826d24b8ec6a8e22eb218b2cdcebbe57e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from tempest.lib.services.volume.v3.volumes_client import VolumesClient"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"__all__ \u003d [\u0027MessagesClient\u0027, \u0027BaseClient\u0027, \u0027VersionsClient\u0027, \u0027VolumesClient\u0027,"},{"line_number":22,"context_line":"           \u0027BackupsClient\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff0f0b1f_10893f74","line":22,"range":{"start_line":22,"start_character":12,"end_line":22,"end_character":25},"updated":"2017-05-19 00:19:24.000000000","message":"Better to order alphabetically.","commit_id":"f5363b46d3eb09dc54351148f13ee232a1c4cb42"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"6e28dd8f7f26b7d5cf690b838c25919c9997f81c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from tempest.lib.services.volume.v3.volumes_client import VolumesClient"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"__all__ \u003d [\u0027MessagesClient\u0027, \u0027BaseClient\u0027, \u0027VersionsClient\u0027, \u0027VolumesClient\u0027,"},{"line_number":22,"context_line":"           \u0027BackupsClient\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff0f0b1f_625d4ee8","line":22,"range":{"start_line":22,"start_character":12,"end_line":22,"end_character":25},"in_reply_to":"ff0f0b1f_10893f74","updated":"2017-05-19 01:57:39.000000000","message":"OK, the order will be updated.","commit_id":"f5363b46d3eb09dc54351148f13ee232a1c4cb42"}],"tempest/lib/services/volume/v3/backups_client.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"2b0499040de8fc0cfed6f758fe1cc452b9125820","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    api_version \u003d \"v3\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def update_backup(self, backup_id, **kwargs):"},{"line_number":29,"context_line":"        \"\"\"Updates the specified volume backup.\"\"\""},{"line_number":30,"context_line":"        put_body \u003d json.dumps({\u0027backup\u0027: kwargs})"},{"line_number":31,"context_line":"        resp, body \u003d self.put(\u0027backups/%s\u0027 % backup_id, put_body)"},{"line_number":32,"context_line":"        body \u003d json.loads(body)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f201791_c31ae27b","line":29,"updated":"2017-06-22 09:08:01.000000000","message":"Could you add the API reference for this API like others?\nI think this is the URL.\nhttps://developer.openstack.org/api-ref/block-storage/v3/#update-a-backup","commit_id":"1d68accbdff059851a40959a266d4160890c9f94"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"49aa194dc76806b738054228d763d6163def6977","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    api_version \u003d \"v3\""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def update_backup(self, backup_id, **kwargs):"},{"line_number":29,"context_line":"        \"\"\"Updates the specified volume backup.\"\"\""},{"line_number":30,"context_line":"        put_body \u003d json.dumps({\u0027backup\u0027: kwargs})"},{"line_number":31,"context_line":"        resp, body \u003d self.put(\u0027backups/%s\u0027 % backup_id, put_body)"},{"line_number":32,"context_line":"        body \u003d json.loads(body)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f201791_bf093296","line":29,"in_reply_to":"5f201791_c31ae27b","updated":"2017-06-22 14:28:54.000000000","message":"Done","commit_id":"1d68accbdff059851a40959a266d4160890c9f94"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"2b0499040de8fc0cfed6f758fe1cc452b9125820","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        put_body \u003d json.dumps({\u0027backup\u0027: kwargs})"},{"line_number":31,"context_line":"        resp, body \u003d self.put(\u0027backups/%s\u0027 % backup_id, put_body)"},{"line_number":32,"context_line":"        body \u003d json.loads(body)"},{"line_number":33,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":34,"context_line":"        return rest_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f201791_a31da674","line":33,"updated":"2017-06-22 09:08:01.000000000","message":"In the api document, the response code should be 202. So, is this correct? If this is correct, could you put a NOTE for this?","commit_id":"1d68accbdff059851a40959a266d4160890c9f94"},{"author":{"_account_id":23081,"name":"Jeremy Zhang","email":"zhangjun_inspur@163.com","username":"jeremy.zhang"},"change_message_id":"49aa194dc76806b738054228d763d6163def6977","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        put_body \u003d json.dumps({\u0027backup\u0027: kwargs})"},{"line_number":31,"context_line":"        resp, body \u003d self.put(\u0027backups/%s\u0027 % backup_id, put_body)"},{"line_number":32,"context_line":"        body \u003d json.loads(body)"},{"line_number":33,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":34,"context_line":"        return rest_client.ResponseBody(resp, body)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f201791_7f383a3c","line":33,"in_reply_to":"5f201791_a31da674","updated":"2017-06-22 14:28:54.000000000","message":"In my devstack environment, the response code is 200.\nAnd aslo if the response code is 202, then the function \u0027self.expected_success(200, resp.status)\u0027 should fail.\nHere I will propose a patch to Cinder to fix the api-ref.","commit_id":"1d68accbdff059851a40959a266d4160890c9f94"}]}
