disbatch 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/bin/disbatchd CHANGED
@@ -46,13 +46,13 @@ def update_queues
46
46
  next if @runners.has_key?(queue.id)
47
47
 
48
48
  # node configured to ignore
49
- # next if queue.nodes_ignore.include?(node.id)
49
+ next if queue.nodes_ignore.include?(Disbatch.node_id)
50
50
 
51
51
  # node pinned but not on this node
52
- # next if !queue.nodes_ignore.empty? && !queue.nodes_ignore.include?(node.id)
52
+ next if !queue.nodes_pin.empty? && !queue.nodes_pin.include?(Disbatch.node_id)
53
53
 
54
54
  # no plugin for queue
55
- next unless Disbatch::Plugin[queue.plugin]
55
+ next unless Disbatch::Plugin.exists?(queue.plugin)
56
56
 
57
57
  puts "Adding #{queue.plugin} runner for #{queue.id}"
58
58
 
data/lib/disbatch.rb CHANGED
@@ -30,7 +30,13 @@ module Disbatch
30
30
 
31
31
  # Return and cache the MongoDB connection pool
32
32
  def db
33
- @db ||= Mongo::Connection.new(@mongo_host, @mongo_port).db(@mongo_db)
33
+ begin
34
+ @db ||= Mongo::Connection.new(@mongo_host, @mongo_port).db(@mongo_db)
35
+ rescue
36
+ raise Disbatch::NoDatabaseError
37
+ end
38
+
39
+ @db
34
40
  end
35
41
 
36
42
  # Return and cache the local node object
@@ -15,10 +15,14 @@ module Disbatch
15
15
  # Raised when specifying a non-existant plugin
16
16
  class NoPluginError < RuntimeError; end
17
17
 
18
- # Raised when specifying an invalid plugin
19
- class InvalidPluginError < RuntimeError; end
18
+ # Raised when failing to load a plugin
19
+ class FailedLoadPluginError < RuntimeError; end
20
20
 
21
- # Raised when specifying a non-existent queue
21
+ # Raised when specifying a non-existant plugin
22
22
  class NoQueueError < RuntimeError; end
23
23
 
24
+ # Raised on failure to connect or open mongo
25
+ class NoDatabaseError < RuntimeError; end
26
+
24
27
  end
28
+
@@ -20,18 +20,23 @@ module Disbatch::Plugin
20
20
  @plugins[name]
21
21
  end
22
22
 
23
+ # Check for existance of plugin
24
+ def exists?(name)
25
+ @plugins.has_key?(name)
26
+ end
27
+
23
28
  # Attempt to load a plugin file
24
29
  def init(file)
25
30
  begin
26
31
  load file
27
- rescue
28
- puts "Error loading #{file}"
32
+ rescue => e
33
+ raise Disbatch::FailedLoadPluginError, file
29
34
  end
30
35
  end
31
36
 
32
- # Attempt to load all plugin files in a directory
33
- def init_all(path)
34
- Dir[path].each { |file| init(file) }
37
+ # Attempt to load all plugin files matched by a glob
38
+ def init_all(glob)
39
+ Dir[glob].each { |file| init(file) }
35
40
  end
36
41
 
37
42
  extend self
@@ -25,6 +25,8 @@ class Disbatch::Queue
25
25
  end
26
26
 
27
27
  raise Disbatch::NoQueueError if doc.nil?
28
+
29
+ new(doc['class'], doc['_id'])
28
30
  end
29
31
 
30
32
  # Get all existing queues
@@ -85,6 +87,18 @@ class Disbatch::Queue
85
87
  Disbatch::Task.take(self)
86
88
  end
87
89
 
90
+ def nodes_pin
91
+ doc = Disbatch.db[:queues].find_one({:_id => self.id}, {:fields=> [ :nodes_pin ] })
92
+
93
+ return doc['nodes_pin'] || []
94
+ end
95
+
96
+ def nodes_ignore
97
+ doc = Disbatch.db[:queues].find_one({:_id => self.id}, {:fields=> [ :nodes_ignore ] })
98
+
99
+ return doc['nodes_ignore'] || []
100
+ end
101
+
88
102
  # Check equality with another queue object
89
103
  #
90
104
  # @param[Disbatch::Queue] queue another queue to compare against
data/lib/disbatch/task.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  # Represents a Disbatch task
2
2
  class Disbatch::Task
3
3
 
4
+ require 'pp'
5
+
4
6
  attr_reader :queue, :parameters, :id
5
7
 
6
8
  private_class_method :new
@@ -126,17 +128,17 @@ class Disbatch::Task
126
128
 
127
129
  # Fail task
128
130
  def fail
129
- self.status=-3
131
+ self.status=Status::TERMINATED
130
132
  end
131
133
 
132
134
  # Release task
133
135
  def release
134
- self.status=-2
136
+ self.status=Status::CREATED
135
137
  end
136
138
 
137
139
  # Conclude task
138
140
  def conclude
139
- self.status=1
141
+ self.status=Status::CONCLUDED
140
142
  end
141
143
 
142
144
  # Execute the task
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: disbatch
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.9
5
+ version: 0.0.10
6
6
  platform: ruby
7
7
  authors:
8
8
  - Matthew Berg
@@ -10,8 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-01-17 00:00:00 -05:00
14
- default_executable:
13
+ date: 2012-06-29 00:00:00 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: bson
@@ -115,7 +114,6 @@ files:
115
114
  - README
116
115
  - LICENSE
117
116
  - disbatch_specification.txt
118
- has_rdoc: true
119
117
  homepage: http://disbatch.org/projects/disbatch-ruby
120
118
  licenses: []
121
119
 
@@ -139,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
137
  requirements: []
140
138
 
141
139
  rubyforge_project:
142
- rubygems_version: 1.5.1
140
+ rubygems_version: 1.8.24
143
141
  signing_key:
144
142
  specification_version: 3
145
143
  summary: Distributed batch processing package