]> review.fuel-infra Code Review - puppet-modules/puppetlabs-apt.git/commitdiff
Merge pull request #679 from arioch/fix_typo
authorHunter Haugen <hunter@puppet.com>
Thu, 1 Jun 2017 17:37:20 +0000 (10:37 -0700)
committerHunter Haugen <hunter@puppet.com>
Thu, 1 Jun 2017 17:37:20 +0000 (10:37 -0700)
14 files changed:
data/Debian-6.0.yaml [deleted file]
data/Debian.yaml [deleted file]
data/Ubuntu-10.04.yaml [deleted file]
data/Ubuntu-12.04.yaml [deleted file]
data/Ubuntu-14.04.yaml [deleted file]
data/Ubuntu.yaml [deleted file]
data/common.yaml [deleted file]
hiera.yaml [deleted file]
lib/puppet/provider/apt_key/apt_key.rb
manifests/init.pp
manifests/params.pp [new file with mode: 0644]
manifests/source.pp
metadata.json
spec/defines/source_spec.rb

diff --git a/data/Debian-6.0.yaml b/data/Debian-6.0.yaml
deleted file mode 100644 (file)
index f03bccd..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
----
-#Squeeze
-apt::backports: { location: 'http://httpredir.debian.org/debian-backports', key: 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553', repos: 'main contrib non-free' }
-apt::ppa_options: ~
-apt::ppa_package: ~
diff --git a/data/Debian.yaml b/data/Debian.yaml
deleted file mode 100644 (file)
index 823bc02..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
----
-apt::backports: { location: 'http://httpredir.debian.org/debian', key: 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553', repos: 'main contrib non-free' }
-apt::ppa_options: ~
-apt::ppa_package: ~
diff --git a/data/Ubuntu-10.04.yaml b/data/Ubuntu-10.04.yaml
deleted file mode 100644 (file)
index 567548b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
----
-#Lucid
-apt::ppa_options: ~
-apt::ppa_package: 'python-software-properties'
diff --git a/data/Ubuntu-12.04.yaml b/data/Ubuntu-12.04.yaml
deleted file mode 100644 (file)
index 992cb25..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
----
-#Precise
-apt::ppa_options: '-y'
-apt::ppa_package: 'python-software-properties'
diff --git a/data/Ubuntu-14.04.yaml b/data/Ubuntu-14.04.yaml
deleted file mode 100644 (file)
index d168164..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
----
-#Trusty
-apt::ppa_options: '-y'
-apt::ppa_package: 'software-properties-common'
diff --git a/data/Ubuntu.yaml b/data/Ubuntu.yaml
deleted file mode 100644 (file)
index ee62a25..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
----
-apt::backports: { location: 'http://archive.ubuntu.com/ubuntu', key: '630239CC130E1A7FD81A27B140976EAF437D05B5', repos: 'main universe multiverse restricted' }
-apt::ppa_options: '-y'
-apt::ppa_package: 'python-software-properties'
diff --git a/data/common.yaml b/data/common.yaml
deleted file mode 100644 (file)
index 2ed9e16..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
----
-apt::provider: '/usr/bin/apt-get'
-apt::keyserver: 'keyserver.ubuntu.com'
-apt::update_defaults: { frequency: 'reluctantly', timeout: ~, tries: ~ }
-apt::proxy_defaults: { ensure: ~, host: ~, port: 8080, https: false }
-apt::purge_defaults: { sources.list: false, sources.list.d: false, preferences: false, preferences.d: false }
-apt::proxy_defaults: { ensure: ~, host: ~, port: 8080, https: false }
-apt::include_defaults: { deb: true, src: false }
-apt::ppa_options: ~
-apt::ppa_package: ~
-apt::backports: ~
diff --git a/hiera.yaml b/hiera.yaml
deleted file mode 100644 (file)
index 4bfe502..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
----
-version: 4
-datadir: data
-hierarchy:
-  - name: "Full Version"
-    backend: yaml
-    path: "%{facts.os.name}-%{facts.os.release.full}"
-
-  - name: "Major Version"
-    backend: yaml
-    path: "%{facts.os.name}-%{facts.os.release.major}"
-
-  - name: "Distribution Name"
-    backend: yaml
-    path: "%{facts.os.name}"
-
-  - name: "Operating System Family"
-    backend: yaml
-    path: "%{facts.os.family}"
-
-  - name: "common"
-    backend: yaml
index d7e85dafaf5a1e6ab762153f137394a49cc52d47..668fd0f18d2ee35c0addb98e1bd365956d7f2a11 100644 (file)
@@ -127,9 +127,15 @@ Puppet::Type.type(:apt_key).provide(:apt_key) do
       f
     else
       begin
-        user_pass = parsedValue.userinfo.nil? ? nil : parsedValue.userinfo.split(':')
-        parsedValue.userinfo = ''
-        key = open(parsedValue, :http_basic_authentication => user_pass).read
+        # Only send basic auth if URL contains userinfo
+        # Some webservers (e.g. Amazon S3) return code 400 if empty basic auth is sent
+        if parsedValue.userinfo.nil?
+          key = parsedValue.read
+        else
+          user_pass = parsedValue.userinfo.split(':')
+          parsedValue.userinfo = ''
+          key = open(parsedValue, :http_basic_authentication => user_pass).read
+        end
       rescue OpenURI::HTTPError, Net::FTPPermError => e
         fail("#{e.message} for #{resource[:source]}")
       rescue SocketError
index 5654b3c6261f058d54172fe224cc515c8d491f7f..c89c2230cfd684c108acb924ca74868f345e8222 100644 (file)
@@ -3,33 +3,33 @@
 # Manage APT (Advanced Packaging Tool)
 #
 class apt (
-  Hash $update_defaults,
-  Hash $purge_defaults,
-  Hash $proxy_defaults,
-  Hash $include_defaults,
-  String $provider,
-  String $keyserver,
-  Optional[String] $ppa_options,
-  Optional[String] $ppa_package,
-  Optional[Hash] $backports,
-  Hash $confs               = {},
-  Hash $update              = {},
-  Hash $purge               = {},
-  Hash $proxy               = {},
-  Hash $sources             = {},
-  Hash $keys                = {},
-  Hash $ppas                = {},
-  Hash $pins                = {},
-  Hash $settings            = {},
-  String $root              = '/etc/apt',
-  String $sources_list      = "${root}/sources.list",
-  String $sources_list_d    = "${root}/sources.list.d",
-  String $conf_d            = "${root}/apt.conf.d",
-  String $preferences       = "${root}/preferences",
-  String $preferences_d     = "${root}/preferences.d",
-  Hash $config_files        = { conf => { path => $conf_d, ext => '' }, pref => { path => $preferences_d, ext => '.pref' }, list => { path => $sources_list_d, ext => '.list' } },
-  Hash $source_key_defaults = { 'server' => $keyserver, 'options' => undef, 'content' => undef, 'source' => undef },
-) {
+  Hash $update_defaults         = $apt::params::update_defaults,
+  Hash $purge_defaults          = $apt::params::purge_defaults,
+  Hash $proxy_defaults          = $apt::params::proxy_defaults,
+  Hash $include_defaults        = $apt::params::include_defaults,
+  String $provider              = $apt::params::provider,
+  String $keyserver             = $apt::params::keyserver,
+  Optional[String] $ppa_options = $apt::params::ppa_options,
+  Optional[String] $ppa_package = $apt::params::ppa_package,
+  Optional[Hash] $backports     = $apt::params::backports,
+  Hash $confs                   = $apt::params::confs,
+  Hash $update                  = $apt::params::update,
+  Hash $purge                   = $apt::params::purge,
+  Hash $proxy                   = $apt::params::proxy,
+  Hash $sources                 = $apt::params::sources,
+  Hash $keys                    = $apt::params::keys,
+  Hash $ppas                    = $apt::params::ppas,
+  Hash $pins                    = $apt::params::pins,
+  Hash $settings                = $apt::params::settings,
+  String $root                  = $apt::params::root,
+  String $sources_list          = $apt::params::sources_list,
+  String $sources_list_d        = $apt::params::sources_list_d,
+  String $conf_d                = $apt::params::conf_d,
+  String $preferences           = $apt::params::preferences,
+  String $preferences_d         = $apt::params::preferences_d,
+  Hash $config_files            = $apt::params::config_files,
+  Hash $source_key_defaults     = $apt::params::source_key_defaults
+) inherits apt::params {
 
   if $facts['osfamily'] != 'Debian' {
     fail('This module only works on Debian or derivatives like Ubuntu')
diff --git a/manifests/params.pp b/manifests/params.pp
new file mode 100644 (file)
index 0000000..bcff6bd
--- /dev/null
@@ -0,0 +1,130 @@
+class apt::params {
+
+  if $::osfamily != 'Debian' {
+    fail('This module only works on Debian or derivatives like Ubuntu')
+  }
+
+  $root           = '/etc/apt'
+  $provider       = '/usr/bin/apt-get'
+  $sources_list   = "${root}/sources.list"
+  $sources_list_d = "${root}/sources.list.d"
+  $conf_d         = "${root}/apt.conf.d"
+  $preferences    = "${root}/preferences"
+  $preferences_d  = "${root}/preferences.d"
+  $keyserver      = 'keyserver.ubuntu.com'
+  $confs          = {}
+  $update         = {}
+  $purge          = {}
+  $proxy          = {}
+  $sources        = {}
+  $keys           = {}
+  $ppas           = {}
+  $pins           = {}
+  $settings       = {}
+
+  $config_files = {
+    'conf'   => {
+      'path' => $conf_d,
+      'ext'  => '',
+    },
+    'pref'   => {
+      'path' => $preferences_d,
+      'ext'  => '.pref',
+    },
+    'list'   => {
+      'path' => $sources_list_d,
+      'ext'  => '.list',
+    }
+  }
+
+  $update_defaults = {
+    'frequency' => 'reluctantly',
+    'timeout'   => undef,
+    'tries'     => undef,
+  }
+
+  $proxy_defaults = {
+    'ensure' => undef,
+    'host'   => undef,
+    'port'   => 8080,
+    'https'  => false,
+  }
+
+  $purge_defaults = {
+    'sources.list'   => false,
+    'sources.list.d' => false,
+    'preferences'    => false,
+    'preferences.d'  => false,
+  }
+
+  $source_key_defaults = {
+    'server'  => $keyserver,
+    'options' => undef,
+    'content' => undef,
+    'source'  => undef,
+  }
+
+  $include_defaults = {
+    'deb' => true,
+    'src' => false,
+  }
+
+  case $facts['os']['name']{
+    'Debian': {
+      case $facts['os']['release']['full'] {
+        '6.0': {
+          $backports = {
+            'location' => 'http://httpredir.debian.org/debian-backports',
+            'key'      => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
+            'repos'    => 'main contrib non-free',
+          }
+        }
+        default: {
+          $backports = {
+            'location' => 'http://httpredir.debian.org/debian',
+            'key'      => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
+            'repos'    => 'main contrib non-free',
+          }
+        }
+      }
+
+      $ppa_options = undef
+      $ppa_package = undef
+
+    }
+    'Ubuntu': {
+      $backports = {
+        'location' => 'http://archive.ubuntu.com/ubuntu',
+        'key'      => '630239CC130E1A7FD81A27B140976EAF437D05B5',
+        'repos'    => 'main universe multiverse restricted',
+      }
+
+      case $facts['os']['release']['full'] {
+        '10.04': {
+          $ppa_options        = undef
+          $ppa_package        = 'python-software-properties'
+        }
+        '12.04': {
+          $ppa_options        = '-y'
+          $ppa_package        = 'python-software-properties'
+        }
+        '14.04', '14.10', '15.04', '15.10': {
+          $ppa_options        = '-y'
+          $ppa_package        = 'software-properties-common'
+        }
+        default: {
+          $ppa_options        = '-y'
+          $ppa_package        = 'python-software-properties'
+        }
+      }
+    }
+    undef: {
+      fail('Unable to determine value for fact os["name"]')
+    }
+    default: {
+      $ppa_options = undef
+      $ppa_package = undef
+      $backports   = undef
+    }
+  }
+}
index a9769ea890c39bcdf098db2fac8e1d043c0a24ae..be743eb26ca207fc9a3c2b09f82a52caff3ae494 100644 (file)
@@ -19,7 +19,7 @@ define apt::source(
 
   $_before = Apt::Setting["list-${title}"]
 
-  if ! $release {
+  if !$release {
     if $facts['lsbdistcodename'] {
       $_release = $facts['lsbdistcodename']
     } else {
index f4fadeb4c4844651262333f10ec90a2dfacb472f..562f0436e473616d6ed45cfc804c1b8d649461b5 100644 (file)
@@ -10,7 +10,7 @@
   "dependencies": [
     {"name":"puppetlabs/stdlib","version_requirement":">= 4.16.0 < 5.0.0"}
   ],
-  "data_provider": "hiera",
+  "data_provider": null,
   "operatingsystem_support": [
     {
       "operatingsystem": "Debian",
index c224668f4791bf350145bc391dd07ad0d39beaf0..79cc11b990d782ec58ef7f9e84a4c352a3ce0e3d 100644 (file)
@@ -373,6 +373,20 @@ describe 'apt::source' do
       end
     end
 
+    context 'release is empty string' do
+      let :facts do
+        {
+          :os => { :family => 'Debian', :name => 'Debian', :release => { :major => '7', :full => '7.0' }},
+          :lsbdistid       => 'Debian',
+          :osfamily        => 'Debian',
+          :puppetversion   => Puppet.version,
+        }
+      end
+      let(:params) { { :location => 'hello.there', :release => '' } }
+
+      it { is_expected.to contain_apt__setting('list-my_source').with_content(/hello\.there  main/) }
+    end
+
     context 'invalid pin' do
       let :facts do
         {