def save_note(self): request = self.request ser = BackupSerializer(request, self.bkp, data=self.data, partial=True) if ser.is_valid(): ser.object.save() return SuccessTaskResponse(request, ser.data) else: return FailureTaskResponse(request, ser.errors)
def post(self): bkp, vm, define = self.bkp, self.vm, self.define bkp.disk_id = self.real_disk_id bkp.dc = vm.dc bkp.vm = vm bkp.json = vm.json_active bkp.define = define bkp.node = define.node bkp.zpool = define.zpool bkp.type = define.type bkp.status = bkp.PENDING ser = BackupSerializer(self.request, bkp, data=self.data) if not ser.is_valid(): return FailureTaskResponse(self.request, ser.errors, vm=vm) if define.fsfreeze: # Store in self.fsfreeze, because it is displayed in response/tasklog detail qga_socket = vm.qga_socket_path if qga_socket: bkp.fsfreeze = True if vm.status == vm.STOPPED: qga_socket = None else: qga_socket = None self._check_bkp_dc_size_limit() # Issue #chili-848 self._check_vm(vm) self.obj = vm self._check_bkp_node() bkp.save() self.msg = LOG_BKP_CREATE if self.execute(get_backup_cmd('create', bkp, define=define, zfs_filesystem=self.zfs_filesystem, fsfreeze=qga_socket), lock=self.LOCK % (vm.uuid, bkp.disk_id), stdin=bkp.json.dump()): return self.task_response bkp.delete() return self.error_response
def get(self): request, data = self.request, self.data bkp_filter = filter_disk_id(None, self.bkp_filter, data) # vm_disk_id instead of disk_id bkp_filter = filter_backup_define(bkp_filter, data) # TODO: check indexes bkps = Backup.objects.select_related( 'node', 'define', 'vm').filter(**bkp_filter).order_by(*self.order_by) if self.full or self.extended: if bkps: res = BackupSerializer(request, bkps, node_view=self.node, many=True).data else: res = [] else: res = list(bkps.values_list('name', flat=True)) return SuccessTaskResponse(request, res)
def get(self): return SuccessTaskResponse( self.request, BackupSerializer(self.request, self.bkp).data)