public TADWrapperObject FindServerByFqdnWithException(string fqdn, out Exception ex) { ex = null; string nodeNameFromFqdn = MachineName.GetNodeNameFromFqdn(fqdn); return(SimpleAdObjectLookup <TADWrapperObject> .FindAdObjectByServerNameStatic(this.AdSession, nodeNameFromFqdn, out ex)); }
public static List <string> GetServersWithServerRoleInSite(string serverName, ServerRole serverRole) { IADToplogyConfigurationSession iadtoplogyConfigurationSession = ADSessionFactory.CreateIgnoreInvalidRootOrgSession(true); IADServer iadserver = null; if (!string.IsNullOrEmpty(serverName)) { if (!SharedHelper.StringIEquals(serverName, "localhost")) { goto IL_2F; } } try { iadserver = iadtoplogyConfigurationSession.FindServerByName(Environment.MachineName); goto IL_5A; } catch (LocalServerNotFoundException) { goto IL_5A; } IL_2F: string nodeNameFromFqdn = MachineName.GetNodeNameFromFqdn(serverName); iadserver = iadtoplogyConfigurationSession.FindServerByName(nodeNameFromFqdn); string arg = "FindServerByName"; if (iadserver == null) { ExTraceGlobals.ReplayConfigurationTracer.TraceDebug <string, string>(0L, "GetServersWithServerRoleInSite: {0} didn't find any server for {1}", arg, serverName); } IL_5A: return(ReplayConfiguration.GetServersWithServerRoleInSiteByServer(iadserver, serverRole)); }
internal static NetworkPath InternalChooseDagNetworkPath(string targetName, string networkName, NetworkPath.ConnectionPurpose purpose) { string nodeNameFromFqdn = MachineName.GetNodeNameFromFqdn(targetName); NetworkManager manager = NetworkManager.GetManager(); NetworkPath networkPath = null; DagNetConfig dagNetConfig = null; manager.TryWaitForInitialization(); if (manager.m_netMap != null) { networkPath = manager.m_netMap.ChoosePath(nodeNameFromFqdn, networkName); } else { DagNetRoute dagNetRoute = null; DagNetRoute[] array = DagNetChooser.ProposeRoutes(targetName, out dagNetConfig); if (networkName != null) { foreach (DagNetRoute dagNetRoute2 in array) { if (StringUtil.IsEqualIgnoreCase(dagNetRoute2.NetworkName, networkName)) { dagNetRoute = dagNetRoute2; break; } } } else if (array != null && array.Length > 0) { dagNetRoute = array[0]; } if (dagNetRoute != null) { networkPath = new NetworkPath(targetName, dagNetRoute.TargetIPAddr, dagNetRoute.TargetPort, dagNetRoute.SourceIPAddr); networkPath.NetworkName = dagNetRoute.NetworkName; networkPath.CrossSubnet = dagNetRoute.IsCrossSubnet; } } if (networkPath == null) { networkPath = NetworkManager.BuildDnsNetworkPath(targetName, NetworkManager.GetReplicationPort()); } networkPath.Purpose = purpose; if (dagNetConfig == null) { dagNetConfig = DagNetEnvironment.FetchNetConfig(); } networkPath.ApplyNetworkPolicy(dagNetConfig); return networkPath; }
public TADWrapperObject FindServerByFqdnWithException(string fqdn, out Exception exception) { ExAssert.RetailAssert(typeof(TADWrapperObject) == typeof(IADServer), "This function should only be called with Server objects!"); if (typeof(TADWrapperObject) != typeof(IADServer)) { throw new NotImplementedException("This only works for Server objects."); } exception = null; Exception ex = null; AdObjectLookupFlags flags = AdObjectLookupFlags.None; string shortName = MachineName.GetNodeNameFromFqdn(fqdn); TADWrapperObject result = this.LookupOrFindAdObject(shortName, () => SimpleAdObjectLookup <TADWrapperObject> .FindAdObjectByServerNameStatic(this.AdSession, shortName, out ex), flags); exception = ex; return(result); }
internal DatabaseCopyRedundancy(DbHealthInfoPersisted dbHealth, DbCopyHealthInfoPersisted dbchip) { this.DatabaseGuid = dbHealth.DbGuid; this.DatabaseName = dbHealth.DbName; this.ServerName = MachineName.GetNodeNameFromFqdn(dbchip.ServerFqdn).ToUpperInvariant(); this.m_copyName = string.Format("{0}\\{1}", this.DatabaseName, this.ServerName); this.Identity = this.m_copyName; this.LastCopyStatusTransitionTime = DateTimeHelper.ToNullableLocalDateTime(dbchip.LastCopyStatusTransitionTime); this.CopyFoundInAD = TransitionInfo.ConstructFromRemoteSerializable(dbchip.CopyFoundInAD); this.CopyStatusRetrieved = TransitionInfo.ConstructFromRemoteSerializable(dbchip.CopyStatusRetrieved); this.CopyIsAvailable = TransitionInfo.ConstructFromRemoteSerializable(dbchip.CopyIsAvailable); this.CopyIsRedundant = TransitionInfo.ConstructFromRemoteSerializable(dbchip.CopyIsRedundant); this.CopyStatusHealthy = TransitionInfo.ConstructFromRemoteSerializable(dbchip.CopyStatusHealthy); this.CopyStatusActive = TransitionInfo.ConstructFromRemoteSerializable(dbchip.CopyStatusActive); this.CopyStatusMounted = TransitionInfo.ConstructFromRemoteSerializable(dbchip.CopyStatusMounted); this.IsCopyFoundInAD = this.CopyFoundInAD.IsSuccess; this.IsCopyAvailable = this.CopyIsAvailable.IsSuccess; this.IsCopyRedundant = this.CopyIsRedundant.IsSuccess; }
public IADServer FindMiniServerByFqdn(string serverFqdn) { string nodeNameFromFqdn = MachineName.GetNodeNameFromFqdn(serverFqdn); return(this.FindMiniServerByShortName(nodeNameFromFqdn)); }
private static List <ADObjectId> GetMasterServerIdsForDatabase(IFindAdObject <IADDatabaseAvailabilityGroup> dagLookup, IADDatabase database, out Exception exception) { IADToplogyConfigurationSession adSession = dagLookup.AdSession; List <ADObjectId> list = new List <ADObjectId>(16); exception = null; try { ADObjectId masterServerOrAvailabilityGroup = database.MasterServerOrAvailabilityGroup; if (masterServerOrAvailabilityGroup == null) { return(null); } if (masterServerOrAvailabilityGroup.IsDeleted) { ActiveManagerUtil.Tracer.TraceError <string, string>(0L, "GetMasterServerIdsForDatabase() for database '{0}' found the MasterServerOrAvailabilityGroup to be a link to a deleted object. Returning an empty collection. MasterServerOrAvailabilityGroup = [{1}]", database.Name, masterServerOrAvailabilityGroup.Name); return(null); } IADDatabaseAvailabilityGroup iaddatabaseAvailabilityGroup = dagLookup.ReadAdObjectByObjectId(masterServerOrAvailabilityGroup); if (iaddatabaseAvailabilityGroup != null) { list.AddRange(iaddatabaseAvailabilityGroup.Servers); } else { IADDatabase iaddatabase = adSession.ReadADObject <IADDatabase>(database.Id); ADObjectId adobjectId = null; if (iaddatabase != null) { adobjectId = iaddatabase.MasterServerOrAvailabilityGroup; if (!masterServerOrAvailabilityGroup.Equals(adobjectId)) { ActiveManagerUtil.Tracer.TraceDebug <ADObjectId, ADObjectId>(0L, "GetMasterServerIdsForDatabase() re-read the Database object and it made a difference. MasterServerOrDag was {0} and is now {1}", masterServerOrAvailabilityGroup, adobjectId); iaddatabaseAvailabilityGroup = adSession.ReadADObject <IADDatabaseAvailabilityGroup>(adobjectId); if (iaddatabaseAvailabilityGroup == null) { goto IL_165; } HashSet <string> hashSet = new HashSet <string>(StringComparer.OrdinalIgnoreCase); foreach (string fqdn in iaddatabaseAvailabilityGroup.StoppedMailboxServers) { hashSet.Add(MachineName.GetNodeNameFromFqdn(fqdn)); } using (MultiValuedProperty <ADObjectId> .Enumerator enumerator2 = iaddatabaseAvailabilityGroup.Servers.GetEnumerator()) { while (enumerator2.MoveNext()) { ADObjectId adobjectId2 = enumerator2.Current; if (!hashSet.Contains(adobjectId2.Name)) { list.Add(adobjectId2); } } goto IL_165; } } ActiveManagerUtil.Tracer.TraceDebug <ADObjectId>(0L, "GetMasterServerIdsForDatabase: re-reading the Database object made no difference. MasterServerOrDag is still {0}.", masterServerOrAvailabilityGroup); } IL_165: if (iaddatabaseAvailabilityGroup == null && adobjectId != null) { IADServer iadserver = adSession.ReadMiniServer(adobjectId); if (iadserver != null) { list.Add(adobjectId); } } } } catch (DataValidationException ex) { exception = ex; } catch (ADTransientException ex2) { exception = ex2; } catch (ADOperationException ex3) { exception = ex3; } catch (ADTopologyUnexpectedException ex4) { exception = ex4; } catch (ADTopologyPermanentException ex5) { exception = ex5; } if (exception != null) { ActiveManagerUtil.Tracer.TraceDebug <Exception>(0L, "GetMasterServerIdsForDatabase() got exception: {0}", exception); list = null; } return(list); }
internal static string GetNodeNameFromFqdn(string nodeName) { return(MachineName.GetNodeNameFromFqdn(nodeName)); }