public async Task DeleteMissingProperties(DefaultContext context) { var labVmIds = LabVms.Select(t => t.Id).ToList(); var vmsToRemove = await context.LabVms .Where(t => t.LabId == Id && !labVmIds.Contains(t.Id)).ToListAsync(); context.LabVms.RemoveRange(vmsToRemove); var interfaceIds = LabVms.SelectMany(t => t.TemplateInterfaces).Select(i => i.Id).ToList(); var interfacesToRemove = await context.VmInterfaceTemplates .Where(t => labVmIds.Contains(t.LabVmId) && !interfaceIds.Contains(t.Id)).ToListAsync(); context.VmInterfaceTemplates.RemoveRange(interfacesToRemove); var bridgeTemplateIds = BridgeTemplates.Select(t => t.Id).ToList(); var bridgeTemplatesToRemove = await context.BridgeTemplates .Where(t => t.LabId == Id && !bridgeTemplateIds.Contains(t.Id)).ToListAsync(); context.BridgeTemplates.RemoveRange(bridgeTemplatesToRemove); }
/** * Requires LabVms.VmTemplates.HypervisorNode.Hypervisor is all included */ public Hypervisor GetFirstAvailableHypervisor() { return(LabVms.SelectMany(vm => vm.VmTemplate.HypervisorVmTemplates).Select(t => t.HypervisorNode.Hypervisor) .First()); }