)]}'
{"cinder/volume/drivers/vmware/vmdk.py":[{"author":{"_account_id":7948,"name":"Subbu","email":"subramanian.neelakantan@gmail.com","username":"subbu"},"change_message_id":"1e45451277bf2c680bab2b2cbe74ce71b654d394","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            return False"},{"line_number":899,"context_line":"        # The volume disk chain has moved"},{"line_number":900,"context_line":"        host \u003d self.volumeops.get_host(instance_mor)"},{"line_number":901,"context_line":"        datastore \u003d vol_disk.backing.datastore"},{"line_number":902,"context_line":"        (_, resource_pool) \u003d self.volumeops.get_dss_rp(host)"},{"line_number":903,"context_line":"        # Relocated with moveAllDiskBackingsAndAllowSharing"},{"line_number":904,"context_line":"        self.volumeops.relocate_backing(backing, datastore,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F93Gc%3D","line":901,"updated":"2014-02-03 07:53:57.000000000","message":"Shouldn\u0027t this be inst_vol_disk?","commit_id":"23931198459d39235304ac6af22967b7f857960d"},{"author":{"_account_id":7992,"name":"Kartik Bommepally","email":"kbommepally@vmware.com","username":"kartikaditya"},"change_message_id":"0942a1d6d20854757d8b8a7918d0de3ce7f82712","unresolved":false,"context_lines":[{"line_number":898,"context_line":"            return False"},{"line_number":899,"context_line":"        # The volume disk chain has moved"},{"line_number":900,"context_line":"        host \u003d self.volumeops.get_host(instance_mor)"},{"line_number":901,"context_line":"        datastore \u003d vol_disk.backing.datastore"},{"line_number":902,"context_line":"        (_, resource_pool) \u003d self.volumeops.get_dss_rp(host)"},{"line_number":903,"context_line":"        # Relocated with moveAllDiskBackingsAndAllowSharing"},{"line_number":904,"context_line":"        self.volumeops.relocate_backing(backing, datastore,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9qAk%3D","line":901,"in_reply_to":"AAAAUH%2F93Gc%3D","updated":"2014-02-05 11:44:32.000000000","message":"Done","commit_id":"23931198459d39235304ac6af22967b7f857960d"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"a26544b3bc8944a27f9bf40f2509c957985045ff","unresolved":false,"context_lines":[{"line_number":908,"context_line":"        self.volumeops.add_disk(backing, vol_disk.capacityInKB,"},{"line_number":909,"context_line":"                                inst_vol_disk.backing.datastore,"},{"line_number":910,"context_line":"                                newer_vmdk_path, vol_disk.controllerKey,"},{"line_number":911,"context_line":"                                vol_disk.unitNumber)"},{"line_number":912,"context_line":"        return True"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2F5MQ%3D","line":911,"updated":"2014-02-24 08:49:45.000000000","message":"Will delete_device() and add_disk() always succeed?  Any chance that they might fail?  If a task failed, an exception will bubble up to the caller to consolidate_backing(), and in the change here: https://review.openstack.org/#/c/69771/,  the caller of doesn\u0027t catch exceptions neither, so finally exception will get to volume manager level.  Volume manger can catch the exception can set the snapshot to \u0027error\u0027 state.  Is that what you wanted?","commit_id":"ead395be99097b62ebd12876bfaa7b6286266b4a"},{"author":{"_account_id":7992,"name":"Kartik Bommepally","email":"kbommepally@vmware.com","username":"kartikaditya"},"change_message_id":"693ad698dbbd34fcf1874660aded85b9374f4dab","unresolved":false,"context_lines":[{"line_number":908,"context_line":"        self.volumeops.add_disk(backing, vol_disk.capacityInKB,"},{"line_number":909,"context_line":"                                inst_vol_disk.backing.datastore,"},{"line_number":910,"context_line":"                                newer_vmdk_path, vol_disk.controllerKey,"},{"line_number":911,"context_line":"                                vol_disk.unitNumber)"},{"line_number":912,"context_line":"        return True"},{"line_number":913,"context_line":""},{"line_number":914,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2FD1s%3D","line":911,"in_reply_to":"AAAAU3%2F%2F5MQ%3D","updated":"2014-03-13 09:28:38.000000000","message":"Yes, the snapshot should be errored in partial failure cases (Note that we handle session expiry cases).\nNow the partial failure will be recovered from, when another consolidate_backing() is called (this gets called for snapshot or detach volume APIs).","commit_id":"ead395be99097b62ebd12876bfaa7b6286266b4a"}],"cinder/volume/drivers/vmware/volumeops.py":[{"author":{"_account_id":7948,"name":"Subbu","email":"subramanian.neelakantan@gmail.com","username":"subbu"},"change_message_id":"1e45451277bf2c680bab2b2cbe74ce71b654d394","unresolved":false,"context_lines":[{"line_number":756,"context_line":"                                                \u0027config.extraConfig\u0027)"},{"line_number":757,"context_line":"        if extra_config:"},{"line_number":758,"context_line":"            options \u003d extra_config.OptionValue"},{"line_number":759,"context_line":"            for option in options:"},{"line_number":760,"context_line":"                if option.key \u003d\u003d volume_option:"},{"line_number":761,"context_line":"                    return option.value"},{"line_number":762,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F93FI%3D","line":759,"updated":"2014-02-03 07:53:57.000000000","message":"Is the for loop equivalent to \"return options.get(volume_option)\" ?","commit_id":"23931198459d39235304ac6af22967b7f857960d"},{"author":{"_account_id":7992,"name":"Kartik Bommepally","email":"kbommepally@vmware.com","username":"kartikaditya"},"change_message_id":"0942a1d6d20854757d8b8a7918d0de3ce7f82712","unresolved":false,"context_lines":[{"line_number":756,"context_line":"                                                \u0027config.extraConfig\u0027)"},{"line_number":757,"context_line":"        if extra_config:"},{"line_number":758,"context_line":"            options \u003d extra_config.OptionValue"},{"line_number":759,"context_line":"            for option in options:"},{"line_number":760,"context_line":"                if option.key \u003d\u003d volume_option:"},{"line_number":761,"context_line":"                    return option.value"},{"line_number":762,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F9qAA%3D","line":759,"in_reply_to":"AAAAUH%2F93FI%3D","updated":"2014-02-05 11:44:32.000000000","message":"OptionValue is a VMware API construct and nothing to do with Map datastructure. the options is an array and not a map.","commit_id":"23931198459d39235304ac6af22967b7f857960d"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"a26544b3bc8944a27f9bf40f2509c957985045ff","unresolved":false,"context_lines":[{"line_number":855,"context_line":"        task \u003d self._session.invoke_api(self._session.vim, \u0027ReconfigVM_Task\u0027,"},{"line_number":856,"context_line":"                                        backing, spec\u003ddelete_device_spec)"},{"line_number":857,"context_line":"        LOG.debug(_(\"Initiated delete device via task: %s.\") % task)"},{"line_number":858,"context_line":"        self._session.wait_for_task(task)"},{"line_number":859,"context_line":"        LOG.info(_(\"Successfully deleted device :%(dev)s from backing: \""},{"line_number":860,"context_line":"                   \"%(back)s.\") % {\u0027dev\u0027: device, \u0027back\u0027: backing})"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAU3%2F%2F5K8%3D","line":858,"updated":"2014-02-24 08:49:45.000000000","message":"It looks like wait_for_task() can raise exception if the task is failed.","commit_id":"ead395be99097b62ebd12876bfaa7b6286266b4a"},{"author":{"_account_id":7992,"name":"Kartik Bommepally","email":"kbommepally@vmware.com","username":"kartikaditya"},"change_message_id":"693ad698dbbd34fcf1874660aded85b9374f4dab","unresolved":false,"context_lines":[{"line_number":855,"context_line":"        task \u003d self._session.invoke_api(self._session.vim, \u0027ReconfigVM_Task\u0027,"},{"line_number":856,"context_line":"                                        backing, spec\u003ddelete_device_spec)"},{"line_number":857,"context_line":"        LOG.debug(_(\"Initiated delete device via task: %s.\") % task)"},{"line_number":858,"context_line":"        self._session.wait_for_task(task)"},{"line_number":859,"context_line":"        LOG.info(_(\"Successfully deleted device :%(dev)s from backing: \""},{"line_number":860,"context_line":"                   \"%(back)s.\") % {\u0027dev\u0027: device, \u0027back\u0027: backing})"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAVn%2F%2FECg%3D","line":858,"in_reply_to":"AAAAU3%2F%2F5K8%3D","updated":"2014-03-13 09:28:38.000000000","message":"Yes, exception can come from backed, wherein we wrap it as a VimFaultException (which extends from exception.VolumeBackendAPIException).","commit_id":"ead395be99097b62ebd12876bfaa7b6286266b4a"}]}
