Sha256: 108634ae8281eb2a67e0cfd22b9e89e3fc076e6c0319ac49fc98e7889f484578

Contents?: true

Size: 1.47 KB

Versions: 69

Compression:

Stored size: 1.47 KB

Contents

module ForemanOpenscap
  class OpenscapProxyVersionCheck
    def initialize
      @versions = {}
      @message = ''
      @down = []
    end

    def run
      @versions = openscap_proxy_versions.select do |key, value|
        Gem::Version.new(value) < Gem::Version.new("0.6.1")
      end
      self
    end

    def pass?
      !any_outdated? && !any_unreachable?
    end

    def any_outdated?
      !@versions.empty?
    end

    def any_unreachable?
      !@down.empty?
    end

    def message
      if pass?
        @message
      else
        build_message
      end
    end

    private

    def build_message
      @message = _('This feature is temporarily disabled. ')
      @message << _('The following Smart Proxies need to be updated to unlock the feature: %s. ') % @versions.keys.to_sentence if any_outdated?
      @message << _('The following proxies could not be reached: %s. Please make sure they are available so Foreman can check their versions.') % @down.to_sentence if any_unreachable?
      @message
    end

    def get_openscap_proxies
      SmartProxy.with_features "Openscap"
    end

    def openscap_proxy_versions
      get_openscap_proxies.inject({}) do |memo, proxy|
        begin
          status = ProxyStatus::Version.new(proxy).version
          openscap_version = status["modules"]["openscap"]
          memo[proxy.name] = openscap_version
        rescue Foreman::WrappedException
          @down << proxy.name
        end
        memo
      end
    end
  end
end

Version data entries

69 entries across 69 versions & 1 rubygems

Version Path
foreman_openscap-9.0.2 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-9.0.1 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-9.0.0 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-8.0.0 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-7.1.1 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-7.1.0 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-7.0.0 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-6.0.0 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-5.2.3 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-5.2.2 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-5.1.1 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-5.2.1 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-5.2.0 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-5.1.0 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-5.0.0 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-4.3.3 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-4.3.2 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-4.3.1 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-4.3.0 app/services/foreman_openscap/openscap_proxy_version_check.rb
foreman_openscap-4.1.3 app/services/foreman_openscap/openscap_proxy_version_check.rb