Sha256: 72a25b9b6d65ffba0d8d94aebb1c5fd07a7746e3c7cc90ae420f93e7f11f489d

Contents?: true

Size: 1.44 KB

Versions: 9

Compression:

Stored size: 1.44 KB

Contents

require 'util/miq-xml'
require 'util/miq-logger'

class ScanProfilesBase
  def self.get_class(type, from)
    k = from.instance_variable_get("@scan_#{type}_class")
    return k unless k.nil?

    k = "#{from.name.underscore.split('_')[0..-2].join('_').camelize}#{type.camelize}"
    require "metadata/ScanProfile/#{k}"
    from.instance_variable_set("@scan_#{type}_class", Object.const_get(k))
  end

  def self.scan_item_class;     get_class('item',    self); end

  def self.scan_profile_class;  get_class('profile', self); end

  def self.scan_profiles_class; self; end

  include Enumerable

  attr_accessor :profiles

  def initialize(dataHash, options = {})
    @params = dataHash
    @options = options
    @xml_class = @options[:xml_class] || XmlHash::Document
    @profiles = @params.nil? ? [] : @params.collect { |p| self.class.scan_profile_class.new(p, @options) }
  end

  def each
    profiles.each { |p| yield p }
  end

  def each_scan_definition(type = nil, &blk)
    profiles.each { |p| p.each_scan_definition(type, &blk) }
  end

  def each_scan_item(type = nil, &blk)
    profiles.each { |p| p.each_scan_item(type, &blk) }
  end

  def parse_data(obj, data, &blk)
    each_scan_item { |si| si.parse_data(obj, data, &blk) }
  end

  def to_xml
    xml = @xml_class.createDoc("<scan_profiles/>")
    each { |p| xml.root << p.to_xml }
    xml
  end

  def to_hash
    {:scan_profiles => collect(&:to_hash)}
  end

  def to_yaml
    YAML.dump(to_hash)
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
manageiq-smartstate-0.2.1 lib/metadata/ScanProfile/ScanProfilesBase.rb
manageiq-smartstate-0.2.0 lib/metadata/ScanProfile/ScanProfilesBase.rb
manageiq-smartstate-0.1.6 lib/metadata/ScanProfile/ScanProfilesBase.rb
manageiq-smartstate-0.1.5 lib/metadata/ScanProfile/ScanProfilesBase.rb
manageiq-smartstate-0.1.4 lib/metadata/ScanProfile/ScanProfilesBase.rb
manageiq-smartstate-0.1.3 lib/metadata/ScanProfile/ScanProfilesBase.rb
manageiq-smartstate-0.1.2 lib/metadata/ScanProfile/ScanProfilesBase.rb
manageiq-smartstate-0.1.1 lib/metadata/ScanProfile/ScanProfilesBase.rb
manageiq-smartstate-0.1.0 lib/metadata/ScanProfile/ScanProfilesBase.rb