summaryrefslogtreecommitdiffstats
path: root/lib/puppet/client
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/client')
-rw-r--r--lib/puppet/client/master.rb27
-rw-r--r--lib/puppet/client/runner.rb17
2 files changed, 41 insertions, 3 deletions
diff --git a/lib/puppet/client/master.rb b/lib/puppet/client/master.rb
index b1da61405..9194b86be 100644
--- a/lib/puppet/client/master.rb
+++ b/lib/puppet/client/master.rb
@@ -25,6 +25,12 @@ class Puppet::Client::MasterClient < Puppet::Client
attr_accessor :objects
+ class << self
+ # Puppetd should only have one instance running, and we need a way
+ # to retrieve it.
+ attr_accessor :instance
+ end
+
def self.facts
facts = {}
Facter.each { |name,fact|
@@ -39,7 +45,7 @@ class Puppet::Client::MasterClient < Puppet::Client
end
# This method actually applies the configuration.
- def apply
+ def apply(tags = nil, ignoreschedules = false)
dostorage()
unless defined? @objects
raise Puppet::Error, "Cannot apply; objects not defined"
@@ -52,6 +58,14 @@ class Puppet::Client::MasterClient < Puppet::Client
transaction = @objects.evaluate
transaction.toplevel = true
+ if tags
+ transaction.tags = tags
+ end
+
+ if ignoreschedules
+ transaction.ignoreschedules = true
+ end
+
begin
transaction.evaluate
rescue Puppet::Error => detail
@@ -267,6 +281,13 @@ class Puppet::Client::MasterClient < Puppet::Client
return @objects
end
+ # Just so we can specify that we are "the" instance.
+ def initialize(*args)
+ super
+
+ self.class.instance = self
+ end
+
# Make sure only one client runs at a time, and make sure only one thread
# runs at a time. However, this does not lock local clients -- you could have
# as many separate puppet scripts running as you want.
@@ -308,7 +329,7 @@ class Puppet::Client::MasterClient < Puppet::Client
end
# The code that actually runs the configuration.
- def run
+ def run(tags = nil, ignoreschedules = false)
if pid = locked?
t = ""
if pid == true
@@ -325,7 +346,7 @@ class Puppet::Client::MasterClient < Puppet::Client
Puppet.notice "Starting configuration run"
end
benchmark(:notice, "Finished configuration run") do
- self.apply
+ self.apply(tags, ignoreschedules)
end
end
end
diff --git a/lib/puppet/client/runner.rb b/lib/puppet/client/runner.rb
new file mode 100644
index 000000000..9bedf2374
--- /dev/null
+++ b/lib/puppet/client/runner.rb
@@ -0,0 +1,17 @@
+class Puppet::Client::Runner < Puppet::Client::ProxyClient
+ @drivername = :Runner
+
+ # set up the appropriate interface methods
+ @handler = Puppet::Server::Runner
+ self.mkmethods
+
+ def initialize(hash = {})
+ if hash.include?(:Runner)
+ hash[:Runner] = Puppet::Server::Runner.new()
+ end
+
+ super(hash)
+ end
+end
+
+# $Id$