+1 On Sun, Nov 21, 2010 at 12:02 PM, Stefan Schulte <[email protected]> wrote: > As mentioned in the ticket it is not obvious that aliases do not belong > in the resourcename but have to be specified with the property > "host_aliases". On the puppet-user list I saw someone using this as a > resource > > @@sshkey {"$fqdn,$hostname,$ipaddress": > type => rsa, > key => $sshrsakey, > } > > Puppet will now write a correct entry to the know_hosts file, but when > it rereads the file, the field $fqdn,$hostname,$ipaddress is split into > name ($fqdn) and host_aliases ([$hostname,$ipaddress]). Since we dont > find the resource the user specified, puppet will put the same key in > the file over and over again. This patch adds a simple validation on > resourcename. > > Signed-off-by: Stefan Schulte <[email protected]> > --- > lib/puppet/type/sshkey.rb | 7 +++- > spec/unit/type/sshkey_spec.rb | 71 > +++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 77 insertions(+), 1 deletions(-) > create mode 100644 spec/unit/type/sshkey_spec.rb > > diff --git a/lib/puppet/type/sshkey.rb b/lib/puppet/type/sshkey.rb > index b7a1b8a..59a1a12 100755 > --- a/lib/puppet/type/sshkey.rb > +++ b/lib/puppet/type/sshkey.rb > @@ -41,7 +41,7 @@ module Puppet > raise Puppet::Error, "Aliases cannot include whitespace" > end > if value =~ /,/ > - raise Puppet::Error, "Aliases cannot include whitespace" > + raise Puppet::Error, "Aliases must be provided as an array, not a > comma-separated list" > end > end > end > @@ -50,6 +50,11 @@ module Puppet > desc "The host name that the key is associated with." > > isnamevar > + > + validate do |value| > + raise Puppet::Error, "Resourcename cannot include whitespaces" if > value =~ /\s/ > + raise Puppet::Error, "No comma in resourcename allowed. If you want > to specify aliases use the host_aliases property" if value.include?(',') > + end > end > > newproperty(:target) do > diff --git a/spec/unit/type/sshkey_spec.rb b/spec/unit/type/sshkey_spec.rb > new file mode 100644 > index 0000000..966ca70 > --- /dev/null > +++ b/spec/unit/type/sshkey_spec.rb > @@ -0,0 +1,71 @@ > +#!/usr/bin/env ruby > + > +require File.dirname(__FILE__) + '/../../spec_helper' > + > +sshkey = Puppet::Type.type(:sshkey) > + > +describe sshkey do > + before do > + �...@class = sshkey > + end > + > + it "should have :name its namevar" do > + �[email protected]_attributes.should == [:name] > + end > + > + describe "when validating attributes" do > + [:name, :provider].each do |param| > + it "should have a #{param} parameter" do > + �[email protected](param).should == :param > + end > + end > + > + [:host_aliases, :ensure, :key, :type].each do |property| > + it "should have a #{property} property" do > + �[email protected](property).should == :property > + end > + end > + end > + > + describe "when validating values" do > + > + it "should support ssh-dss as a type value" do > + proc { @class.new(:name => "foo", :type => "ssh-dss") }.should_not > raise_error > + end > + > + it "should support ssh-rsa as a type value" do > + proc { @class.new(:name => "whev", :type => "ssh-rsa") }.should_not > raise_error > + end > + > + it "should alias :dsa to ssh-dss as a value for type" do > + key = @class.new(:name => "whev", :type => :dsa) > + key.should(:type).should == :'ssh-dss' > + end > + > + it "should alias :rsa to ssh-rsa as a value for type" do > + key = @class.new(:name => "whev", :type => :rsa) > + key.should(:type).should == :'ssh-rsa' > + end > + > + it "should not support values other than ssh-dss, ssh-rsa, dsa, rsa for > type" do > + proc { @class.new(:name => "whev", :type => :'ssh-dsa') }.should > raise_error(Puppet::Error) > + end > + > + it "should accept one host_alias" do > + proc { @class.new(:name => "foo", :host_aliases => 'foo.bar.tld') > }.should_not raise_error > + end > + > + it "should accept multiple host_aliases as an array" do > + proc { @class.new(:name => "foo", :host_aliases => > ['foo.bar.tld','10.0.9.9']) }.should_not raise_error > + end > + > + it "should not accept spaces in any host_alias" do > + proc { @class.new(:name => "foo", :host_aliases => ['foo.bar.tld','foo > bar']) }.should raise_error(Puppet::Error) > + end > + > + it "should not accept aliases in the resourcename" do > + proc { @class.new(:name => 'host,host.domain,ip') }.should > raise_error(Puppet::Error) > + end > + > + end > +end > -- > 1.7.3.2 > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Developers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/puppet-dev?hl=en. > >
-- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.
