public DemoService( IOptionsSnapshot <LabSettings> settings, LabDbContext dbContext) { _settings = settings.Value; _dbContext = dbContext; }
public static async Task <IEnumerable <LabSettings> > UpdateLab(LabSettings lab, string instructor) { lab.State = LabState.QueuedToUpdate; await DocDBRepo.DB <LabSettings> .UpdateItemAsync(lab); return(await GetLabs(instructor)); }
public static async Task UpdateLabAssignments(LabSettings lab) { var currLab = await GetDomAssignments(lab.Id); var currCount = currLab.Count(); var newCount = lab.AttendeeCount; if (newCount > currCount) { //adding assignments await AddLabAssignments(lab, currCount); } else if (newCount < currCount) { //removing assignments await RemoveLabAssignments(lab, lab.AttendeeCount); } else { //sanity check - no change (shouldn't be here) //update lab lab.State = LabState.Ready; await DocDBRepo.DB <LabSettings> .UpdateItemAsync(lab); } }
public async Task <IEnumerable <LabDTO> > UpdateLab(LabSettings lab) { var res = await LabRepo.UpdateLab(lab, User.Identity.Name); SetQueue(lab.Id); return(MapLabs(res)); }
/// <summary> /// called from the web job, removes assignments then deletes the lab /// </summary> /// <returns></returns> public static async Task RemoveLabAssignments(LabSettings lab, int endCount = 0) { var assignments = await GetDomAssignments(lab.Id); var counter = assignments.Count(); try { var domGroup = (await DocDBRepo.DB <DomainResourceGroup> .GetItemsAsync(g => g.AzureSubscriptionId == lab.AzureSubscriptionId && g.DnsZoneRG == lab.DnsZoneRG)).SingleOrDefault(); using (var dns = new DnsAdmin()) { await dns.InitAsync(); try { dns.SetClient(domGroup); } catch (Exception ex) { //we may have lost our auth await Logging.WriteDebugInfoToErrorLog(string.Format("Error creating DNS client while deleting lab {0} - continuing.", lab.LabName), ex); } foreach (var item in assignments) { if (counter == endCount) { return; } try { await dns.RemoveChildZone(item.ParentZone, item.TeamName, item.DomainName); } catch (Exception ex) { //we may have lost our auth await Logging.WriteDebugInfoToErrorLog(string.Format("Error deleting child zone {0} - continuing.", item.DomainName), ex); } await DocDBRepo.DB <DomAssignment> .DeleteItemAsync(item); counter--; } } //update lab lab.State = LabState.Ready; await DocDBRepo.DB <LabSettings> .UpdateItemAsync(lab); } catch (Exception ex) { await Logging.WriteDebugInfoToErrorLog(string.Format("Unable to remove domain assignments for labid {0}", lab.Id), ex); throw ex; } }
public static async Task AddLabAssignments(LabSettings lab, int counter = 0) { var domGroup = (await DocDBRepo.DB <DomainResourceGroup> .GetItemsAsync(g => g.AzureSubscriptionId == lab.AzureSubscriptionId && g.DnsZoneRG == lab.DnsZoneRG)).SingleOrDefault(); var domains = domGroup.DomainList; string auth = null; using (var dns = new DnsAdmin()) { await dns.InitAsync(); dns.SetClient(domGroup); var itemsPerDomain = (lab.AttendeeCount / domains.Count()) + 1; foreach (var dom in domains) { if (counter == lab.AttendeeCount) { continue; } for (var x = 0; x < itemsPerDomain; x++) { if (counter == lab.AttendeeCount) { continue; } //create [itemsPerDomain] teams/child domains per parent domain name var team = string.Format("{0}{1}", lab.LabName, (counter + 1)); auth = DomAssignment.GenAuthCode(team); var newTeamItem = new DomAssignment { ParentZone = dom, TeamName = team, DomainName = string.Format("{0}.{1}", team, dom), TeamAuth = auth, LabCode = lab.LabCode, LabSettingsId = lab.Id }; await DocDBRepo.DB <DomAssignment> .CreateItemAsync(newTeamItem); await dns.CreateNewChildZone(newTeamItem.ParentZone, newTeamItem.TeamName, newTeamItem.DomainName); counter++; } } } //update lab lab.State = LabState.Ready; await DocDBRepo.DB <LabSettings> .UpdateItemAsync(lab); }
public static async Task <LabSettings> SetLabSettingsAsync(LabSettings item) { try { var lab = await DocDBRepo.DB <LabSettings> .CreateItemAsync(item); return(lab); } catch (Exception) { throw; } }
private void Lab_Click(object sender, EventArgs e) { if (LabBox.Enabled) { var ls = new LabSettings((double)rp_x.Value, (double)rp_y.Value, (double)gp_x.Value, (double)gp_y.Value, (double)bp_x.Value, (double)bp_y.Value, (double)wp_x.Value, (double)wp_y.Value, (double)gamma.Value, "sRGB", "D65"); var cm = new Lab(InitBitmap, ls); var imgs = cm.Transform(); Image1.Image = imgs.Item1; Image2.Image = imgs.Item2; Image3.Image = imgs.Item3; LabBox.Enabled = false; } else { LabBox.Enabled = true; } }
public static async Task <IEnumerable <LabSettings> > AddNewLab(LabSettings lab, string user) { try { lab.LabCode = LabSettings.GenLabCode(); lab.CreateDate = DateTime.UtcNow; lab.State = LabState.Queued; //setting this in AdminController:Index var arr = lab.DnsZoneRG.Split(':'); lab.AzureSubscriptionId = arr[0]; lab.DnsZoneRG = arr[1]; var group = (await DocDBRepo.DB <DomainResourceGroup> .GetItemsAsync(g => g.DnsZoneRG == lab.DnsZoneRG)).SingleOrDefault(); lab.AzureSubscriptionId = group.AzureSubscriptionId; LabSettings newLab = await SetLabSettingsAsync(lab); return(await GetLabs(user)); } catch (Exception) { throw; } }
public Lab(Bitmap InitBitmap, LabSettings ls) : base(InitBitmap) { this.ls = ls; }
public KeyVaultController(IDemoService demoService, IOptionsSnapshot <LabSettings> labSettings) { _demoService = demoService; _settings = labSettings.Value; }
public static async Task <IEnumerable <LabSettings> > ResetLabCode(LabSettings lab, string instructor) { lab.LabCode = LabSettings.GenLabCode(); return(await UpdateLab(lab, instructor)); }
/// <summary> /// Called from web job after assignments removed, deletes lab /// </summary> /// <param name="lab"></param> /// <returns></returns> public static async Task DeleteLab(LabSettings lab) { //all zones and teams deleted, remove lab await DocDBRepo.DB <LabSettings> .DeleteItemAsync(lab); }
public async Task <IEnumerable <LabSettings> > ResetLabCode(LabSettings lab) { var res = await LabRepo.ResetLabCode(lab, User.Identity.Name); return(res); }