aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDorin Pleava <dorin.pleava@puppet.com>2020-10-05 12:02:33 +0300
committerDorin Pleava <dorin.pleava@puppet.com>2020-10-05 15:52:36 +0300
commit818e45b24d6fcdc49afe9e188ac761bf60373a31 (patch)
tree4498d2d3ac06d0812fdb7b99ea027bb510120d1a
parent868382132a7e9408dbfd93d79d6436018b9da30d (diff)
downloadpuppet-sshkeys_core-818e45b24d6fcdc49afe9e188ac761bf60373a31.tar.gz
puppet-sshkeys_core-818e45b24d6fcdc49afe9e188ac761bf60373a31.tar.bz2
(MODULES-10827) Exported sshkey already exists error
Using module https://github.com/ghoneycutt/puppet-module-ssh to export and collect sshkey resources from nodes, an 'already declared' error appears. This happened because when the catalog is first converted to resouces, the sshkey resource is added via https://github.com/puppetlabs/puppet/blob/main/lib/puppet/resource/catalog.rb#L137, where 'resource.ref'(https://github.com/puppetlabs/puppet/blob/main/lib/puppet/type.rb#L2548) uses 'self.title'. Since self.title goes to the title method defined in type.rb, it will return a different title than the title method from https://github.com/puppetlabs/puppetlabs-sshkeys_core/blob/main/lib/puppet/provider/sshkey/parsed.rb#L31. This mismatch try to add both resource, resulting in the 'already declared' error.
-rw-r--r--lib/puppet/type/sshkey.rb2
-rw-r--r--spec/unit/type/sshkey_spec.rb5
2 files changed, 7 insertions, 0 deletions
diff --git a/lib/puppet/type/sshkey.rb b/lib/puppet/type/sshkey.rb
index d45c059..6e603a2 100644
--- a/lib/puppet/type/sshkey.rb
+++ b/lib/puppet/type/sshkey.rb
@@ -12,6 +12,8 @@ module Puppet
"#{self[:name]}@#{self[:type]}"
end
+ alias_method :title, :name
+
def self.parameters_to_include
[:name, :type]
end
diff --git a/spec/unit/type/sshkey_spec.rb b/spec/unit/type/sshkey_spec.rb
index 53448ed..2804ee4 100644
--- a/spec/unit/type/sshkey_spec.rb
+++ b/spec/unit/type/sshkey_spec.rb
@@ -81,5 +81,10 @@ describe Puppet::Type.type(:sshkey) do
described_class.new(name: 'host,host.domain,ip')
}.to raise_error(Puppet::Error, %r{No comma in resourcename})
end
+
+ it 'aliases :title to :name' do
+ key = described_class.new(name: 'foo', type: :rsa)
+ expect(key.name).to eq key.title
+ end
end
end