/// <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;
             }
     }
 }
Example #2
0
        /// <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;
     }
 }
Example #4
0
 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;
 }
Example #6
0
 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;
 }
Example #8
0
 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();
     }
 }
Example #9
0
 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);
 }
Example #10
0
        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);
            }
        }
Example #11
0
 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);
 }
Example #12
0
        /// <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;
            }
        }
Example #13
0
        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));
        }
Example #14
0
 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 );
                }
            }
        }
Example #17
0
        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 );
            }
        }
Example #18
0
        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);
                    }
                }
            }
        }