Class: AugeasProviders::Mounttab::Fstab

Inherits:
Object
  • Object
show all
Includes:
Provider
Defined in:
lib/augeasproviders/mounttab/fstab.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Methods included from Provider

#aug_handler, #aug_version, #augclose!, #augopen, #augopen!, #augsave!, #destroy, #exists?, #flush, included, #parsed_as?, #path_label, #quoteit, #readquote, #resource_path, #setvars, #supported?, #target, #unquoteit

Instance Attribute Details

#resourceObject (readonly)

Returns the value of attribute resource.



17
18
19
# File 'lib/augeasproviders/mounttab/fstab.rb', line 17

def resource
  @resource
end

Class Method Details

.atboot(aug, resource) ⇒ Object



115
116
117
# File 'lib/augeasproviders/mounttab/fstab.rb', line 115

def self.atboot(aug, resource)
  resource.should(:atboot)
end

.create(aug, resource) ⇒ Object



50
51
52
53
54
55
56
57
# File 'lib/augeasproviders/mounttab/fstab.rb', line 50

def self.create(aug, resource)
  aug.set("$target/01/spec", resource[:device])
  aug.set("$target/01/file", resource[:name])
  aug.set("$target/01/vfstype", resource[:fstype])
  insoptions(aug, "$target/01", resource)
  aug.set("$target/01/dump", resource[:dump].to_s)
  aug.set("$target/01/passno", resource[:pass].to_s)
end

.default_fileObject



19
20
21
# File 'lib/augeasproviders/mounttab/fstab.rb', line 19

def self.default_file
  '/etc/fstab'
end

.dump(aug, resource) ⇒ Object



82
83
84
# File 'lib/augeasproviders/mounttab/fstab.rb', line 82

def self.dump(aug, resource)
  aug.get("$target/*[file = '#{resource[:name]}']/dump")
end

.empty_optionsObject



123
124
125
# File 'lib/augeasproviders/mounttab/fstab.rb', line 123

def self.empty_options
  ['', 'defaults']
end

.get_resource(aug, mpath, target) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/augeasproviders/mounttab/fstab.rb', line 27

def self.get_resource(aug, mpath, target)
  entry = {
    :ensure => :present,
    :target => target
  }
  return nil unless entry[:name] = aug.get("#{mpath}/file")
  entry[:device] = aug.get("#{mpath}/spec")
  entry[:fstype] = aug.get("#{mpath}/vfstype")

  options = []
  aug.match("#{mpath}/opt").each do |opath|
    opt = aug.get(opath)
    optv = aug.get("#{opath}/value")
    opt = "#{opt}=#{optv}" if optv
    options << opt
  end
  entry[:options] = options
  entry[:pass] = aug.get("#{mpath}/passno") if aug.match("#{mpath}/passno")
  entry[:dump] = aug.get("#{mpath}/dump") if aug.match("#{mpath}/dump")

  entry
end

.insoptions(aug, entry, resource) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/augeasproviders/mounttab/fstab.rb', line 59

def self.insoptions(aug, entry, resource)
  # Options are defined as a list property, so they get joined with commas.
  # Since Augeas understands elements, access the original array or string.
  values = resource.original_parameters[:options]

  aug.rm("#{entry}/opt")
  insafter = "vfstype"
  if values and not values.empty?
    [values].flatten.each do |opt|
      optk, optv = opt.split("=", 2)
      aug.insert("#{entry}/#{insafter}", "opt", false)
      aug.set("#{entry}/opt[last()]", optk)
      aug.set("#{entry}/opt[last()]/value", optv) if optv
      insafter = "opt[last()]"
    end
  else
    # Strictly this is optional, but only Augeas > 0.10.0 has a lens that
    # knows this is the case, so always fill it in.
    aug.insert("#{entry}/#{insafter}", "opt", false)
    aug.set("#{entry}/opt", "defaults")
  end
end

.lensObject



23
24
25
# File 'lib/augeasproviders/mounttab/fstab.rb', line 23

def self.lens
  'Fstab.lns'
end

.pass(aug, resource) ⇒ Object



96
97
98
# File 'lib/augeasproviders/mounttab/fstab.rb', line 96

def self.pass(aug, resource)
  aug.get("$target/*[file = '#{resource[:name]}']/passno")
end

.set_atboot(aug, resource, value) ⇒ Object



119
120
121
# File 'lib/augeasproviders/mounttab/fstab.rb', line 119

def self.set_atboot(aug, resource, value)
  return
end

.set_dump(aug, resource, value) ⇒ Object



86
87
88
89
90
91
92
93
94
# File 'lib/augeasproviders/mounttab/fstab.rb', line 86

def self.set_dump(aug, resource, value)
  # Ensure "defaults" option is always set if dump is being set, as the
  # opts field is optional
  if aug.match("$target/*[file = '#{resource[:name]}']/opt").empty?
    aug.set("$target/*[file = '#{resource[:name]}']/opt", "defaults")
  end

  aug.set("$target/*[file = '#{resource[:name]}']/dump", value.to_s)
end

.set_pass(aug, resource, value) ⇒ Object



100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/augeasproviders/mounttab/fstab.rb', line 100

def self.set_pass(aug, resource, value)
  # Ensure "defaults" option is always set if passno is being set, as the
  # opts field is optional
  if aug.match("$target/*[file = '#{resource[:name]}']/opt").empty?
    aug.set("$target/*[file = '#{resource[:name]}']/opt", "defaults")
  end

  # Ensure dump is always set too
  if aug.match("$target/*[file = '#{resource[:name]}']/dump").empty?
    aug.set("$target/*[file = '#{resource[:name]}']/dump", "0")
  end

  aug.set("$target/*[file = '#{resource[:name]}']/passno", value.to_s)
end