Example #1
0
        /// <summary>
        ///  DoSetup();
        /// </summary>
        internal void DoSetup()
        {
            _jobInProgress.SetupIsOngoing = true;
            var setupDuration = _capabilityProviderManager.GetSetupDurationBy(_jobInProgress.ResourceCapabilityId);
            var duration      = Agent.Name.Contains("Operator")
                ? setupDuration
                : setupDuration + _jobInProgress.JobMaxDuration;

            //Start setup
            Agent.DebugMessage(msg:
                               $"Call start Setup for Job {_jobInProgress.JobName}  Key: {_jobInProgress.JobKey} " +
                               $"Duration is {setupDuration} and start with Job at {Agent.CurrentTime + setupDuration}", CustomLogger.JOB, LogLevel.Warn);

            _capabilityProviderManager.Mount(_jobInProgress.CapabilityProviderId);
            _jobInProgress.StartSetup(Agent.CurrentTime, duration);
            if (_scopeQueue.FirstOrNull() != null && _jobInProgress.ResourceIsBusyUntil > _scopeQueue.FirstOrNull().ScopeConfirmation.GetScopeStart())
            {
                RequeueAllRemainingJobs();
                Agent.DebugMessage(msg: $"Queue seems unhealthy, try to requeue!", CustomLogger.JOB, LogLevel.Warn);
            }



            CreateSetupTask(setupDuration, JobType.SETUP);

            Agent.Send(Resource.Instruction.Default.FinishTask.Create("SETUP", Agent.Context.Self), waitFor: setupDuration);
        }