/// <summary> /// Called after Service DynamicResetState. /// </summary> public void DynamicResetState() { switch( FinalConfigSolvedStatus ) { case SolvedConfigurationStatus.Disabled: { _dynamicReason = PluginRunningStatusReason.StoppedByConfig; _dynamicStatus = RunningStatus.Disabled; break; } case SolvedConfigurationStatus.Running: { Debug.Assert( Service == null || (Service.Family.RunningPlugin == this) ); _dynamicReason = PluginRunningStatusReason.StartedByConfig; _dynamicStatus = RunningStatus.RunningLocked; break; } default: { Debug.Assert( Service == null || !Service.Disabled ); _dynamicReason = PluginRunningStatusReason.None; _dynamicStatus = null; break; } } }
/// <summary> /// Called after Service DynamicResetState. /// </summary> public void DynamicResetState() { switch (FinalConfigSolvedStatus) { case SolvedConfigurationStatus.Disabled: { _dynamicReason = PluginRunningStatusReason.StoppedByConfig; _dynamicStatus = RunningStatus.Disabled; break; } case SolvedConfigurationStatus.Running: { Debug.Assert(Service == null || (Service.Family.RunningPlugin == this)); _dynamicReason = PluginRunningStatusReason.StartedByConfig; _dynamicStatus = RunningStatus.RunningLocked; break; } default: { Debug.Assert(Service == null || !Service.Disabled); _dynamicReason = PluginRunningStatusReason.None; _dynamicStatus = null; break; } } }
/// <summary> /// Called before DynamicResetState on plugins. /// </summary> public void DynamicResetState() { _dynPropagation = null; _dynamicTotalAvailablePluginsCount = TotalAvailablePluginCount; _dynamicAvailablePluginsCount = AvailablePluginCount; _dynamicAvailableServicesCount = AvailableServiceCount; switch( FinalConfigSolvedStatus ) { case SolvedConfigurationStatus.Disabled: { _dynamicReason = ServiceRunningStatusReason.StoppedByConfig; _dynamicStatus = RunningStatus.Disabled; break; } case SolvedConfigurationStatus.Running: { _dynamicReason = ServiceRunningStatusReason.StartedByConfig; _dynamicStatus = RunningStatus.RunningLocked; break; } default: { _dynamicReason = ServiceRunningStatusReason.None; _dynamicStatus = null; break; } } ServiceData s = FirstSpecialization; while( s != null ) { s.DynamicResetState(); s = s.NextSpecialization; } }
public async Task <IActionResult> GetJobs([FromQuery] string specificationId = null, [FromQuery] string jobType = null, [FromQuery] string entityId = null, [FromQuery] RunningStatus?runningStatus = null, [FromQuery] CompletionStatus?completionStatus = null, [FromQuery] bool excludeChildJobs = false, [FromQuery] int pageNumber = 1) => await _jobService.GetJobs(specificationId, jobType, entityId, runningStatus, completionStatus, excludeChildJobs, pageNumber);
public SolvedItemSnapshot( IYodiiItemData item ) { _disabledReason = item.DisabledReason; _runningStatus = item.DynamicStatus; _configOriginalStatus = item.ConfigOriginalStatus; _configSolvedStatus = item.ConfigSolvedStatus; _configOriginalImpact = item.ConfigOriginalImpact; _configSolvedImpact = item.RawConfigSolvedImpact; }
public SolvedItemSnapshot(IYodiiItemData item) { _disabledReason = item.DisabledReason; _runningStatus = item.DynamicStatus; _configOriginalStatus = item.ConfigOriginalStatus; _configSolvedStatus = item.ConfigSolvedStatus; _configOriginalImpact = item.ConfigOriginalImpact; _configSolvedImpact = item.RawConfigSolvedImpact; }
public bool DynamicStartByCommand( StartDependencyImpact impact ) { if( _dynamicStatus != null ) return _dynamicStatus.Value >= RunningStatus.Running; if( impact == StartDependencyImpact.Unknown ) impact = ConfigSolvedImpact; if( !DynTestCanStart( impact ) ) return false; _dynamicStatus = RunningStatus.Running; _dynamicReason = PluginRunningStatusReason.StartedByCommand; DynamicStartBy( impact, PluginRunningStatusReason.StartedByCommand ); return true; }
internal void DynamicStopBy(PluginRunningStatusReason reason) { Debug.Assert(_dynamicStatus == null); Debug.Assert(reason != PluginRunningStatusReason.None); _dynamicStatus = RunningStatus.Stopped; _dynamicReason = reason; if (Service != null) { Service.OnPluginStopped(true); Service.OnPostPluginStopped(); } }
internal void OnDirectPluginStarted(PluginData runningPlugin) { Debug.Assert(_dynamicStatus == null || _dynamicStatus.Value >= RunningStatus.Running); Debug.Assert(runningPlugin != null); if (_dynamicStatus == null) { _dynamicStatus = RunningStatus.Running; _dynamicReason = ServiceRunningStatusReason.StartedByPlugin; } Debug.Assert(runningPlugin.DynamicStatus.HasValue && runningPlugin.DynamicStatus.Value >= RunningStatus.Running); Family.DynamicSetRunningPlugin(runningPlugin); }
internal void DynamicStartBy(StartDependencyImpact impact, PluginRunningStatusReason reason) { Debug.Assert(_dynamicStatus == null || _dynamicStatus.Value >= RunningStatus.Running); if (_dynamicStatus == null) { _dynamicStatus = RunningStatus.Running; _dynamicReason = reason; } if (Service != null) { Service.OnDirectPluginStarted(this); } foreach (var sRef in PluginInfo.ServiceReferences) { ServiceData s = _solver.FindExistingService(sRef.Reference.ServiceFullName); s.DynamicStartByDependency(impact, sRef.Requirement); } }
public bool DynamicStartByCommand(StartDependencyImpact impact) { if (_dynamicStatus != null) { return(_dynamicStatus.Value >= RunningStatus.Running); } if (impact == StartDependencyImpact.Unknown) { impact = ConfigSolvedImpact; } if (!DynTestCanStart(impact)) { return(false); } _dynamicStatus = RunningStatus.Running; _dynamicReason = PluginRunningStatusReason.StartedByCommand; DynamicStartBy(impact, PluginRunningStatusReason.StartedByCommand); return(true); }
/// <summary> /// Called before DynamicResetState on plugins. /// </summary> public void DynamicResetState() { _dynPropagation = null; _dynamicTotalAvailablePluginsCount = TotalAvailablePluginCount; _dynamicAvailablePluginsCount = AvailablePluginCount; _dynamicAvailableServicesCount = AvailableServiceCount; switch (FinalConfigSolvedStatus) { case SolvedConfigurationStatus.Disabled: { _dynamicReason = ServiceRunningStatusReason.StoppedByConfig; _dynamicStatus = RunningStatus.Disabled; break; } case SolvedConfigurationStatus.Running: { _dynamicReason = ServiceRunningStatusReason.StartedByConfig; _dynamicStatus = RunningStatus.RunningLocked; break; } default: { _dynamicReason = ServiceRunningStatusReason.None; _dynamicStatus = null; break; } } ServiceData s = FirstSpecialization; while (s != null) { s.DynamicResetState(); s = s.NextSpecialization; } }
public IActionResult GetJobs(string specificationId, string jobType, string entityId, RunningStatus?runningStatus, CompletionStatus?completionStatus, bool excludeChildJobs, int pageNumber) { if (pageNumber < 1) { return(new BadRequestObjectResult("Invalid page number, pages start from 1")); } IQueryable <Job> allJobs = _jobsRepositoryNonAsyncPolicy.Execute(() => _jobRepository.GetJobs()); if (!string.IsNullOrEmpty(specificationId)) { allJobs = allJobs.Where(j => j.SpecificationId == specificationId); } if (!string.IsNullOrEmpty(jobType)) { allJobs = allJobs.Where(j => j.JobDefinitionId == jobType); } if (!string.IsNullOrEmpty(entityId)) { allJobs = allJobs.Where(j => j.Trigger.EntityId == entityId); } if (runningStatus.HasValue) { allJobs = allJobs.Where(j => j.RunningStatus == runningStatus.Value); } if (completionStatus.HasValue) { allJobs = allJobs.Where(j => j.CompletionStatus == completionStatus.Value); } if (excludeChildJobs) { allJobs = allJobs.Where(j => j.ParentJobId == null); } int totalItems = allJobs.Count(); // Limit the query to end of the requested page const int pageSize = 50; allJobs = allJobs.Take(pageNumber * pageSize); // Need to do actual page selection in memory as Cosmos doesn't support Skip or ordering by date IEnumerable <Job> executedJobs = allJobs.AsEnumerable().OrderByDescending(j => j.LastUpdated); executedJobs = executedJobs.Skip((pageNumber - 1) * pageSize).Take(pageSize); System.Diagnostics.Debug.WriteLine("Executed Jobs: {0}", executedJobs.Count()); IEnumerable <JobSummary> summaries = _mapper.Map <IEnumerable <JobSummary> >(executedJobs); JobQueryResponseModel jobQueryResponse = new JobQueryResponseModel { Results = summaries, CurrentPage = pageNumber, PageSize = pageSize, TotalItems = totalItems, TotalPages = (int)Math.Ceiling((double)totalItems / pageSize) }; return(new OkObjectResult(jobQueryResponse)); }
internal void DynamicStopBy( PluginRunningStatusReason reason ) { Debug.Assert( _dynamicStatus == null ); Debug.Assert( reason != PluginRunningStatusReason.None ); _dynamicStatus = RunningStatus.Stopped; _dynamicReason = reason; if( Service != null ) { Service.OnPluginStopped( true ); Service.OnPostPluginStopped(); } }
internal void OnDirectPluginStarted( PluginData runningPlugin ) { Debug.Assert( _dynamicStatus == null || _dynamicStatus.Value >= RunningStatus.Running ); Debug.Assert( runningPlugin != null ); if( _dynamicStatus == null ) { _dynamicStatus = RunningStatus.Running; _dynamicReason = ServiceRunningStatusReason.StartedByPlugin; } Debug.Assert( runningPlugin.DynamicStatus.HasValue && runningPlugin.DynamicStatus.Value >= RunningStatus.Running ); Family.DynamicSetRunningPlugin( runningPlugin ); }
internal void DynamicStopBy( ServiceRunningStatusReason reason ) { Debug.Assert( _dynamicStatus == null ); Debug.Assert( reason == ServiceRunningStatusReason.StoppedByGeneralization || reason == ServiceRunningStatusReason.StoppedByCommand || reason == ServiceRunningStatusReason.StoppedByPluginStopped || reason == ServiceRunningStatusReason.StoppedBySiblingRunningService || reason == ServiceRunningStatusReason.StoppedByOptionalReference || reason == ServiceRunningStatusReason.StoppedByOptionalRecommendedReference || reason == ServiceRunningStatusReason.StoppedByRunnableReference || reason == ServiceRunningStatusReason.StoppedByRunnableRecommendedReference || reason == ServiceRunningStatusReason.StoppedByFinalDecision ); _dynamicStatus = RunningStatus.Stopped; _dynamicReason = reason; for( int i = 0; i < _inheritedServicesWithThis.Length - 1; ++i ) --_inheritedServicesWithThis[i]._dynamicAvailableServicesCount; if( _dynamicTotalAvailablePluginsCount > 0 ) { // Stops the specialized services. ServiceData child = FirstSpecialization; while( child != null ) { Debug.Assert( child.DynamicStatus == null || child.DynamicStatus.Value <= RunningStatus.Stopped ); if( child.DynamicStatus == null ) child.DynamicStopBy( ServiceRunningStatusReason.StoppedByGeneralization ); child = child.NextSpecialization; } // Stops the plugins. PluginData p = FirstPlugin; while( p != null ) { Debug.Assert( p.DynamicStatus == null || p.DynamicStatus.Value <= RunningStatus.Stopped ); if( p.DynamicStatus == null ) p.DynamicStopBy( PluginRunningStatusReason.StoppedByStoppedService ); p = p.NextPluginForService; } Debug.Assert( _dynamicTotalAvailablePluginsCount == 0 ); } foreach( var backRef in _backReferences ) { Debug.Assert( backRef.PluginData.DynamicStatus == null || backRef.PluginData.DynamicStatus.Value <= RunningStatus.Stopped || ((backRef.Requirement == DependencyRequirement.Optional || backRef.Requirement == DependencyRequirement.Runnable) && backRef.PluginData.ConfigSolvedImpact != StartDependencyImpact.FullStart) || ((backRef.Requirement == DependencyRequirement.OptionalRecommended || backRef.Requirement == DependencyRequirement.RunnableRecommended) && backRef.PluginData.ConfigSolvedImpact < StartDependencyImpact.StartRecommended) ); if( backRef.PluginData.DynamicStatus == null ) { PluginRunningStatusReason r = backRef.PluginData.GetStoppedReasonForStoppedReference( backRef.Requirement ); if( r != PluginRunningStatusReason.None ) backRef.PluginData.DynamicStopBy( r ); } } }
internal void DynamicStartBy( StartDependencyImpact impact, PluginRunningStatusReason reason ) { Debug.Assert( _dynamicStatus == null || _dynamicStatus.Value >= RunningStatus.Running ); if( _dynamicStatus == null ) { _dynamicStatus = RunningStatus.Running; _dynamicReason = reason; } if( Service != null ) Service.OnDirectPluginStarted( this ); foreach( var sRef in PluginInfo.ServiceReferences ) { ServiceData s = _solver.FindExistingService( sRef.Reference.ServiceFullName ); s.DynamicStartByDependency( impact, sRef.Requirement ); } }
internal void DynamicStopBy(ServiceRunningStatusReason reason) { Debug.Assert(_dynamicStatus == null); Debug.Assert(reason == ServiceRunningStatusReason.StoppedByGeneralization || reason == ServiceRunningStatusReason.StoppedByCommand || reason == ServiceRunningStatusReason.StoppedByPluginStopped || reason == ServiceRunningStatusReason.StoppedBySiblingRunningService || reason == ServiceRunningStatusReason.StoppedByOptionalReference || reason == ServiceRunningStatusReason.StoppedByOptionalRecommendedReference || reason == ServiceRunningStatusReason.StoppedByRunnableReference || reason == ServiceRunningStatusReason.StoppedByRunnableRecommendedReference || reason == ServiceRunningStatusReason.StoppedByFinalDecision); _dynamicStatus = RunningStatus.Stopped; _dynamicReason = reason; for (int i = 0; i < _inheritedServicesWithThis.Length - 1; ++i) { --_inheritedServicesWithThis[i]._dynamicAvailableServicesCount; } if (_dynamicTotalAvailablePluginsCount > 0) { // Stops the specialized services. ServiceData child = FirstSpecialization; while (child != null) { Debug.Assert(child.DynamicStatus == null || child.DynamicStatus.Value <= RunningStatus.Stopped); if (child.DynamicStatus == null) { child.DynamicStopBy(ServiceRunningStatusReason.StoppedByGeneralization); } child = child.NextSpecialization; } // Stops the plugins. PluginData p = FirstPlugin; while (p != null) { Debug.Assert(p.DynamicStatus == null || p.DynamicStatus.Value <= RunningStatus.Stopped); if (p.DynamicStatus == null) { p.DynamicStopBy(PluginRunningStatusReason.StoppedByStoppedService); } p = p.NextPluginForService; } Debug.Assert(_dynamicTotalAvailablePluginsCount == 0); } foreach (var backRef in _backReferences) { Debug.Assert(backRef.PluginData.DynamicStatus == null || backRef.PluginData.DynamicStatus.Value <= RunningStatus.Stopped || ((backRef.Requirement == DependencyRequirement.Optional || backRef.Requirement == DependencyRequirement.Runnable) && backRef.PluginData.ConfigSolvedImpact != StartDependencyImpact.FullStart) || ((backRef.Requirement == DependencyRequirement.OptionalRecommended || backRef.Requirement == DependencyRequirement.RunnableRecommended) && backRef.PluginData.ConfigSolvedImpact < StartDependencyImpact.StartRecommended)); if (backRef.PluginData.DynamicStatus == null) { PluginRunningStatusReason r = backRef.PluginData.GetStoppedReasonForStoppedReference(backRef.Requirement); if (r != PluginRunningStatusReason.None) { backRef.PluginData.DynamicStopBy(r); } } } }