haredo 2.0.4 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: adcb099319bb52f459a005ddd10a86995fef2093
4
- data.tar.gz: 848ea0c89540ff8298f035bfcb9cd228a42c3fde
5
- SHA512:
6
- metadata.gz: 19d58fc3a38f411b09b1d2c91f4678fc8b3cf6401ed0e6f16d0985891686cfc41e4f29daf9cee796ec791c6be19d637a273040f35efb80e3d73862ae3eb016ef
7
- data.tar.gz: 2aeaf95425000d2a19fe15f5881e6b5cb2e6e26a7844104ea9f3e577e0c242d330e22d382feacfef3cace2ec1417b21c9f85c06e84d5e553e77474fc553cc077
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: 25ee3694c7e587feb59fd2dc3c7f465de5b39bd4
4
+ data.tar.gz: 612008a826cbcecd3aab6a79cadda24b5e9225c0
5
+ !binary "U0hBNTEy":
6
+ metadata.gz: 5e8caf0ddeab879b29927252c7fde06868c9027263893d401a6d4edaaf818161ab418b095a89da110664a10cead03d2a77ca8d69005a42d5e06a5d5bdef9f3ee
7
+ data.tar.gz: 104ed2490ba2369605c54b03d78d6535b274efdafb63795565d5835ea7366084a717e11bbf2da01a29640448ef13daa3a562a353acc00b46746ff45810c92ba3
data/README.md CHANGED
@@ -359,8 +359,8 @@ class Plugin < HareDo::Plugin
359
359
 
360
360
  UUID = 'echo'
361
361
 
362
- def initialize(service, config)
363
- super UUID, service, config
362
+ def initialize(service, config, env)
363
+ super UUID, service, config, env
364
364
  end
365
365
 
366
366
  def process(msg)
@@ -1,6 +1,9 @@
1
1
  require 'yaml'
2
2
  require 'haredo/peer'
3
3
 
4
+ HAREDO_DEFAULT_CONFIG_FILE = '/etc/haredo/haredo.conf'
5
+ HAREDO_DEFAULT_PID_FILE = '/var/run/haredo.pid'
6
+
4
7
  class Time
5
8
  def isoDate()
6
9
  return self.strftime("%Y-%m-%d %H:%M:%S")
@@ -11,10 +14,10 @@ module HareDo
11
14
  module Config
12
15
 
13
16
  def loadConfig(file=nil)
14
- @config_file = file || '/etc/haredo/haredo.conf'
17
+ @config_file = file || $haredo_default_config_file || HAREDO_DEFAULT_CONFIG_FILE
15
18
  @config = []
16
19
  @config = YAML.load_file(@config_file)
17
- @pid_file = '/var/run/haredo.pid'
20
+ @pid_file = $haredo_default_pid_file || HAREDO_DEFAULT_PID_FILE
18
21
  end
19
22
 
20
23
  def saveConfig()
@@ -90,11 +90,13 @@ class Manager
90
90
 
91
91
  attr_reader :loaded
92
92
  attr_accessor :module_path_prefix
93
+ attr_accessor :environment
93
94
 
94
95
  def initialize(peer)
95
- @peer = peer
96
- @loaded = {}
97
- @config = {}
96
+ @peer = peer
97
+ @loaded = {}
98
+ @config = {}
99
+ @environment = {}
98
100
 
99
101
  @module_path_prefix = 'haredo/plugins'
100
102
  end
@@ -119,7 +121,7 @@ class Manager
119
121
  if File.exists? path
120
122
  instance = Instance.new(path)
121
123
  cls = instance.get('Plugin')
122
- plugin = cls.new(@peer, @config[cls::UUID])
124
+ plugin = cls.new(@peer, @config[cls::UUID], @environment)
123
125
  @loaded[plugin.uuid] = plugin
124
126
  $stderr.puts "Loaded plugin #{path}"
125
127
 
@@ -357,7 +359,7 @@ class Peer
357
359
  end
358
360
 
359
361
  sleep @sleep_interval
360
- end
362
+ end
361
363
  end
362
364
 
363
365
  # You should use this method to reply back to a peer. It sets the reply header
@@ -415,7 +417,9 @@ class Peer
415
417
 
416
418
  listen_queue.subscribe(:block => block, :ack => true) do |info, props, data|
417
419
  @channel.acknowledge(info.delivery_tag, false)
418
- serve RabbitMQ::Message.new(info, props, data)
420
+ if serve(RabbitMQ::Message.new(info, props, data)) == false
421
+ exit 0
422
+ end
419
423
  end
420
424
  end
421
425
 
@@ -4,10 +4,11 @@ class Plugin
4
4
 
5
5
  attr_reader :uuid
6
6
 
7
- def initialize(uuid, peer, config={})
7
+ def initialize(uuid, peer, config={}, environment={})
8
8
  @uuid = uuid
9
9
  @peer = peer
10
10
  @config = config
11
+ @env = environment
11
12
  end
12
13
 
13
14
  def finalize()
@@ -4,8 +4,8 @@ class Plugin < HareDo::Plugin
4
4
 
5
5
  UUID = 'echo'
6
6
 
7
- def initialize(peer, config)
8
- super UUID, peer, config
7
+ def initialize(peer, config, env)
8
+ super UUID, peer, config, env
9
9
  end
10
10
 
11
11
  def process(msg)
@@ -7,8 +7,8 @@ class Plugin < HareDo::Plugin
7
7
 
8
8
  attr_accessor :plugins
9
9
 
10
- def initialize(service, config)
11
- super UUID, service, config
10
+ def initialize(service, config, env)
11
+ super UUID, service, config, env
12
12
 
13
13
  @plugins = {}
14
14
  end
@@ -45,7 +45,9 @@ class Interface < Admin::Interface
45
45
 
46
46
  fork do
47
47
  Process.daemon()
48
- exec('/usr/bin/haredo', '-d')
48
+
49
+ exe = $haredo_daemon_name || HAREDO_DEFAULT_DAEMON_NAME
50
+ exec(exe, '-d')
49
51
  end
50
52
  end
51
53
 
@@ -54,7 +56,9 @@ class Interface < Admin::Interface
54
56
  client = connectBroker()
55
57
  client.timeout = 3
56
58
 
57
- response = client.call('haredo', :headers=>{'uuid'=>'status'})
59
+ queue_name = @config['system']['queue']
60
+
61
+ response = client.call(queue_name, :headers=>{'uuid'=>'status'})
58
62
 
59
63
  if response != nil
60
64
  puts response.data()
@@ -70,10 +74,11 @@ class Interface < Admin::Interface
70
74
  $stderr.puts "stop #{daemonPid()}"
71
75
 
72
76
  daemon_key = @config['daemon']['key']
73
-
77
+ queue_name = @config['system']['queue']
78
+
74
79
  client = connectBroker()
75
80
 
76
- client.send( 'haredo',
81
+ client.send( queue_name,
77
82
  :headers => {
78
83
  'command' => 'stop',
79
84
  'key' => daemon_key,
@@ -2,6 +2,8 @@ require 'yaml'
2
2
 
3
3
  require 'haredo/config'
4
4
 
5
+ HAREDO_DEFAULT_DAEMON_NAME = '/usr/bin/haredo'
6
+
5
7
  module HareDo
6
8
  module Service
7
9
 
@@ -34,6 +34,7 @@ class Daemon < HareDo::Peer
34
34
  @queue_properties = {}
35
35
  @loaded_modules = []
36
36
 
37
+ @config_file = config_file
37
38
  loadConfig(config_file)
38
39
 
39
40
  account = @config['system']['broker']
@@ -55,13 +56,13 @@ class Daemon < HareDo::Peer
55
56
  end
56
57
 
57
58
  # Use configuration file for queue name
58
-
59
59
  if daemon_conf.has_key?('queue')
60
60
  @queue_name = daemon_conf['queue']['name'] || 'haredo'
61
61
  @queue_properties = daemon_conf['queue']['properties'] || {}
62
62
  end
63
63
 
64
64
  # Change module search path
65
+ pluginStartup()
65
66
 
66
67
  plugin_conf = @config['daemon']['services'].each do |service_name, service_conf|
67
68
 
@@ -78,6 +79,16 @@ class Daemon < HareDo::Peer
78
79
  status_plugin = @plugins['status']
79
80
  status_plugin.plugins = @plugins.loaded
80
81
  end
82
+
83
+ # Custom hook for plugin startup. Called before plugins are initialized.
84
+ def pluginStartup()
85
+
86
+ end
87
+
88
+ # Custom hook for plugin shutdown. Called after plugins are shutdown.
89
+ def pluginShutdown()
90
+
91
+ end
81
92
 
82
93
  # Defined the queue this service will listen on. Assumes a single-instance
83
94
  # service therefore declares queue as exclusive.
@@ -114,7 +125,7 @@ class Daemon < HareDo::Peer
114
125
  file.write(Process.pid.to_s)
115
126
  file.close()
116
127
 
117
- listen(args)
128
+ listen(args)
118
129
  end
119
130
 
120
131
  def serve(msg)
@@ -124,7 +135,7 @@ class Daemon < HareDo::Peer
124
135
  if msg.headers['key'] == @daemon_key
125
136
  Syslog.notice('Exiting')
126
137
  disconnect()
127
- return
138
+ return false
128
139
  end
129
140
  end
130
141
 
@@ -133,6 +144,7 @@ class Daemon < HareDo::Peer
133
144
 
134
145
  def shutdown()
135
146
  @plugins.shutdown()
147
+ pluginShutdown()
136
148
  end
137
149
 
138
150
  end # class
@@ -4,8 +4,8 @@ module HareDo
4
4
  VERSION_MAJ = '2'
5
5
  VERSION_MIN = '0'
6
6
  VERSION_CL = ''
7
- VERSION_PL = '4'
8
- VERSION = '2.0.4-1'
9
- RELEASE_DATE = 'Tue, 08 Oct 2013 14:41:57 -0500'
7
+ VERSION_PL = '5'
8
+ VERSION = '2.0.5-1'
9
+ RELEASE_DATE = 'Sat, 12 Oct 2013 17:24:34 -0500'
10
10
 
11
11
  end # module HareDo
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haredo
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Owens
8
8
  autorequire:
9
9
  bindir: src/bin
10
10
  cert_chain: []
11
- date: 2013-10-08 00:00:00.000000000 Z
11
+ date: 2013-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bunny
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  description: A P2P framework over RabbitMQ
@@ -38,7 +38,6 @@ files:
38
38
  - src/lib/haredo/peer.rb
39
39
  - src/lib/haredo/plugin.rb
40
40
  - src/lib/haredo/plugins/echo.rb
41
- - src/lib/haredo/plugins/example.rb
42
41
  - src/lib/haredo/plugins/status.rb
43
42
  - src/lib/haredo/service/admin/daemon.rb
44
43
  - src/lib/haredo/service/config.rb
@@ -56,17 +55,17 @@ require_paths:
56
55
  - src/lib
57
56
  required_ruby_version: !ruby/object:Gem::Requirement
58
57
  requirements:
59
- - - '>='
58
+ - - ! '>='
60
59
  - !ruby/object:Gem::Version
61
60
  version: '0'
62
61
  required_rubygems_version: !ruby/object:Gem::Requirement
63
62
  requirements:
64
- - - '>='
63
+ - - ! '>='
65
64
  - !ruby/object:Gem::Version
66
65
  version: '0'
67
66
  requirements: []
68
67
  rubyforge_project:
69
- rubygems_version: 2.0.3
68
+ rubygems_version: 2.0.6
70
69
  signing_key:
71
70
  specification_version: 4
72
71
  summary: A simple client/server framework using RabbitMQ
@@ -1,17 +0,0 @@
1
- require 'json'
2
- require 'haredo/plugin'
3
-
4
- class Plugin < HareDo::Plugin
5
-
6
- UUID = 'example'
7
-
8
- def initialize(service, config)
9
- super UUID, service, config
10
- end
11
-
12
- def process(msg)
13
- # Send back configuration
14
- @peer.reply(msg, :data=>JSON::pretty_generate(@config))
15
- end
16
-
17
- end # class Plugin