Class: OpenSCAP::Xccdf::PolicyModel

Inherits:
Object
  • Object
show all
Defined in:
lib/openscap/xccdf/policy_model.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(b) ⇒ PolicyModel

Returns a new instance of PolicyModel.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 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?

  begin
    yield self
  ensure
    destroy
  end if block_given?
end

Instance Attribute Details

#rawObject (readonly)

Returns the value of attribute raw.



10
11
12
# File 'lib/openscap/xccdf/policy_model.rb', line 10

def raw
  @raw
end

Instance Method Details

#destroyObject



35
36
37
38
# File 'lib/openscap/xccdf/policy_model.rb', line 35

def destroy
  OpenSCAP.xccdf_policy_model_free @raw
  @raw = nil
end

#each_policyObject



40
41
42
43
44
45
46
# File 'lib/openscap/xccdf/policy_model.rb', line 40

def each_policy(&)
  OpenSCAP.raise! unless OpenSCAP.xccdf_policy_model_build_all_useful_policies(raw).zero?
  OpenSCAP._iterate over: OpenSCAP.xccdf_policy_model_get_policies(@raw),
                    as: 'xccdf_policy' do |pointer|
    yield OpenSCAP::Xccdf::Policy.new pointer
  end
end

#policiesObject



29
30
31
32
33
# File 'lib/openscap/xccdf/policy_model.rb', line 29

def policies
  @policies ||= {}.tap do |policies|
    each_policy { |p| policies[p.id] = p }
  end
end