)]}'
{"cinder/backup/api.py":[{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                     \u0027or in-use, but the current status is \"%s\".\u0027)"},{"line_number":151,"context_line":"                   % volume.status)"},{"line_number":152,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":153,"context_line":"        elif volume.status in [\"in-use\"] and not force:"},{"line_number":154,"context_line":"            msg \u003d _(\u0027Backing up an in-use volume must use \u0027"},{"line_number":155,"context_line":"                    \u0027the force flag.\u0027)"},{"line_number":156,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_7329d436","line":153,"updated":"2015-07-27 16:06:06.000000000","message":"volume.status \u003d\u003d \"in-use\"","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":150,"context_line":"                     \u0027or in-use, but the current status is \"%s\".\u0027)"},{"line_number":151,"context_line":"                   % volume.status)"},{"line_number":152,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"},{"line_number":153,"context_line":"        elif volume.status in [\"in-use\"] and not force:"},{"line_number":154,"context_line":"            msg \u003d _(\u0027Backing up an in-use volume must use \u0027"},{"line_number":155,"context_line":"                    \u0027the force flag.\u0027)"},{"line_number":156,"context_line":"            raise exception.InvalidVolume(reason\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_6cc24beb","line":153,"in_reply_to":"3a50d1a3_7329d436","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"            while True:"},{"line_number":281,"context_line":"                volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":282,"context_line":"                if volume[\u0027status\u0027] !\u003d \u0027creating\u0027:"},{"line_number":283,"context_line":"                    break"},{"line_number":284,"context_line":"                greenthread.sleep(1)"},{"line_number":285,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_93dd8016","line":282,"updated":"2015-07-27 16:06:06.000000000","message":"volume.status","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"            while True:"},{"line_number":281,"context_line":"                volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":282,"context_line":"                if volume[\u0027status\u0027] !\u003d \u0027creating\u0027:"},{"line_number":283,"context_line":"                    break"},{"line_number":284,"context_line":"                greenthread.sleep(1)"},{"line_number":285,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_0cb3879b","line":282,"in_reply_to":"3a50d1a3_93dd8016","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        volume.save()"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        self.backup_rpcapi.restore_backup(context, volume_host, backup,"},{"line_number":314,"context_line":"                                          volume_id)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        d \u003d {\u0027backup_id\u0027: backup_id,"},{"line_number":317,"context_line":"             \u0027volume_id\u0027: volume_id, }"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_53d138cc","line":314,"updated":"2015-07-27 16:06:06.000000000","message":"You should pass volume_obj instead of volume_id ovcer rpc methods.","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        volume.save()"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"        self.backup_rpcapi.restore_backup(context, volume_host, backup,"},{"line_number":314,"context_line":"                                          volume_id)"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        d \u003d {\u0027backup_id\u0027: backup_id,"},{"line_number":317,"context_line":"             \u0027volume_id\u0027: volume_id, }"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_6c69ebf8","line":314,"in_reply_to":"3a50d1a3_53d138cc","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"}],"cinder/backup/driver.py":[{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":223,"context_line":"    def _restore_vol_meta(self, metadata, volume_id, fields):"},{"line_number":224,"context_line":"        \"\"\"Restore values to VolumeMetadata object for provided fields.\"\"\""},{"line_number":225,"context_line":"        LOG.debug(\"Restoring volume metadata\")"},{"line_number":226,"context_line":"        metadata \u003d self._filter(metadata, fields)"},{"line_number":227,"context_line":"        self.db.volume_metadata_update(self.context, volume_id, metadata, True)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def _restore_vol_glance_meta(self, metadata, volume_id, fields):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_be03a3b7","line":226,"updated":"2015-07-27 16:06:06.000000000","message":"maybe we should do it via volume_obj? \nvolume \u003d objects.Volume.get_by_id(self.context, volume_id)\nvolume.metadata \u003d self._filter(metadata, fields)\nvolume.save()","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"15fadaced27f9b5a4fc326149cb8ff380280d83f","unresolved":false,"context_lines":[{"line_number":223,"context_line":"    def _restore_vol_meta(self, metadata, volume_id, fields):"},{"line_number":224,"context_line":"        \"\"\"Restore values to VolumeMetadata object for provided fields.\"\"\""},{"line_number":225,"context_line":"        LOG.debug(\"Restoring volume metadata\")"},{"line_number":226,"context_line":"        metadata \u003d self._filter(metadata, fields)"},{"line_number":227,"context_line":"        self.db.volume_metadata_update(self.context, volume_id, metadata, True)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def _restore_vol_glance_meta(self, metadata, volume_id, fields):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_86052e12","line":226,"in_reply_to":"3a50d1a3_4c966ff1","updated":"2015-07-28 07:29:31.000000000","message":"Sorry I didn\u0027t noticed it.","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":223,"context_line":"    def _restore_vol_meta(self, metadata, volume_id, fields):"},{"line_number":224,"context_line":"        \"\"\"Restore values to VolumeMetadata object for provided fields.\"\"\""},{"line_number":225,"context_line":"        LOG.debug(\"Restoring volume metadata\")"},{"line_number":226,"context_line":"        metadata \u003d self._filter(metadata, fields)"},{"line_number":227,"context_line":"        self.db.volume_metadata_update(self.context, volume_id, metadata, True)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def _restore_vol_glance_meta(self, metadata, volume_id, fields):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_4c966ff1","line":226,"in_reply_to":"3a50d1a3_be03a3b7","updated":"2015-07-27 18:55:55.000000000","message":"See commit message - I avoided making changes for db.volume_metadata_*.  It is coming, but in a separate patch.","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"}],"cinder/backup/manager.py":[{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":275,"context_line":"                # The temp volume should be deleted directly thru the"},{"line_number":276,"context_line":"                # the volume driver, not thru the volume manager."},{"line_number":277,"context_line":"                mgr.driver.delete_volume(temp_volume)"},{"line_number":278,"context_line":"                self.db.volume_destroy(ctxt, temp_volume.id)"},{"line_number":279,"context_line":"            if backup.temp_snapshot_id and backup.status \u003d\u003d \u0027error\u0027:"},{"line_number":280,"context_line":"                temp_snapshot \u003d objects.Snapshot.get_by_id("},{"line_number":281,"context_line":"                    ctxt, backup.temp_snapshot_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_7eee7b8c","line":278,"updated":"2015-07-27 16:06:06.000000000","message":"temp_volume.destroy(ctxt)","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":275,"context_line":"                # The temp volume should be deleted directly thru the"},{"line_number":276,"context_line":"                # the volume driver, not thru the volume manager."},{"line_number":277,"context_line":"                mgr.driver.delete_volume(temp_volume)"},{"line_number":278,"context_line":"                self.db.volume_destroy(ctxt, temp_volume.id)"},{"line_number":279,"context_line":"            if backup.temp_snapshot_id and backup.status \u003d\u003d \u0027error\u0027:"},{"line_number":280,"context_line":"                temp_snapshot \u003d objects.Snapshot.get_by_id("},{"line_number":281,"context_line":"                    ctxt, backup.temp_snapshot_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_8c90f7ee","line":278,"in_reply_to":"3a50d1a3_7eee7b8c","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"}],"cinder/consistencygroup/api.py":[{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":479,"context_line":"    def _validate_remove_volumes(self, volumes, remove_volumes_list, group):"},{"line_number":480,"context_line":"        # Validate volumes in remove_volumes."},{"line_number":481,"context_line":"        remove_volumes_new \u003d \"\""},{"line_number":482,"context_line":"        for volume in volumes:"},{"line_number":483,"context_line":"            if volume[\u0027id\u0027] in remove_volumes_list:"},{"line_number":484,"context_line":"                if volume[\u0027status\u0027] not in VALID_REMOVE_VOL_FROM_CG_STATUS:"},{"line_number":485,"context_line":"                    msg \u003d (_(\"Cannot remove volume %(volume_id)s from \""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_d967a9b5","line":482,"updated":"2015-07-27 16:06:06.000000000","message":"This method is using only in line 441. So as a volumes we are passing VolumesObjs. So you can use object notification.","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":479,"context_line":"    def _validate_remove_volumes(self, volumes, remove_volumes_list, group):"},{"line_number":480,"context_line":"        # Validate volumes in remove_volumes."},{"line_number":481,"context_line":"        remove_volumes_new \u003d \"\""},{"line_number":482,"context_line":"        for volume in volumes:"},{"line_number":483,"context_line":"            if volume[\u0027id\u0027] in remove_volumes_list:"},{"line_number":484,"context_line":"                if volume[\u0027status\u0027] not in VALID_REMOVE_VOL_FROM_CG_STATUS:"},{"line_number":485,"context_line":"                    msg \u003d (_(\"Cannot remove volume %(volume_id)s from \""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_ac529333","line":482,"in_reply_to":"3a50d1a3_d967a9b5","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":510,"context_line":"    def _validate_add_volumes(self, context, volumes, add_volumes_list, group):"},{"line_number":511,"context_line":"        add_volumes_new \u003d \"\""},{"line_number":512,"context_line":"        for volume in volumes:"},{"line_number":513,"context_line":"            if volume[\u0027id\u0027] in add_volumes_list:"},{"line_number":514,"context_line":"                # Volume already in CG. Remove from add_volumes."},{"line_number":515,"context_line":"                add_volumes_list.remove(volume[\u0027id\u0027])"},{"line_number":516,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_d971e945","line":513,"updated":"2015-07-27 16:06:06.000000000","message":"Same here. Only in line 438.","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":510,"context_line":"    def _validate_add_volumes(self, context, volumes, add_volumes_list, group):"},{"line_number":511,"context_line":"        add_volumes_new \u003d \"\""},{"line_number":512,"context_line":"        for volume in volumes:"},{"line_number":513,"context_line":"            if volume[\u0027id\u0027] in add_volumes_list:"},{"line_number":514,"context_line":"                # Volume already in CG. Remove from add_volumes."},{"line_number":515,"context_line":"                add_volumes_list.remove(volume[\u0027id\u0027])"},{"line_number":516,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_2c3d23dd","line":513,"in_reply_to":"3a50d1a3_d971e945","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"}],"cinder/scheduler/manager.py":[{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                                     volume, msg, reservations):"},{"line_number":195,"context_line":"            if reservations:"},{"line_number":196,"context_line":"                QUOTAS.rollback(context, reservations)"},{"line_number":197,"context_line":"            if (volume.volume_attachment is None or"},{"line_number":198,"context_line":"               len(volume.volume_attachment) \u003d\u003d 0):"},{"line_number":199,"context_line":"                orig_status \u003d \u0027available\u0027"},{"line_number":200,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_597079dc","line":197,"updated":"2015-07-27 16:06:06.000000000","message":"I think that we can use here if not volume.volume_attachment:","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"}],"cinder/scheduler/rpcapi.py":[{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                               force_host_copy\u003dFalse, request_spec\u003dNone,"},{"line_number":91,"context_line":"                               filter_properties\u003dNone):"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.3\u0027)"},{"line_number":94,"context_line":"        request_spec_p \u003d jsonutils.to_primitive(request_spec)"},{"line_number":95,"context_line":"        return cctxt.cast(ctxt, \u0027migrate_volume_to_host\u0027,"},{"line_number":96,"context_line":"                          topic\u003dtopic,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_c4bfc75e","line":93,"updated":"2015-07-27 16:06:06.000000000","message":"you should change version to 1.9","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                               force_host_copy\u003dFalse, request_spec\u003dNone,"},{"line_number":91,"context_line":"                               filter_properties\u003dNone):"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.3\u0027)"},{"line_number":94,"context_line":"        request_spec_p \u003d jsonutils.to_primitive(request_spec)"},{"line_number":95,"context_line":"        return cctxt.cast(ctxt, \u0027migrate_volume_to_host\u0027,"},{"line_number":96,"context_line":"                          topic\u003dtopic,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_2c14434b","line":93,"in_reply_to":"3a50d1a3_c4bfc75e","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    def retype(self, ctxt, topic, volume,"},{"line_number":104,"context_line":"               request_spec\u003dNone, filter_properties\u003dNone):"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.4\u0027)"},{"line_number":107,"context_line":"        request_spec_p \u003d jsonutils.to_primitive(request_spec)"},{"line_number":108,"context_line":"        return cctxt.cast(ctxt, \u0027retype\u0027,"},{"line_number":109,"context_line":"                          topic\u003dtopic,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_442177b3","line":106,"updated":"2015-07-27 16:06:06.000000000","message":"ditto","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    def retype(self, ctxt, topic, volume,"},{"line_number":104,"context_line":"               request_spec\u003dNone, filter_properties\u003dNone):"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.4\u0027)"},{"line_number":107,"context_line":"        request_spec_p \u003d jsonutils.to_primitive(request_spec)"},{"line_number":108,"context_line":"        return cctxt.cast(ctxt, \u0027retype\u0027,"},{"line_number":109,"context_line":"                          topic\u003dtopic,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_cc0d9f3f","line":106,"in_reply_to":"3a50d1a3_442177b3","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def manage_existing(self, ctxt, topic, volume,"},{"line_number":115,"context_line":"                        request_spec\u003dNone, filter_properties\u003dNone):"},{"line_number":116,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.5\u0027)"},{"line_number":117,"context_line":"        request_spec_p \u003d jsonutils.to_primitive(request_spec)"},{"line_number":118,"context_line":"        return cctxt.cast(ctxt, \u0027manage_existing\u0027,"},{"line_number":119,"context_line":"                          topic\u003dtopic,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_64127364","line":116,"updated":"2015-07-27 16:06:06.000000000","message":"Ditto","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def manage_existing(self, ctxt, topic, volume,"},{"line_number":115,"context_line":"                        request_spec\u003dNone, filter_properties\u003dNone):"},{"line_number":116,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00271.5\u0027)"},{"line_number":117,"context_line":"        request_spec_p \u003d jsonutils.to_primitive(request_spec)"},{"line_number":118,"context_line":"        return cctxt.cast(ctxt, \u0027manage_existing\u0027,"},{"line_number":119,"context_line":"                          topic\u003dtopic,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_ec0adb25","line":116,"in_reply_to":"3a50d1a3_64127364","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"}],"cinder/tests/unit/api/contrib/test_backups.py":[{"author":{"_account_id":16973,"name":"Skyler Berg","email":"skylertheberg@gmail.com","username":"sberg"},"change_message_id":"8e276f5143ce78829d83e300f5012723d354deb3","unresolved":false,"context_lines":[{"line_number":1283,"context_line":""},{"line_number":1284,"context_line":"        self.assertEqual(res.status_int, 202)"},{"line_number":1285,"context_line":"        self.assertEqual(res_dict[\u0027restore\u0027][\u0027backup_id\u0027], backup_id)"},{"line_number":1286,"context_line":"        self.assertEqual(res_dict[\u0027restore\u0027][\u0027volume_id\u0027], volume.id)"},{"line_number":1287,"context_line":"        self.assertEqual(\u0027HostB\u0027, mock_restore_backup.call_args[0][1])"},{"line_number":1288,"context_line":"        # Manually check if restore_backup was called with appropriate backup."},{"line_number":1289,"context_line":"        self.assertEqual(backup_id, mock_restore_backup.call_args[0][2].id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_bbd595e5","line":1286,"updated":"2015-08-06 21:40:20.000000000","message":"Fix assertEqual argument order.","commit_id":"d69765b8c2c3c9a3265e7cfc0ae440c91342d154"}],"cinder/tests/unit/test_backup.py":[{"author":{"_account_id":16973,"name":"Skyler Berg","email":"skylertheberg@gmail.com","username":"sberg"},"change_message_id":"8e276f5143ce78829d83e300f5012723d354deb3","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        self.backup_mgr.init_host()"},{"line_number":216,"context_line":"        vol1.refresh()"},{"line_number":217,"context_line":"        vol2.refresh()"},{"line_number":218,"context_line":"        self.assertEqual(vol1.status, \u0027available\u0027)"},{"line_number":219,"context_line":"        self.assertEqual(vol2.status, \u0027error_restoring\u0027)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        backup1 \u003d db.backup_get(self.ctxt, backup1.id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_7b186dd3","line":218,"updated":"2015-08-06 21:40:20.000000000","message":"Fix assertEqual argument order.","commit_id":"d69765b8c2c3c9a3265e7cfc0ae440c91342d154"},{"author":{"_account_id":16973,"name":"Skyler Berg","email":"skylertheberg@gmail.com","username":"sberg"},"change_message_id":"8e276f5143ce78829d83e300f5012723d354deb3","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        vol1.refresh()"},{"line_number":217,"context_line":"        vol2.refresh()"},{"line_number":218,"context_line":"        self.assertEqual(vol1.status, \u0027available\u0027)"},{"line_number":219,"context_line":"        self.assertEqual(vol2.status, \u0027error_restoring\u0027)"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"        backup1 \u003d db.backup_get(self.ctxt, backup1.id)"},{"line_number":222,"context_line":"        self.assertEqual(backup1[\u0027status\u0027], \u0027error\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_3b0e658c","line":219,"updated":"2015-08-06 21:40:20.000000000","message":"Fix assertEqual argument order.","commit_id":"d69765b8c2c3c9a3265e7cfc0ae440c91342d154"},{"author":{"_account_id":16973,"name":"Skyler Berg","email":"skylertheberg@gmail.com","username":"sberg"},"change_message_id":"8e276f5143ce78829d83e300f5012723d354deb3","unresolved":false,"context_lines":[{"line_number":358,"context_line":"                          self.ctxt,"},{"line_number":359,"context_line":"                          backup,"},{"line_number":360,"context_line":"                          vol)"},{"line_number":361,"context_line":"        self.assertEqual(vol.status, \u0027error_restoring\u0027)"},{"line_number":362,"context_line":"        backup \u003d db.backup_get(self.ctxt, backup.id)"},{"line_number":363,"context_line":"        self.assertEqual(backup[\u0027status\u0027], \u0027available\u0027)"},{"line_number":364,"context_line":"        self.assertTrue(_mock_volume_restore.called)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_fb247d0d","line":361,"updated":"2015-08-06 21:40:20.000000000","message":"Fix assertEqual argument order.","commit_id":"d69765b8c2c3c9a3265e7cfc0ae440c91342d154"},{"author":{"_account_id":16973,"name":"Skyler Berg","email":"skylertheberg@gmail.com","username":"sberg"},"change_message_id":"8e276f5143ce78829d83e300f5012723d354deb3","unresolved":false,"context_lines":[{"line_number":381,"context_line":"                          self.ctxt,"},{"line_number":382,"context_line":"                          backup,"},{"line_number":383,"context_line":"                          vol)"},{"line_number":384,"context_line":"        self.assertEqual(vol.status, \u0027error\u0027)"},{"line_number":385,"context_line":"        backup \u003d db.backup_get(self.ctxt, backup.id)"},{"line_number":386,"context_line":"        self.assertEqual(backup[\u0027status\u0027], \u0027available\u0027)"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_bb1a75c4","line":384,"updated":"2015-08-06 21:40:20.000000000","message":"Fix assertEqual argument order.","commit_id":"d69765b8c2c3c9a3265e7cfc0ae440c91342d154"},{"author":{"_account_id":16973,"name":"Skyler Berg","email":"skylertheberg@gmail.com","username":"sberg"},"change_message_id":"8e276f5143ce78829d83e300f5012723d354deb3","unresolved":false,"context_lines":[{"line_number":395,"context_line":"                                              volume_id\u003dvol.id)"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        self.backup_mgr.restore_backup(self.ctxt, backup, vol)"},{"line_number":398,"context_line":"        self.assertEqual(vol.status, \u0027available\u0027)"},{"line_number":399,"context_line":"        backup \u003d db.backup_get(self.ctxt, backup.id)"},{"line_number":400,"context_line":"        self.assertEqual(backup[\u0027status\u0027], \u0027available\u0027)"},{"line_number":401,"context_line":"        self.assertTrue(_mock_volume_restore.called)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a4dcd0f_1b8289c8","line":398,"updated":"2015-08-06 21:40:20.000000000","message":"Fix assertEqual argument order.","commit_id":"d69765b8c2c3c9a3265e7cfc0ae440c91342d154"}],"cinder/volume/api.py":[{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    @wrap_check_policy"},{"line_number":537,"context_line":"    def unreserve_volume(self, context, volume):"},{"line_number":538,"context_line":"        if volume[\u0027status\u0027] \u003d\u003d \u0027attaching\u0027:"},{"line_number":539,"context_line":"            attaches \u003d self.db.volume_attachment_get_used_by_volume_id("},{"line_number":540,"context_line":"                context, volume[\u0027id\u0027])"},{"line_number":541,"context_line":"            if attaches:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_440f30e1","side":"PARENT","line":538,"updated":"2015-07-27 16:06:06.000000000","message":"volume.status","commit_id":"e364de98fc7f29b90213ef9f8479cde4562762c6"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    @wrap_check_policy"},{"line_number":537,"context_line":"    def unreserve_volume(self, context, volume):"},{"line_number":538,"context_line":"        if volume[\u0027status\u0027] \u003d\u003d \u0027attaching\u0027:"},{"line_number":539,"context_line":"            attaches \u003d self.db.volume_attachment_get_used_by_volume_id("},{"line_number":540,"context_line":"                context, volume[\u0027id\u0027])"},{"line_number":541,"context_line":"            if attaches:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_8c031710","side":"PARENT","line":538,"in_reply_to":"3a50d1a3_440f30e1","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"e364de98fc7f29b90213ef9f8479cde4562762c6"}],"cinder/volume/driver.py":[{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":854,"context_line":"            \u0027host\u0027: volume[\u0027host\u0027],"},{"line_number":855,"context_line":"            \u0027user_id\u0027: context.user_id,"},{"line_number":856,"context_line":"            \u0027project_id\u0027: context.project_id,"},{"line_number":857,"context_line":"            \u0027status\u0027: \u0027creating\u0027,"},{"line_number":858,"context_line":"        }"},{"line_number":859,"context_line":"        temp_vol_ref \u003d self.db.volume_create(context, temp_volume)"},{"line_number":860,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_3f6d4d04","line":857,"updated":"2015-07-27 16:06:06.000000000","message":"Can\u0027t we use here VolumeObj?","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":854,"context_line":"            \u0027host\u0027: volume[\u0027host\u0027],"},{"line_number":855,"context_line":"            \u0027user_id\u0027: context.user_id,"},{"line_number":856,"context_line":"            \u0027project_id\u0027: context.project_id,"},{"line_number":857,"context_line":"            \u0027status\u0027: \u0027creating\u0027,"},{"line_number":858,"context_line":"        }"},{"line_number":859,"context_line":"        temp_vol_ref \u003d self.db.volume_create(context, temp_volume)"},{"line_number":860,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_ef116d53","line":857,"in_reply_to":"3a50d1a3_3f6d4d04","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"179a4cf328abd1649014ccbe76faacbcb0e223da","unresolved":false,"context_lines":[{"line_number":862,"context_line":"            self.create_cloned_volume(temp_vol_ref, volume)"},{"line_number":863,"context_line":"        except Exception:"},{"line_number":864,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":865,"context_line":"                self.db.volume_destroy(context, temp_vol_ref.id)"},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"        self.db.volume_update(context, temp_vol_ref.id,"},{"line_number":868,"context_line":"                              {\u0027status\u0027: \u0027available\u0027})"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_046c21cf","line":865,"updated":"2015-07-30 13:20:36.000000000","message":"temp_vol_ref.destroy()","commit_id":"ca7527c5461dc2515da88ca179b793ae76d94836"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"179a4cf328abd1649014ccbe76faacbcb0e223da","unresolved":false,"context_lines":[{"line_number":864,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":865,"context_line":"                self.db.volume_destroy(context, temp_vol_ref.id)"},{"line_number":866,"context_line":""},{"line_number":867,"context_line":"        self.db.volume_update(context, temp_vol_ref.id,"},{"line_number":868,"context_line":"                              {\u0027status\u0027: \u0027available\u0027})"},{"line_number":869,"context_line":"        return temp_vol_ref"},{"line_number":870,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_247fdd67","line":867,"updated":"2015-07-30 13:20:36.000000000","message":"temp_vol_ref.status \u003d \u0027available\u0027\ntemp_vol_ref.save()","commit_id":"ca7527c5461dc2515da88ca179b793ae76d94836"}],"cinder/volume/flows/manager/create_volume.py":[{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        self.db \u003d db"},{"line_number":333,"context_line":"        self.event_suffix \u003d event_suffix"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"    def execute(self, context, volume_ref):"},{"line_number":336,"context_line":"        volume_id \u003d volume_ref.id"},{"line_number":337,"context_line":"        try:"},{"line_number":338,"context_line":"            volume_utils.notify_about_volume_usage(context, volume_ref,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_a498741c","line":335,"updated":"2015-07-27 16:06:06.000000000","message":"Unnecessary line","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":343,"context_line":"            # then we shouldn\u0027t error out the whole workflow since this is"},{"line_number":344,"context_line":"            # not always information that must be sent for volumes to operate"},{"line_number":345,"context_line":"            LOG.exception(_LE(\"Failed notifying about the volume\""},{"line_number":346,"context_line":"                              \" action %(event)s for volume %(volume_id)s\"),"},{"line_number":347,"context_line":"                          {\u0027event\u0027: self.event_suffix, \u0027volume_id\u0027: volume_id})"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_a4bf145f","line":346,"updated":"2015-07-27 16:06:06.000000000","message":"volume_ref.id","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":343,"context_line":"            # then we shouldn\u0027t error out the whole workflow since this is"},{"line_number":344,"context_line":"            # not always information that must be sent for volumes to operate"},{"line_number":345,"context_line":"            LOG.exception(_LE(\"Failed notifying about the volume\""},{"line_number":346,"context_line":"                              \" action %(event)s for volume %(volume_id)s\"),"},{"line_number":347,"context_line":"                          {\u0027event\u0027: self.event_suffix, \u0027volume_id\u0027: volume_id})"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_4f750196","line":346,"in_reply_to":"3a50d1a3_a4bf145f","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"179a4cf328abd1649014ccbe76faacbcb0e223da","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            # Don\u0027t let updating the state cause the rescheduling to fail."},{"line_number":116,"context_line":"            LOG.exception(_LE(\"Volume %s: update volume state failed.\"),"},{"line_number":117,"context_line":"                          volume.id)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    def _reschedule(self, context, cause, request_spec, filter_properties,"},{"line_number":120,"context_line":"                    volume):"},{"line_number":121,"context_line":"        \"\"\"Actions that happen during the rescheduling attempt occur here.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"3a50d1a3_ffb3be98","line":118,"updated":"2015-07-30 13:20:36.000000000","message":"I think that those two methods should be placed before method _pre_reschedule. It will be easier to review this code. :)","commit_id":"ca7527c5461dc2515da88ca179b793ae76d94836"}],"cinder/volume/flows/manager/manage_existing.py":[{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.driver \u003d driver"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def execute(self, context, volume_ref, manage_existing_ref):"},{"line_number":43,"context_line":"        volume_id \u003d volume_ref.id"},{"line_number":44,"context_line":"        if not self.driver.initialized:"},{"line_number":45,"context_line":"            driver_name \u003d self.driver.__class__.__name__"},{"line_number":46,"context_line":"            LOG.error(_LE(\"Unable to manage existing volume. \""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_1f3651e7","line":43,"updated":"2015-07-27 16:06:06.000000000","message":"Unnecessary line.","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            driver_name \u003d self.driver.__class__.__name__"},{"line_number":46,"context_line":"            LOG.error(_LE(\"Unable to manage existing volume. \""},{"line_number":47,"context_line":"                          \"Volume driver %s not initialized.\") % driver_name)"},{"line_number":48,"context_line":"            flow_common.error_out_volume(context, self.db, volume_id,"},{"line_number":49,"context_line":"                                         reason\u003d_(\"Volume driver %s \""},{"line_number":50,"context_line":"                                                  \"not initialized.\") %"},{"line_number":51,"context_line":"                                         driver_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_7f4d1571","line":48,"updated":"2015-07-27 16:06:06.000000000","message":"volume_ref.id","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            driver_name \u003d self.driver.__class__.__name__"},{"line_number":46,"context_line":"            LOG.error(_LE(\"Unable to manage existing volume. \""},{"line_number":47,"context_line":"                          \"Volume driver %s not initialized.\") % driver_name)"},{"line_number":48,"context_line":"            flow_common.error_out_volume(context, self.db, volume_id,"},{"line_number":49,"context_line":"                                         reason\u003d_(\"Volume driver %s \""},{"line_number":50,"context_line":"                                                  \"not initialized.\") %"},{"line_number":51,"context_line":"                                         driver_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_ef940d8c","line":48,"in_reply_to":"3a50d1a3_7f4d1571","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                \u0027volume_properties\u0027: volume_ref,"},{"line_number":60,"context_line":"                \u0027volume_spec\u0027: {\u0027status\u0027: volume_ref[\u0027status\u0027],"},{"line_number":61,"context_line":"                                \u0027volume_name\u0027: volume_ref[\u0027name\u0027],"},{"line_number":62,"context_line":"                                \u0027volume_id\u0027: volume_ref.id}}"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class ManageExistingTask(flow_utils.CinderTask):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_ffafe5e0","line":62,"updated":"2015-07-27 16:06:06.000000000","message":"You forgot about other properties.","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                \u0027volume_properties\u0027: volume_ref,"},{"line_number":60,"context_line":"                \u0027volume_spec\u0027: {\u0027status\u0027: volume_ref[\u0027status\u0027],"},{"line_number":61,"context_line":"                                \u0027volume_name\u0027: volume_ref[\u0027name\u0027],"},{"line_number":62,"context_line":"                                \u0027volume_id\u0027: volume_ref.id}}"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"class ManageExistingTask(flow_utils.CinderTask):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_8fbb090f","line":62,"in_reply_to":"3a50d1a3_ffafe5e0","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"}],"cinder/volume/rpcapi.py":[{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def extend_volume(self, ctxt, volume, new_size, reservations):"},{"line_number":215,"context_line":"        new_host \u003d utils.extract_host(volume.host)"},{"line_number":216,"context_line":"        cctxt \u003d self.client.prepare(server\u003dnew_host, version\u003d\u00271.14\u0027)"},{"line_number":217,"context_line":"        cctxt.cast(ctxt, \u0027extend_volume\u0027, volume\u003dvolume,"},{"line_number":218,"context_line":"                   new_size\u003dnew_size, reservations\u003dreservations)"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_7fb675dd","line":216,"updated":"2015-07-27 16:06:06.000000000","message":"Update version.","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"a3bee2d4f77a125531c77699f52b56fb21d517bc","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"    def extend_volume(self, ctxt, volume, new_size, reservations):"},{"line_number":215,"context_line":"        new_host \u003d utils.extract_host(volume.host)"},{"line_number":216,"context_line":"        cctxt \u003d self.client.prepare(server\u003dnew_host, version\u003d\u00271.14\u0027)"},{"line_number":217,"context_line":"        cctxt.cast(ctxt, \u0027extend_volume\u0027, volume\u003dvolume,"},{"line_number":218,"context_line":"                   new_size\u003dnew_size, reservations\u003dreservations)"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_2f43d514","line":216,"in_reply_to":"3a50d1a3_7fb675dd","updated":"2015-07-27 18:55:55.000000000","message":"Done","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def migrate_volume(self, ctxt, volume, dest_host, force_host_copy):"},{"line_number":221,"context_line":"        new_host \u003d utils.extract_host(volume[\u0027host\u0027])"},{"line_number":222,"context_line":"        cctxt \u003d self.client.prepare(server\u003dnew_host, version\u003d\u00271.8\u0027)"},{"line_number":223,"context_line":"        host_p \u003d {\u0027host\u0027: dest_host.host,"},{"line_number":224,"context_line":"                  \u0027capabilities\u0027: dest_host.capabilities}"},{"line_number":225,"context_line":"        cctxt.cast(ctxt, \u0027migrate_volume\u0027, volume\u003dvolume,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_3fe78de5","line":222,"updated":"2015-07-27 16:06:06.000000000","message":"ditto","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":236,"context_line":"    def retype(self, ctxt, volume, new_type_id, dest_host,"},{"line_number":237,"context_line":"               migration_policy\u003d\u0027never\u0027, reservations\u003dNone):"},{"line_number":238,"context_line":"        new_host \u003d utils.extract_host(volume[\u0027host\u0027])"},{"line_number":239,"context_line":"        cctxt \u003d self.client.prepare(server\u003dnew_host, version\u003d\u00271.12\u0027)"},{"line_number":240,"context_line":"        host_p \u003d {\u0027host\u0027: dest_host.host,"},{"line_number":241,"context_line":"                  \u0027capabilities\u0027: dest_host.capabilities}"},{"line_number":242,"context_line":"        cctxt.cast(ctxt, \u0027retype\u0027, volume\u003dvolume,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_5fea99ad","line":239,"updated":"2015-07-27 16:06:06.000000000","message":"ditto","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"},{"author":{"_account_id":16814,"name":"Daniel Tadrzak","email":"daniel.tadrzak@intel.com","username":"dtadrzak"},"change_message_id":"829d68cf0a31f7010866a80632d3deae239c4d45","unresolved":false,"context_lines":[{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def manage_existing(self, ctxt, volume, ref):"},{"line_number":248,"context_line":"        new_host \u003d utils.extract_host(volume.host)"},{"line_number":249,"context_line":"        cctxt \u003d self.client.prepare(server\u003dnew_host, version\u003d\u00271.15\u0027)"},{"line_number":250,"context_line":"        cctxt.cast(ctxt, \u0027manage_existing\u0027, volume\u003dvolume, ref\u003dref)"},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def promote_replica(self, ctxt, volume):"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a50d1a3_bfdb9d1a","line":249,"updated":"2015-07-27 16:06:06.000000000","message":"ditto","commit_id":"2fbb8dd864e18ab029a813bfc1126b852dffd049"}]}
