Class: Actions::Katello::Repository::ErrataMail

Inherits:
EntryAction
  • Object
show all
Defined in:
app/lib/actions/katello/repository/errata_mail.rb

Instance Method Summary collapse

Instance Method Details

#finalizeObject



28
29
30
# File 'app/lib/actions/katello/repository/errata_mail.rb', line 28

def finalize
  ::User.current = nil
end

#plan(repo, last_updated = nil, contents_changed = nil) ⇒ Object



7
8
9
10
# File 'app/lib/actions/katello/repository/errata_mail.rb', line 7

def plan(repo, last_updated = nil, contents_changed = nil)
  last_updated ||= repo.repository_errata.order('updated_at ASC').last.try(:updated_at) || Time.now
  plan_self(:repo => repo.id, :last_updated => last_updated.to_s, :contents_changed => contents_changed)
end

#rescue_strategy_for_selfObject



32
33
34
35
36
# File 'app/lib/actions/katello/repository/errata_mail.rb', line 32

def rescue_strategy_for_self
  # If sending mail fails do not cause any calling tasks to fail
  # but mark the task in a WARNING state with the error message.
  Dynflow::Action::Rescue::Skip
end

#runObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/lib/actions/katello/repository/errata_mail.rb', line 12

def run
  ::User.current = ::User.anonymous_admin

  repo = ::Katello::Repository.find(input[:repo])
  users = ::User.select { |user| user.receives?(:katello_sync_errata) && user.can?(:view_products, repo.product) }.compact
  errata = ::Katello::Erratum.where(:id => repo.repository_errata.where('katello_repository_errata.updated_at > ?', input[:last_updated].to_datetime).pluck(:erratum_id))

  begin
    MailNotification[:katello_sync_errata].deliver(:users => users, :repo => repo, :errata => errata) unless users.blank?
  rescue => e
    message = _('Unable to send errata e-mail notification: %{error}' % {:error => e})
    Rails.logger.error(message)
    output[:result] = message
  end
end