)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"da1e389d30b81899e3d6b0c5554216d8932366f8","unresolved":false,"context_lines":[{"line_number":1338,"context_line":"        elif image_type \u003d\u003d \u0027backup\u0027:"},{"line_number":1339,"context_line":"            expected_task_state \u003d task_states.IMAGE_BACKUP"},{"line_number":1340,"context_line":""},{"line_number":1341,"context_line":"        def update_task_state(**kwargs):"},{"line_number":1342,"context_line":"            expected_state \u003d expected_task_state"},{"line_number":1343,"context_line":"            if \u0027expected_task_state\u0027 in kwargs:"},{"line_number":1344,"context_line":"                expected_state \u003d kwargs[\u0027expected_task_state\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMH%2F%2F7SE%3D","line":1341,"updated":"2012-11-15 16:11:33.000000000","message":"I think that instead of **kwargs, you need to define what can/should be passed to this function","commit_id":"63f9b2d0130e420dedeef5ca924ece988f779771"}],"nova/compute/task_states.py":[{"author":{"_account_id":1711,"name":"Yun Mao","email":"yunmao@gmail.com","username":"yunmao"},"change_message_id":"9e22c2c36c1ac2d8d5c625f9b339d5a0653a439b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"# possible task states during snapshot()"},{"line_number":35,"context_line":"IMAGE_SNAPSHOT \u003d \u0027image_snapshot\u0027"},{"line_number":36,"context_line":"IMAGE_PENDING_UPLOAD \u003d \u0027image_pending_upload\u0027"},{"line_number":37,"context_line":"IMAGE_UPLOADING \u003d \u0027image_uploading\u0027"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"# possible task states during backup()"},{"line_number":40,"context_line":"IMAGE_BACKUP \u003d \u0027image_backup\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMX%2F%2F%2FUY%3D","line":37,"updated":"2012-12-03 16:57:03.000000000","message":"So these two states are indeed possible in either snapshot() or backup(), right?\n\nThis is different from what we have right now, where each individual task state can uniquely identify which API call we are in. I don\u0027t think it\u0027s necessarily a problem. But perhaps we should clarify that somewhere in this file? Thanks.","commit_id":"929a6d81524f52279268f86358845761320d5750"}],"nova/tests/test_hypervapi.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"81d5d5852f335a3dc6df7692b5a06f933519e6e9","unresolved":false,"context_lines":[{"line_number":372,"context_line":"            self._context, self._instance_data, snapshot_name,"},{"line_number":373,"context_line":"            update_task_state)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"        # assert states changed in correct order"},{"line_number":376,"context_line":"        self.assertEquals(len(updated_task_states), 2)"},{"line_number":377,"context_line":"        self.assertEquals(updated_task_states[0],"},{"line_number":378,"context_line":"            task_states.IMAGE_PENDING_UPLOAD)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2Ft9g%3D","line":375,"updated":"2012-11-28 21:48:23.000000000","message":"Could have also done:\n\n    self.assertEqual(updated_task_states, [\n        task_states.IMAGE_PENDING_UPLOAD,\n        task_states.IMAGE_UPLOADING,\n    ])","commit_id":"929a6d81524f52279268f86358845761320d5750"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"381078f422228799896b07344ea435e8871b873d","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from nova.compute import power_state"},{"line_number":29,"context_line":"from nova.compute import task_states"},{"line_number":30,"context_line":"from nova import config"},{"line_number":31,"context_line":"from nova import context"},{"line_number":32,"context_line":"from nova import db"},{"line_number":33,"context_line":"from nova.image import glance"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2F2aU%3D","line":30,"updated":"2012-12-12 18:18:06.000000000","message":"\"config\" is not used anywhere in this file…","commit_id":"444c1a439c1624a2e14114a06114c07614120329"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"381078f422228799896b07344ea435e8871b873d","unresolved":false,"context_lines":[{"line_number":436,"context_line":""},{"line_number":437,"context_line":"        snapshot_name \u003d \u0027test_snapshot_\u0027 + str(uuid.uuid4())"},{"line_number":438,"context_line":"        self._conn.snapshot(self._context, self._instance_data, snapshot_name,"},{"line_number":439,"context_line":"        update_task_state)"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"        self.assertTrue(self._image_metadata and"},{"line_number":442,"context_line":"                \"disk_format\" in self._image_metadata and"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2F2aY%3D","line":439,"updated":"2012-12-12 18:18:06.000000000","message":"This needs to be indented.  I recommend indenting to line up with the open parenthesis, i.e.:\n\n    self._conn.snapshot(self._context, self._instance_data, snapshot_name,\n                        update_task_state)","commit_id":"444c1a439c1624a2e14114a06114c07614120329"}],"nova/tests/utils.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"8cc87d9170848ad87234a9d0efa81d6392b379c9","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    test_dns_managers \u003d []"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"class TaskStateValidator(object):"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def __init__(self, expected_states):"},{"line_number":128,"context_line":"        self.actual_states \u003d []"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F6Eo%3D","line":125,"updated":"2012-12-21 16:54:51.000000000","message":"I wonder if this would be better as a matcher.  Check out nova/tests/matchers.py for examples.  (I won\u0027t object on the basis of that, however.)","commit_id":"1f83a7b53696970c9279e977d0d33a6827c3c2b2"}],"nova/virt/hyperv/snapshotops.py":[{"author":{"_account_id":1711,"name":"Yun Mao","email":"yunmao@gmail.com","username":"yunmao"},"change_message_id":"8236684df564957f6623b94fc919dc4d13aca75d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                _(\u0027Failed to create snapshot for VM %s\u0027) %"},{"line_number":74,"context_line":"                    instance_name)"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            update_task_state(task_state\u003dtask_states.IMAGE_PENDING_UPLOAD)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        export_folder \u003d None"},{"line_number":79,"context_line":"        f \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F2wY%3D","line":76,"updated":"2012-11-19 22:42:26.000000000","message":"is the expected state to be IMAGE_SNAPSHOT?","commit_id":"929a6d81524f52279268f86358845761320d5750"},{"author":{"_account_id":5387,"name":"Andrew Melton","email":"andrew.melton@rackspace.com","username":"andrew-melton"},"change_message_id":"3c1b9f202de83b5edb527a7c2a71330670a92c87","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                _(\u0027Failed to create snapshot for VM %s\u0027) %"},{"line_number":74,"context_line":"                    instance_name)"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            update_task_state(task_state\u003dtask_states.IMAGE_PENDING_UPLOAD)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        export_folder \u003d None"},{"line_number":79,"context_line":"        f \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAMH%2F%2F2uU%3D","line":76,"in_reply_to":"AAAAMH%2F%2F2wY%3D","updated":"2012-11-27 15:17:55.000000000","message":"At this point, the expected state could be either IMAGE_SNAPSHOT or IMAGE_BACKUP. The default expected state is set in the compute manager.","commit_id":"929a6d81524f52279268f86358845761320d5750"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"381078f422228799896b07344ea435e8871b873d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from nova.compute import task_states"},{"line_number":26,"context_line":"from nova import config"},{"line_number":27,"context_line":"from nova import exception"},{"line_number":28,"context_line":"from nova.image import glance"},{"line_number":29,"context_line":"from nova.openstack.common import cfg"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2F2aQ%3D","line":26,"updated":"2012-12-12 18:18:06.000000000","message":"config is not used anywhere in this file…","commit_id":"444c1a439c1624a2e14114a06114c07614120329"}],"nova/virt/vmwareapi/vmops.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"381078f422228799896b07344ea435e8871b873d","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from nova.compute import power_state"},{"line_number":30,"context_line":"from nova.compute import task_states"},{"line_number":31,"context_line":"from nova import config"},{"line_number":32,"context_line":"from nova import exception"},{"line_number":33,"context_line":"from nova.openstack.common import cfg"},{"line_number":34,"context_line":"from nova.openstack.common import importutils"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2F2aA%3D","line":31,"updated":"2012-12-12 18:18:06.000000000","message":"config is not used anywhere in this file…","commit_id":"444c1a439c1624a2e14114a06114c07614120329"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"b94589b60c2aaf223de5f6e986f8334b6788e4f4","unresolved":false,"context_lines":[{"line_number":478,"context_line":"        update_task_state(task_state\u003dtask_states.IMAGE_UPLOADING,"},{"line_number":479,"context_line":"                          expected_state\u003dtask_states.IMAGE_PENDING_UPLOAD)"},{"line_number":480,"context_line":"        _upload_vmdk_to_image_repository()"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"        def _clean_temp_data():"},{"line_number":483,"context_line":"            \"\"\""},{"line_number":484,"context_line":"            Delete temporary vmdk files generated in image handling"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F%2Bqk%3D","line":481,"updated":"2012-12-18 01:14:11.000000000","message":"what if upload fails? shouldn\u0027t it change state to something else?","commit_id":"1551db17096f6880ef2496abbff04fc52e213e68"},{"author":{"_account_id":5387,"name":"Andrew Melton","email":"andrew.melton@rackspace.com","username":"andrew-melton"},"change_message_id":"fe14e6fe059752ffdcfab0da5e23a8494572078d","unresolved":false,"context_lines":[{"line_number":478,"context_line":"        update_task_state(task_state\u003dtask_states.IMAGE_UPLOADING,"},{"line_number":479,"context_line":"                          expected_state\u003dtask_states.IMAGE_PENDING_UPLOAD)"},{"line_number":480,"context_line":"        _upload_vmdk_to_image_repository()"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"        def _clean_temp_data():"},{"line_number":483,"context_line":"            \"\"\""},{"line_number":484,"context_line":"            Delete temporary vmdk files generated in image handling"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F6%2FQ%3D","line":481,"in_reply_to":"AAAAM3%2F%2F%2Bqk%3D","updated":"2012-12-20 18:18:04.000000000","message":"I definitely think tracking the fact that the upload failed would be a good idea, I just don\u0027t think the instance task_state is the best place to do it. When the upload errors out, the instance should go back to active and the user could try it again. There is currently a blue-print in progress that could offer the ability to track the entire snapshot though: blueprint-instance-actions","commit_id":"1551db17096f6880ef2496abbff04fc52e213e68"}],"nova/virt/xenapi/vm_utils.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"381078f422228799896b07344ea435e8871b873d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"from nova import block_device"},{"line_number":38,"context_line":"from nova.compute import power_state"},{"line_number":39,"context_line":"from nova.compute import task_states"},{"line_number":40,"context_line":"from nova import config"},{"line_number":41,"context_line":"from nova import exception"},{"line_number":42,"context_line":"from nova.image import glance"},{"line_number":43,"context_line":"from nova.openstack.common import cfg"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAMX%2F%2F2Z0%3D","line":40,"updated":"2012-12-12 18:18:06.000000000","message":"config is not used anywhere in this file…","commit_id":"444c1a439c1624a2e14114a06114c07614120329"}],"nova/virt/xenapi/vmops.py":[{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"b94589b60c2aaf223de5f6e986f8334b6788e4f4","unresolved":false,"context_lines":[{"line_number":640,"context_line":"            update_task_state(task_state\u003dtask_states.IMAGE_UPLOADING,"},{"line_number":641,"context_line":"                              expected_state\u003dtask_states.IMAGE_PENDING_UPLOAD)"},{"line_number":642,"context_line":"            vm_utils.upload_image("},{"line_number":643,"context_line":"                    context, self._session, instance, vdi_uuids, image_id)"},{"line_number":644,"context_line":""},{"line_number":645,"context_line":"        LOG.debug(_(\"Finished snapshot and upload for VM\"),"},{"line_number":646,"context_line":"                  instance\u003dinstance)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F%2Bno%3D","line":643,"updated":"2012-12-18 01:14:11.000000000","message":"question/suggestion: what if upload fails? shouldn\u0027t have a state? image_upload_failed... cause the snapshot worked but only the upload doesn\u0027t","commit_id":"1551db17096f6880ef2496abbff04fc52e213e68"}]}
