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
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 |