| Class | BoxGrinder::AugeasHelper |
| In: |
lib/boxgrinder-build/helpers/augeas-helper.rb
lib/boxgrinder-build/helpers/augeas-helper.rb |
| Parent: | Object |
# File lib/boxgrinder-build/helpers/augeas-helper.rb, line 23
23: def initialize(guestfs, guestfs_helper, options = {})
24: @guestfs = guestfs
25: @guestfs_helper = guestfs_helper
26: @log = options[:log] || LogHelper.new
27:
28: @files = {}
29: end
# File lib/boxgrinder-build/helpers/augeas-helper.rb, line 23
23: def initialize(guestfs, guestfs_helper, options = {})
24: @guestfs = guestfs
25: @guestfs_helper = guestfs_helper
26: @log = options[:log] || LogHelper.new
27:
28: @files = {}
29: end
# File lib/boxgrinder-build/helpers/augeas-helper.rb, line 31
31: def edit(&block)
32: @log.debug "Changing configuration files using augeas..."
33:
34: instance_eval &block if block
35:
36: if @files.empty?
37: @log.debug "No files specified to change, skipping..."
38: return
39: end
40:
41: if @guestfs.debug("help", []).include?('core_pattern')
42: @log.trace "Enabling coredump catching for augeas..."
43: @guestfs.debug("core_pattern", ["/sysroot/core"])
44: end
45:
46: @guestfs.aug_init("/", 32)
47:
48: unload = []
49:
50: @files.keys.each do |file_name|
51: unload << ". != '#{file_name}'"
52: end
53:
54: @guestfs.aug_rm("/augeas/load//incl[#{unload.join(' and ')}]")
55: @guestfs.aug_load
56:
57: @files.each do |file, changes|
58: changes.each do |key, value|
59:
60: @guestfs.aug_set("/files#{file}/#{key}", value)
61: end
62: end
63:
64: @guestfs.aug_save
65: @guestfs.aug_close
66:
67: @log.debug "Augeas changes saved."
68: end
# File lib/boxgrinder-build/helpers/augeas-helper.rb, line 31
31: def edit(&block)
32: @log.debug "Changing configuration files using augeas..."
33:
34: instance_eval &block if block
35:
36: if @files.empty?
37: @log.debug "No files specified to change, skipping..."
38: return
39: end
40:
41: if @guestfs.debug("help", []).include?('core_pattern')
42: @log.trace "Enabling coredump catching for augeas..."
43: @guestfs.debug("core_pattern", ["/sysroot/core"])
44: end
45:
46: @guestfs.aug_init("/", 32)
47:
48: unload = []
49:
50: @files.keys.each do |file_name|
51: unload << ". != '#{file_name}'"
52: end
53:
54: @guestfs.aug_rm("/augeas/load//incl[#{unload.join(' and ')}]")
55: @guestfs.aug_load
56:
57: @files.each do |file, changes|
58: changes.each do |key, value|
59:
60: @guestfs.aug_set("/files#{file}/#{key}", value)
61: end
62: end
63:
64: @guestfs.aug_save
65: @guestfs.aug_close
66:
67: @log.debug "Augeas changes saved."
68: end
# File lib/boxgrinder-build/helpers/augeas-helper.rb, line 70
70: def set(name, key, value)
71: unless @guestfs.exists(name) != 0
72: @log.debug "File '#{name}' doesn't exists, skipping augeas changes..."
73: return
74: end
75:
76: @files[name] = {} unless @files.has_key?(name)
77: @files[name][key] = value
78: end
# File lib/boxgrinder-build/helpers/augeas-helper.rb, line 70
70: def set(name, key, value)
71: unless @guestfs.exists(name) != 0
72: @log.debug "File '#{name}' doesn't exists, skipping augeas changes..."
73: return
74: end
75:
76: @files[name] = {} unless @files.has_key?(name)
77: @files[name][key] = value
78: end