private async Task SendBackupProgressAsync(HttpPostBackupProgress progress) { var hyperV = await FindHypervisorByName(progress.Hypervisor); if (hyperV == null) { var vms = progress.BackupStates.Select(s => s.VmName).ToList(); await UpdateHypervisorAsync(progress.Hypervisor, vms, null); hyperV = await FindHypervisorByName(progress.Hypervisor); } foreach (var state in progress.BackupStates) { var vm = hyperV.VirtualMachines.FirstOrDefault(v => v.Name.ToLower() == state.VmName.ToLower()); if (vm == null) { _logger.LogError("Could not find virtual machine with name \"{vm}\" for hypervisor \"{hv}\"", state.VmName, hyperV.Name); return; } WriteCurrentStateToDB(vm, state); if (state.Status != BackupJobStatus.Idle) { await WriteHistoryAsync(vm, state); } } await _context.SaveChangesAsync(); }
private void ReportToCentralServer() { var states = new List <BackupState>(); foreach (var vm in monitoredVMs) { int percent = 0; switch (vm.Status) { case BackupJobStatus.Exporting: percent = vm.ExportPercentComplete; break; case BackupJobStatus.Archiving: percent = vm.ArchivePercentComplete; break; } var state = new BackupState() { VmName = vm.Name, BackupStartDate = vm.BackupStartDate, BackupEndDate = vm.BackupEndDate, Status = vm.Status, PercentComplete = percent, ExportedToFolder = vm.ExportPath, ArchivedToFile = vm.ArchivePath, LastBackup = vm.LastBackup }; states.Add(state); } var progress = new HttpPostBackupProgress(); progress.Hypervisor = Util.GetCurrentServerFQDN(); progress.BackupStates = states; var result = _centralServer.SendBackupProgress(progress).Result; if (!result.Success) { _logger.LogError("Error occurred while send backup progress to central server. Error was: {err}", result.Message); } }
public async Task <ApiResult> SendBackupProgress([FromBody] HttpPostBackupProgress progress) { try { await SendBackupProgressAsync(progress); } catch (Exception e) { _logger.LogError(e.ToString()); return(new ApiResult() { Success = false, Message = e.Message }); } return(new ApiResult() { Success = true }); }
public async Task <ApiResult> SendBackupProgress(HttpPostBackupProgress progress) { return(await DoPostRequest(UrlSendBackupProgress, progress)); }