)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"22eac584fe201b86ad0f6254fa83808336a273dc","unresolved":false,"context_lines":[{"line_number":12,"context_line":"\u0027VolumeBackupsRestore\u0027 object."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I64b75649c1ac9c24e05a197f7280975564b4d386"},{"line_number":15,"context_line":"Closes-Bug: #1733315"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dfd5e7cf_f6fefa03","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":20},"updated":"2019-01-08 06:44:39.000000000","message":"We no longer use launchpad. Could you use storyboard?","commit_id":"60979b3aad2d00bd1cc379040d318ccfe4fc18a7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"cad4784931f6bcc86b414c2ab5094ebcd1876033","unresolved":false,"context_lines":[{"line_number":12,"context_line":"\u0027VolumeBackupsRestore\u0027 object."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I64b75649c1ac9c24e05a197f7280975564b4d386"},{"line_number":15,"context_line":"Closes-Bug: #1733315"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"dfd5e7cf_d7ae26e6","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":20},"in_reply_to":"dfd5e7cf_f6fefa03","updated":"2019-01-09 20:56:23.000000000","message":"Done","commit_id":"60979b3aad2d00bd1cc379040d318ccfe4fc18a7"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"6b4722f725274e89a36126592e9c12a4f01a835a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"command which should be returned instead of the"},{"line_number":12,"context_line":"\u0027VolumeBackupsRestore\u0027 object."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Depends-On: https://review.openstack.org/#/c/639410/"},{"line_number":15,"context_line":"Change-Id: I64b75649c1ac9c24e05a197f7280975564b4d386"},{"line_number":16,"context_line":"Story: 2004740"},{"line_number":17,"context_line":"Task: 28811"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9fdfeff1_709fea01","line":14,"updated":"2019-02-26 18:57:55.000000000","message":"Maybe better to rebase this on top of that change since they are in the same repo. But technically this should work too.","commit_id":"4056eb65a4ddfccad2b3174fce713a8e9f4657de"}],"openstackclient/tests/functional/volume/v2/test_backup.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8eb63db74d7e6aab39c1b489caa706fcdd1ae0a9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def test_volume_backup_restore(self):"},{"line_number":32,"context_line":"        \"\"\"Test restore backup\"\"\""},{"line_number":33,"context_line":"        if not self.backup_enabled:"},{"line_number":34,"context_line":"            self.skipTest()"},{"line_number":35,"context_line":"        vol_id \u003d uuid.uuid4().hex"},{"line_number":36,"context_line":"        # create a volume"},{"line_number":37,"context_line":"        json.loads(self.openstack("}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_e37215e3","line":34,"range":{"start_line":34,"start_character":17,"end_line":34,"end_character":25},"updated":"2019-02-27 22:27:22.000000000","message":"Good news is the zuul change appears to have fixed the issue where c-bak is no longer being set up. Bad news is, this requires a reason string input.","commit_id":"066add0582d0e67802606254fef1ec1cd5b21c5e"}],"openstackclient/volume/v2/backup.py":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"c3c120a74ed27bf13c7a991287a0c874c47fe269","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                                                 parsed_args.volume)"},{"line_number":322,"context_line":"        backup \u003d volume_client.restores.restore(backup.id,"},{"line_number":323,"context_line":"                                                destination_volume.id)"},{"line_number":324,"context_line":"        if backup:"},{"line_number":325,"context_line":"            return zip(*sorted(six.iteritems(backup._info)))"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_1ad78f4f","line":324,"updated":"2018-12-20 08:59:54.000000000","message":"Why this \u0027backup\u0027 can be empty? I think we could removed it.","commit_id":"368f7ad1e10c5a88d475ce826e85950d7fec8817"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"1c903d719cef6458c6e8401fde78bfff4179c19f","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                                                 parsed_args.volume)"},{"line_number":322,"context_line":"        backup \u003d volume_client.restores.restore(backup.id,"},{"line_number":323,"context_line":"                                                destination_volume.id)"},{"line_number":324,"context_line":"        if backup:"},{"line_number":325,"context_line":"            return zip(*sorted(six.iteritems(backup._info)))"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ce9159f8","line":324,"in_reply_to":"3f79a3b5_1ad78f4f","updated":"2018-12-20 13:08:48.000000000","message":"I had the same thoughts initially (PS1), but gate failed here [1] as it received a NoneType value in \u0027backup\u0027.\n\n[1] https://github.com/openstack/python-openstackclient/blob/master/openstackclient/tests/unit/volume/v2/test_backup.py#L383","commit_id":"368f7ad1e10c5a88d475ce826e85950d7fec8817"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"22eac584fe201b86ad0f6254fa83808336a273dc","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                                                 parsed_args.volume)"},{"line_number":322,"context_line":"        backup \u003d volume_client.restores.restore(backup.id,"},{"line_number":323,"context_line":"                                                destination_volume.id)"},{"line_number":324,"context_line":"        if backup:"},{"line_number":325,"context_line":"            return zip(*sorted(six.iteritems(backup._info)))"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dfd5e7cf_b66f12c4","line":324,"range":{"start_line":324,"start_character":8,"end_line":324,"end_character":18},"updated":"2019-01-08 06:44:39.000000000","message":"When does the volume client (i.e., cinderclient) return None(?) ?\nThis is still not clear to me. Could you clarify it? I read past comments but only UT failure is mentioned. We should first discuss what it should be. It is a question from the maintenance perspective.","commit_id":"60979b3aad2d00bd1cc379040d318ccfe4fc18a7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"97333f495a82de6299f705112f1e9ef544388208","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                                                 parsed_args.volume)"},{"line_number":322,"context_line":"        backup \u003d volume_client.restores.restore(backup.id,"},{"line_number":323,"context_line":"                                                destination_volume.id)"},{"line_number":324,"context_line":"        if backup:"},{"line_number":325,"context_line":"            return zip(*sorted(six.iteritems(backup._info)))"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dfd5e7cf_6cd45bbe","line":324,"range":{"start_line":324,"start_character":8,"end_line":324,"end_character":18},"in_reply_to":"dfd5e7cf_09ffc201","updated":"2019-01-09 10:26:26.000000000","message":"you are right, the condition can be removed but i was proposing the right way to implement the test so the code won\u0027t fail.\n\nIMO I don\u0027t think the code will return None as if an invalid backup or volume is passed, the code will fail here[1] with a \u0027Not found\u0027 error.\n\n[1] https://github.com/openstack/python-openstackclient/blob/master/openstackclient/volume/v2/backup.py#L319","commit_id":"60979b3aad2d00bd1cc379040d318ccfe4fc18a7"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dbb81486924c043c73502355782809632f841ee5","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                                                 parsed_args.volume)"},{"line_number":322,"context_line":"        backup \u003d volume_client.restores.restore(backup.id,"},{"line_number":323,"context_line":"                                                destination_volume.id)"},{"line_number":324,"context_line":"        if backup:"},{"line_number":325,"context_line":"            return zip(*sorted(six.iteritems(backup._info)))"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dfd5e7cf_09ffc201","line":324,"range":{"start_line":324,"start_character":8,"end_line":324,"end_character":18},"in_reply_to":"dfd5e7cf_b324e90e","updated":"2019-01-09 08:43:58.000000000","message":"What I am talking about is not related to unit test. This is the main code, so what we should discuss first is when None is returned in actual code. The main code should not be affected by test code.\n\nYou just talked about test cases.","commit_id":"60979b3aad2d00bd1cc379040d318ccfe4fc18a7"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2c80f7be66ab50647cbeeb0753d3dde429987f03","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                                                 parsed_args.volume)"},{"line_number":322,"context_line":"        backup \u003d volume_client.restores.restore(backup.id,"},{"line_number":323,"context_line":"                                                destination_volume.id)"},{"line_number":324,"context_line":"        if backup:"},{"line_number":325,"context_line":"            return zip(*sorted(six.iteritems(backup._info)))"},{"line_number":326,"context_line":""},{"line_number":327,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dfd5e7cf_b324e90e","line":324,"range":{"start_line":324,"start_character":8,"end_line":324,"end_character":18},"in_reply_to":"dfd5e7cf_b66f12c4","updated":"2019-01-09 07:51:17.000000000","message":"Actually the test doesn\u0027t verify the restore operation.\nIt just mocks the backup object without actually creating a backup.\nthe previous code returned a None value which was asserted in the test[1].\nIMO the approach here should be to create a proper volume and backup and actually perform the restore operation.\n\n[1] https://github.com/openstack/python-openstackclient/blob/master/openstackclient/tests/unit/volume/v2/test_backup.py#L388","commit_id":"60979b3aad2d00bd1cc379040d318ccfe4fc18a7"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"568e9eace66142d54d702ec396b6e0c3f4250b67","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                                                 parsed_args.volume)"},{"line_number":322,"context_line":"        backup \u003d volume_client.restores.restore(backup.id,"},{"line_number":323,"context_line":"                                                destination_volume.id)"},{"line_number":324,"context_line":"        return zip(*sorted(six.iteritems(backup._info)))"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"class RestoreBackup(RestoreVolumeBackup):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_9911e407","line":324,"range":{"start_line":324,"start_character":48,"end_line":324,"end_character":53},"updated":"2019-02-19 16:55:33.000000000","message":"We should probably make this not-private in python-cinderclient if we expect consumer code to access it.","commit_id":"63bab89d43441bf62d45b0272414eb1abc00c682"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"bde565e4c562091a4d182a926d439e57da0eeb08","unresolved":false,"context_lines":[{"line_number":321,"context_line":"                                                 parsed_args.volume)"},{"line_number":322,"context_line":"        backup \u003d volume_client.restores.restore(backup.id,"},{"line_number":323,"context_line":"                                                destination_volume.id)"},{"line_number":324,"context_line":"        return zip(*sorted(six.iteritems(backup._info)))"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"class RestoreBackup(RestoreVolumeBackup):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_59d5bcb6","line":324,"range":{"start_line":324,"start_character":48,"end_line":324,"end_character":53},"in_reply_to":"9fdfeff1_9911e407","updated":"2019-02-19 17:17:35.000000000","message":"Sure we can do it. but will require lots of changes in OSC.","commit_id":"63bab89d43441bf62d45b0272414eb1abc00c682"}]}
