Class: Puppet::Provider::Nimsoft

Inherits:
Puppet::Provider
  • Object
show all
Defined in:
lib/puppet/provider/nimsoft.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.configObject



11
12
13
# File 'lib/puppet/provider/nimsoft.rb', line 11

def self.config
  @config ||= Puppet::Util::NimsoftConfig.add(@filename)
end

.initvarsObject



15
16
17
18
19
# File 'lib/puppet/provider/nimsoft.rb', line 15

def self.initvars
  @config = nil
  @root = nil
  super
end

.instancesObject



67
68
69
70
71
72
73
74
75
# File 'lib/puppet/provider/nimsoft.rb', line 67

def self.instances
  instances = []
  if root
    instances = root.children.map do |element|
      new(:name => element.name, :ensure => :present, :element => element)
    end
  end
  instances
end

.map_property(property, options = {}, &block) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/puppet/provider/nimsoft.rb', line 29

def self.map_property(property, options = {}, &block)
  section = options[:section]
  attribute = options[:attribute] || property
  symbolize = options[:symbolize]

  define_method(property) do
    if element
      if value = element.path(section)[attribute]
        value = value.empty? ? :absent : value.intern if symbolize
        if block
          block.call(:get, value)
        else
          value
        end
      else
        :absent
      end
    else
      :absent
    end
  end

  define_method("#{property}=".intern) do |new_value|
    if element
      if new_value == :absent
        element.path(section).del_attr attribute
      else
        value = block.nil? ? new_value : block.call(:set, new_value)
        element.path(section)[attribute] = value.to_s
      end
    end
  end
end

.prefetch(resources) ⇒ Object



77
78
79
80
81
82
83
# File 'lib/puppet/provider/nimsoft.rb', line 77

def self.prefetch(resources)
  instances.each do |prov|
    if resource = resources[prov.name]
      resource.provider = prov
    end
  end
end

.register_config(filename, sectionname) ⇒ Object



6
7
8
9
# File 'lib/puppet/provider/nimsoft.rb', line 6

def self.register_config(filename, sectionname)
  @filename = filename
  @sectionname = sectionname
end

.rootObject



21
22
23
24
25
26
27
# File 'lib/puppet/provider/nimsoft.rb', line 21

def self.root
  unless @root
    config.parse unless config.loaded?
    @root = config.path(@sectionname)
  end
  @root
end

Instance Method Details

#createObject



89
90
91
92
93
94
95
96
97
98
99
# File 'lib/puppet/provider/nimsoft.rb', line 89

def create
  @property_hash[:element] = Puppet::Util::NimsoftSection.new(name, self.class.root)
  if self.class.resource_type
    self.class.resource_type.validproperties.sort.each do |attr|
      next if attr == :ensure
      if respond_to?("#{attr}=") and resource[attr]
        send("#{attr}=", resource[attr])
      end
    end
  end
end

#destroyObject



101
102
103
104
105
106
107
# File 'lib/puppet/provider/nimsoft.rb', line 101

def destroy
  @property_hash[:ensure] = :absent
  if @property_hash[:element]
    @property_hash[:element].parent.children.delete element
    @property_hash[:element] = nil
  end
end

#elementObject



63
64
65
# File 'lib/puppet/provider/nimsoft.rb', line 63

def element
  @property_hash[:element]
end

#exists?Boolean

Returns:

  • (Boolean)


85
86
87
# File 'lib/puppet/provider/nimsoft.rb', line 85

def exists?
  get(:ensure) != :absent
end

#flushObject



109
110
111
# File 'lib/puppet/provider/nimsoft.rb', line 109

def flush
  self.class.config.sync
end