summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPeter Meier <peter.meier@immerda.ch>2012-02-09 15:56:09 +0100
committerPeter Meier <peter.meier@immerda.ch>2012-02-09 15:56:09 +0100
commitfc5cfc8cca2d9650d0b7e1dcafe92bf69aedadf9 (patch)
tree055da1b961bd251965112ceeefbaad160b6374fb /lib
parentd6fdfaba11aeff35604f1d5a917823f145a1cb76 (diff)
implement #11017 - make file_line type ensurable
* Implement a simple destroy method. * Add tests for it * Refactor code, so file is actually read only once. However, due to the nature how provider tests are run, we need to ensure that the file is read before we open it to write it.
Diffstat (limited to 'lib')
-rw-r--r--lib/puppet/provider/file_line/ruby.rb14
-rw-r--r--lib/puppet/type/file_line.rb7
2 files changed, 14 insertions, 7 deletions
diff --git a/lib/puppet/provider/file_line/ruby.rb b/lib/puppet/provider/file_line/ruby.rb
index 63bbd8e..f5d3a32 100644
--- a/lib/puppet/provider/file_line/ruby.rb
+++ b/lib/puppet/provider/file_line/ruby.rb
@@ -1,7 +1,7 @@
Puppet::Type.type(:file_line).provide(:ruby) do
def exists?
- File.readlines(resource[:path]).find do |line|
+ lines.find do |line|
line.chomp == resource[:line].chomp
end
end
@@ -12,4 +12,16 @@ Puppet::Type.type(:file_line).provide(:ruby) do
end
end
+ def destroy
+ local_lines = lines
+ File.open(resource[:path],'w') do |fh|
+ fh.write(local_lines.reject{|l| l.chomp == resource[:line] }.join(''))
+ end
+ end
+
+ private
+ def lines
+ @lines ||= File.readlines(resource[:path])
+ end
+
end
diff --git a/lib/puppet/type/file_line.rb b/lib/puppet/type/file_line.rb
index 8b45897..9f03771 100644
--- a/lib/puppet/type/file_line.rb
+++ b/lib/puppet/type/file_line.rb
@@ -23,12 +23,7 @@ Puppet::Type.newtype(:file_line) do
EOT
- ensurable do
- defaultto :present
- newvalue(:present) do
- provider.create
- end
- end
+ ensurable
newparam(:name, :namevar => true) do
desc 'arbitrary name used as identity'