Class: Katello::PuppetModule
- Includes:
- Concerns::PulpDatabaseUnit
- Defined in:
- app/models/katello/puppet_module.rb
Constant Summary collapse
- CONTENT_TYPE =
Pulp::PuppetModule::CONTENT_TYPE
Class Method Summary collapse
- .group_by_repoid(puppet_modules) ⇒ Object
- .latest_module(name, author, repositories) ⇒ Object
- .parse_metadata(filepath) ⇒ Object
- .repository_association_class ⇒ Object
Instance Method Summary collapse
Methods included from Concerns::PulpDatabaseUnit
Methods inherited from Model
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, , repositories) in_repositories(repositories).where(:name => name, :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_class ⇒ Object
34 35 36 |
# File 'app/models/katello/puppet_module.rb', line 34 def self.repository_association_class RepositoryPuppetModule end |
Instance Method Details
#sortable_version ⇒ Object
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 |