[Pkg-puppet-devel] Bug#780223: unblock: puppet/3.7.2-3

Apollon Oikonomopoulos apoikos at debian.org
Thu Mar 12 10:59:44 UTC 2015


Control: tags -1 - moreinfo

Hi,

On 21:35 Wed 11 Mar     , Niels Thykier wrote:
> Ack, looks good.  Please upload it to unstable and remove the moreinfo
> tag once it has been accepted.

Uploaded and accepted into unstable with the following minor changes:

 - Add a note in README.Debian clarifying the dependencies needed for 
   stored configs to work and noting the deprecation status.

 - Improve the ActiveRecord 4 patch to also include 
   clear_active_connections! stubs in the testsuite's specs. We do not 
   use the test suite directly, but are shipping it in puppet-testsuite, 
   so I did the change for completeness.

Full debdiff since 3.7.2-2 and interdiff attached.

Regards,
Apollon
-------------- next part --------------
diff -u puppet-3.7.2/debian/changelog puppet-3.7.2/debian/changelog
--- puppet-3.7.2/debian/changelog	2015-03-10 19:57:24.000000000 +0200
+++ puppet-3.7.2/debian/changelog	2015-03-12 11:46:11.000000000 +0200
@@ -5,6 +5,8 @@
   * Fix service enable/disable in the Debian service provider (Closes: #775795)
   * Fix stored configs with ActiveRecord 4.x (Closes: #774643)
     + puppetmaster-common: add Recommends for stored configs
+    + Mention stored configs dependencies in README.Debian. Also add a
+      note for the deprecation of AR-based stored configs.
   * Preserve and honor changes in /etc/default/puppet (Closes: #778891)
     + Do not remove /etc/default/puppet on upgrade
     + Disable the agent when upgrading and START != yes
diff -u puppet-3.7.2/debian/patches/0006-Storeconfigs-compatibility-with-ActiveRecord-4.patch puppet-3.7.2/debian/patches/0006-Storeconfigs-compatibility-with-ActiveRecord-4.patch
--- puppet-3.7.2/debian/patches/0006-Storeconfigs-compatibility-with-ActiveRecord-4.patch	2015-03-10 19:57:24.000000000 +0200
+++ puppet-3.7.2/debian/patches/0006-Storeconfigs-compatibility-with-ActiveRecord-4.patch	2015-03-12 11:46:11.000000000 +0200
@@ -1,6 +1,6 @@
-From 988b0aff88429f820ee247533b8aed4a77d11a62 Mon Sep 17 00:00:00 2001
+From 5628459ba86a5d535babd6e904de9db42045d6d4 Mon Sep 17 00:00:00 2001
 From: Apollon Oikonomopoulos <apoikos at debian.org>
-Date: Tue, 10 Mar 2015 19:46:39 +0200
+Date: Thu, 12 Mar 2015 11:33:05 +0200
 Subject: Stored configs compatibility with ActiveRecord 4.x
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
@@ -30,7 +30,8 @@
  lib/puppet/rails/fact_value.rb      |  3 +++
  lib/puppet/rails/param_value.rb     |  4 ++--
  lib/puppet/rails/resource_tag.rb    |  4 ++--
- 6 files changed, 24 insertions(+), 15 deletions(-)
+ spec/unit/rails_spec.rb             |  6 +++---
+ 7 files changed, 27 insertions(+), 18 deletions(-)
 
 diff --git a/lib/puppet/rails.rb b/lib/puppet/rails.rb
 index 2c97c02..adb20fb 100644
@@ -189,6 +190,30 @@
      tags.each do |val|
        val['resource_id'] = Integer(val['resource_id'])
      end
+diff --git a/spec/unit/rails_spec.rb b/spec/unit/rails_spec.rb
+index b12f81f..2fb0e4f 100755
+--- a/spec/unit/rails_spec.rb
++++ b/spec/unit/rails_spec.rb
+@@ -37,7 +37,7 @@ describe Puppet::Rails, "when initializing any connection", :if => Puppet.featur
+     logger.expects(:level=).with(Logger::DEBUG)
+ 
+     ActiveRecord::Base.stubs(:allow_concurrency=)
+-    ActiveRecord::Base.stubs(:verify_active_connections!)
++    ActiveRecord::Base.stubs(:clear_active_connections!)
+     ActiveRecord::Base.stubs(:establish_connection)
+     Puppet::Rails.stubs(:database_arguments).returns({})
+ 
+@@ -60,8 +60,8 @@ describe Puppet::Rails, "when initializing any connection", :if => Puppet.featur
+     end
+   end
+ 
+-  it "should call ActiveRecord::Base.verify_active_connections!" do
+-    ActiveRecord::Base.expects(:verify_active_connections!)
++  it "should call ActiveRecord::Base.clear_active_connections!" do
++    ActiveRecord::Base.expects(:clear_active_connections!)
+ 
+     Puppet::Rails.connect
+   end
 -- 
 2.1.4
 
only in patch2:
unchanged:
--- puppet-3.7.2/debian/README.Debian	2014-11-13 13:56:19.000000000 +0200
+++ puppet-3.7.2/debian/README.Debian	2015-03-12 11:45:42.000000000 +0200
@@ -10,3 +10,17 @@
 changes made to files in /etc via etckeeper before and after its run.
 
  -- Stig Sandbeck Mathisen <ssm at debian.org>, Mon,  5 Aug 2013 23:36:19 +0200
+
+Using stored configs
+--------------------
+
+Using the master's stored configs functionality with the ActiveRecord backend
+requires the ruby-activerecord (and, since Jessie,
+ruby-activerecord-deprecated-finders) packages to be installed. Furthermore a
+database adapter for the database of choice (e.g. ruby-mysql) must be
+installed.
+
+Note that ActiveRecord-based stored configs are deprecated and will be removed
+in Puppet 4 in favor of PuppetDB.
+
+ -- Apollon Oikonomopulos <apoikos at debian.org>  Thu, 12 Mar 2015 10:50:47 +0200
-------------- next part --------------
diff -Nru puppet-3.7.2/debian/changelog puppet-3.7.2/debian/changelog
--- puppet-3.7.2/debian/changelog	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/changelog	2015-03-12 11:46:11.000000000 +0200
@@ -1,3 +1,23 @@
+puppet (3.7.2-3) unstable; urgency=medium
+
+  [ Apollon Oikonomopoulos ]
+  * Team upload.
+  * Fix service enable/disable in the Debian service provider (Closes: #775795)
+  * Fix stored configs with ActiveRecord 4.x (Closes: #774643)
+    + puppetmaster-common: add Recommends for stored configs
+    + Mention stored configs dependencies in README.Debian. Also add a
+      note for the deprecation of AR-based stored configs.
+  * Preserve and honor changes in /etc/default/puppet (Closes: #778891)
+    + Do not remove /etc/default/puppet on upgrade
+    + Disable the agent when upgrading and START != yes
+    + puppet.service: pass $DAEMON_OPTS to puppet agent. Thanks to Rik Theys!
+    + Add a NEWS note about the START flag
+
+  [ Stig Sandbeck Mathisen ]
+  * Add upstream metadata
+
+ -- Apollon Oikonomopoulos <apoikos at debian.org>  Tue, 10 Mar 2015 14:33:45 +0200
+
 puppet (3.7.2-2) unstable; urgency=medium
 
   [ Gaudenz Steinlin ]
diff -Nru puppet-3.7.2/debian/control puppet-3.7.2/debian/control
--- puppet-3.7.2/debian/control	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/control	2015-03-10 19:57:24.000000000 +0200
@@ -81,6 +81,8 @@
  ruby | ruby-interpreter,
 Breaks: puppet (<< 0.24.7-1), puppetmaster (<< 2.7.6-1~)
 Replaces: puppet (<< 0.24.7-1), puppetmaster (<< 2.7.6-1~)
+Recommends: ruby-activerecord,
+ ruby-activerecord-deprecated-finders
 Suggests:
  apache2 | nginx,
  puppet-el,
diff -Nru puppet-3.7.2/debian/copyright puppet-3.7.2/debian/copyright
--- puppet-3.7.2/debian/copyright	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/copyright	2015-03-10 16:11:08.000000000 +0200
@@ -1,6 +1,6 @@
 Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 Upstream-Name: Puppet
-Source: git://github.com/reductivelabs/puppet.git,
+Source: https://github.com/puppetlabs/puppet
 
 Files: *
 Copyright: 2004-2012 Puppet Labs Inc
diff -Nru puppet-3.7.2/debian/NEWS puppet-3.7.2/debian/NEWS
--- puppet-3.7.2/debian/NEWS	2014-11-13 13:56:19.000000000 +0200
+++ puppet-3.7.2/debian/NEWS	2015-03-10 19:57:24.000000000 +0200
@@ -1,3 +1,17 @@
+puppet (3.7.2-3) unstable; urgency=medium
+ 
+  The START flag in /etc/default/puppet is since 3.2.4-1 no longer effective.
+  To preserve state across upgrades for old setups where the puppet agent was
+  disabled using the START flag, the agent will be disabled using its built-in
+  disable facility if START is not set to true. In that case, you will need to
+  run "puppet agent --enable" before the agent can connect to a puppet master.
+
+  On systems running the puppet agent via cron, make sure that you do not rely
+  on the START variable in /etc/default/puppet and instead disable the
+  service using update-rc.d or systemctl.
+
+ -- Apollon Oikonomopoulos <apoikos at debian.org>  Tue, 10 Mar 2015 14:54:15 +0200
+
 puppet (3.2.4-1) unstable; urgency=high
 
   The puppet agent is now started by default, regardless of init system.
diff -Nru puppet-3.7.2/debian/patches/0005-Fix-service-listing-and-enable-disable-in-Debian.patch puppet-3.7.2/debian/patches/0005-Fix-service-listing-and-enable-disable-in-Debian.patch
--- puppet-3.7.2/debian/patches/0005-Fix-service-listing-and-enable-disable-in-Debian.patch	1970-01-01 02:00:00.000000000 +0200
+++ puppet-3.7.2/debian/patches/0005-Fix-service-listing-and-enable-disable-in-Debian.patch	2015-03-10 16:11:08.000000000 +0200
@@ -0,0 +1,161 @@
+From a9b76dbfba96f537227c445297d3ccd115de46ca Mon Sep 17 00:00:00 2001
+From: Apollon Oikonomopoulos <apoikos at debian.org>
+Date: Fri, 27 Feb 2015 10:55:34 +0200
+Subject: [PATCH] Fix service listing and enable/disable in Debian
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Add two support methods to detect when we're running systemd as PID 1
+and if a service has only an initscript.
+
+Use these to implement the following functionality:
+
+ • Under systemd, use systemctl enable/disable for all services. This
+   works correctly for all types of services.
+
+ • Under systemd, use systemctl is-enabled only for services that have a
+   systemd unit file and fall back to invoke-rc.d for sysv services.
+
+Also, fix self.instances to augment the list of systemd-enabled services
+with the sysv services.
+
+Finally drop pre-2.88 sysv-rc support and use `update-rc.d enable' for
+all services when running under sysv-rc, preserving order changes.
+---
+ lib/puppet/provider/service/debian.rb | 94 ++++++++++++++++++++++++++---------
+ 1 file changed, 71 insertions(+), 23 deletions(-)
+
+diff --git a/lib/puppet/provider/service/debian.rb b/lib/puppet/provider/service/debian.rb
+index 9f7a2f5..7a26409 100644
+--- a/lib/puppet/provider/service/debian.rb
++++ b/lib/puppet/provider/service/debian.rb
+@@ -15,6 +15,7 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
+   # http://projects.reductivelabs.com/issues/2538
+   # is resolved.
+   commands :invoke_rc => "/usr/sbin/invoke-rc.d"
++  optional_commands :systemctl => "/bin/systemctl"
+ 
+   # This isn't being used directly, it's just here to ensure
+   # that the /usr/sbin/service binary is available.
+@@ -23,38 +24,82 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
+ 
+   defaultfor :operatingsystem => :debian
+ 
++  def self.runs_on_systemd?
++    Dir.exists? "/run/systemd/system"
++  end
++
++  def is_sysv_unit?
++    # The sysv generator sets the SourcePath attribute to the name of the
++    # initscript. Use this to detect whether a unit is backed by an initscript
++    # or not.
++    source = systemctl(:show, "-pSourcePath", @resource[:name])
++    source.start_with? "SourcePath=/etc/init.d/"
++  end
++
++  def self.instances
++    # We need to merge services with systemd unit files with those only having
++    # an initscript. Note that we could use `systemctl --all` to get sysv
++    # services as well, however it would only output *enabled* services.
++    i = {}
++    if self.runs_on_systemd?
++      begin
++        output = systemctl('list-unit-files', '--type', 'service', '--full', '--all',  '--no-pager')
++        output.scan(/^(\S+)\.service\s+(disabled|enabled)\s*$/i).each do |m|
++          i[m[0]] = new(:name => m[0])
++        end
++      rescue Puppet::ExecutionFailure
++      end
++    end
++    get_services(defpath).each do |sysv|
++      unless i.has_key?(sysv.name)
++        i[sysv.name] = sysv
++      end
++    end
++    return i.values
++  end
++
+   # Remove the symlinks
+   def disable
+-    if `dpkg --compare-versions $(dpkg-query -W --showformat '${Version}' sysv-rc) ge 2.88 ; echo $?`.to_i == 0
+-      update_rc @resource[:name], "disable"
++    if self.class.runs_on_systemd?
++      systemctl(:disable, @resource[:name])
+     else
+-      update_rc "-f", @resource[:name], "remove"
+-      update_rc @resource[:name], "stop", "00", "1", "2", "3", "4", "5", "6", "."
++      update_rc @resource[:name], "disable"
+     end
+   end
+ 
+   def enabled?
+-    # TODO: Replace system call when Puppet::Util::Execution.execute gives us a way
+-    # to determine exit status.  http://projects.reductivelabs.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
+-    elsif [105].include?($CHILD_STATUS.exitstatus)
+-      # 105 is unknown, which generally means the iniscript does not support query
+-      # The debian policy states that the initscript should support methods of query
+-      # For those that do not, peform the checks manually
+-      # http://www.debian.org/doc/debian-policy/ch-opersys.html
+-      if get_start_link_count >= 4
++    # Initscript-backed services have no enabled status in systemd, so we
++    # need to query them using invoke-rc.d.
++    if self.class.runs_on_systemd? and not is_sysv_unit?
++      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.  http://projects.reductivelabs.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
++      elsif [105].include?($CHILD_STATUS.exitstatus)
++        # 105 is unknown, which generally means the iniscript does not support query
++        # The debian policy states that the initscript should support methods of query
++        # For those that do not, peform the checks manually
++        # http://www.debian.org/doc/debian-policy/ch-opersys.html
++        if get_start_link_count >= 4
++          return :true
++        else
++          return :false
++        end
++      else
++        return :false
++      end
+     end
+   end
+ 
+@@ -63,8 +108,11 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
+   end
+ 
+   def enable
+-    update_rc "-f", @resource[:name], "remove"
+-    update_rc @resource[:name], "defaults"
++    if self.class.runs_on_systemd?
++      systemctl(:enable, @resource[:name])
++    else
++      update_rc @resource[:name], "enable"
++    end
+   end
+ 
+   # The start, stop, restart and status command use service
+-- 
+2.1.4
+
diff -Nru puppet-3.7.2/debian/patches/0006-Storeconfigs-compatibility-with-ActiveRecord-4.patch puppet-3.7.2/debian/patches/0006-Storeconfigs-compatibility-with-ActiveRecord-4.patch
--- puppet-3.7.2/debian/patches/0006-Storeconfigs-compatibility-with-ActiveRecord-4.patch	1970-01-01 02:00:00.000000000 +0200
+++ puppet-3.7.2/debian/patches/0006-Storeconfigs-compatibility-with-ActiveRecord-4.patch	2015-03-12 11:46:11.000000000 +0200
@@ -0,0 +1,219 @@
+From 5628459ba86a5d535babd6e904de9db42045d6d4 Mon Sep 17 00:00:00 2001
+From: Apollon Oikonomopoulos <apoikos at debian.org>
+Date: Thu, 12 Mar 2015 11:33:05 +0200
+Subject: Stored configs compatibility with ActiveRecord 4.x
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Make ActiveRecord-based stored configs work again with ActiveRecord 4.x:
+
+ • Use AR::Base.clear_active_connections! instead of
+   AR::Base.verify_active_connections!
+
+ • Always call AR::Base.connection as a class method, never as an
+   instance method.
+
+ • Require 'activerecord/deprecated_finders' for AR versions later than 4.1 to
+   make all #find(:all) and #find_by_x methods work again.
+
+ • Silence AR's deprecation warnings. We know we are using deprecated
+   finders so these warnings are just (a lot of) noise.
+
+ • Drop all ":integer => true" options passed to add_index in the
+   schema. This was probably never a valid option anyway and was ignored
+   until Rails 4.x, but currently causes the DB bootstrapping to fail.
+---
+ lib/puppet/rails.rb                 |  5 ++++-
+ lib/puppet/rails/database/schema.rb | 20 ++++++++++----------
+ lib/puppet/rails/fact_name.rb       |  3 +++
+ lib/puppet/rails/fact_value.rb      |  3 +++
+ lib/puppet/rails/param_value.rb     |  4 ++--
+ lib/puppet/rails/resource_tag.rb    |  4 ++--
+ spec/unit/rails_spec.rb             |  6 +++---
+ 7 files changed, 27 insertions(+), 18 deletions(-)
+
+diff --git a/lib/puppet/rails.rb b/lib/puppet/rails.rb
+index 2c97c02..adb20fb 100644
+--- a/lib/puppet/rails.rb
++++ b/lib/puppet/rails.rb
+@@ -8,6 +8,9 @@ module Puppet::Rails
+   TIME_DEBUG = true
+ 
+   def self.connect
++    # Silence activerecord deprecation warnings
++    ActiveSupport::Deprecation.silenced = true
++
+     # This global init does not work for testing, because we remove
+     # the state dir on every test.
+     return if ActiveRecord::Base.connected?
+@@ -26,7 +29,7 @@ module Puppet::Rails
+     # As of ActiveRecord 2.2 allow_concurrency has been deprecated and no longer has any effect.
+     ActiveRecord::Base.allow_concurrency = true if Puppet::Util.activerecord_version < 2.2
+ 
+-    ActiveRecord::Base.verify_active_connections!
++    ActiveRecord::Base.clear_active_connections!
+ 
+     begin
+       args = database_arguments
+diff --git a/lib/puppet/rails/database/schema.rb b/lib/puppet/rails/database/schema.rb
+index 931a1b6..1216719 100644
+--- a/lib/puppet/rails/database/schema.rb
++++ b/lib/puppet/rails/database/schema.rb
+@@ -19,8 +19,8 @@ class Puppet::Rails::Schema
+           t.column :updated_at, :datetime
+           t.column :created_at, :datetime
+         end
+-        add_index :resources, :host_id, :integer => true
+-        add_index :resources, :source_file_id, :integer => true
++        add_index :resources, :host_id
++        add_index :resources, :source_file_id
+ 
+         # Thanks, mysql!  MySQL requires a length on indexes in text fields.
+         # So, we provide them for mysql and handle everything else specially.
+@@ -45,8 +45,8 @@ class Puppet::Rails::Schema
+           t.column :updated_at, :datetime
+           t.column :created_at, :datetime
+         end
+-        add_index :resource_tags, :resource_id, :integer => true
+-        add_index :resource_tags, :puppet_tag_id, :integer => true
++        add_index :resource_tags, :resource_id
++        add_index :resource_tags, :puppet_tag_id
+ 
+         create_table :puppet_tags do |t|
+           t.column :name, :string
+@@ -55,7 +55,7 @@ class Puppet::Rails::Schema
+         end
+ 
+         # Oracle automatically creates a primary key index
+-        add_index :puppet_tags, :id, :integer => true if Puppet[:dbadapter] != "oracle_enhanced"
++        add_index :puppet_tags, :id if Puppet[:dbadapter] != "oracle_enhanced"
+ 
+         create_table :hosts do |t|
+           t.column :name, :string, :null => false
+@@ -69,7 +69,7 @@ class Puppet::Rails::Schema
+           t.column :source_file_id, :integer
+           t.column :created_at, :datetime
+         end
+-        add_index :hosts, :source_file_id, :integer => true
++        add_index :hosts, :source_file_id
+         add_index :hosts, :name
+ 
+         create_table :fact_names do |t|
+@@ -86,8 +86,8 @@ class Puppet::Rails::Schema
+           t.column :updated_at, :datetime
+           t.column :created_at, :datetime
+         end
+-        add_index :fact_values, :fact_name_id, :integer => true
+-        add_index :fact_values, :host_id, :integer => true
++        add_index :fact_values, :fact_name_id
++        add_index :fact_values, :host_id
+ 
+         create_table :param_values do |t|
+           t.column :value,  :text, :null => false
+@@ -97,8 +97,8 @@ class Puppet::Rails::Schema
+           t.column :updated_at, :datetime
+           t.column :created_at, :datetime
+         end
+-        add_index :param_values, :param_name_id, :integer => true
+-        add_index :param_values, :resource_id, :integer => true
++        add_index :param_values, :param_name_id
++        add_index :param_values, :resource_id
+ 
+         create_table :param_names do |t|
+           t.column :name, :string, :null => false
+diff --git a/lib/puppet/rails/fact_name.rb b/lib/puppet/rails/fact_name.rb
+index 073bbcb..5fe5264 100644
+--- a/lib/puppet/rails/fact_name.rb
++++ b/lib/puppet/rails/fact_name.rb
+@@ -1,4 +1,7 @@
+ require 'active_record'
++if Gem::Version.new(ActiveRecord::VERSION::STRING) >= Gem::Version.new('4.1')
++  require 'active_record/deprecated_finders'
++end
+ require 'puppet/rails'
+ require 'puppet/rails/fact_value'
+ 
+diff --git a/lib/puppet/rails/fact_value.rb b/lib/puppet/rails/fact_value.rb
+index 918c0ac..d1657b9 100644
+--- a/lib/puppet/rails/fact_value.rb
++++ b/lib/puppet/rails/fact_value.rb
+@@ -1,4 +1,7 @@
+ require 'active_record'
++if Gem::Version.new(ActiveRecord::VERSION::STRING) >= Gem::Version.new('4.1')
++  require 'active_record/deprecated_finders'
++end
+ 
+ class Puppet::Rails::FactValue < ActiveRecord::Base
+   belongs_to :fact_name
+diff --git a/lib/puppet/rails/param_value.rb b/lib/puppet/rails/param_value.rb
+index d7c88f8..e082ed8 100644
+--- a/lib/puppet/rails/param_value.rb
++++ b/lib/puppet/rails/param_value.rb
+@@ -48,7 +48,7 @@ class Puppet::Rails::ParamValue < ActiveRecord::Base
+ 
+   # returns an array of hash containing all the parameters of a given resource
+   def self.find_all_params_from_resource(db_resource)
+-    params = db_resource.connection.select_all("SELECT v.id, v.value, v.line, v.resource_id, v.param_name_id, n.name FROM param_values v INNER JOIN param_names n ON v.param_name_id=n.id WHERE v.resource_id=#{db_resource.id}")
++    params = ActiveRecord::Base.connection.select_all("SELECT v.id, v.value, v.line, v.resource_id, v.param_name_id, n.name FROM param_values v INNER JOIN param_names n ON v.param_name_id=n.id WHERE v.resource_id=#{db_resource.id}")
+     params.each do |val|
+       val['value'] = unserialize_value(val['value'])
+       val['line'] = val['line'] ? Integer(val['line']) : nil
+@@ -59,7 +59,7 @@ class Puppet::Rails::ParamValue < ActiveRecord::Base
+ 
+   # returns an array of hash containing all the parameters of a given host
+   def self.find_all_params_from_host(db_host)
+-    params = db_host.connection.select_all("SELECT v.id, v.value,  v.line, v.resource_id, v.param_name_id, n.name FROM param_values v INNER JOIN resources r ON v.resource_id=r.id INNER JOIN param_names n ON v.param_name_id=n.id WHERE r.host_id=#{db_host.id}")
++    params = ActiveRecord::Base.connection.select_all("SELECT v.id, v.value,  v.line, v.resource_id, v.param_name_id, n.name FROM param_values v INNER JOIN resources r ON v.resource_id=r.id INNER JOIN param_names n ON v.param_name_id=n.id WHERE r.host_id=#{db_host.id}")
+     params.each do |val|
+       val['value'] = unserialize_value(val['value'])
+       val['line'] = val['line'] ? Integer(val['line']) : nil
+diff --git a/lib/puppet/rails/resource_tag.rb b/lib/puppet/rails/resource_tag.rb
+index 1c1aa45..1493d3e 100644
+--- a/lib/puppet/rails/resource_tag.rb
++++ b/lib/puppet/rails/resource_tag.rb
+@@ -8,7 +8,7 @@ class Puppet::Rails::ResourceTag < ActiveRecord::Base
+ 
+   # returns an array of hash containing tags of resource
+   def self.find_all_tags_from_resource(db_resource)
+-    tags = db_resource.connection.select_all("SELECT t.id, t.resource_id, p.name FROM resource_tags t INNER JOIN puppet_tags p ON t.puppet_tag_id=p.id WHERE t.resource_id=#{db_resource.id}")
++    tags = ActiveRecord::Base.connection.select_all("SELECT t.id, t.resource_id, p.name FROM resource_tags t INNER JOIN puppet_tags p ON t.puppet_tag_id=p.id WHERE t.resource_id=#{db_resource.id}")
+     tags.each do |val|
+       val['resource_id'] = Integer(val['resource_id'])
+     end
+@@ -17,7 +17,7 @@ class Puppet::Rails::ResourceTag < ActiveRecord::Base
+ 
+   # returns an array of hash containing tags of a host
+   def self.find_all_tags_from_host(db_host)
+-    tags = db_host.connection.select_all("SELECT t.id, t.resource_id, p.name FROM resource_tags t INNER JOIN resources r ON t.resource_id=r.id INNER JOIN puppet_tags p ON t.puppet_tag_id=p.id WHERE r.host_id=#{db_host.id}")
++    tags = ActiveRecord::Base.connection.select_all("SELECT t.id, t.resource_id, p.name FROM resource_tags t INNER JOIN resources r ON t.resource_id=r.id INNER JOIN puppet_tags p ON t.puppet_tag_id=p.id WHERE r.host_id=#{db_host.id}")
+     tags.each do |val|
+       val['resource_id'] = Integer(val['resource_id'])
+     end
+diff --git a/spec/unit/rails_spec.rb b/spec/unit/rails_spec.rb
+index b12f81f..2fb0e4f 100755
+--- a/spec/unit/rails_spec.rb
++++ b/spec/unit/rails_spec.rb
+@@ -37,7 +37,7 @@ describe Puppet::Rails, "when initializing any connection", :if => Puppet.featur
+     logger.expects(:level=).with(Logger::DEBUG)
+ 
+     ActiveRecord::Base.stubs(:allow_concurrency=)
+-    ActiveRecord::Base.stubs(:verify_active_connections!)
++    ActiveRecord::Base.stubs(:clear_active_connections!)
+     ActiveRecord::Base.stubs(:establish_connection)
+     Puppet::Rails.stubs(:database_arguments).returns({})
+ 
+@@ -60,8 +60,8 @@ describe Puppet::Rails, "when initializing any connection", :if => Puppet.featur
+     end
+   end
+ 
+-  it "should call ActiveRecord::Base.verify_active_connections!" do
+-    ActiveRecord::Base.expects(:verify_active_connections!)
++  it "should call ActiveRecord::Base.clear_active_connections!" do
++    ActiveRecord::Base.expects(:clear_active_connections!)
+ 
+     Puppet::Rails.connect
+   end
+-- 
+2.1.4
+
diff -Nru puppet-3.7.2/debian/patches/series puppet-3.7.2/debian/patches/series
--- puppet-3.7.2/debian/patches/series	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/patches/series	2015-03-10 16:11:08.000000000 +0200
@@ -2,3 +2,5 @@
 0002-Set-passenger-puppet-master-document-root.patch
 0003-fix-puppet-master-logcheck-rule.patch
 0004-debian-service-provider-use-service.patch
+0005-Fix-service-listing-and-enable-disable-in-Debian.patch
+0006-Storeconfigs-compatibility-with-ActiveRecord-4.patch
diff -Nru puppet-3.7.2/debian/puppet-common.preinst puppet-3.7.2/debian/puppet-common.preinst
--- puppet-3.7.2/debian/puppet-common.preinst	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/puppet-common.preinst	2015-03-10 19:57:24.000000000 +0200
@@ -18,7 +18,7 @@
     tmp_lockfile=$(mktemp /var/lib/puppet/state/agent_disabled.lock.XXXXXXXX)
     lockfile=/var/lib/puppet/state/agent_disabled.lock
 
-    printf '{"disabled_message":"Disabled by default on new installations"}' \
+    printf '{"disabled_message":"Disabled by default on new or unconfigured old installations"}' \
         > $tmp_lockfile
 
     mv $tmp_lockfile $lockfile
@@ -29,10 +29,33 @@
         # disable the puppet agent on the first install
         if [ -z "$2" ]; then
             disable_puppet_agent
+        elif dpkg --compare-versions "$2" lt "3.2.4-1~" && \
+            [ -e "/etc/default/puppet" ]; then
+            # Also disable puppet if we use conffiles from a version where the
+            # START flag mattered.
+            . /etc/default/puppet
+
+            if [ "x$START" != "xtrue" -a "x$START" != "xyes" -a "x$START" != "x0" ]; then
+                # Note that "0" is not a typo, it reflects the checks done
+                # in wheezy's initscript.
+                disable_puppet_agent
+            fi
         fi
         ;;
 
     upgrade)
+        # Disable puppet if we are upgrading from a version where the START
+        # flag mattered.
+        if dpkg --compare-versions "$2" lt "3.2.4-1~" && \
+            [ -e "/etc/default/puppet" ]; then
+            . /etc/default/puppet
+
+            if [ "x$START" != "xtrue" -a "x$START" != "xyes" -a "x$START" != "x0" ]; then
+                # Note that "0" is not a typo, it reflects the checks done
+                # in wheezy's initscript.
+                disable_puppet_agent
+            fi
+        fi
         ;;
 
     abort-upgrade)
diff -Nru puppet-3.7.2/debian/puppet.postinst puppet-3.7.2/debian/puppet.postinst
--- puppet-3.7.2/debian/puppet.postinst	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/puppet.postinst	1970-01-01 02:00:00.000000000 +0200
@@ -1,44 +0,0 @@
-#!/bin/sh
-# postinst script for puppet
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-#        * <postinst> `configure' <most-recently-configured-version>
-#        * <old-postinst> `abort-upgrade' <new version>
-#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
-#          <new-version>
-#        * <postinst> `abort-remove'
-#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
-#          <failed-install-package> <version> `removing'
-#          <conflicting-package> <version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-
-
-case "$1" in
-    configure)
-    ;;
-
-    abort-upgrade|abort-remove|abort-deconfigure)
-    ;;
-
-    *)
-        echo "postinst called with unknown argument \`$1'" >&2
-        exit 1
-    ;;
-esac
-
-if dpkg-maintscript-helper supports rm_conffile; then
-    dpkg-maintscript-helper rm_conffile \
-        /etc/default/puppet 3.2.3-1 puppet -- "$@"
-fi
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
diff -Nru puppet-3.7.2/debian/puppet.postrm puppet-3.7.2/debian/puppet.postrm
--- puppet-3.7.2/debian/puppet.postrm	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/puppet.postrm	1970-01-01 02:00:00.000000000 +0200
@@ -1,42 +0,0 @@
-#!/bin/sh
-# postrm script for puppet
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-#        * <postrm> `remove'
-#        * <postrm> `purge'
-#        * <old-postrm> `upgrade' <new-version>
-#        * <new-postrm> `failed-upgrade' <old-version>
-#        * <new-postrm> `abort-install'
-#        * <new-postrm> `abort-install' <old-version>
-#        * <new-postrm> `abort-upgrade' <old-version>
-#        * <disappearer's-postrm> `disappear' <overwriter>
-#          <overwriter-version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-
-
-case "$1" in
-    purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
-        if dpkg-maintscript-helper supports rm_conffile; then
-            dpkg-maintscript-helper rm_conffile \
-                /etc/default/puppet 3.2.3-1 puppet -- "$@"
-        fi
-
-    ;;
-
-    *)
-        echo "postrm called with unknown argument \`$1'" >&2
-        exit 1
-    ;;
-esac
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
diff -Nru puppet-3.7.2/debian/puppet.preinst puppet-3.7.2/debian/puppet.preinst
--- puppet-3.7.2/debian/puppet.preinst	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/puppet.preinst	1970-01-01 02:00:00.000000000 +0200
@@ -1,40 +0,0 @@
-#!/bin/sh
-# preinst script for #PACKAGE#
-#
-# see: dh_installdeb(1)
-
-set -e
-
-# summary of how this script can be called:
-#        * <new-preinst> `install'
-#        * <new-preinst> `install' <old-version>
-#        * <new-preinst> `upgrade' <old-version>
-#        * <old-preinst> `abort-upgrade' <new-version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
-
-
-case "$1" in
-    install|upgrade)
-    ;;
-
-    abort-upgrade)
-    ;;
-
-    *)
-        echo "preinst called with unknown argument \`$1'" >&2
-        exit 1
-    ;;
-esac
-
-if dpkg-maintscript-helper supports rm_conffile; then
-    dpkg-maintscript-helper rm_conffile \
-        /etc/default/puppet 3.2.3-1 puppet -- "$@"
-fi
-
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
-#DEBHELPER#
-
-exit 0
diff -Nru puppet-3.7.2/debian/puppet.service puppet-3.7.2/debian/puppet.service
--- puppet-3.7.2/debian/puppet.service	2015-03-10 14:41:11.000000000 +0200
+++ puppet-3.7.2/debian/puppet.service	2015-03-10 19:57:24.000000000 +0200
@@ -3,8 +3,9 @@
 
 [Service]
 Type=forking
+EnvironmentFile=-/etc/default/puppet
 PIDFile=/run/puppet/agent.pid
-ExecStart=/usr/bin/puppet agent
+ExecStart=/usr/bin/puppet agent $DAEMON_OPTS
 
 [Install]
 WantedBy=multi-user.target
diff -Nru puppet-3.7.2/debian/README.Debian puppet-3.7.2/debian/README.Debian
--- puppet-3.7.2/debian/README.Debian	2014-11-13 13:56:19.000000000 +0200
+++ puppet-3.7.2/debian/README.Debian	2015-03-12 11:45:42.000000000 +0200
@@ -10,3 +10,17 @@
 changes made to files in /etc via etckeeper before and after its run.
 
  -- Stig Sandbeck Mathisen <ssm at debian.org>, Mon,  5 Aug 2013 23:36:19 +0200
+
+Using stored configs
+--------------------
+
+Using the master's stored configs functionality with the ActiveRecord backend
+requires the ruby-activerecord (and, since Jessie,
+ruby-activerecord-deprecated-finders) packages to be installed. Furthermore a
+database adapter for the database of choice (e.g. ruby-mysql) must be
+installed.
+
+Note that ActiveRecord-based stored configs are deprecated and will be removed
+in Puppet 4 in favor of PuppetDB.
+
+ -- Apollon Oikonomopulos <apoikos at debian.org>  Thu, 12 Mar 2015 10:50:47 +0200
diff -Nru puppet-3.7.2/debian/upstream/metadata puppet-3.7.2/debian/upstream/metadata
--- puppet-3.7.2/debian/upstream/metadata	1970-01-01 02:00:00.000000000 +0200
+++ puppet-3.7.2/debian/upstream/metadata	2015-03-10 16:11:08.000000000 +0200
@@ -0,0 +1,4 @@
+---
+Bug-Database: https://tickets.puppetlabs.com/browse/PUP
+Repository: https://github.com/puppetlabs/puppet.git
+Repository-Browse: https://github.com/puppetlabs/puppet


More information about the Pkg-puppet-devel mailing list