summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2007-10-04 16:55:53 -0500
committerLuke Kanies <luke@madstop.com>2007-10-04 16:55:53 -0500
commit95b2b93290f619c20a1c2dca11dd9909477857f8 (patch)
tree203bf772bc5a8450dc05ec445023886a8ccd4f41 /lib
parenta93db8728ddc9a4b26dec738ff39863666ea229e (diff)
parent8ba3a701fdcd11509acc032b0524e2e8c9e6857a (diff)
downloadpuppet-95b2b93290f619c20a1c2dca11dd9909477857f8.tar.gz
puppet-95b2b93290f619c20a1c2dca11dd9909477857f8.tar.xz
puppet-95b2b93290f619c20a1c2dca11dd9909477857f8.zip
Merge branch 'master' of git://michaelobrien.info/puppet
Diffstat (limited to 'lib')
-rw-r--r--lib/puppet/property.rb3
-rwxr-xr-xlib/puppet/provider/package/dpkg.rb9
-rwxr-xr-xlib/puppet/provider/package/sun.rb2
-rw-r--r--lib/puppet/provider/service/freebsd.rb46
4 files changed, 56 insertions, 4 deletions
diff --git a/lib/puppet/property.rb b/lib/puppet/property.rb
index cd3c35b38..84620bfb6 100644
--- a/lib/puppet/property.rb
+++ b/lib/puppet/property.rb
@@ -56,8 +56,7 @@ class Property < Puppet::Parameter
# Look up a value's name, so we can find options and such.
def self.value_name(value)
- name = symbolize(value)
- if @parametervalues[name]
+ if value != '' and name = symbolize(value) and @parametervalues.include?(name)
return name
elsif ary = self.match?(value)
return ary[0]
diff --git a/lib/puppet/provider/package/dpkg.rb b/lib/puppet/provider/package/dpkg.rb
index 44e6a985c..512170a73 100755
--- a/lib/puppet/provider/package/dpkg.rb
+++ b/lib/puppet/provider/package/dpkg.rb
@@ -56,9 +56,18 @@ Puppet::Type.type(:package).provide :dpkg, :parent => Puppet::Provider::Package
dpkg "-i", file
end
+ def update
+ self.install
+ end
+
# Return the version from the package.
def latest
output = dpkg_deb "--show", @resource[:source]
+ matches = /^(\S+)\t(\S+)$/.match(output).captures
+ unless matches[0].match(@resource[:name])
+ Puppet.warning "source doesn't contain named package, but %s" % matches[0]
+ end
+ matches[1]
end
def query
diff --git a/lib/puppet/provider/package/sun.rb b/lib/puppet/provider/package/sun.rb
index e204e6d58..927596df2 100755
--- a/lib/puppet/provider/package/sun.rb
+++ b/lib/puppet/provider/package/sun.rb
@@ -51,8 +51,6 @@ Puppet::Type.type(:package).provide :sun, :parent => Puppet::Provider::Package d
unless names[name].nil?
hash[names[name]] = value
end
- else
- raise "Could not find %s" % name
end
when /\s+\d+.+/:
# nothing; we're ignoring the FILES info
diff --git a/lib/puppet/provider/service/freebsd.rb b/lib/puppet/provider/service/freebsd.rb
new file mode 100644
index 000000000..31fdacb86
--- /dev/null
+++ b/lib/puppet/provider/service/freebsd.rb
@@ -0,0 +1,46 @@
+# Manage FreeBSD services.
+Puppet::Type.type(:service).provide :freebsd, :parent => :init do
+ desc "FreeBSD's (and probably NetBSD?) form of ``init``-style service
+ management; uses ``rc-update`` for service enabling and disabling."
+
+ commands :rcupdate => "/usr/local/sbin/rc-update"
+
+ defaultfor :operatingsystem => :freebsd
+
+ def self.defpath
+ superclass.defpath
+ end
+
+ def disable
+ begin
+ output = rcupdate("disable", @model[:name])
+ rescue Puppet::ExecutionFailure
+ raise Puppet::Error, "Could not disable %s: %s" %
+ [self.name, output]
+ end
+ end
+
+ def enabled?
+ begin
+ output = rcupdate("enabled", @model[:name])
+ rescue Puppet::ExecutionFailure
+ return :false
+ end
+
+ # If it's enabled, output is 0
+ if output =~ /^0$/
+ return :true
+ end
+
+ return :false
+ end
+
+ def enable
+ begin
+ output = rcupdate("enable", @model[:name])
+ rescue Puppet::ExecutionFailure => detail
+ raise Puppet::Error, "Could not enable %s: %s" %
+ [self.name, detail]
+ end
+ end
+end