Permalink
Browse files

Adding config provider for configfile format

  • Loading branch information...
1 parent a1499b3 commit 1855a84832c48082957805e846f1ff2e35a0cd61 @derekhiggins derekhiggins committed with root Apr 17, 2012
Showing with 46 additions and 0 deletions.
  1. +2 −0 lib/puppet/provider/nova_config/parsed.rb
  2. +44 −0 lib/puppet/provider/nova_config/parsed_config.rb
@@ -9,6 +9,8 @@
:filetype => :flat
) do
+ confine :operatingsystem => [:debian, :ubuntu]
+
#confine :exists => novaconf
text_line :comment, :match => /^\s*#/;
text_line :blank, :match => /^\s*$/;
@@ -0,0 +1,44 @@
+require 'puppet/provider/parsedfile'
+
+novaconf = "/etc/nova/nova.conf"
+
+Puppet::Type.type(:nova_config).provide(
+ :configfile,
+ :parent => Puppet::Provider::ParsedFile,
+ :default_target => novaconf,
+ :filetype => :flat
+) do
+
+ confine :operatingsystem => [:fedora, :redhat, :centos]
+
+ #confine :exists => novaconf
+ text_line :comment, :match => /#|\[.*/;
+ text_line :blank, :match => /^\s*$/;
+
+ record_line :parsed,
+ :fields => %w{line},
+ :match => /(.*)/ ,
+ :post_parse => proc { |hash|
+ Puppet.debug("nova config line:#{hash[:line]} has been parsed")
+ if hash[:line] =~ /^\s*(\S+)\s*=\s*([\S ]+?)\s*$/
+ hash[:name]=$1
+ hash[:value]=$2
+ elsif hash[:line] =~ /^\s*(\S+)\s*$/
+ hash[:name]=$1
+ hash[:value]=false
+ else
+ raise Puppet::Error, "Invalid line: #{hash[:line]}"
+ end
+ }
+
+ def self.to_line(hash)
+ if hash[:name] and hash[:value]
+ "#{hash[:name]}=#{hash[:value]}"
+ end
+ end
+
+ def self.header
+ "# Auto Genarated Nova Config File\n[DEFAULT]\n"
+ end
+
+end

0 comments on commit 1855a84

Please sign in to comment.