Sha256: 2cb4b2daed5728f821c02602db37a4ec9efea17f4dfa27aa19a5e000f491b538

Contents?: true

Size: 1.95 KB

Versions: 3

Compression:

Stored size: 1.95 KB

Contents

class Puppet::Network::Handler
    class MissingMasterError < RuntimeError; end # Cannot find the master client
    # A simple server for triggering a new run on a Puppet client.
    class Runner < Handler
        desc "An interface for triggering client configuration runs."

        @interface = XMLRPC::Service::Interface.new("puppetrunner") { |iface|
            iface.add_method("string run(string, string)")
        }

        side :client

        # Run the client configuration right now, optionally specifying
        # tags and whether to ignore schedules
        def run(tags = nil, ignoreschedules = false, fg = true, client = nil, clientip = nil)
            # We need to retrieve the client
            master = Puppet::Network::Client.client(:Master).instance

            unless master
                raise MissingMasterError, "Could not find the master client"
            end

            if Puppet::Util::Pidlock.new(Puppet[:puppetdlockfile]).locked?
                Puppet.notice "Could not trigger run; already running"
                return "running"
            end

            if tags == ""
                tags = nil
            end

            if ignoreschedules == ""
                ignoreschedules == nil
            end

            msg = ""
            if client
                msg = "%s(%s) " % [client, clientip]
            end
            msg += "triggered run" %
            if tags
                msg += " with tags %s" % tags
            end

            if ignoreschedules
                msg += " without schedules"
            end

            Puppet.notice msg

            # And then we need to tell it to run, with this extra info.
            if fg
                master.run(tags, ignoreschedules)
            else
                Puppet.newthread do
                    master.run(tags, ignoreschedules)
                end
            end

            return "success"
        end
    end
end

# $Id: runner.rb 2479 2007-05-07 22:29:44Z luke $

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
puppet-0.23.0 lib/puppet/network/handler/runner.rb
puppet-0.23.1 lib/puppet/network/handler/runner.rb
puppet-0.23.2 lib/puppet/network/handler/runner.rb