Module: Katello::Concerns::MediumExtensions::ClassMethods
- Defined in:
- app/models/katello/concerns/medium_extensions.rb
Instance Method Summary collapse
- #construct_name(repo, _distribution) ⇒ Object
- #find_medium(repo) ⇒ Object
- #find_or_create_medium(org, medium_name, medium_path) ⇒ Object
-
#installation_media_path(repo_uri) ⇒ Object
takes repo uri from Katello and makes installation media url suitable for provisioning from it.
-
#normalize_name(name) ⇒ Object
Foreman and Puppet uses RedHat name for Red Hat Enterprise Linux.
- #update_media(repo) ⇒ Object
Instance Method Details
#construct_name(repo, _distribution) ⇒ Object
54 55 56 57 58 59 60 61 62 |
# File 'app/models/katello/concerns/medium_extensions.rb', line 54 def construct_name(repo, _distribution) parts = [repo.organization.label, repo.environment.label] if repo.content_view && !repo.content_view.default? parts << repo.content_view.label end parts << repo.product.label parts << repo.label return normalize_name(parts.compact.join('/')) end |
#find_medium(repo) ⇒ Object
49 50 51 52 |
# File 'app/models/katello/concerns/medium_extensions.rb', line 49 def find_medium(repo) path = ::Medium.installation_media_path(repo.uri) ::Medium.find_by(:path => path) end |
#find_or_create_medium(org, medium_name, medium_path) ⇒ Object
39 40 41 42 43 44 45 46 47 |
# File 'app/models/katello/concerns/medium_extensions.rb', line 39 def find_or_create_medium(org, medium_name, medium_path) params = { :name => medium_name, :path => medium_path, :os_family => 'Redhat' } medium = ::Medium.joins(:organizations).where(params).where("taxonomies.id in (?)", [org.id]).first medium = ::Medium.create!(params.merge(:organization_ids => [org.id])) unless medium return medium end |
#installation_media_path(repo_uri) ⇒ Object
takes repo uri from Katello and makes installation media url suitable for provisioning from it
71 72 73 74 75 |
# File 'app/models/katello/concerns/medium_extensions.rb', line 71 def installation_media_path(repo_uri) path = repo_uri.sub(/\Ahttps/, 'http') path << "/" unless path.end_with?('/') return path end |
#normalize_name(name) ⇒ Object
Foreman and Puppet uses RedHat name for Red Hat Enterprise Linux
65 66 67 |
# File 'app/models/katello/concerns/medium_extensions.rb', line 65 def normalize_name(name) name.sub('Red_Hat_Enterprise_Linux', 'Red_Hat') end |
#update_media(repo) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'app/models/katello/concerns/medium_extensions.rb', line 13 def update_media(repo) return if repo.puppet? medium_path = ::Medium.installation_media_path(repo.uri) if distribution = repo.distribution_bootable? return if ::Medium.find_by(:path => medium_path) os = ::Redhat.(repo) arch = ::Architecture.where(:name => repo.distribution_arch).first_or_create! os.architectures << arch unless os.architectures.include?(arch) medium_name = ::Medium.construct_name(repo, distribution) medium = ::Medium.find_or_create_medium(repo.organization, medium_name, medium_path) os.media << medium os.save! else if medium = ::Medium.find_by(:path => medium_path) medium.destroy end end end |