コード例 #1
0
        /// <summary>
        /// init objects for MachineStore
        /// </summary>
        static void InitMachineObjects()
        {
            #region machine objects
            string[] enum_vals = Enum.GetNames(typeof(EnvironmentConfig.Machine));
            //first loop only initialize physical machines
            foreach (string s in enum_vals)
            {
                DsMachine machine             = null;
                EnvironmentConfig.Machine val = (EnvironmentConfig.Machine)Enum.Parse(typeof(EnvironmentConfig.Machine), s);

                switch (val)
                {
                case Machine.None:
                    continue;

                case Machine.Endpoint:
                    //initialize client
                    machine             = new ClientMachine();
                    machine.Domain      = DomainStore[DomainEnum.PrimaryDomain];
                    machine.NetbiosName = ADCommonServerAdapter.Instance(testSite).ENDPOINTNetbiosName;
                    machine.DnsHostName = machine.NetbiosName + "." + machine.Domain.DNSName;
                    break;

                case Machine.MainDC:
                    if (MachineStore.ContainsKey(Machine.WritableDC1))
                    {
                        machine = MachineStore[Machine.WritableDC1];
                    }
                    else
                    {
                        machine = ldapAd.GetDCInfo(ADCommonServerAdapter.Instance(testSite).PDCNetbiosName + "." + ADCommonServerAdapter.Instance(testSite).PrimaryDomainDnsName, UserStore[User.ParentDomainAdmin]);
                        if (testDS)
                        {
                            //do this in AD LDS will assign an AD LDS domain
                            machine.Domain = DomainStore[DomainEnum.PrimaryDomain];
                        }
                    }
                    break;

                case Machine.RODC:
                    if (string.IsNullOrWhiteSpace(ADCommonServerAdapter.Instance(testSite).RODCNetbiosName))
                    {
                        continue;
                    }
                    try
                    {
                        machine = ldapAd.GetDCInfo(ADCommonServerAdapter.Instance(testSite).RODCNetbiosName + "." + ADCommonServerAdapter.Instance(testSite).PrimaryDomainDnsName, UserStore[User.ParentDomainAdmin]);
                        if (testDS)
                        {
                            //do this in AD LDS will assign an AD LDS domain
                            machine.Domain = DomainStore[DomainEnum.PrimaryDomain];
                        }
                        ((AddsServer)machine).IsRODC = true;
                    }
                    catch (System.DirectoryServices.Protocols.LdapException)
                    {
                        continue;
                    }
                    break;

                case Machine.WritableDC1:
                    if (MachineStore.ContainsKey(Machine.MainDC))
                    {
                        machine = MachineStore[Machine.MainDC];
                    }
                    else
                    {
                        machine = ldapAd.GetDCInfo(ADCommonServerAdapter.Instance(testSite).PDCNetbiosName + "." + ADCommonServerAdapter.Instance(testSite).PrimaryDomainDnsName, UserStore[User.ParentDomainAdmin]);
                        if (testDS)
                        {
                            //do this in AD LDS will assign an AD LDS domain
                            machine.Domain = DomainStore[DomainEnum.PrimaryDomain];
                        }
                    }
                    break;

                case Machine.WritableDC2:
                    if (string.IsNullOrWhiteSpace(ADCommonServerAdapter.Instance(testSite).SDCNetbiosName))
                    {
                        continue;
                    }
                    try
                    {
                        machine = ldapAd.GetDCInfo(ADCommonServerAdapter.Instance(testSite).SDCNetbiosName + "." + ADCommonServerAdapter.Instance(testSite).PrimaryDomainDnsName, UserStore[User.ParentDomainAdmin]);
                        if (testDS)
                        {
                            //do this in AD LDS will assign an AD LDS domain
                            machine.Domain = DomainStore[DomainEnum.PrimaryDomain];
                        }
                    }
                    catch (System.DirectoryServices.Protocols.LdapException)
                    {
                        continue;
                    }
                    break;

                default:
                    //by default, it should be a DC

                    if (testDS)
                    {
                        if (string.IsNullOrEmpty(testSite.Properties[s + ".NetbiosName"]))
                        {
                            continue;
                        }

                        machine = ldapAd.GetDCInfo(testSite.Properties[s + ".NetbiosName"] + "." + GetDomainFromMachineType(val).DNSName, GetDomainFromMachineType(val).Admin);
                    }
                    else
                    {
                        if (string.IsNullOrEmpty(testSite.Properties[s + ".LDSPort"]))
                        {
                            continue;
                        }
                        machine = ldapAd.GetDCInfo(
                            ADCommonServerAdapter.Instance(testSite).PDCNetbiosName
                            + "."
                            + ADCommonServerAdapter.Instance(testSite).PrimaryDomainDnsName
                            + ":"
                            + testSite.Properties[s + ".LDSPort"],
                            UserStore[User.ParentDomainAdmin]);
                        ((AdldsServer)machine).DsaNetworkAddress =
                            ADCommonServerAdapter.Instance(testSite).PDCNetbiosName
                            + "."
                            + ADCommonServerAdapter.Instance(testSite).PrimaryDomainDnsName
                            + ":"
                            + ((AdldsServer)machine).DsaNetworkAddress;
                    }
                    ((DsServer)machine).IsWindows = bool.Parse(testSite.Properties[s + ".IsWindows"]);

                    if (machine != null)
                    {
                        switch (val)
                        {
                        case Machine.CDC:
                            machine.Domain = DomainStore[DomainEnum.ChildDomain];
                            break;

                        case Machine.ExternalDC:
                            machine.Domain = DomainStore[DomainEnum.ExternalDomain];
                            break;

                        default:
                            machine.Domain = DomainStore[DomainEnum.PrimaryDomain];
                            break;
                        }
                    }
                    break;
                }
                if (machine != null)
                {
                    MachineStore.Add(val, machine);

                    if (val != Machine.MainDC)
                    {
                        PhysicalMachineStore.Add(val, machine);
                    }
                }
            }

            //second loop initialize roles
            foreach (string s in enum_vals)
            {
                EnvironmentConfig.Machine val = (EnvironmentConfig.Machine)Enum.Parse(typeof(EnvironmentConfig.Machine), s);

                switch (val)
                {
                case Machine.DC_With_DomainNamingMasterRole:
                    break;

                case Machine.DC_With_RidAllocationMasterRole:
                    break;

                case Machine.GCServer:
                    break;

                case Machine.PDC:
                    break;

                default:
                    continue;
                }
                MachineStore.Add(val, MachineStore[Machine.WritableDC1]);
            }

            #endregion
        }