I'm working on a type/provider for the eucalyptus.conf file. What I
have generally works for modifying properties. I have a couple of
issues and not being very experienced with Ruby and custom providers,
I wonder if anyone can help?
The code is included below. The key/value constructs in the file look like:

key="value"

1. I'm not getting the quotes surrounding the value, which I think I
can figure out myself.
2. I get all blanks and comments replaced by "=", which is more of a problem.

David


require 'puppet/provider/parsedfile'

eucaconf = "/etc/eucalyptus/eucalyptus.conf"

Puppet::Type.type(:eucalyptus_config).provide(
  :parsed,
  :parent => Puppet::Provider::ParsedFile,
  :default_target => eucaconf,
  :filetype => :flat
) do

  confine :exists => eucaconf
  text_line :comment, :match => /^#/;
  text_line :blank, :match => /^\s*$/;

  record_line :parsed,
    :fields => %w{line},
    :match => /(.*)/ ,
    :post_parse => proc { |hash|
      Puppet.debug("eucalyptus 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)
    "#{hash[:name]}=#{hash[:value]}"
  end

end

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to