コード例 #1
0
        public static async Task <TeamDTO> ResetTeamCode(TeamDTO data)
        {
            var newCode = DomAssignment.GenAuthCode(data.TeamAssignment.TeamName);
            var res     = await GetDomAssignment(data.Lab.LabCode, data.TeamAssignment.TeamAuth);

            res.TeamAssignment.TeamAuth = newCode;
            res.TeamAssignment          = await UpdateTeamAssignment(res.TeamAssignment);

            return(res);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        public static async Task <DomAssignment> UpdateTeamAssignment(DomAssignment teamAssignment)
        {
            var res = await DocDBRepo.DB <DomAssignment> .UpdateItemAsync(teamAssignment);

            return(res);
        }