Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Adding config provider for configfile format

  • Loading branch information...
commit 1855a84832c48082957805e846f1ff2e35a0cd61 1 parent a1499b3
@derekhiggins derekhiggins authored root committed
View
2  lib/puppet/provider/nova_config/parsed.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*$/;
View
44 lib/puppet/provider/nova_config/parsed_config.rb
@@ -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
Please sign in to comment.
Something went wrong with that request. Please try again.