def foreman_operatingsystem(options = {})
@operatingsystems ||= {}
if options[:name]
return nil if options[:name].nil? || options[:name].empty?
options[:id] = @operatingsystems[options[:name]]
if !options[:id]
(osname, major, minor) = split_os_name(options[:name])
search = "name=\"#{osname}\" and major=\"#{major}\" and minor=\"#{minor}\""
operatingsystems = @api.resource(:operatingsystems).call(:index, {
:per_page => 999999,
'search' => search
})['results']
operatingsystem = operatingsystems[0]
raise "Operating system '#{options[:name]}' not found" if !operatingsystem || operatingsystem.empty?
options[:id] = operatingsystem['id']
@operatingsystems[options[:name]] = options[:id]
end
result = options[:id]
else
return nil if options[:id].nil?
options[:name] = @operatingsystems.key(options[:id])
if !options[:name]
operatingsystem = @api.resource(:operatingsystems).call(:show, {'id' => options[:id]})
raise "Operating system 'id=#{options[:id]}' not found" if !operatingsystem || operatingsystem.empty?
options[:name] = build_os_name(operatingsystem['name'],
operatingsystem['major'],
operatingsystem['minor'])
@operatingsystems[options[:name]] = options[:id]
end
result = options[:name]
end
result
end