public void CheckHealthStateAndRespond(HttpContext httpContext) { if (!HealthCheckResponder.HealthCheckResponderEnabled.Value) { this.RespondSuccess(httpContext); } else { ServerComponentEnum serverComponent = ServerComponentEnum.None; if (!HealthCheckResponder.ProtocolServerComponentMap.TryGetValue(HttpProxyGlobals.ProtocolType, out serverComponent)) { throw new InvalidOperationException("Unknown protocol type " + HttpProxyGlobals.ProtocolType); } if (HealthCheckResponder.HealthCheckResponderServerComponentOverride.Value != ServerComponentEnum.None) { serverComponent = HealthCheckResponder.HealthCheckResponderServerComponentOverride.Value; } DateTime utcNow = DateTime.UtcNow; if (this.componentStateNextLookupTime <= utcNow) { this.isComponentOnline = ServerComponentStateManager.IsOnline(serverComponent); this.componentStateNextLookupTime = utcNow.AddSeconds(15.0); } if (!this.isComponentOnline) { this.RespondFailure(httpContext); } else { this.RespondSuccess(httpContext); } } httpContext.ApplicationInstance.CompleteRequest(); }
public static ServiceState GetDefaultState(ServerComponentEnum serverComponent) { ServerComponentStateManager.ComponentStateData componentStateData; if (!ServerComponentStateManager.defaultComponentStates.TryGetValue(serverComponent, out componentStateData)) { return(ServiceState.Active); } if (!Datacenter.IsMicrosoftHostedOnly(true)) { return(componentStateData.OnPremState); } return(componentStateData.DatacenterState); }
public static void SetOnline(ServerComponentEnum serverComponent) { Exception ex = ServerComponentStateManager.RunLocalRegistryOperationNoThrow(delegate { ServerComponentStates.UpdateLocalState(null, ServerComponentRequest.HealthApi.ToString(), serverComponent.ToString(), ServiceState.Active); }); if (ex != null) { ServerComponentStateManager.Tracer.TraceError <ServerComponentEnum, Exception>(0L, "SetOnline({0}) failed: {1}", serverComponent, ex); throw new ServerComponentApiException(DirectoryStrings.ServerComponentLocalRegistryError(ex.ToString()), ex); } }
protected override void InternalProcessRecord() { TaskLogger.LogEnter(new object[] { this.serverId, this.Component }); ADComputer adcomputer = null; ITopologyConfigurationSession topologyConfigurationSession = DirectorySessionFactory.Default.CreateTopologyConfigurationSession(this.DomainController, true, ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromRootOrgScopeSet(), 98, "InternalProcessRecord", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\SystemConfigurationTasks\\ComponentStates\\GetServerComponentState.cs"); string text = (!string.IsNullOrWhiteSpace(this.serverId.Fqdn)) ? this.serverId.Fqdn : this.serverId.ToString(); string text2 = text; int num = text.IndexOf('.'); if (num > 0) { text2 = text.Substring(0, num); } Server server = topologyConfigurationSession.FindServerByName(text2); if (server == null) { topologyConfigurationSession.UseConfigNC = false; topologyConfigurationSession.UseGlobalCatalog = true; adcomputer = topologyConfigurationSession.FindComputerByHostName(text2); if (adcomputer == null) { base.WriteError(new ADServerNotFoundException(text), ErrorCategory.InvalidArgument, null); } } if (string.IsNullOrEmpty(this.Component)) { using (IEnumerator enumerator = Enum.GetValues(typeof(ServerComponentEnum)).GetEnumerator()) { while (enumerator.MoveNext()) { object obj = enumerator.Current; ServerComponentEnum serverComponent = (ServerComponentEnum)obj; if (ServerComponentStateManager.IsValidComponent(serverComponent)) { base.WriteObject(new ServerComponentStatePresentationObject((server != null) ? server.Id : adcomputer.Id, (server != null) ? server.Fqdn : adcomputer.DnsHostName, ServerComponentStateManager.GetComponentId(serverComponent), (server != null) ? server.ComponentStates : adcomputer.ComponentStates)); } } goto IL_1B2; } } base.WriteObject(new ServerComponentStatePresentationObject((server != null) ? server.Id : adcomputer.Id, (server != null) ? server.Fqdn : adcomputer.DnsHostName, this.Component, (server != null) ? server.ComponentStates : adcomputer.ComponentStates)); IL_1B2: TaskLogger.LogExit(); }
public static ServiceState GetEffectiveState(ServerComponentEnum serverComponent, bool onlineByDefault) { MultiValuedProperty <string> adStates = null; try { adStates = ServerComponentStateManager.Instance.GetAdStates(); } catch (ServerComponentApiException arg) { ServerComponentStateManager.Tracer.TraceError <ServerComponentApiException>(0L, "GetEffectiveState ignoring failure to get adStates. Ex was {0}", arg); } ServiceState compState = ServiceState.Inactive; ServerComponentStateManager.RunLocalRegistryOperation(delegate { compState = ServerComponentStates.ReadEffectiveComponentState(null, adStates, ServerComponentStates.GetComponentId(serverComponent), onlineByDefault ? ServiceState.Active : ServiceState.Inactive); }); return(compState); }
private static bool IsRemoteComponentOnlineInternal(string fqdn, MultiValuedProperty <string> componentStates, ServerComponentEnum serverComponent) { ServiceState serviceState = ServerComponentStates.ReadEffectiveComponentState(fqdn, componentStates, ServerComponentStates.GetComponentId(serverComponent), ServiceState.Active); return(serviceState == ServiceState.Active); }
public static bool IsRemoteComponentOnlineAccordingToADInternal(MultiValuedProperty <string> componentStates, ServerComponentEnum serverComponent) { List <ServerComponentStates.ItemEntry> remoteStates = ServerComponentStates.GetRemoteStates(componentStates, ServerComponentStates.GetComponentId(serverComponent)); ServiceState effectiveState = ServerComponentStates.GetEffectiveState(remoteStates, ServiceState.Active); return(effectiveState == ServiceState.Active); }
internal static bool IsRemoteComponentOnline(ADComputer server, ServerComponentEnum serverComponent) { return(ServerComponentStates.IsRemoteComponentOnlineInternal(server.DnsHostName, server.ComponentStates, serverComponent)); }
internal static bool IsRemoteComponentOnline(Server server, ServerComponentEnum serverComponent) { return(ServerComponentStates.IsRemoteComponentOnlineInternal(server.Fqdn, server.ComponentStates, serverComponent)); }
internal static bool IsRemoteComponentOnlineAccordingToAD(ADComputer server, ServerComponentEnum serverComponent) { return(ServerComponentStates.IsRemoteComponentOnlineAccordingToADInternal(server.ComponentStates, serverComponent)); }
public static string GetComponentId(ServerComponentEnum serverComponent) { return(serverComponent.ToString()); }
public static ServiceState ReadEffectiveComponentState(ServerComponentEnum serverComponent, ServiceState defaultState) { return(ServerComponentStates.ReadEffectiveComponentState(null, null, ServerComponentStateSources.Registry, ServerComponentStates.GetComponentId(serverComponent), defaultState)); }
public static ServiceState GetEffectiveState(ServerComponentEnum serverComponent) { ServiceState defaultState = ServerComponentStateManager.GetDefaultState(serverComponent); return(ServerComponentStateManager.GetEffectiveState(serverComponent, defaultState != ServiceState.Inactive)); }
public static bool IsOnline(ServerComponentEnum serverComponent, bool onlineByDefault) { ServiceState effectiveState = ServerComponentStateManager.GetEffectiveState(serverComponent, onlineByDefault); return(effectiveState == ServiceState.Active || effectiveState == ServiceState.Draining); }
public static bool IsOnline(ServerComponentEnum serverComponent) { return(ServerComponentStateManager.IsOnline(serverComponent, true)); }
public static bool IsValidComponent(ServerComponentEnum serverComponent) { return(serverComponent != ServerComponentEnum.None && serverComponent != ServerComponentEnum.TestComponent && serverComponent != ServerComponentEnum.ServerWideSettings); }