Class: Katello::ContentViewManager

Inherits:
Object
  • Object
show all
Defined in:
app/services/katello/content_view_manager.rb

Class Method Summary collapse

Class Method Details

.add_version_to_environment(content_view_version:, environment:) ⇒ Object



3
4
5
6
7
8
9
10
11
# File 'app/services/katello/content_view_manager.rb', line 3

def self.add_version_to_environment(content_view_version:, environment:)
  content_view = content_view_version.content_view
  if (cve = content_view.content_view_environment(environment))
    content_view_version.content_view_environments << cve
  else
    cve = content_view.add_environment(environment, content_view_version)
  end
  cve
end

.auto_publish_log(request, message) ⇒ Object



36
37
38
39
# File 'app/services/katello/content_view_manager.rb', line 36

def self.auto_publish_log(request, message)
  logged_request = Katello::Logging.join_parts(request.try(:slice, :id, :content_view_id, :content_view_version_id, :created_at))
  Rails.logger.info "[auto publish] #{message} #{logged_request}"
end

.content_view_locks(content_view:) ⇒ Object



41
42
43
44
45
# File 'app/services/katello/content_view_manager.rb', line 41

def self.content_view_locks(content_view:)
  ForemanTasks::Lock.where(
    resource_id: content_view.id,
    resource_type: ::Katello::ContentView.to_s)
end

.create_candlepin_environment(content_view_environment:) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'app/services/katello/content_view_manager.rb', line 13

def self.create_candlepin_environment(content_view_environment:)
  unless content_view_environment.exists_in_candlepin?
    ::Katello::Resources::Candlepin::Environment.create(
      content_view_environment.content_view.organization.label,
      content_view_environment.cp_id,
      content_view_environment.label,
      content_view_environment.content_view.description.try(:truncate, 255)
    )
  end
end

.request_auto_publish(content_view:, content_view_version:) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'app/services/katello/content_view_manager.rb', line 24

def self.request_auto_publish(content_view:, content_view_version:)
  request = content_view.create_auto_publish_request!(
    content_view_version: content_view_version
  )
  auto_publish_log(request, "request created")

  request
rescue ActiveRecord::RecordNotUnique
  auto_publish_log(content_view.auto_publish_request, "request exists")
  content_view.auto_publish_request
end

.trigger_auto_publish!(request:) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'app/services/katello/content_view_manager.rb', line 47

def self.trigger_auto_publish!(request:)
  request.with_lock do
    if content_view_locks(content_view: request.content_view).any?
      auto_publish_log(request, "locks found")
      return
    end

    description = _("Auto Publish - Triggered by '%s'") % request.content_view_version.name
    ForemanTasks.async_task(Actions::Katello::ContentView::Publish, request.content_view, description, auto_published: true, triggered_by_id: request.content_view_version_id)
    auto_publish_log(request, "task triggered")
    request.destroy!
  rescue ForemanTasks::Lock::LockConflict => e
    auto_publish_log(request, e)
    auto_publish_log(request, "lock conflict")
  end
rescue ActiveRecord::RecordNotFound
  auto_publish_log(request, "request gone")
end