Beispiel #1
0
        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);
        }
Beispiel #2
0
        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;
                }
            }
        }