123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- module JobsHelper
- def status(job)
- case
- when job.failed_at
- content_tag :span, 'failed', class: 'label label-danger'
- when job.locked_at && job.locked_by
- content_tag :span, 'running', class: 'label label-info'
- else
- content_tag :span, 'queued', class: 'label label-warning'
- end
- end
- def relative_distance_of_time_in_words(time)
- if time < (now = Time.now)
- time_ago_in_words(time) + ' ago'
- else
- 'in ' + distance_of_time_in_words(time, now)
- end
- end
- # Given an queued job, parse the stored YAML to retrieve the ID of the Agent
- # meant to be ran.
- #
- # Can return nil, or an instance of Agent.
- def agent_from_job(job)
- data = YAML.load(job.handler.to_s).try(:job_data)
- case data['job_class']
- when 'AgentCheckJob', 'AgentReceiveJob'
- Agent.find_by_id(data['arguments'][0])
- when 'AgentRunScheduleJob'
- "Run Agent schedule '#{data['arguments'][0]}'"
- when 'AgentCleanupExpiredJob'
- 'Run Event cleanup'
- when 'AgentPropagateJob'
- 'Run Event propagation'
- else
- false
- end
- rescue ArgumentError
- # We can get to this point before all of the agents have loaded (usually,
- # in development)
- nil
- end
- end
|