Class: Actions::Katello::Flatpak::ScanRemote

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

Instance Method Summary collapse

Instance Method Details

#plan(remote, _args = {}) ⇒ Object



7
8
9
# File 'app/lib/actions/katello/flatpak/scan_remote.rb', line 7

def plan(remote, _args = {})
  plan_self({:remote_id => remote.id, :url => format_url(remote.url)})
end

#rescue_strategyObject



32
33
34
# File 'app/lib/actions/katello/flatpak/scan_remote.rb', line 32

def rescue_strategy
  Dynflow::Action::Rescue::Skip
end

#runObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/lib/actions/katello/flatpak/scan_remote.rb', line 11

def run
  remote = ::Katello::FlatpakRemote.find(input[:remote_id])
  results = fetch_results(input[:url])
  remote.update!(registry_url: results['Registry']) unless remote.registry_url
  repositories = results['Results']
  repositories.each do |repository|
    remote_repository = remote.remote_repositories.find_or_initialize_by(name: repository['Name'])
    remote_repository.save!
    repository['Images'].each do |image|
      remote_repository_manifest = remote_repository.manifests.find_or_initialize_by(digest: image['Digest'])
      remote_repository_manifest.flatpak_remote_repository_id = remote_repository.id
      remote_repository_manifest.name = image['Labels']['name']
      remote_repository_manifest.tags = image['Tags']
      remote_repository_manifest.application = image['Labels']['org.flatpak.ref'].start_with?('app/')
      remote_repository_manifest.flatpak_ref = image['Labels']['org.flatpak.ref']
      remote_repository_manifest.runtime = (image['Labels']['org.flatpak.metadata'])
      remote_repository_manifest.save!
    end
  end
end