From f3883f13d3df36389112f3f33d438f36a2c347e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Fri, 5 Nov 2021 16:25:36 +0100 Subject: Setup syslinux. --- modules/syslinux/lib/facter/blkid.rb | 17 +++++++++++++++++ modules/syslinux/lib/facter/efibootmgr.rb | 19 +++++++++++++++++++ modules/syslinux/lib/facter/partid.rb | 16 ++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 modules/syslinux/lib/facter/blkid.rb create mode 100644 modules/syslinux/lib/facter/efibootmgr.rb create mode 100644 modules/syslinux/lib/facter/partid.rb (limited to 'modules/syslinux/lib/facter') diff --git a/modules/syslinux/lib/facter/blkid.rb b/modules/syslinux/lib/facter/blkid.rb new file mode 100644 index 0000000..79c6135 --- /dev/null +++ b/modules/syslinux/lib/facter/blkid.rb @@ -0,0 +1,17 @@ +Facter.add('blkid') do + setcode do + lines = Facter::Core::Execution.execute('blkid').split("\n") + out = {} + lines.each do |line| + a = line.match(/^([^:]*): (.*)/) + d = {} + a[2].split(' ').each do |pair| + m = pair.match(/(\w*)="(([^"]|\\")*)"/) + d[m[1]] = m[2] + end + out[a[1]] = d + end + out + end +end + diff --git a/modules/syslinux/lib/facter/efibootmgr.rb b/modules/syslinux/lib/facter/efibootmgr.rb new file mode 100644 index 0000000..fdf95e0 --- /dev/null +++ b/modules/syslinux/lib/facter/efibootmgr.rb @@ -0,0 +1,19 @@ +Facter.add('efi') do + setcode do + out = {} + data = Facter::Core::Execution.execute('efibootmgr') + boots = {} + data.split("\n").each do |item| + if a = item.match(/BootOrder: (.*)/) then + out['BootOrder'] = a[1].split(',') + elsif a = item.match(/(\w*): (.*)/) then + out[a[1]] = a[2] + elsif a = item.match(/Boot(\d*)(\*?) (.*)/) + # a[2] contains if it's active + boots[a[1]] = a[3] + end + end + out['boots'] = boots + out + end +end diff --git a/modules/syslinux/lib/facter/partid.rb b/modules/syslinux/lib/facter/partid.rb new file mode 100644 index 0000000..53fc37c --- /dev/null +++ b/modules/syslinux/lib/facter/partid.rb @@ -0,0 +1,16 @@ +Facter.add('partinfo') do + setcode do + obj = {} + Dir.entries('/sys/class/block/').each do |entry| + if entry == '.' or entry == '..' then next end + path = "/sys/class/block/#{entry}/partition" + if File.file?(path) then + obj[entry] = { + 'partid' => File.read(path).strip(), + 'device' => File.basename(File.dirname(File.readlink("/sys/class/block/#{entry}"))), + } + end + end + obj + end +end -- cgit v1.2.3