Class: Puppet::Resource::TypeCollection
Instance Attribute Summary collapse
Instance Method Summary
collapse
clear_warnings, debug_once, notice_once, warnonce
Constructor Details
Returns a new instance of TypeCollection.
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/puppet/resource/type_collection.rb', line 21
def initialize(env)
@environment = env
@hostclasses = {}
@definitions = {}
@capability_mappings = {}
@applications = {}
@nodes = {}
@notfound = {}
@sites = []
@node_list = []
end
|
Instance Attribute Details
#environment ⇒ Object
6
7
8
|
# File 'lib/puppet/resource/type_collection.rb', line 6
def environment
@environment
end
|
#parse_failed ⇒ Object
7
8
9
|
# File 'lib/puppet/resource/type_collection.rb', line 7
def parse_failed
@parse_failed
end
|
Instance Method Details
#<<(thing) ⇒ Object
52
53
54
55
|
# File 'lib/puppet/resource/type_collection.rb', line 52
def <<(thing)
add(thing)
self
end
|
#add(instance) ⇒ Object
57
58
59
60
61
62
63
64
|
# File 'lib/puppet/resource/type_collection.rb', line 57
def add(instance)
result = catch(:merged) {
send("add_#{instance.type}", instance)
instance.resource_type_collection = self
instance
}
end
|
#add_application(instance) ⇒ Object
156
157
158
159
160
161
|
# File 'lib/puppet/resource/type_collection.rb', line 156
def add_application(instance)
dupe_check(instance, @hostclasses) { |dupe| "'#{instance.name}' is already defined#{dupe.error_context} as a class; cannot redefine as an application" }
dupe_check(instance, @definitions) { |dupe| "'#{instance.name}' is already defined#{dupe.error_context} as a definition; cannot redefine as an application" }
dupe_check(instance, @applications) { |dupe| "'#{instance.name}' is already defined#{dupe.error_context} as an application; cannot be redefined" }
@applications[instance.name] = instance
end
|
#add_capability_mapping(instance) ⇒ Object
147
148
149
150
|
# File 'lib/puppet/resource/type_collection.rb', line 147
def add_capability_mapping(instance)
dupe_check(instance, @capability_mappings) { |dupe| "'#{instance.name}' is already defined#{dupe.error_context} as a class; cannot redefine as a mapping" }
@capability_mappings[instance.name] = instance
end
|
#add_definition(instance) ⇒ Object
140
141
142
143
144
145
|
# File 'lib/puppet/resource/type_collection.rb', line 140
def add_definition(instance)
dupe_check(instance, @hostclasses) { |dupe| "'#{instance.name}' is already defined#{dupe.error_context} as a class; cannot redefine as a definition" }
dupe_check(instance, @definitions) { |dupe| "Definition '#{instance.name}' is already defined#{dupe.error_context}; cannot be redefined" }
dupe_check(instance, @applications) { |dupe| "'#{instance.name}' is already defined#{dupe.error_context} as an application; cannot be redefined" }
@definitions[instance.name] = instance
end
|
#add_hostclass(instance) ⇒ Object
66
67
68
69
70
71
72
73
74
|
# File 'lib/puppet/resource/type_collection.rb', line 66
def add_hostclass(instance)
handle_hostclass_merge(instance)
dupe_check(instance, @hostclasses) { |dupe| "Class '#{instance.name}' is already defined#{dupe.error_context}; cannot redefine" }
dupe_check(instance, @definitions) { |dupe| "Definition '#{instance.name}' is already defined#{dupe.error_context}; cannot be redefined as a class" }
dupe_check(instance, @applications) { |dupe| "Application '#{instance.name}' is already defined#{dupe.error_context}; cannot be redefined as a class" }
@hostclasses[instance.name] = instance
instance
end
|
#add_node(instance) ⇒ Object
96
97
98
99
100
101
102
|
# File 'lib/puppet/resource/type_collection.rb', line 96
def add_node(instance)
dupe_check(instance, @nodes) { |dupe| "Node '#{instance.name}' is already defined#{dupe.error_context}; cannot redefine" }
@node_list << instance
@nodes[instance.name] = instance
instance
end
|
#add_site(instance) ⇒ Object
104
105
106
107
108
|
# File 'lib/puppet/resource/type_collection.rb', line 104
def add_site(instance)
dupe_check_singleton(instance, @sites) { |dupe| "Site is already defined#{dupe.error_context}; cannot redefine" }
@sites << instance
instance
end
|
#application(name) ⇒ Object
163
164
165
|
# File 'lib/puppet/resource/type_collection.rb', line 163
def application(name)
@applications[munge_name(name)]
end
|
11
12
13
14
15
16
17
18
19
|
# File 'lib/puppet/resource/type_collection.rb', line 11
def clear
@hostclasses.clear
@definitions.clear
@applications.clear
@nodes.clear
@notfound.clear
@capability_mappings.clear
@sites.clear
end
|
#definition(name) ⇒ Object
152
153
154
|
# File 'lib/puppet/resource/type_collection.rb', line 152
def definition(name)
@definitions[munge_name(name)]
end
|
#find_application(name) ⇒ Object
183
184
185
|
# File 'lib/puppet/resource/type_collection.rb', line 183
def find_application(name)
find_or_load(name, :application)
end
|
#find_definition(name) ⇒ Object
179
180
181
|
# File 'lib/puppet/resource/type_collection.rb', line 179
def find_definition(name)
find_or_load(name, :definition)
end
|
#find_hostclass(name) ⇒ Object
175
176
177
|
# File 'lib/puppet/resource/type_collection.rb', line 175
def find_hostclass(name)
find_or_load(name, :hostclass)
end
|
#find_node(name) ⇒ Object
167
168
169
|
# File 'lib/puppet/resource/type_collection.rb', line 167
def find_node(name)
@nodes[munge_name(name)]
end
|
#find_site ⇒ Object
171
172
173
|
# File 'lib/puppet/resource/type_collection.rb', line 171
def find_site()
@sites[0]
end
|
#handle_hostclass_merge(instance) ⇒ Object
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/puppet/resource/type_collection.rb', line 76
def handle_hostclass_merge(instance)
if instance.type == :hostclass && (other = @hostclasses[instance.name]) && other.type == :hostclass
unless instance.name == ''
case Puppet[:strict]
when :warning
Puppet.warning("Class '#{instance.name}' is already defined#{other.error_context}; cannot redefine at #{instance.file}:#{instance.line}")
when :error
return instance
end
end
other.merge(instance)
throw :merged, other
end
end
|
#hostclass(name) ⇒ Object
92
93
94
|
# File 'lib/puppet/resource/type_collection.rb', line 92
def hostclass(name)
@hostclasses[munge_name(name)]
end
|
#import_ast(ast, modname) ⇒ Object
35
36
37
38
39
|
# File 'lib/puppet/resource/type_collection.rb', line 35
def import_ast(ast, modname)
ast.instantiate(modname).each do |instance|
add(instance)
end
end
|
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/puppet/resource/type_collection.rb', line 41
def inspect
"TypeCollection" + {
:hostclasses => @hostclasses.keys,
:definitions => @definitions.keys,
:nodes => @nodes.keys,
:capability_mappings => @capability_mappings.keys,
:applications => @applications.keys,
:site => @sites[0] }.inspect
end
|
114
115
116
|
# File 'lib/puppet/resource/type_collection.rb', line 114
def loader
@loader ||= Puppet::Parser::TypeLoader.new(environment)
end
|
#node(name) ⇒ Object
118
119
120
121
122
123
124
125
126
127
128
129
130
|
# File 'lib/puppet/resource/type_collection.rb', line 118
def node(name)
name = munge_name(name)
if node = @nodes[name]
return node
end
@node_list.each do |n|
next unless n.name_is_regex?
return n if n.match(name)
end
nil
end
|
#node_exists?(name) ⇒ Boolean
132
133
134
|
# File 'lib/puppet/resource/type_collection.rb', line 132
def node_exists?(name)
@nodes[munge_name(name)]
end
|
#nodes? ⇒ Boolean
136
137
138
|
# File 'lib/puppet/resource/type_collection.rb', line 136
def nodes?
@nodes.length > 0
end
|
#parse_failed? ⇒ Boolean
196
197
198
|
# File 'lib/puppet/resource/type_collection.rb', line 196
def parse_failed?
@parse_failed
end
|
110
111
112
|
# File 'lib/puppet/resource/type_collection.rb', line 110
def site(_)
@sites[0]
end
|
200
201
202
203
204
205
206
207
208
209
210
211
212
|
# File 'lib/puppet/resource/type_collection.rb', line 200
def version
if !defined?(@version)
if environment.config_version.nil? || environment.config_version == ""
@version = Time.now.to_i
else
@version = Puppet::Util::Execution.execute([environment.config_version]).strip
end
end
@version
rescue Puppet::ExecutionFailure => e
raise Puppet::ParseError, "Execution of config_version command `#{environment.config_version}` failed: #{e.message}", e.backtrace
end
|