Class: Actions::ForemanPipeline::Job::RepoSyncJobHook
- Inherits:
-
JobHook
- Object
- EntryAction
- JobHook
- Actions::ForemanPipeline::Job::RepoSyncJobHook
show all
- Defined in:
- app/lib/actions/foreman_pipeline/job/repo_sync_job_hook.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from JobHook
#rescue_strategy_for_self, #run
Class Method Details
.subscribe ⇒ Object
6
7
8
|
# File 'app/lib/actions/foreman_pipeline/job/repo_sync_job_hook.rb', line 6
def self.subscribe
Katello::Repository::Sync
end
|
Instance Method Details
#plan(repo) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'app/lib/actions/foreman_pipeline/job/repo_sync_job_hook.rb', line 10
def plan(repo)
valid_jobs = repo.jobs.select { |job| job.is_valid? }
jobs_to_run = valid_jobs.select { |job| job.target_cv_version_avail? }
allowed_jobs = jobs_to_run.select { |job| job.sync_trigger && job.not_yet_promoted? }
grouped_jobs = allowed_jobs.group_by(&:target_cv_version).values
if grouped_jobs.max_by(&:length).length > 1
grouped_jobs = grouped_jobs.max_by(&:length)
plan_self(:trigger => trigger.output,
:job_ids => grouped_jobs.map(&:id),
:job_names => grouped_jobs.map(&:name))
else
grouped_jobs.flatten!
plan_self(:trigger => trigger.output,
:job_names => [],
:job_ids => grouped_jobs.map(&:id))
end
end
|