Sha256: 75ba8ea4740c7aebd582e2e3fb2cf2f39ad33c2c6cd76dc0d2e7e534181b01e2

Contents?: true

Size: 1.86 KB

Versions: 1

Compression:

Stored size: 1.86 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
        @interface = XMLRPC::Service::Interface.new("puppetrunner") { |iface|
            iface.add_method("string run(string, string)")
        }

        # 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 2259 2007-03-06 19:03:05Z luke $

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
puppet-0.22.4 lib/puppet/network/handler/runner.rb