class Specinfra::HostInventory::ParserFactory
Public Class Methods
instance()
click to toggle source
# File lib/koma/ext/specinfra/host_inventory/parser_factory.rb, line 4 def self.instance self.new(os) end
new(os_info)
click to toggle source
# File lib/koma/ext/specinfra/host_inventory/parser_factory.rb, line 8 def initialize(os_info) @os_info = os_info end
Public Instance Methods
get(resource_type)
click to toggle source
# File lib/koma/ext/specinfra/host_inventory/parser_factory.rb, line 12 def get(resource_type) create_parser_class(resource_type) end
Private Instance Methods
create_parser_class(resource_type)
click to toggle source
# File lib/koma/ext/specinfra/host_inventory/parser_factory.rb, line 18 def create_parser_class(resource_type) family = @os_info[:family] version = @os_info[:release] ? "V#{@os_info[:release].to_i}" : nil common_class = Specinfra::HostInventory::Parser base_class = common_class.const_get('Base') begin os_class = family.nil? ? base_class : common_class.const_get(family.capitalize) rescue parser_class = base_class.const_get(resource_type.to_camel_case) return parser_class.create(Specinfra.backend) end if family && version begin version_class = os_class.const_get(version) rescue version_class = os_class.const_get('Base') end elsif family.nil? version_class = os_class elsif family != 'base' && version.nil? version_class = os_class.const_get('Base') end begin parser_class = version_class.const_get(resource_type.to_camel_case) rescue version_class = os_class.const_get('Base') parser_class = version_class.const_get(resource_type.to_camel_case) end parser_class.create(Specinfra.backend) end