From 3a8ed51f3e9106a5aa94a762e64c8cf94164ae3f Mon Sep 17 00:00:00 2001
From: Matsuu Takuto <matsuu@gentoo.org>
Date: Sun, 28 Feb 2010 03:04:56 +0000
Subject: Version bumped. Fixed rrd issue, bug #294304. (Portage version:
 2.1.7.17/cvs/Linux x86_64)

---
 app-admin/puppet/ChangeLog                     |   8 +-
 app-admin/puppet/files/puppet-0.25.4-rrd.patch | 189 +++++++++++++++++++++++++
 app-admin/puppet/puppet-0.25.4.ebuild          | 122 ++++++++++++++++
 3 files changed, 318 insertions(+), 1 deletion(-)
 create mode 100644 app-admin/puppet/files/puppet-0.25.4-rrd.patch
 create mode 100644 app-admin/puppet/puppet-0.25.4.ebuild

(limited to 'app-admin')

diff --git a/app-admin/puppet/ChangeLog b/app-admin/puppet/ChangeLog
index 72f116d7d413..4e198434e788 100644
--- a/app-admin/puppet/ChangeLog
+++ b/app-admin/puppet/ChangeLog
@@ -1,6 +1,12 @@
 # ChangeLog for app-admin/puppet
 # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-admin/puppet/ChangeLog,v 1.51 2010/01/26 15:58:13 matsuu Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-admin/puppet/ChangeLog,v 1.52 2010/02/28 03:04:54 matsuu Exp $
+
+*puppet-0.25.4 (28 Feb 2010)
+
+  28 Feb 2010; MATSUU Takuto <matsuu@gentoo.org> +puppet-0.25.4.ebuild,
+  +files/puppet-0.25.4-rrd.patch:
+  Version bumped. Fixed rrd issue, bug #294304.
 
 *puppet-0.25.3 (26 Jan 2010)
 
diff --git a/app-admin/puppet/files/puppet-0.25.4-rrd.patch b/app-admin/puppet/files/puppet-0.25.4-rrd.patch
new file mode 100644
index 000000000000..ef0de5ad5c00
--- /dev/null
+++ b/app-admin/puppet/files/puppet-0.25.4-rrd.patch
@@ -0,0 +1,189 @@
+diff -Naur puppet-0.25.4.orig//lib/puppet/feature/base.rb puppet-0.25.4//lib/puppet/feature/base.rb
+--- puppet-0.25.4.orig//lib/puppet/feature/base.rb	2010-01-28 12:48:33.000000000 +0900
++++ puppet-0.25.4//lib/puppet/feature/base.rb	2010-02-28 11:36:28.000000000 +0900
+@@ -27,7 +27,7 @@
+ Puppet.features.add(:augeas, :libs => ["augeas"])
+ 
+ # We have RRD available
+-Puppet.features.add(:rrd, :libs => ["RRDtool"])
++Puppet.features.add(:rrd, :libs => ["RRD"])
+ 
+ # We have OpenSSL
+ Puppet.features.add(:openssl, :libs => ["openssl"])
+diff -Naur puppet-0.25.4.orig//lib/puppet/reports/rrdgraph.rb puppet-0.25.4//lib/puppet/reports/rrdgraph.rb
+--- puppet-0.25.4.orig//lib/puppet/reports/rrdgraph.rb	2010-01-28 12:48:34.000000000 +0900
++++ puppet-0.25.4//lib/puppet/reports/rrdgraph.rb	2010-02-28 11:35:34.000000000 +0900
+@@ -1,12 +1,13 @@
+ Puppet::Reports.register_report(:rrdgraph) do
+     desc "Graph all available data about hosts using the RRD library.  You
+         must have the Ruby RRDtool library installed to use this report, which
+-        you can get from `the RubyRRDTool RubyForge page`_.  This package may also
+-        be available as ``ruby-rrd`` or ``rrdtool-ruby`` in your distribution's package
++        is bundled in RRDtool, which you can get from  `the RRDTool homepage`_.  
++        This package may also be available as ``librrd-ruby``, ``ruby-rrd`` or 
++        ``rrdtool-ruby`` in your distribution's package
+         management system.  The library and/or package will both require the binary
+         ``rrdtool`` package from your distribution to be installed.
+ 
+-        .. _the RubyRRDTool RubyForge page: http://rubyforge.org/projects/rubyrrdtool/
++        .. _the RRDTool homepage: http://oss.oetiker.ch/rrdtool/download.en.html
+ 
+         This report will create, manage, and graph RRD database files for each
+         of the metrics generated during transactions, and it will create a
+diff -Naur puppet-0.25.4.orig//lib/puppet/util/metric.rb puppet-0.25.4//lib/puppet/util/metric.rb
+--- puppet-0.25.4.orig//lib/puppet/util/metric.rb	2010-01-28 12:48:34.000000000 +0900
++++ puppet-0.25.4//lib/puppet/util/metric.rb	2010-02-28 11:35:34.000000000 +0900
+@@ -1,5 +1,6 @@
+ # included so we can test object types
+ require 'puppet'
++require 'RRD'
+ 
+ # A class for handling metrics.  This is currently ridiculously hackish.
+ class Puppet::Util::Metric
+@@ -31,7 +32,6 @@
+ 
+         start ||= Time.now.to_i - 5
+ 
+-        @rrd = RRDtool.new(self.path)
+         args = []
+ 
+         values.each { |value|
+@@ -42,14 +42,17 @@
+         args.push "RRA:AVERAGE:0.5:1:300"
+ 
+         begin
+-            @rrd.create( Puppet[:rrdinterval].to_i, start, args)
++        RRD.create(self.path,
++                "--start", start.to_s,
++                "--step", Puppet[:rrdinterval].to_i,
++                *args)
+         rescue => detail
+             raise "Could not create RRD file %s: %s" % [path,detail]
+         end
+     end
+ 
+     def dump
+-        puts @rrd.info
++        puts RRD.info(self.path)
+     end
+ 
+     def graph(range = nil)
+@@ -84,12 +87,12 @@
+             if range
+                 args.push("--start",range[0],"--end",range[1])
+             else
+-                args.push("--start", Time.now.to_i - time, "--end", Time.now.to_i)
++                args.push("--start", (Time.now.to_i - time).to_s, "--end", Time.now.to_i.to_s)
+             end
+ 
+             begin
+-                #Puppet.warning "args = #{args}"
+-                RRDtool.graph( args )
++                #Puppet.warning "args = #{args.join("|")}"
++                RRD.graph( * args )
+             rescue => detail
+                 Puppet.err "Failed to graph %s: %s" % [self.name,detail]
+             end
+@@ -122,7 +125,6 @@
+             self.create(time - 5)
+         end
+ 
+-        @rrd ||= RRDtool.new(self.path)
+ 
+         # XXX this is not terribly error-resistant
+         args = [time]
+@@ -135,7 +137,9 @@
+         arg = args.join(":")
+         template = temps.join(":")
+         begin
+-            @rrd.update( template, [ arg ] )
++            RRD.update(self.path, 
++                "--template", template, 
++                arg )
+             #system("rrdtool updatev %s '%s'" % [self.path, arg])
+         rescue => detail
+             raise Puppet::Error, "Failed to update %s: %s" % [self.name,detail]
+diff -Naur puppet-0.25.4.orig//spec/unit/util/metric.rb puppet-0.25.4//spec/unit/util/metric.rb
+--- puppet-0.25.4.orig//spec/unit/util/metric.rb	2010-01-28 12:48:34.000000000 +0900
++++ puppet-0.25.4//spec/unit/util/metric.rb	2010-02-28 11:35:34.000000000 +0900
+@@ -7,6 +7,13 @@
+ describe Puppet::Util::Metric do
+     before do
+         @metric = Puppet::Util::Metric.new("foo")
++        #if we don't retrive it before the test the :rrddir test will
++        #fail at after
++        @basedir = @metric.basedir
++    end
++
++    after do
++        FileUtils.rm_rf(@basedir) if File.directory?(@basedir)
+     end
+ 
+     it "should be aliased to Puppet::Metric" do
+@@ -84,12 +91,46 @@
+         @metric[:foo].should be_nil
+     end
+ 
+-    # LAK: I'm not taking the time to develop these tests right now.
+-    # I expect they should actually be extracted into a separate class
+-    # anyway.
+-    it "should be able to graph metrics using RRDTool"
+-
+-    it "should be able to create a new RRDTool database"
+-
+-    it "should be able to store metrics into an RRDTool database"
++    it "should be able to graph metrics using RRDTool" do
++        ensure_rrd_folder
++        populate_metric
++        @metric.graph
++    end
++
++    it "should be able to create a new RRDTool database" do
++        ensure_rrd_folder
++        add_random_values_to_metric
++        @metric.create
++        File.exist?(@metric.path).should == true
++    end
++
++    it "should be able to store metrics into an RRDTool database" do
++        ensure_rrd_folder
++        populate_metric
++        File.exist?(@metric.path).should == true
++    end
++
++    def ensure_rrd_folder()
++        #in normal runs puppet does this for us (not sure where)
++        FileUtils.mkdir_p(@basedir) unless File.directory?(@basedir)
++    end
++
++    def populate_metric()
++        time = Time.now.to_i
++        time -= 100 * 1800
++        200.times {
++            @metric = Puppet::Util::Metric.new("foo")
++            add_random_values_to_metric
++            @metric.store(time)
++            time += 1800
++        }
++    end
++
++    def add_random_values_to_metric()
++        @metric.values.clear
++        random_params = { :data1 => 10, :data2 => 30, :data3 => 100 }
++        random_params.each { | label, maxvalue |
++            @metric.newvalue(label, rand(maxvalue))
++    }
++    end
+ end
+diff -Naur puppet-0.25.4.orig//test/util/metrics.rb puppet-0.25.4//test/util/metrics.rb
+--- puppet-0.25.4.orig//test/util/metrics.rb	2010-01-28 12:48:34.000000000 +0900
++++ puppet-0.25.4//test/util/metrics.rb	2010-02-28 11:35:34.000000000 +0900
+@@ -53,6 +53,8 @@
+         report = Puppet::Transaction::Report.new
+         time = Time.now.to_i
+         start = time
++        #in normal runs puppet does this for us (not sure where)
++        Dir.mkdir(Puppet[:rrddir]) unless File.directory?(Puppet[:rrddir])
+         10.times {
+             rundata(report, time)
+             time += 300
diff --git a/app-admin/puppet/puppet-0.25.4.ebuild b/app-admin/puppet/puppet-0.25.4.ebuild
new file mode 100644
index 000000000000..4f1dfbefa884
--- /dev/null
+++ b/app-admin/puppet/puppet-0.25.4.ebuild
@@ -0,0 +1,122 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-admin/puppet/puppet-0.25.4.ebuild,v 1.1 2010/02/28 03:04:54 matsuu Exp $
+
+EAPI="2"
+inherit elisp-common eutils ruby
+
+DESCRIPTION="A system automation and configuration management software"
+HOMEPAGE="http://reductivelabs.com/projects/puppet"
+SRC_URI="http://reductivelabs.com/downloads/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="augeas emacs ldap rrdtool shadow vim-syntax"
+KEYWORDS="~amd64 ~ppc ~sparc ~x86"
+
+DEPEND="dev-lang/ruby[ssl]
+	emacs? ( virtual/emacs )
+	>=dev-ruby/facter-1.5.0"
+RDEPEND="${DEPEND}
+	>=app-portage/eix-0.18.0
+	augeas? ( dev-ruby/ruby-augeas )
+	ldap? ( dev-ruby/ruby-ldap )
+	rrdtool? ( >=net-analyzer/rrdtool-1.2.23[ruby] )
+	shadow? ( dev-ruby/ruby-shadow )"
+
+USE_RUBY="ruby18"
+
+SITEFILE="50${PN}-mode-gentoo.el"
+
+pkg_setup() {
+	enewgroup puppet
+	enewuser puppet -1 -1 /var/lib/puppet puppet
+}
+
+src_prepare() {
+	# Bug #294304
+	epatch "${FILESDIR}/${P}-rrd.patch"
+}
+
+src_compile() {
+	if use emacs ; then
+		elisp-compile ext/emacs/puppet-mode.el || die "elisp-compile failed"
+	fi
+}
+
+src_install() {
+	DESTDIR="${D}" ruby_einstall "$@" || die
+	DESTDIR="${D}" erubydoc || die
+
+	newinitd "${FILESDIR}"/puppetmaster-0.25.init puppetmaster || die
+	doconfd conf/gentoo/conf.d/puppetmaster || die
+	newinitd "${FILESDIR}"/puppet-0.25.init puppet || die
+	doconfd conf/gentoo/conf.d/puppet || die
+
+	# Initial configuration files
+	keepdir /etc/puppet/manifests || die
+	insinto /etc/puppet
+	doins conf/gentoo/puppet/* || die
+	doins conf/auth.conf || die
+
+	# Location of log and data files
+	keepdir /var/run/puppet || die
+	keepdir /var/log/puppet || die
+	keepdir /var/lib/puppet/ssl || die
+	keepdir /var/lib/puppet/files || die
+	fowners -R puppet:puppet /var/{run,log,lib}/puppet || die
+
+	if use emacs ; then
+		elisp-install ${PN} ext/emacs/puppet-mode.el* || die "elisp-install failed"
+		elisp-site-file-install "${FILESDIR}/${SITEFILE}" || die
+	fi
+
+	if use ldap ; then
+		insinto /etc/openldap/schema; doins ext/ldap/puppet.schema || die
+	fi
+
+	if use vim-syntax ; then
+		insinto /usr/share/vim/vimfiles/syntax; doins ext/vim/syntax/puppet.vim || die
+		insinto /usr/share/vim/vimfiles/ftdetect; doins	ext/vim/ftdetect/puppet.vim || die
+	fi
+
+	# ext and examples files
+	for f in $(find ext examples -type f) ; do
+		docinto "$(dirname ${f})"; dodoc "${f}" || die
+	done
+	docinto conf; dodoc conf/namespaceauth.conf || die
+}
+
+pkg_postinst() {
+	elog
+	elog "Please, *don't* include the --ask option in EMERGE_EXTRA_OPTS as this could"
+	elog "cause puppet to hang while installing packages."
+	elog
+	elog "Puppet uses eix to get information about currently installed packages,"
+	elog "so please keep the eix metadata cache updated so puppet is able to properly"
+	elog "handle package installations."
+	elog
+	elog "Currently puppet only supports adding and removing services to the default"
+	elog "runlevel, if you want to add/remove a service from another runlevel you may"
+	elog "do so using symlinking."
+	elog
+
+	if [ \
+		-f "${ROOT}/etc/puppet/puppetd.conf" -o \
+		-f "${ROOT}/etc/puppet/puppetmaster.conf" -o \
+		-f "${ROOT}/etc/puppet/puppetca.conf" \
+	] ; then
+		elog
+		elog "Please remove deprecated config files."
+		elog "	/etc/puppet/puppetca.conf"
+		elog "	/etc/puppet/puppetd.conf"
+		elog "	/etc/puppet/puppetmasterd.conf"
+		elog
+	fi
+
+	use emacs && elisp-site-regen
+}
+
+pkg_postrm() {
+	use emacs && elisp-site-regen
+}
-- 
cgit v1.2.3-65-gdbad