class OpenSCAP::Xccdf::PolicyModel

Attributes

raw[R]

Public Class Methods

new(b) click to toggle source
# File lib/openscap/xccdf/policy_model.rb, line 12
def initialize(b)
  case b
  when OpenSCAP::Xccdf::Benchmark
    @raw = OpenSCAP.xccdf_policy_model_new(b.raw)
  else
    raise OpenSCAP::OpenSCAPError,
          "Cannot initialize OpenSCAP::Xccdf::PolicyModel with '#{b}'"
  end
  OpenSCAP.raise! if @raw.null?
end

Public Instance Methods

destroy() click to toggle source
# File lib/openscap/xccdf/policy_model.rb, line 27
def destroy
  OpenSCAP.xccdf_policy_model_free @raw
  @raw = nil
end
policies() click to toggle source
# File lib/openscap/xccdf/policy_model.rb, line 23
def policies
  @policies ||= policies_init
end

Private Instance Methods

policies_init() click to toggle source
# File lib/openscap/xccdf/policy_model.rb, line 34
def policies_init
  policies = {}
  OpenSCAP.raise! unless OpenSCAP.xccdf_policy_model_build_all_useful_policies(raw).zero?
  polit = OpenSCAP.xccdf_policy_model_get_policies raw
  while OpenSCAP.xccdf_policy_iterator_has_more polit
    policy_p = OpenSCAP.xccdf_policy_iterator_next polit
    policy = OpenSCAP::Xccdf::Policy.new policy_p
    policies[policy.id] = policy
  end
  OpenSCAP.xccdf_policy_iterator_free polit
  policies
end