Class: Katello::PuppetModule

Inherits:
Model
  • Object
show all
Includes:
Concerns::PulpDatabaseUnit
Defined in:
app/models/katello/puppet_module.rb

Constant Summary collapse

CONTENT_TYPE =
Pulp::PuppetModule::CONTENT_TYPE

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Concerns::PulpDatabaseUnit

#backend_data

Methods inherited from Model

#destroy!

Class Method Details

.group_by_repoid(puppet_modules) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
# File 'app/models/katello/puppet_module.rb', line 59

def self.group_by_repoid(puppet_modules)
  puppet_modules.flatten.each_with_object({}) do |puppet_module, result|
    repo = puppet_module.repositories.first

    if repo
      result[repo.pulp_id] ||= []
      result[repo.pulp_id] << puppet_module.uuid
    else
      fail _("Could not find Repository for module %s.") % puppet_module.name
    end
  end
end

.latest_module(name, author, repositories) ⇒ Object



30
31
32
# File 'app/models/katello/puppet_module.rb', line 30

def self.latest_module(name, author, repositories)
  in_repositories(repositories).where(:name => name, :author => author).order(:version).first
end

.parse_metadata(filepath) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'app/models/katello/puppet_module.rb', line 38

def self.(filepath)
   = nil

  tar_extract = Gem::Package::TarReader.new(Zlib::GzipReader.open(filepath))
  tar_extract.rewind # The extract has to be rewinded after every iteration
  tar_extract.each do |entry|
    next unless entry.file? && entry.full_name =~ %r{\A[^/]+/metadata.json\z}
     = entry.read
  end

  if 
    return JSON.parse().with_indifferent_access
  else
    fail Katello::Errors::InvalidPuppetModuleError, _("Invalid puppet module. Please make sure the puppet module contains a metadata.json file and is properly compressed.")
  end
rescue Zlib::GzipFile::Error, Gem::Package::TarInvalidError
  raise Katello::Errors::InvalidPuppetModuleError, _("Could not unarchive puppet module. Please make sure the puppet module has been compressed properly.")
ensure
  tar_extract.close if tar_extract
end

.repository_association_classObject



34
35
36
# File 'app/models/katello/puppet_module.rb', line 34

def self.repository_association_class
  RepositoryPuppetModule
end

Instance Method Details

#sortable_versionObject



78
79
80
# File 'app/models/katello/puppet_module.rb', line 78

def sortable_version
  Util::Package.sortable_version(self.version)
end

#update_from_json(json) ⇒ Object



72
73
74
75
76
# File 'app/models/katello/puppet_module.rb', line 72

def update_from_json(json)
  keys = %w(name author title version summary)
  custom_json = json.clone.delete_if { |key, _value| !keys.include?(key) }
  self.update_attributes!(custom_json)
end