Sha256: 9cadc9317bf7a9a85f9e30c915d724c8a3199e1c4419ad7b95211a20eb13b5d2

Contents?: true

Size: 1.11 KB

Versions: 5

Compression:

Stored size: 1.11 KB

Contents

module ForemanOpenscap
  class ComplianceStatus < ::HostStatus::Status
    COMPLIANT = 0
    INCONCLUSIVE = 1
    INCOMPLIANT = 2

    def self.status_name
      N_('Compliance')
    end

    def self.bit_mask(status)
      "#{ArfReport::BIT_NUM * ArfReport::METRIC.index(status)} & #{ArfReport::MAX}"
    end

    def to_label(options = {})
      case to_status
      when COMPLIANT
        N_('Compliant')
      when INCONCLUSIVE
        N_('Inconclusive')
      when INCOMPLIANT
        N_('Incompliant')
      else
        N_('Unknown Compliance status')
      end
    end

    def to_global(options = {})
      case to_status
      when COMPLIANT
        ::HostStatus::Global::OK
      when INCONCLUSIVE
        ::HostStatus::Global::WARN
      else
        ::HostStatus::Global::ERROR
      end
    end

    def relevant?
      host.policies.present?
    end

    def to_status(options = {})
      latest_reports = host.policies.map { |p| host.last_report_for_policy p }.flatten
      return INCOMPLIANT if latest_reports.any?(&:failed?)
      return INCONCLUSIVE if latest_reports.any?(&:othered?)
      COMPLIANT
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
foreman_openscap-0.5.4 app/models/foreman_openscap/compliance_status.rb
foreman_openscap-0.5.3 app/models/foreman_openscap/compliance_status.rb
foreman_openscap-0.5.2 app/models/foreman_openscap/compliance_status.rb
foreman_openscap-0.5.1 app/models/foreman_openscap/compliance_status.rb
foreman_openscap-0.5.0 app/models/foreman_openscap/compliance_status.rb