Merge pull request #783 from puppetlabs/pdksync_bumping_puppet_version
[puppet-modules/puppetlabs-apt.git] / manifests / ppa.pp
index a6ef8036d84d2e415588648cae9c6f45838a2c3c..99af21937529d983cfa4e590ef8e48c7bd3285a9 100644 (file)
@@ -16,18 +16,25 @@ define apt::ppa(
 
   if versioncmp($facts['lsbdistrelease'], '15.10') >= 0 {
     $distid = downcase($facts['lsbdistid'])
-    $filename = regsubst($name, '^ppa:([^/]+)/(.+)$', "\\1-${distid}-\\2-${release}")
+    $dash_filename = regsubst($name, '^ppa:([^/]+)/(.+)$', "\\1-${distid}-\\2")
+    $underscore_filename = regsubst($name, '^ppa:([^/]+)/(.+)$', "\\1_${distid}_\\2")
   } else {
-    $filename = regsubst($name, '^ppa:([^/]+)/(.+)$', "\\1-\\2-${release}")
+    $dash_filename = regsubst($name, '^ppa:([^/]+)/(.+)$', "\\1-\\2")
+    $underscore_filename = regsubst($name, '^ppa:([^/]+)/(.+)$', "\\1_\\2")
   }
 
-  $filename_no_slashes      = regsubst($filename, '/', '-', 'G')
-  $filename_no_specialchars = regsubst($filename_no_slashes, '[\.\+]', '_', 'G')
-  $sources_list_d_filename  = "${filename_no_specialchars}.list"
+  $dash_filename_no_slashes      = regsubst($dash_filename, '/', '-', 'G')
+  $dash_filename_no_specialchars = regsubst($dash_filename_no_slashes, '[\.\+]', '_', 'G')
+  $underscore_filename_no_slashes      = regsubst($underscore_filename, '/', '-', 'G')
+  $underscore_filename_no_specialchars = regsubst($underscore_filename_no_slashes, '[\.\+]', '_', 'G')
 
-  $name_no_slashes = regsubst($name, '/', '-', 'G')
-  $name_no_specialchars = regsubst($name_no_slashes, '[\.\+]', '_', 'G')
-  $trusted_gpg_d_filename = regsubst($name_no_specialchars, '^ppa:(.+)', "\\1.gpg")
+  $sources_list_d_filename  = "${dash_filename_no_specialchars}-${release}.list"
+
+  if versioncmp($facts['lsbdistrelease'], '15.10') >= 0 {
+    $trusted_gpg_d_filename = "${underscore_filename_no_specialchars}.gpg"
+  } else {
+    $trusted_gpg_d_filename = "${dash_filename_no_specialchars}.gpg"
+  }
 
   if $ensure == 'present' {
     if $package_manage {
@@ -50,7 +57,7 @@ define apt::ppa(
 
     exec { "add-apt-repository-${name}":
       environment => $_proxy_env,
-      command     => "/usr/bin/add-apt-repository ${options} ${name}",
+      command     => "/usr/bin/add-apt-repository ${options} ${name} || (rm ${::apt::sources_list_d}/${sources_list_d_filename} && false)",
       unless      => "/usr/bin/test -f ${::apt::sources_list_d}/${sources_list_d_filename} && /usr/bin/test -f ${::apt::trusted_gpg_d}/${trusted_gpg_d_filename}",
       user        => 'root',
       logoutput   => 'on_failure',