class OpenSCAP::Xccdf::Benchmark

Attributes

raw[R]

Public Class Methods

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

Public Instance Methods

destroy() click to toggle source
# File lib/openscap/xccdf/benchmark.rb, line 40
def destroy
  OpenSCAP.xccdf_benchmark_free @raw
  @raw = nil
end
items() click to toggle source
# File lib/openscap/xccdf/benchmark.rb, line 36
def items
  @items ||= items_init
end
profiles() click to toggle source
# File lib/openscap/xccdf/benchmark.rb, line 32
def profiles
  @profiles ||= profiles_init
end

Private Instance Methods

items_init() click to toggle source
# File lib/openscap/xccdf/benchmark.rb, line 59
def items_init
  items = {}
  items_it = OpenSCAP.xccdf_item_get_content raw
  while OpenSCAP.xccdf_item_iterator_has_more items_it
    item_p = OpenSCAP.xccdf_item_iterator_next items_it
    item = OpenSCAP::Xccdf::Item.build item_p
    items.merge! item.sub_items
    items[item.id] = item
    # TODO: iterate through childs
  end
  OpenSCAP.xccdf_item_iterator_free items_it
  items
end
profiles_init() click to toggle source
# File lib/openscap/xccdf/benchmark.rb, line 47
def profiles_init
  profiles = {}
  profit = OpenSCAP.xccdf_benchmark_get_profiles raw
  while OpenSCAP.xccdf_profile_iterator_has_more profit
    profile_p = OpenSCAP.xccdf_profile_iterator_next profit
    profile = OpenSCAP::Xccdf::Profile.new profile_p
    profiles[profile.id] = profile
  end
  OpenSCAP.xccdf_profile_iterator_free profit
  profiles
end