X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=lib%2Fpuppet%2Ftype%2Fapt_key.rb;h=a9273e26acd5222d5ea3e5520e93d8cec190a23b;hb=f610bedc5f33db5fdee2ad49eeda95268ab0b9a5;hp=f55247314cc6f650bab39dd13735bcdda3b9dc3e;hpb=87f3f1023cad452937d3b4c0bad84c69b442ffa1;p=puppet-modules%2Fpuppetlabs-apt.git diff --git a/lib/puppet/type/apt_key.rb b/lib/puppet/type/apt_key.rb index f552473..a9273e2 100644 --- a/lib/puppet/type/apt_key.rb +++ b/lib/puppet/type/apt_key.rb @@ -1,13 +1,12 @@ require 'pathname' Puppet::Type.newtype(:apt_key) do - @doc = <<-EOS This type provides Puppet with the capabilities to manage GPG keys needed by apt to perform package validation. Apt has it's own GPG keyring that can be manipulated through the `apt-key` command. - apt_key { '4BD6EC30': + apt_key { '6F6B15509CF8E59E6E469F327F438280EF8D349F': source => 'http://apt.puppetlabs.com/pubkey.gpg' } @@ -20,22 +19,25 @@ Puppet::Type.newtype(:apt_key) do ensurable validate do - if self[:content] and self[:source] - fail('The properties content and source are mutually exclusive.') + if self[:content] && self[:source] + raise('The properties content and source are mutually exclusive.') + end + if self[:id].length < 40 + warning('The id should be a full fingerprint (40 characters), see README.') end end - newparam(:id, :namevar => true) do + newparam(:id, namevar: true) do desc 'The ID of the key you want to manage.' # GPG key ID's should be either 32-bit (short) or 64-bit (long) key ID's - # and may start with the optional 0x - newvalues(/\A(0x)?[0-9a-fA-F]{8}\Z/, /\A(0x)?[0-9a-fA-F]{16}\Z/) + # and may start with the optional 0x, or they can be 40-digit key fingerprints + newvalues(%r{\A(0x)?[0-9a-fA-F]{8}\Z}, %r{\A(0x)?[0-9a-fA-F]{16}\Z}, %r{\A(0x)?[0-9a-fA-F]{40}\Z}) munge do |value| - if value.start_with?('0x') - id = value.partition('0x').last.upcase - else - id = value.upcase - end + id = if value.start_with?('0x') + value.partition('0x').last.upcase + else + value.upcase + end id end end @@ -46,11 +48,11 @@ Puppet::Type.newtype(:apt_key) do newparam(:source) do desc 'Location of a GPG key file, /path/to/file, ftp://, http:// or https://' - newvalues(/\Ahttps?:\/\//, /\Aftp:\/\//, /\A\/\w+/) + newvalues(%r{\Ahttps?://}, %r{\Aftp://}, %r{\A/\w+}) end autorequire(:file) do - if self[:source] and Pathname.new(self[:source]).absolute? + if self[:source] && Pathname.new(self[:source]).absolute? self[:source] end end @@ -58,14 +60,38 @@ Puppet::Type.newtype(:apt_key) do newparam(:server) do desc 'The key server to fetch the key from based on the ID. It can either be a domain name or url.' defaultto :'keyserver.ubuntu.com' - - newvalues(/\A((hkp|http|https):\/\/)?([a-z\d])([a-z\d-]{0,61}\.)+[a-z\d]+(:\d{2,4})?$/) + + newvalues(%r{\A((hkp|http|https)://)?([a-z\d])([a-z\d-]{0,61}\.)+[a-z\d]+(:\d{2,5})?$}) end - newparam(:keyserver_options) do + newparam(:options) do desc 'Additional options to pass to apt-key\'s --keyserver-options.' end + newproperty(:fingerprint) do + desc <<-EOS + The 40-digit hexadecimal fingerprint of the specified GPG key. + + This property is read-only. + EOS + end + + newproperty(:long) do + desc <<-EOS + The 16-digit hexadecimal id of the specified GPG key. + + This property is read-only. + EOS + end + + newproperty(:short) do + desc <<-EOS + The 8-digit hexadecimal id of the specified GPG key. + + This property is read-only. + EOS + end + newproperty(:expired) do desc <<-EOS Indicates if the key has expired. @@ -92,7 +118,7 @@ Puppet::Type.newtype(:apt_key) do newproperty(:type) do desc <<-EOS - The key type, either RSA or DSA. + The key type, one of: rsa, dsa, ecc, ecdsa This property is read-only. EOS