Merge pull request #675 from hunner/update_changelog
authorTP Honey <tphoney@users.noreply.github.com>
Tue, 11 Jul 2017 10:14:29 +0000 (11:14 +0100)
committerGitHub <noreply@github.com>
Tue, 11 Jul 2017 10:14:29 +0000 (11:14 +0100)
(maint) Add bugfix to changelog

16 files changed:
CHANGELOG.md
NOTICE
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

index 60f9de86b67667264dc9e50bcbe3423d8382fa0e..e6e1344906b28e54c8beccaa69ff8055fc7fa92e 100644 (file)
@@ -1,3 +1,17 @@
+## Supported Release 4.1.0
+### Summary
+
+This release removes Data in Modules due to current compatibility issues and reinstates the params.pp file. Also includes a couple of bug fixes.
+
+#### Features
+- (MODULES-4973) Data in Modules which was introduced in the last release has now been reverted due to compatibility issues.
+
+#### Bugfixes
+- Now apt_key only sends the auth basic header when userinfo can be parsed from the URL.
+- Reverted the removal of Evolving Web's attribution in NOTICE file.
+- Test added to ensure empty string allowed for $release in apt::source.
+
+
 ## Supported Release 3.0.0 and 4.0.0
 ### Summary
 
diff --git a/NOTICE b/NOTICE
index e615ab7d28edf9762270dd19b4a39c76285cd86b..209695b98f38f30caa2185e9e8bb51dea9032a8b 100644 (file)
--- a/NOTICE
+++ b/NOTICE
@@ -12,4 +12,26 @@ Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
-limitations under the License.
\ No newline at end of file
+limitations under the License.
+
+
+
+Copyright (c) 2011 Evolving Web Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
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..8fd658b
--- /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 full release number')
+    }
+    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..03981dfbd34adf59a611693058d93453659a5110 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "puppetlabs-apt",
-  "version": "4.0.0",
+  "version": "4.1.0",
   "author": "Puppet Labs",
   "summary": "Provides an interface for managing Apt source, key, and definitions with Puppet",
   "license": "Apache-2.0",
@@ -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
         {