Package: puppet
Version: 4.10.4-2
Severity: important
Dear Maintainer,
With the following code in site.pp or similar:
filebucket { 'main':
path => false, # Remote filebucket
}
File {
backup => 'main',
}
Bucketing fails from puppet3 agent to puppet master 4 (stretch/sid) with:
Error: Could not back up /etc/puppet/auth.conf: Error 406 on SERVER:
{"message":"Not Acceptable: No supported formats are acceptable
(Accept: s, pson)","issue_kind":"UNSUPPORTED_FORMAT"}
The attached patch fixes this and matches the behavior of:
https://github.com/puppetlabs/puppetserver/blob/ff0e5e84860ea9b035839e77e9b27d4c3a923e36/src/clj/puppetlabs/services/legacy_routes/legacy_routes_core.clj#L27-L42
NB: I think this should also go in stretch-pu.
Regards
Mathieu Parent
From eb03e3dcaad385660bf95d692c9bd5acbb8996ea Mon Sep 17 00:00:00 2001
From: Mathieu Parent <[email protected]>
Date: Fri, 21 Jul 2017 12:16:28 +0200
Subject: [PATCH] Fix "No supported formats are acceptable (Accept: s, pson)"
while bucketing from Puppet Agent v3
---
debian/patches/0001-Adjust-default-paths.patch | 4 +-
.../0004-add-puppet3-compat-middleware.patch | 10 ++---
...e-systemd-as-the-default-service-provider.patch | 19 ++++----
.../0006-debian-service-provider-use-service.patch | 18 +++++---
...vice-listing-and-enable-disable-in-Debian.patch | 52 +++++++++++-----------
debian/patches/0008-fix-locale-loading.patch | 16 ++++---
6 files changed, 67 insertions(+), 52 deletions(-)
diff --git a/debian/patches/0001-Adjust-default-paths.patch b/debian/patches/0001-Adjust-default-paths.patch
index 1bc3df858..de7b33ea8 100644
--- a/debian/patches/0001-Adjust-default-paths.patch
+++ b/debian/patches/0001-Adjust-default-paths.patch
@@ -8,10 +8,10 @@ Subject: Adjust default paths
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/lib/puppet/defaults.rb b/lib/puppet/defaults.rb
-index f63a08a..f76ce1e 100644
+index 8669913..d41d9be 100644
--- a/lib/puppet/defaults.rb
+++ b/lib/puppet/defaults.rb
-@@ -1206,7 +1206,7 @@ EOT
+@@ -1250,7 +1250,7 @@ EOT
:desc => "File that provides mapping between custom SSL oids and user-friendly names"
},
:basemodulepath => {
diff --git a/debian/patches/0004-add-puppet3-compat-middleware.patch b/debian/patches/0004-add-puppet3-compat-middleware.patch
index 04b6f3f53..33117629e 100644
--- a/debian/patches/0004-add-puppet3-compat-middleware.patch
+++ b/debian/patches/0004-add-puppet3-compat-middleware.patch
@@ -4,10 +4,11 @@ Description: Add Puppet 3 client compatibility under rack
per[1]. This should restore compatibility with Puppet 3 clients when
run under any rack-enabled server (including Passenger).
Forwarded: no (deprecated upstream)
-Last-Update: 2017-01-11
+Last-Update: 2017-07-21
+
--- a/ext/rack/config.ru
+++ b/ext/rack/config.ru
-@@ -25,6 +25,74 @@
+@@ -25,6 +25,73 @@
# delivered during catalog compilation.
ARGV << "--always_cache_features"
@@ -62,9 +63,8 @@ Last-Update: 2017-01-11
+ env['QUERY_STRING'] = Rack::Utils.build_query(@req.params)
+ end
+
-+ if @api =~ /^file_(content|bucket_file)/ && @req.get?
-+ env["HTTP_ACCEPT"] = "binary"
-+ elsif @api == "file_bucket_file" && (@req.post? || @req.put?)
++ env["HTTP_ACCEPT"] = env["HTTP_ACCEPT"].split(/\s*,\s*/).map { |a| a.sub(/^raw|s$/, 'binary') }.join(', ')
++ if @api == "file_bucket_file" && (@req.post? || @req.put?)
+ env["CONTENT_TYPE"] = "application/octet-stream"
+ end
+
diff --git a/debian/patches/0005-use-systemd-as-the-default-service-provider.patch b/debian/patches/0005-use-systemd-as-the-default-service-provider.patch
index 2871e72ae..d4bc82698 100644
--- a/debian/patches/0005-use-systemd-as-the-default-service-provider.patch
+++ b/debian/patches/0005-use-systemd-as-the-default-service-provider.patch
@@ -1,13 +1,16 @@
-Author: Apollon Oikonomopoulos <[email protected]>
-Description: Mark systemd as the default service provider for Debian
- Currently systemd is marked as the default service provider only for Jessie.
- Instead of extending this to Stretch, mark it as the default for Debian and
- let the provider confinement blacklist systemd if /run/systemd/system does not
- exist.
-Last-Update: 2017-02-09
+From: Puppet Package Maintainers <[email protected]>
+Date: Fri, 21 Jul 2017 12:12:55 +0200
+Subject: use-systemd-as-the-default-service-provider
+
+---
+ lib/puppet/provider/service/systemd.rb | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/puppet/provider/service/systemd.rb b/lib/puppet/provider/service/systemd.rb
+index 9e09f45..6139341 100644
--- a/lib/puppet/provider/service/systemd.rb
+++ b/lib/puppet/provider/service/systemd.rb
-@@ -23,8 +23,8 @@
+@@ -23,8 +23,8 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
defaultfor :osfamily => :redhat, :operatingsystem => :fedora
defaultfor :osfamily => :suse
defaultfor :osfamily => :coreos
diff --git a/debian/patches/0006-debian-service-provider-use-service.patch b/debian/patches/0006-debian-service-provider-use-service.patch
index 90b90f5f6..735c59ffd 100644
--- a/debian/patches/0006-debian-service-provider-use-service.patch
+++ b/debian/patches/0006-debian-service-provider-use-service.patch
@@ -1,18 +1,24 @@
From: Gaudenz Steinlin <[email protected]>
-Subject: Use /usr/sbin/service for service management on Debian
- In Debian jessie systemd will be the default init system. But the old system V
- and other alternative init systems are still supported. /usr/sbin/service
- provides an abstraction layer which is able to start, stop and restart
- services independent of the init system used.
+Date: Fri, 21 Jul 2017 12:12:55 +0200
+Subject: Use /usr/sbin/service for service management on Debian In Debian
+ jessie systemd will be the default init system. But the old system V and
+ other alternative init systems are still supported. /usr/sbin/service
+ provides an abstraction layer which is able to start,
+ stop and restart services independent of the init system used.
Bug: https://tickets.puppetlabs.com/browse/PUP-2023
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=775795
Comment: Initially for puppet 3.7, ported to puppet 4.8 by Apollon
Oikonomopoulos <[email protected]>
---
+ lib/puppet/provider/service/debian.rb | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+diff --git a/lib/puppet/provider/service/debian.rb b/lib/puppet/provider/service/debian.rb
+index 554fc20..7995a95 100644
--- a/lib/puppet/provider/service/debian.rb
+++ b/lib/puppet/provider/service/debian.rb
-@@ -60,6 +60,21 @@
+@@ -65,6 +65,21 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
update_rc @resource[:name], "defaults"
end
diff --git a/debian/patches/0007-Fix-service-listing-and-enable-disable-in-Debian.patch b/debian/patches/0007-Fix-service-listing-and-enable-disable-in-Debian.patch
index e4ed28185..9049f48b5 100644
--- a/debian/patches/0007-Fix-service-listing-and-enable-disable-in-Debian.patch
+++ b/debian/patches/0007-Fix-service-listing-and-enable-disable-in-Debian.patch
@@ -1,9 +1,8 @@
-From a9b76dbfba96f537227c445297d3ccd115de46ca Mon Sep 17 00:00:00 2001
From: Apollon Oikonomopoulos <[email protected]>
Date: Fri, 27 Feb 2015 10:55:34 +0200
-Subject: [PATCH] Fix service listing and enable/disable in Debian
+Subject: Fix service listing and enable/disable in Debian
MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
+Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
• Under systemd, use systemctl enable/disable for all services. This
@@ -17,12 +16,14 @@ Content-Transfer-Encoding: 8bit
all services when running under sysv-rc; in addition to simplifying things,
this also preserves any ordering changes across enable/disable.
---
- lib/puppet/provider/service/debian.rb | 94 ++++++++++++++++++++++++++---------
- 1 file changed, 71 insertions(+), 23 deletions(-)
+ lib/puppet/provider/service/debian.rb | 85 +++++++++++++++++++++++++----------
+ 1 file changed, 62 insertions(+), 23 deletions(-)
+diff --git a/lib/puppet/provider/service/debian.rb b/lib/puppet/provider/service/debian.rb
+index 7995a95..e0fdd42 100644
--- a/lib/puppet/provider/service/debian.rb
+++ b/lib/puppet/provider/service/debian.rb
-@@ -16,43 +16,78 @@
+@@ -16,43 +16,78 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
# is resolved.
commands :invoke_rc => "/usr/sbin/invoke-rc.d"
commands :service => "/usr/sbin/service"
@@ -74,7 +75,18 @@ Content-Transfer-Encoding: 8bit
- # TODO: Replace system call when Puppet::Util::Execution.execute gives us a way
- # to determine exit status. https://projects.puppetlabs.com/issues/2538
- system("/usr/sbin/invoke-rc.d", "--quiet", "--query", @resource[:name], "start")
--
++ if self.class.runs_on_systemd?
++ begin
++ systemctl("is-enabled", @resource[:name])
++ return :true
++ rescue Puppet::ExecutionFailure
++ return :false
++ end
++ else
++ # TODO: Replace system call when Puppet::Util::Execution.execute gives us a way
++ # to determine exit status. https://projects.puppetlabs.com/issues/2538
++ system("/usr/sbin/invoke-rc.d", "--quiet", "--query", @resource[:name], "start")
+
- # 104 is the exit status when you query start an enabled service.
- # 106 is the exit status when the policy layer supplies a fallback action
- # See x-man-page://invoke-rc.d
@@ -87,25 +99,11 @@ Content-Transfer-Encoding: 8bit
- # For those that do not, perform the checks manually
- # http://www.debian.org/doc/debian-policy/ch-opersys.html
- if get_start_link_count >= 4
-+ if self.class.runs_on_systemd?
-+ begin
-+ systemctl("is-enabled", @resource[:name])
- return :true
-- else
-+ rescue Puppet::ExecutionFailure
- return :false
- end
- else
-- return :false
-+ # TODO: Replace system call when Puppet::Util::Execution.execute gives us a way
-+ # to determine exit status. https://projects.puppetlabs.com/issues/2538
-+ system("/usr/sbin/invoke-rc.d", "--quiet", "--query", @resource[:name], "start")
-+
+ # 104 is the exit status when you query start an enabled service.
+ # 106 is the exit status when the policy layer supplies a fallback action
+ # See x-man-page://invoke-rc.d
+ if [104, 106].include?($CHILD_STATUS.exitstatus)
-+ return :true
+ return :true
+ elsif [101, 105].include?($CHILD_STATUS.exitstatus)
+ # 101 is action not allowed, which means we have to do the check manually.
+ # 105 is unknown, which generally means the iniscript does not support query
@@ -117,13 +115,15 @@ Content-Transfer-Encoding: 8bit
+ else
+ return :false
+ end
-+ else
-+ return :false
-+ end
+ else
+ return :false
+ end
+- else
+- return :false
end
end
-@@ -61,8 +96,12 @@
+@@ -61,8 +96,12 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
end
def enable
diff --git a/debian/patches/0008-fix-locale-loading.patch b/debian/patches/0008-fix-locale-loading.patch
index 95999a090..160de62d7 100644
--- a/debian/patches/0008-fix-locale-loading.patch
+++ b/debian/patches/0008-fix-locale-loading.patch
@@ -1,10 +1,16 @@
-Author: Apollon Oikonomopoulos <[email protected]>
-Description: Override local loading path
- Use the package's /usr/share/puppet/locale instead of /usr/share/locale.
-Bug-Debian: https://bugs.debian.org/866972
+From: Puppet Package Maintainers <[email protected]>
+Date: Fri, 21 Jul 2017 12:12:55 +0200
+Subject: fix-locale-loading
+
+---
+ lib/puppet.rb | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/puppet.rb b/lib/puppet.rb
+index 1660caa..f4ed9b3 100644
--- a/lib/puppet.rb
+++ b/lib/puppet.rb
-@@ -31,7 +31,7 @@
+@@ -31,7 +31,7 @@ begin
# e.g. ~/code/puppet/locales. Also when running as a gem.
local_locale_path = File.absolute_path('../locales', File.dirname(__FILE__))
# e.g. /opt/puppetlabs/puppet/share/locale
--
2.13.2