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
65
66
|
# File 'lib/puppet/resource/type_collection.rb', line 57
def add(instance)
if instance.type == :hostclass and other = @hostclasses[instance.name] and other.type == :hostclass
other.merge(instance)
return other
end
method = "add_#{instance.type}"
send(method, instance)
instance.resource_type_collection = self
instance
end
|
#add_application(instance) ⇒ Object
141
142
143
144
145
146
|
# File 'lib/puppet/resource/type_collection.rb', line 141
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
132
133
134
135
|
# File 'lib/puppet/resource/type_collection.rb', line 132
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
125
126
127
128
129
130
|
# File 'lib/puppet/resource/type_collection.rb', line 125
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
68
69
70
71
72
73
74
75
|
# File 'lib/puppet/resource/type_collection.rb', line 68
def add_hostclass(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
81
82
83
84
85
86
87
|
# File 'lib/puppet/resource/type_collection.rb', line 81
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
89
90
91
92
93
|
# File 'lib/puppet/resource/type_collection.rb', line 89
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
148
149
150
|
# File 'lib/puppet/resource/type_collection.rb', line 148
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
137
138
139
|
# File 'lib/puppet/resource/type_collection.rb', line 137
def definition(name)
@definitions[munge_name(name)]
end
|
#find_application(name) ⇒ Object
168
169
170
|
# File 'lib/puppet/resource/type_collection.rb', line 168
def find_application(name)
find_or_load(name, :application)
end
|
#find_definition(name) ⇒ Object
164
165
166
|
# File 'lib/puppet/resource/type_collection.rb', line 164
def find_definition(name)
find_or_load(name, :definition)
end
|
#find_hostclass(name) ⇒ Object
160
161
162
|
# File 'lib/puppet/resource/type_collection.rb', line 160
def find_hostclass(name)
find_or_load(name, :hostclass)
end
|
#find_node(name) ⇒ Object
152
153
154
|
# File 'lib/puppet/resource/type_collection.rb', line 152
def find_node(name)
@nodes[munge_name(name)]
end
|
#find_site ⇒ Object
156
157
158
|
# File 'lib/puppet/resource/type_collection.rb', line 156
def find_site()
@sites[0]
end
|
#hostclass(name) ⇒ Object
77
78
79
|
# File 'lib/puppet/resource/type_collection.rb', line 77
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
|
99
100
101
|
# File 'lib/puppet/resource/type_collection.rb', line 99
def loader
@loader ||= Puppet::Parser::TypeLoader.new(environment)
end
|
#node(name) ⇒ Object
103
104
105
106
107
108
109
110
111
112
113
114
115
|
# File 'lib/puppet/resource/type_collection.rb', line 103
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
117
118
119
|
# File 'lib/puppet/resource/type_collection.rb', line 117
def node_exists?(name)
@nodes[munge_name(name)]
end
|
#nodes? ⇒ Boolean
121
122
123
|
# File 'lib/puppet/resource/type_collection.rb', line 121
def nodes?
@nodes.length > 0
end
|
#parse_failed? ⇒ Boolean
181
182
183
|
# File 'lib/puppet/resource/type_collection.rb', line 181
def parse_failed?
@parse_failed
end
|
95
96
97
|
# File 'lib/puppet/resource/type_collection.rb', line 95
def site(_)
@sites[0]
end
|
185
186
187
188
189
190
191
192
193
194
195
196
197
|
# File 'lib/puppet/resource/type_collection.rb', line 185
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
|