Esempio n. 1
0
 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();
 }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
        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();
        }
Esempio n. 5
0
        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));
 }
Esempio n. 13
0
        public static ServiceState GetEffectiveState(ServerComponentEnum serverComponent)
        {
            ServiceState defaultState = ServerComponentStateManager.GetDefaultState(serverComponent);

            return(ServerComponentStateManager.GetEffectiveState(serverComponent, defaultState != ServiceState.Inactive));
        }
Esempio n. 14
0
        public static bool IsOnline(ServerComponentEnum serverComponent, bool onlineByDefault)
        {
            ServiceState effectiveState = ServerComponentStateManager.GetEffectiveState(serverComponent, onlineByDefault);

            return(effectiveState == ServiceState.Active || effectiveState == ServiceState.Draining);
        }
Esempio n. 15
0
 public static bool IsOnline(ServerComponentEnum serverComponent)
 {
     return(ServerComponentStateManager.IsOnline(serverComponent, true));
 }
Esempio n. 16
0
 public static bool IsValidComponent(ServerComponentEnum serverComponent)
 {
     return(serverComponent != ServerComponentEnum.None && serverComponent != ServerComponentEnum.TestComponent && serverComponent != ServerComponentEnum.ServerWideSettings);
 }