Class: PuppetBox::NodeSet
- Inherits:
-
Object
- Object
- PuppetBox::NodeSet
- Defined in:
- lib/puppetbox/nodeset.rb
Constant Summary collapse
- NODESET_FILE =
"spec/acceptance/nodesets/puppetbox.yaml"
- VERSION_KEY =
"puppetbox_nodeset"
- UNDERSTANDS_VERSION =
[1]
- REQUIRED_KEYS =
["config", "driver"]
- NODE_ELEMENT =
"nodes"
Instance Method Summary collapse
- #get_node(node_name) ⇒ Object
- #has_node?(node_name) ⇒ Boolean
-
#initialize(nodeset_file = nil) ⇒ NodeSet
constructor
A new instance of NodeSet.
Constructor Details
#initialize(nodeset_file = nil) ⇒ NodeSet
Returns a new instance of NodeSet.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/puppetbox/nodeset.rb', line 11 def initialize(nodeset_file=nil) @nodeset_file = nodeset_file || NODESET_FILE # parse the yaml file and simplify to human readable errors begin @nodeset = YAML.load(IO.read(@nodeset_file)) rescue Errno::ENOENT raise "File not found: #{@nodeset_file}" rescue Psych::SyntaxError raise "Syntax error reading #{@nodeset_file}" end if @nodeset.has_key?(VERSION_KEY) if UNDERSTANDS_VERSION.include?(@nodeset[VERSION_KEY]) if @nodeset.has_key?(NODE_ELEMENT) hosts = @nodeset[NODE_ELEMENT] hosts.each { |node_name, data| # check each node has required keys REQUIRED_KEYS.each { |required_key| if ! data.has_key?(required_key) raise "Nodeset file #{@nodeset_file} missing required key #{required_key} for node #{node_name}" end } } else raise "Nodeset file #{@nodeset_file} missing root element `nodes`" end else raise "Nodeset file format is #{@nodeset[VERSION_KEY]} but PuppetBox only supports versions #{UNDERSTANDS_VERSION}" end else raise "Nodeset file #{@nodeset_file} does not contain #{VERSION_KEY} - check syntax" end end |
Instance Method Details
#get_node(node_name) ⇒ Object
50 51 52 53 54 55 56 |
# File 'lib/puppetbox/nodeset.rb', line 50 def get_node(node_name) if has_node?(node_name) @nodeset[NODE_ELEMENT][node_name] else raise "Node #{node_name} is not defined in nodset file: #{@nodeset_file}" end end |
#has_node?(node_name) ⇒ Boolean
46 47 48 |
# File 'lib/puppetbox/nodeset.rb', line 46 def has_node?(node_name) @nodeset[NODE_ELEMENT].has_key?(node_name) end |