예제 #1
0
        public async Task Sync()
        {
            List <Vm> vms = new List <Vm>();

            Microsoft.EntityFrameworkCore.Query.IIncludableQueryable <Adapter, Credentials> adapters = _context.Adapters.Where(x => x.IsOK).Include(x => x.Provider).Include(a => a.Credentials);
            foreach (Adapter adapter in adapters)
            {
                if (!adapter.IsOK)
                {
                    break;
                }
                switch (adapter.Provider.Name.ToLower())
                {
                case "ovirt":
                    ServicesResponse servicesResponse = await VmService.GetFullVms(adapter);

                    if (!servicesResponse.isSuccess)
                    {
                        break;
                    }
                    List <Vm> commonVMs = (List <Vm>)servicesResponse.resultObject;

                    vms.AddRange(commonVMs);
                    break;
                }
            }
            var oldVms = await _context.Vms.ToListAsync();

            _context.Vms.RemoveRange(oldVms);

            vms.ConvertAll(x => x.LastTimeUpdated = DateTime.Now);
            _context.Vms.AddRange(vms);
            //foreach (var vm in vms)
            //{
            //    var entity = _context.Vms.Find(vm.Id);
            //    if (entity == null)
            //    {
            //        _context.Vms.Add(vm);
            //    }
            //    else
            //    {
            //        _context.Entry(entity).CurrentValues.SetValues(vm);
            //    }
            //}

            await _context.SaveChangesAsync();
        }