diff options
author | James Turnbull <james@lovedthanlost.net> | 2008-07-03 13:41:11 +1000 |
---|---|---|
committer | James Turnbull <james@lovedthanlost.net> | 2008-07-03 13:41:11 +1000 |
commit | d851a16a3af9dd24f675ad5fcf6dfeba6d6273a2 (patch) | |
tree | 1763a30c9a9a7e161ce3967d493d69ea7b2854a9 /lib/puppet | |
parent | da912fce870745e9e1bc600ae6c9c91cbbd60283 (diff) | |
parent | 5156230b434adbe6de6606f6bcd8843264b8dab4 (diff) | |
download | puppet-d851a16a3af9dd24f675ad5fcf6dfeba6d6273a2.tar.gz puppet-d851a16a3af9dd24f675ad5fcf6dfeba6d6273a2.tar.xz puppet-d851a16a3af9dd24f675ad5fcf6dfeba6d6273a2.zip |
Merge branch 'tickets/0.24.x/1384' of git://github.com/ctrlaltdel/puppet into 0.24.x
Diffstat (limited to 'lib/puppet')
-rw-r--r-- | lib/puppet/provider/ssh_authorized_key/parsed.rb | 16 | ||||
-rw-r--r-- | lib/puppet/type/ssh_authorized_key.rb | 36 |
2 files changed, 36 insertions, 16 deletions
diff --git a/lib/puppet/provider/ssh_authorized_key/parsed.rb b/lib/puppet/provider/ssh_authorized_key/parsed.rb index 7cb6626de..351ebcd1b 100644 --- a/lib/puppet/provider/ssh_authorized_key/parsed.rb +++ b/lib/puppet/provider/ssh_authorized_key/parsed.rb @@ -29,21 +29,5 @@ Puppet::Type.type(:ssh_authorized_key).provide(:parsed, record[:options] = record[:options].join(',') end } - - def prefetch - if not @resource.should(:target) - # - # Set default target when user is given - if val = @resource.should(:user) - target = File.expand_path("~%s/.ssh/authorized_keys" % val) - Puppet::debug("Setting target to %s" % target) - @resource[:target] = target - else - raise Puppet::Error, "Missing attribute 'user' or 'target'" - end - end - - super - end end diff --git a/lib/puppet/type/ssh_authorized_key.rb b/lib/puppet/type/ssh_authorized_key.rb index e28fb7cda..a95f316af 100644 --- a/lib/puppet/type/ssh_authorized_key.rb +++ b/lib/puppet/type/ssh_authorized_key.rb @@ -27,6 +27,11 @@ module Puppet newproperty(:user) do desc "The user account in which the ssh key should be installed." + + def value=(value) + @resource[:target] = File.expand_path("~%s/.ssh/authorized_keys" % value) + super + end end newproperty(:target) do @@ -39,6 +44,37 @@ module Puppet defaultto do :absent end end + + def generate + atype = Puppet::Type.type(:file) + target = self.should(:target) + dir = File.dirname(target) + user = should(:user) ? should(:user) : "root" + + rels = [] + + unless catalog.resource(:file, dir) + rels << atype.create(:name => dir, :ensure => :directory, :mode => 0700, :owner => user) + end + + unless catalog.resource(:file, target) + rels << atype.create(:name => target, :ensure => :present, :mode => 0600, :owner => user) + end + + rels + end + + autorequire(:user) do + if should(:user) + should(:user) + end + end + + validate do + unless should(:target) + raise Puppet::Error, "Attribute 'user' or 'target' is mandatory" + end + end end end |