Class: Chef::Resource::File::Verification::SystemdUnit

Inherits:
Chef::Resource::File::Verification show all
Includes:
Mixin::Which
Defined in:
lib/chef/resource/file/verification/systemd_unit.rb

Overview

Systemd provides a binary for verifying the correctness of unit files. Unfortunately some units have constraints on the filename meaning that normal verification against temp files won't work.

Working around that requires placing a copy of the temp file in a temp directory, under its real name and running the verification tool against that file.

Instance Method Summary collapse

Methods included from Mixin::Which

#where, #which

Methods inherited from Chef::Resource::File::Verification

lookup, provides, provides?, #verify_block, #verify_command, #verify_registered_verification

Methods included from Mixin::DescendantsTracker

#descendants, descendants, #direct_descendants, direct_descendants, #find_descendants_by_name, find_descendants_by_name, #inherited, store_inherited

Constructor Details

#initialize(parent_resource, command, opts, &block) ⇒ SystemdUnit

Returns a new instance of SystemdUnit


42
43
44
45
# File 'lib/chef/resource/file/verification/systemd_unit.rb', line 42

def initialize(parent_resource, command, opts, &block)
  super
  @command = systemd_analyze_cmd
end

Instance Method Details

#systemd_analyze_cmdObject


56
57
58
# File 'lib/chef/resource/file/verification/systemd_unit.rb', line 56

def systemd_analyze_cmd
  @systemd_analyze_cmd ||= "#{systemd_analyze_path} verify %{path}"
end

#systemd_analyze_pathObject


60
61
62
# File 'lib/chef/resource/file/verification/systemd_unit.rb', line 60

def systemd_analyze_path
  @systemd_analyze_path ||= which("systemd-analyze")
end

#verify(path, opts = {}) ⇒ Object


47
48
49
50
51
52
53
54
# File 'lib/chef/resource/file/verification/systemd_unit.rb', line 47

def verify(path, opts = {})
  return true unless systemd_analyze_path
  Dir.mktmpdir("chef-systemd-unit") do |dir|
    temp = "#{dir}/#{::File.basename(@parent_resource.path)}"
    ::FileUtils.cp(path, temp)
    verify_command(temp, opts)
  end
end