Sha256: 7068c29ea4e5f18c8947b2d09655d5860a2f6f11d6b5cc73abf49544a5b507e4

Contents?: true

Size: 1.76 KB

Versions: 61

Compression:

Stored size: 1.76 KB

Contents

module Katello
  module Concerns
    module SettingExtensions
      extend ActiveSupport::Concern

      included do
        validates :value, inclusion: { in: ::Katello::RootRepository::DOWNLOAD_POLICIES },
          if: ->(setting) { setting.name == 'default_download_policy' }
        validates_with ::Katello::Validators::ContentDefaultHttpProxySettingValidator,
        if: proc { |s| s.name == 'content_default_http_proxy' && HttpProxy.table_exists? }

        after_save :recalculate_errata_status
        after_save :add_organizations_and_locations_if_global_http_proxy
        after_commit :update_global_proxies
      end

      def recalculate_errata_status
        ForemanTasks.async_task(Actions::Katello::Host::RecalculateErrataStatus) if saved_change_to_attribute?(:value) && name == 'errata_status_installable'
      end

      def update_global_proxies
        if saved_change_to_attribute?(:value) && name == 'content_default_http_proxy'
          repos = ::Katello::Repository.joins(:root).merge(Katello::RootRepository.with_global_proxy).where.not(remote_href: nil).where(library_instance_id: nil)

          unless repos.empty?
            ForemanTasks.async_task(
              ::Actions::BulkAction,
              ::Actions::Katello::Repository::UpdateHttpProxyDetails,
              repos.sort_by(&:pulp_id))
          end
        end
      end

      def add_organizations_and_locations_if_global_http_proxy
        if name == 'content_default_http_proxy' && (::HttpProxy.table_exists? rescue(false))
          proxy = HttpProxy.where(name: value).first

          if proxy
            proxy.update_attribute(:organizations, Organization.unscoped.all)
            proxy.update_attribute(:locations, Location.unscoped.all)
          end
        end
      end
    end
  end
end

Version data entries

61 entries across 61 versions & 1 rubygems

Version Path
katello-4.16.0 app/models/katello/concerns/setting_extensions.rb
katello-4.15.1 app/models/katello/concerns/setting_extensions.rb
katello-4.16.0.rc2 app/models/katello/concerns/setting_extensions.rb
katello-4.16.0.rc1 app/models/katello/concerns/setting_extensions.rb
katello-4.14.3 app/models/katello/concerns/setting_extensions.rb
katello-4.14.2 app/models/katello/concerns/setting_extensions.rb
katello-4.15.0 app/models/katello/concerns/setting_extensions.rb
katello-4.15.0.rc2 app/models/katello/concerns/setting_extensions.rb
katello-4.15.0.rc1 app/models/katello/concerns/setting_extensions.rb
katello-4.14.1 app/models/katello/concerns/setting_extensions.rb
katello-4.14.0 app/models/katello/concerns/setting_extensions.rb
katello-4.14.0.rc3 app/models/katello/concerns/setting_extensions.rb
katello-4.14.0.rc2 app/models/katello/concerns/setting_extensions.rb
katello-4.14.0.rc1.1 app/models/katello/concerns/setting_extensions.rb
katello-4.14.0.rc1 app/models/katello/concerns/setting_extensions.rb
katello-4.13.1 app/models/katello/concerns/setting_extensions.rb
katello-4.13.0 app/models/katello/concerns/setting_extensions.rb
katello-4.12.1 app/models/katello/concerns/setting_extensions.rb
katello-4.13.0.rc1 app/models/katello/concerns/setting_extensions.rb
katello-4.12.0 app/models/katello/concerns/setting_extensions.rb