app/lib/actions/katello/host/upload_profiles.rb in katello-4.2.0.rc1 vs app/lib/actions/katello/host/upload_profiles.rb in katello-4.2.0.rc2
- old
+ new
@@ -30,63 +30,17 @@
def rescue_strategy
Dynflow::Action::Rescue::Skip
end
- def import_module_streams(payload, host)
- enabled_payload = payload.map do |profile|
- profile.slice("name", "stream", "version", "context", "arch").with_indifferent_access if profile["status"] == "enabled"
- end
- enabled_payload.compact!
-
- host.import_module_streams(payload)
- end
-
- def import_deb_package_profile(host, profile)
- installed_deb_ids = profile.map do |item|
- ::Katello::InstalledDeb.find_or_create_by(name: item['name'], architecture: item['architecture'], version: item['version']).id
- end
- host.installed_deb_ids = installed_deb_ids
- host.save!
- rescue ActiveRecord::InvalidForeignKey # this happens if the host gets deleted in between the "find_by" and "import_package_profile"
- Rails.logger.warn("Host installed package list with ID %s was not able to be written to the DB (host likely is deleted), continuing" % host.id)
- end
-
def run
- profiles = JSON.parse(input[:profile_string])
- #free the huge string from the memory
- input[:profile_string] = 'TRIMMED'.freeze
host = ::Host.find_by(:id => input[:host_id])
- if host.nil?
- Rails.logger.warn("Host with ID %s not found, continuing" % input[:host_id])
- elsif host.content_facet.nil? || host.content_facet.uuid.nil?
- Rails.logger.warn("Host with ID %s has no content facet, continuing" % input[:host_id])
- elsif profiles.try(:has_key?, "deb_package_profile")
- # remove this when deb_package_profile API is removed
- payload = profiles.dig("deb_package_profile", "deb_packages") || []
- import_deb_package_profile(host, payload)
- else
- module_streams = []
- profiles.each do |profile|
- payload = profile["profile"]
- case profile["content_type"]
- when "rpm"
- UploadPackageProfile.upload(input[:host_id], payload)
- when "deb"
- import_deb_package_profile(host, payload)
- when "enabled_repos"
- host.import_enabled_repositories(payload)
- else
- module_streams << payload
- end
- end
-
- module_streams.each do |module_stream_payload|
- import_module_streams(module_stream_payload, host)
- end
-
- ::Katello::Host::ContentFacet.trigger_applicability_generation(host.id)
- end
+ uploader = ::Katello::Host::ProfilesUploader.new(
+ host: host,
+ profile_string: input[:profile_string]
+ )
+ uploader.upload
+ uploader.trigger_applicability_generation
end
end
end
end
end