Merge pull request #445 from mhaskel/updates_everywhere
[puppet-modules/puppetlabs-apt.git] / manifests / ppa.pp
index f6c7373d8d3c599c5126d980f2136a47766e67e7..1dc8e26fce80519d67c00c21cb16c894f00b029b 100644 (file)
@@ -1,14 +1,12 @@
 # ppa.pp
-
 define apt::ppa(
-  $ensure  = 'present',
-  $release = $::lsbdistcodename,
-  $options = $apt::params::ppa_options,
+  $ensure         = 'present',
+  $release        = $::lsbdistcodename,
+  $options        = $::apt::ppa_options,
+  $package_name   = $::apt::ppa_package,
+  $package_manage = false,
+  $proxy          = {},
 ) {
-  include apt::update
-
-  $sources_list_d = $apt::params::sources_list_d
-
   if ! $release {
     fail('lsbdistcodename fact not available: release parameter required')
   }
@@ -22,53 +20,45 @@ define apt::ppa(
   $filename_without_ppa     = regsubst($filename_without_dots, '^ppa:', '', 'G')
   $sources_list_d_filename  = "${filename_without_ppa}-${release}.list"
 
+  $_proxy = merge($apt::proxy, $proxy)
+
   if $ensure == 'present' {
-    $package = $::lsbdistrelease ? {
-        /^[1-9]\..*|1[01]\..*|12.04$/ => 'python-software-properties',
-        default  => 'software-properties-common',
-    }
+    if $package_manage {
+      package { $package_name: }
 
-    if ! defined(Package[$package]) {
-        package { $package: }
+      $_require = [File['sources.list.d'], Package[$package_name]]
+    } else {
+      $_require = File['sources.list.d']
     }
 
-    if defined(Class[apt]) {
-        $proxy_host = $apt::proxy_host
-        $proxy_port = $apt::proxy_port
-        case $proxy_host {
-          false, '', undef: {
-            $proxy_env = []
-          }
-          default: {
-            $proxy_env = ["http_proxy=http://${proxy_host}:${proxy_port}", "https_proxy=http://${proxy_host}:${proxy_port}"]
-          }
-        }
-    } else {
-        $proxy_env = []
+    case $_proxy['host'] {
+      false, '', undef: {
+        $_proxy_env = []
+      }
+      default: {
+        $_proxy_env = ["http_proxy=http://${_proxy['host']}:${_proxy['port']}", "https_proxy=http://${_proxy['host']}:${_proxy['port']}"]
+      }
     }
+
     exec { "add-apt-repository-${name}":
-        environment => $proxy_env,
-        command     => "/usr/bin/add-apt-repository ${options} ${name}",
-        unless      => "/usr/bin/test -s ${sources_list_d}/${sources_list_d_filename}",
-        user        => 'root',
-        logoutput   => 'on_failure',
-        notify      => Exec['apt_update'],
-        require     => [
-        File['sources.list.d'],
-        Package[$package],
-        ],
+      environment => $_proxy_env,
+      command     => "/usr/bin/add-apt-repository ${options} ${name}",
+      unless      => "/usr/bin/test -s ${::apt::sources_list_d}/${sources_list_d_filename}",
+      user        => 'root',
+      logoutput   => 'on_failure',
+      notify      => Exec['apt_update'],
+      require     => $_require,
     }
 
-    file { "${sources_list_d}/${sources_list_d_filename}":
-        ensure  => file,
-        require => Exec["add-apt-repository-${name}"],
+    file { "${::apt::sources_list_d}/${sources_list_d_filename}":
+      ensure  => file,
+      require => Exec["add-apt-repository-${name}"],
     }
   }
   else {
-
-    file { "${sources_list_d}/${sources_list_d_filename}":
-        ensure => 'absent',
-        notify => Exec['apt_update'],
+    file { "${::apt::sources_list_d}/${sources_list_d_filename}":
+      ensure => 'absent',
+      notify => Exec['apt_update'],
     }
   }