public void NotifyVmAudit(List <User> addresses, Vm vm, AuditActionTypes.EnumAuditActionTypes auditType) { string aftermath = ""; switch (auditType) { case AuditActionTypes.EnumAuditActionTypes.Archive: aftermath = "Если не продлить машину, она будет заархивирована"; break; case AuditActionTypes.EnumAuditActionTypes.Shutdown: aftermath = "Если не продлить машину, она будет выключена"; break; } var messageText = BuildMessageText("./Services/Mailer/Templates/VmAudit.html", new[] { vm.Name, aftermath } ); SendMailAsync(addresses, $"Аудит виртуальной машины {vm.Name}", messageText); }
public async Task RunAuditAsync() { List <Adapter> adapters = await _context.Adapters.Where(x => x.IsOK).Include(x => x.Provider).Include(y => y.Credentials).ToListAsync(); List <Shared.Common.Audit> audits = await _context.Audits.ToListAsync(); if (audits == null) { return; } foreach (Adapter adapter in adapters) { switch (adapter.Provider.Name.ToLower()) { case "ovirt": ServicesResponse vmsResponse = await EasyAdmin.Services.Ovirt.VmService.GetVMs(adapter); if (!vmsResponse.isSuccess) { break; } List <Shared.Ovirt.Vm> ovirtVms = ((Shared.Ovirt.Vms)vmsResponse.resultObject).Vm; List <Shared.Ovirt.Cluster> clusters = ((Shared.Ovirt.Clusters)(await EasyAdmin.Services.Ovirt.ClusterService.GetClusters(adapter)).resultObject).Cluster; List <Vm> commonVMs = ovirtVms.ConvertAll(x => (Vm)x); foreach (Vm vm in commonVMs) { vm.Cluster = clusters.SingleOrDefault(x => x.Id == vm.Cluster.Id); var responsibles = new List <string>() { vm.AdminId, vm.OwnerId, vm.ManagerId }; responsibles = responsibles.Distinct().ToList(); List <User> users = await _authService.GetUsersAsync(responsibles); if (vm.Deadline != null && DateTime.Parse(vm.Deadline).AddDays(1) < DateTime.Now) { AuditActionTypes.EnumAuditActionTypes auditType = audits.SingleOrDefault(x => x.ClusterId == vm.Cluster?.Id && x.DatacenterId == vm.Cluster?.Datacenter?.Id).AuditActionType; switch (auditType) { case AuditActionTypes.EnumAuditActionTypes.Archive: await EasyAdmin.Services.Ovirt.VmService.ShutdownVm(adapter, vm.Id); break; case AuditActionTypes.EnumAuditActionTypes.Shutdown: await EasyAdmin.Services.Ovirt.VmService.ShutdownVm(adapter, vm.Id); break; case AuditActionTypes.EnumAuditActionTypes.Notify: _mailer.NotifyVmAudit(users, vm, AuditActionTypes.EnumAuditActionTypes.Notify); Console.WriteLine($"{vm.Name} audit date passed!"); break; } } } break; } } }