cloudblocks 0.0.11 → 0.0.12a

Sign up to get free protection for your applications and to get access to all the features.
data/bin/chief CHANGED
@@ -26,7 +26,7 @@ config_dir = File.join(Dir.home, '.cloudblocks')
26
26
  config_full = File.join(config_dir, config_file)
27
27
 
28
28
  api_key = ''
29
- faye_url = 'https://socket.thecloudblocks.com:8443/'
29
+ faye_url = 'http://sockets.cloudblocks.co/'
30
30
 
31
31
  if File.exists?(config_full)
32
32
  # config file present
@@ -35,7 +35,7 @@ if File.exists?(config_full)
35
35
  else
36
36
  # no config file
37
37
  puts 'CloudBlocks ConfigChief'
38
- puts 'Please enter your API key. (you can find it at https://www.thecloudblocks.com/me):'
38
+ puts 'Please enter your API key. (you can find it at https://cloudblocks.co/me):'
39
39
  api_key = gets
40
40
  api_key = api_key.chomp
41
41
  if api_key.length != 32
@@ -61,7 +61,7 @@ id = nil
61
61
  OptionParser.new do |opts|
62
62
  opts.banner = <<-EOF
63
63
  ConfigChief. v#{str_version} (c) 2012 CloudBlocks
64
- For more information please visit http://www.thecloudblocks.com
64
+ For more information please visit http://cloudblocks.co
65
65
 
66
66
  Usage: chief [options]
67
67
 
@@ -75,7 +75,7 @@ EOF
75
75
  opts.on('-u', '--url URL', 'Server URL') do |v|
76
76
  url = v
77
77
  end
78
- url = url || 'https://api.thecloudblocks.com'
78
+ url = url || 'https://api.cloudblocks.co'
79
79
 
80
80
  opts.on('-k', '--key KEY', 'Config Key') do |v|
81
81
  key = v
data/bin/quartz CHANGED
@@ -25,7 +25,7 @@ def save_config
25
25
  if !FileTest::directory?(@config_dir)
26
26
  Dir.mkdir(@config_dir)
27
27
  end
28
- File.open(@config_full, 'w+') { |out| YAML::dump({ 'api_key' => @api_key, 'agent_id' => @agent_id }, out) }
28
+ File.open(@config_full, 'w+') { |out| YAML::dump({ 'api_key' => @api_key, 'agent_id' => @agent_id, 'secret_key' => @secret_key }, out) }
29
29
  end
30
30
 
31
31
  public
@@ -158,33 +158,37 @@ def plugin_meta_data
158
158
  end
159
159
 
160
160
  def get_job
161
- result = @quartz.get_job
162
- if result['ok']
163
- if result['empty']
164
- @log.debug 'No jobs to run'
165
- else
166
- message = JSON.parse(result['message'])
167
- guid = message['plugin_uid']
168
- name = message['template_name']
169
- drt = message['desired_run_time']
170
-
171
- @log.info "Going to run #{name} (uid:#{guid})"
172
-
173
- # get the plugin
174
- if @plugins.include?(guid)
175
- plugin = @plugins[guid]
176
- # run it
177
- operation = proc { run_plugin(plugin, message) }
178
- EM.defer(operation)
161
+ begin
162
+ result = @quartz.get_job
163
+ if result['ok']
164
+ if result['empty']
165
+ @log.debug 'No jobs to run'
179
166
  else
180
- @log.error "No plugin found with uid #{guid}"
181
- job_id = message['job_id']
182
- data = { :run_start => Time.now.utc.to_i, :run_end => Time.now.utc.to_i, :agent_uid => @agent_id, :ok => false, :fail_reason => "Requested plugin not found. Does this agent support this job type?" }
183
- @quartz.post_results(job_id, data)
167
+ message = JSON.parse(result['message'])
168
+ guid = message['plugin_uid']
169
+ name = message['template_name']
170
+ drt = message['desired_run_time']
171
+
172
+ @log.info "Going to run #{name} (uid:#{guid})"
173
+
174
+ # get the plugin
175
+ if @plugins.include?(guid)
176
+ plugin = @plugins[guid]
177
+ # run it
178
+ operation = proc { run_plugin(plugin, message) }
179
+ EM.defer(operation)
180
+ else
181
+ @log.error "No plugin found with uid #{guid}"
182
+ job_id = message['job_id']
183
+ data = { :run_start => Time.now.utc.to_i, :run_end => Time.now.utc.to_i, :agent_uid => @agent_id, :ok => false, :fail_reason => "Requested plugin not found. Does this agent support this job type?" }
184
+ @quartz.post_results(job_id, data)
185
+ end
184
186
  end
187
+ else
188
+ @log.error "Failed to retrieve job due to #{result['error']}"
185
189
  end
186
- else
187
- @log.error "Failed to retrieve job due to #{result['error']}"
190
+ rescue => exc
191
+ @log.error "Failed to retrieve job due to #{exc}"
188
192
  end
189
193
  end
190
194
 
@@ -222,7 +226,7 @@ def check_version
222
226
  result = @quartz.check_version
223
227
  if result['ok']
224
228
  latest = result['latest']
225
- @log.warn 'A newer version of CloudQuartz agent is available. Update the cloudblocks gem. See http://help.thecloudblocks.com for more info' if latest > @version
229
+ @log.warn 'A newer version of CloudQuartz agent is available. Update the cloudblocks gem. See http://help.cloudblocks.co for more info' if latest > @version
226
230
  end
227
231
  rescue => exc
228
232
  warn "Cannot connect to the server"
@@ -235,6 +239,16 @@ def run
235
239
  Signal.trap('INT') { stop }
236
240
  Signal.trap('TERM'){ stop }
237
241
 
242
+ # pulse
243
+ EM.add_periodic_timer 60 do # 1 minute
244
+ @log.debug "Pulseate"
245
+ begin
246
+ @quartz.pulse
247
+ rescue => exc
248
+ @log.error "Failed to pulsate due to #{exc.message}"
249
+ end
250
+ end
251
+
238
252
  if @realtime
239
253
  @log.info "Listening to realtime nofitifications from /quartz/agents/#{@agent_id} on #{@faye_url}"
240
254
  client = Faye::Client.new(@faye_url)
@@ -277,7 +291,7 @@ config_file = 'cloudblocks.yaml'
277
291
  @log_full = File.join('/tmp', @log_file)
278
292
 
279
293
  @api_key = ''
280
- @faye_url = 'https://socket.thecloudblocks.com:8443/push/'
294
+ @faye_url = 'http://sockets.cloudblocks.co/push/'
281
295
  commands = %w[register unregister start stop]
282
296
 
283
297
  @plugins = {}
@@ -290,7 +304,7 @@ command = nil
290
304
  OptionParser.new do |opts|
291
305
  opts.banner = <<-EOF
292
306
  CloudQuartz Agent. v#{str_version} (c) 2012 CloudBlocks
293
- For more information please visit http://www.thecloudblocks.com
307
+ For more information please visit http://cloudblocks.co
294
308
 
295
309
  Usage: quartz [register|unregister|start|stop] [options]
296
310
 
@@ -300,7 +314,7 @@ EOF
300
314
  opts.on('--url URL', 'Server URL') do |server_url|
301
315
  @url = server_url
302
316
  end
303
- @url = @url || 'https://api.thecloudblocks.com'
317
+ @url = @url || 'https://api.cloudblocks.co'
304
318
 
305
319
  opts.on('--agent-id AGENTID', 'Agent id') do |v|
306
320
  @agent_id = v
@@ -331,6 +345,10 @@ EOF
331
345
  @api_key = v
332
346
  end
333
347
 
348
+ opts.on('--secret-key SECRETKET', 'Secret Key') do |v|
349
+ @secret_key = v
350
+ end
351
+
334
352
  opts.on('-n', '--no-realtime', 'Disable realtime notifications') do |v|
335
353
  @realtime = false
336
354
  end
@@ -365,17 +383,24 @@ if (@api_key.empty? || @agent_id.empty?) && File.exists?(@config_full)
365
383
  config = YAML::load(File.open(@config_full))
366
384
  @api_key = config['api_key']
367
385
  @agent_id = config['agent_id']
386
+ @secret_key = config['secret_key']
368
387
  end
369
388
 
370
389
  # still no api key, we need to get it
371
390
  if @api_key.empty?
372
391
  puts 'CloudBlocks CloudQuartz'
373
- @api_key = ask('Please enter your API key. (you can find it at https://www.thecloudblocks.com/me): ')
392
+ @api_key = ask('Please enter your API key. (you can find it at https://cloudblocks.co/me): ')
374
393
  if @api_key.length != 32
375
394
  puts 'Invalid API key'
376
395
  exit -1
377
396
  end
378
397
 
398
+ @secret_key = ask('Please enter your Secret Key (you can find it at https://cloudblocks.co/me): ')
399
+ if @secret_key.length != 32
400
+ puts 'Invalid Secret key'
401
+ exit -1
402
+ end
403
+
379
404
  save_config
380
405
  puts 'Configuration Saved'
381
406
  end
@@ -384,12 +409,12 @@ end
384
409
  if @agent_id.empty?
385
410
  q = ask("Register the agent? ") { |q| q.default = "Y" }
386
411
  if q.chomp.downcase != 'n'
387
- @quartz = CloudQuartz.new(:api_key => @api_key, :url => @url)
412
+ @quartz = CloudQuartz.new(:api_key => @api_key, :url => @url, :secret_key => @secret_key)
388
413
  register
389
414
 
390
415
  q = ask("Start the agent as daemon? ") { |q| q.default = "Y" }
391
416
  if q.chomp.downcase != 'n'
392
- @quartz = CloudQuartz.new(:api_key => @api_key, :url => @url, :agent_id => @agent_id)
417
+ @quartz = CloudQuartz.new(:api_key => @api_key, :url => @url, :agent_id => @agent_id, :secret_key => @secret_key)
393
418
  start
394
419
  else
395
420
  exit 0
@@ -409,11 +434,11 @@ unless commands.include?(command)
409
434
  exit -1
410
435
  end
411
436
 
412
- if (@agent_id.nil? || @agent_id.empty? || @agent_id.empty?) && command != 'register'
437
+ if (@agent_id.nil? || @agent_id.empty? || @agent_id.empty? || @secret_key.empty?) && command != 'register'
413
438
  puts 'No Agent id found. Have you registered it yet? Use --help for more information'
414
439
  exit -1
415
440
  end
416
441
 
417
- @quartz = CloudQuartz.new(:api_key => @api_key, :url => @url, :agent_id => @agent_id)
442
+ @quartz = CloudQuartz.new(:api_key => @api_key, :url => @url, :agent_id => @agent_id, :secret_key => @secret_key)
418
443
 
419
444
  send(command)
@@ -9,7 +9,8 @@ class CloudQuartz
9
9
  def initialize(options = {})
10
10
  @api_key = options[:api_key]
11
11
  @agent_id = options[:agent_id]
12
- self.class.base_uri options[:url] || 'https://api.thecloudblocks.com'
12
+ @secret_key = options[:secret_key]
13
+ self.class.base_uri options[:url] || 'https://api.cloudblocks.co'
13
14
  end
14
15
 
15
16
  def get_job
@@ -32,6 +33,10 @@ class CloudQuartz
32
33
  process(self.class.post("/job/#{job_id}/complete.json", { :headers => http_headers.merge({'Content-Type' => 'application/json'}), :body => data.to_json } ))
33
34
  end
34
35
 
36
+ def pulse
37
+ process(self.class.get("/agent/#{@agent_id}/pulse.json", { :headers => http_headers } ))
38
+ end
39
+
35
40
  def status(stat, version, plugins)
36
41
  data = { :status => stat, :version => version, :plugins => plugins }
37
42
  process(self.class.post("/agent/#{@agent_id}/status.json", { :headers => http_headers.merge({'Content-Type' => 'application/json'}), :body => data.to_json }))
@@ -40,7 +45,12 @@ class CloudQuartz
40
45
  private
41
46
 
42
47
  def http_headers
43
- { 'api_key' => @api_key }
48
+ time = Time.now.utc.to_i
49
+ { 'api_key' => @api_key, 'hash' => signature(time), 'time' => time.to_s }
50
+ end
51
+
52
+ def signature(time)
53
+ Digest::SHA1.hexdigest("#{@api_key}#{@secret_key}#{time}").downcase
44
54
  end
45
55
 
46
56
  def process(response)
@@ -11,7 +11,7 @@ class ConfigChief
11
11
  def initialize(options = {})
12
12
  @api_key = options[:api_key]
13
13
  @workspace = options[:workspace]
14
- self.class.base_uri options[:url] || 'https://api.thecloudblocks.com'
14
+ self.class.base_uri options[:url] || 'https://api.cloudblocks.co'
15
15
  end
16
16
 
17
17
  def get_by_key(key, options = {}, params = {})
@@ -1,8 +1,13 @@
1
1
  require File.join(File.dirname(__FILE__), 'quartz_plugin')
2
2
 
3
3
  class Broken < QuartzPlugin
4
+
5
+ @@version_major = 0
6
+ @@version_minor = 0
7
+ @@version_revision = 1
8
+
4
9
  def info
5
- { :uid => "04165a45fde840a9a17b41f019b3dca3", :name => "Broken", :version => "0.0.0" }
10
+ { :uid => "04165a45fde840a9a17b41f019b3dca3", :name => "Broken", :version => get_version }
6
11
  end
7
12
 
8
13
  def run(message)
@@ -3,17 +3,21 @@ require 'fileutils'
3
3
 
4
4
  class Logrotate < QuartzPlugin
5
5
 
6
+ @@version_major = 0
7
+ @@version_minor = 0
8
+ @@version_revision = 1
9
+
6
10
  def info
7
- { :uid => "8f4286bfd946c8b08b234833673b8860", :name => "Log Rotate", :version => "0.0.0" }
11
+ { :uid => "8f4286bfd946c8b08b234833673b8860", :name => "Log Rotate", :version => get_version }
8
12
  end
9
13
 
10
14
  def run(message)
11
15
  pl = payload(message)
12
16
 
13
- @source_pattern = pl['source pattern']
17
+ @source_pattern = pl['source_pattern']
14
18
  @dest_folder = pl['destination']
15
19
  @keep = pl['keep'].empty? ? 0 : pl['keep'].to_i
16
- @post_run_step = pl['post rotate']
20
+ @post_run_step = pl['post_rotate']
17
21
 
18
22
  ext = Time.now.utc.strftime('%Y%m%d%H%M%S')
19
23
 
@@ -3,8 +3,12 @@ require 'fileutils'
3
3
 
4
4
  class Mysql < QuartzPlugin
5
5
 
6
+ @@version_major = 0
7
+ @@version_minor = 0
8
+ @@version_revision = 1
9
+
6
10
  def info
7
- { :uid => "67deb35a555344c8a7651c656e6c8e2e", :name => "MySQL Backup", :version => "0.0.0" }
11
+ { :uid => "67deb35a555344c8a7651c656e6c8e2e", :name => "MySQL Backup", :version => get_version }
8
12
  end
9
13
 
10
14
  def run(message)
@@ -14,17 +18,20 @@ class Mysql < QuartzPlugin
14
18
  @log.debug "Pruned payload #{pl}"
15
19
 
16
20
  @job_name = pl['job_name'].gsub(/[^\w\s_-]+/, '').gsub(/(^|\b\s)\s+($|\s?\b)/, '\\1\\2').gsub(/\s/, '_')
17
- @mysqldump_utility = pl['dump utility'] || '/usr/bin/mysqldump'
18
- @name = pl['db name'] || :all
21
+ @mysqldump_utility = pl['dump_utility'] || '/usr/bin/mysqldump'
22
+ @name = pl['db_name'] || :all
19
23
  @username = pl['username']
20
24
  @password = pl['password']
21
25
  @socket = pl['socket']
22
26
  @host = pl['host']
23
27
  @port = pl['port']
24
- @skip_tables = pl['skip tables']
25
- @only_tables = pl['only tables']
26
- @additional_options = pl['additional options'] || ['--single-transaction', '--quick']
27
- @path = pl['backup folder']
28
+ @skip_tables = pl['skip_tables']
29
+ @only_tables = pl['only_tables']
30
+ @additional_options = pl['additional_options'] || ['--single-transaction', '--quick']
31
+ @path = pl['backup_folder']
32
+
33
+ @only_tables = @only_tables.split(',') unless @only_tables.nil?
34
+ @skip_tables = @skip_tables.split(',') unless @skip_tables.nil?
28
35
 
29
36
  dump_cmd = "#{mysqldump} | gzip > '#{ File.join(@path, @job_name.downcase) }.sql.gz'"
30
37
  @log.debug "Running #{dump_cmd}"
@@ -22,13 +22,7 @@ class QuartzPlugin
22
22
  parsed_payload = JSON.parse(raw_payload) unless raw_payload.nil?
23
23
  @log.debug "Parsed payload #{parsed_payload}"
24
24
 
25
- v = {}
26
- unless parsed_payload.nil?
27
- parsed_payload.each do |p|
28
- v = v.merge({ p['name'] => p['value']})
29
- end
30
- end
31
-
25
+ v = parsed_payload
32
26
  v = v.merge({'job_name' => message['job_name']})
33
27
 
34
28
  @log.debug "Payload #{v}"
@@ -46,4 +40,12 @@ class QuartzPlugin
46
40
  { :ok => false, :message => stderr.read.strip}
47
41
  end
48
42
  end
43
+
44
+ @@version_major = 0
45
+ @@version_minor = 0
46
+ @@version_revision = 0
47
+
48
+ def get_version
49
+ "#{@@version_major}.#{@@version_minor}.#{@@version_revision}"
50
+ end
49
51
  end
@@ -1,8 +1,13 @@
1
1
  require File.join(File.dirname(__FILE__), 'quartz_plugin')
2
2
 
3
3
  class Rake < QuartzPlugin
4
+
5
+ @@version_major = 0
6
+ @@version_minor = 0
7
+ @@version_revision = 1
8
+
4
9
  def info
5
- { :uid => "62e3583abfc24f209916c4ff97661fa0", :name => "Rake", :version => "0.0.0" }
10
+ { :uid => "62e3583abfc24f209916c4ff97661fa0", :name => "Rake", :version => get_version }
6
11
  end
7
12
 
8
13
  def run(message)
@@ -3,23 +3,27 @@ require 'fileutils'
3
3
 
4
4
  class Redis < QuartzPlugin
5
5
 
6
+ @@version_major = 0
7
+ @@version_minor = 0
8
+ @@version_revision = 1
9
+
6
10
  def info
7
- { :uid => "6342c1ef0d8bb2a47ab1362a6b02c058", :name => "Redis Backup", :version => "0.0.0" }
11
+ { :uid => "6342c1ef0d8bb2a47ab1362a6b02c058", :name => "Redis Backup", :version => get_version }
8
12
  end
9
13
 
10
14
  def run(message)
11
15
  pl = payload(message)
12
16
 
13
17
  @job_name = pl['job_name'].gsub(/[^\w\s_-]+/, '').gsub(/(^|\b\s)\s+($|\s?\b)/, '\\1\\2').gsub(/\s/, '_')
14
- @redisdump_utility = pl['redis client'] || '/usr/bin/redis-cli'
15
- @name = pl['db name'] || 'dump'
18
+ @redisdump_utility = pl['redis_client'] || '/usr/bin/redis-cli'
19
+ @name = pl['db_name'] || 'dump'
16
20
  @password = pl['password']
17
21
  @socket = pl['socket']
18
22
  @host = pl['host'] || '127.0.0.1'
19
23
  @port = pl['port'] || 6379
20
- @additional_options = pl['additional options'] || []
21
- @path = pl['db path']
22
- @dump_path = pl['backup folder']
24
+ @additional_options = pl['additional_options'] || []
25
+ @path = pl['db_path']
26
+ @dump_path = pl['backup_folder']
23
27
 
24
28
  @name = 'dump' if @name.empty?
25
29
  @host = '127.0.0.1' if @host.empty?
@@ -3,17 +3,21 @@ require 'fileutils'
3
3
 
4
4
  class Rotater < QuartzPlugin
5
5
 
6
+ @@version_major = 0
7
+ @@version_minor = 0
8
+ @@version_revision = 1
9
+
6
10
  def info
7
- { :uid => "02f7d8237bcc438e8f0659babfef2911", :name => "File Rotater", :version => "0.0.0" }
11
+ { :uid => "02f7d8237bcc438e8f0659babfef2911", :name => "File Rotater", :version => get_version }
8
12
  end
9
13
 
10
14
  def run(message)
11
15
  pl = payload(message)
12
16
 
13
- source_pattern = pl['source pattern']
17
+ source_pattern = pl['source_pattern']
14
18
  dest_folder = pl['location']
15
19
  keep = pl['keep'].nil? ? 5 : pl['keep'].to_i
16
- post_rotate = pl['post rotate']
20
+ post_rotate = pl['post_rotate']
17
21
 
18
22
  archive = File.join(dest_folder, '/archive')
19
23
 
@@ -4,8 +4,12 @@ require 'fog'
4
4
 
5
5
  class S3backup < QuartzPlugin
6
6
 
7
+ @@version_major = 0
8
+ @@version_minor = 0
9
+ @@version_revision = 1
10
+
7
11
  def info
8
- { :uid => "d3533989f9d542f393566511e8eb2090", :name => "S3 Backup", :version => "0.0.0" }
12
+ { :uid => "d3533989f9d542f393566511e8eb2090", :name => "S3 Backup", :version => get_version }
9
13
  end
10
14
 
11
15
  def run(message)
@@ -13,12 +17,12 @@ class S3backup < QuartzPlugin
13
17
 
14
18
  @log.debug "Pruned payload #{pl}"
15
19
 
16
- @access_key_id = pl['access key']
17
- @secret_access_key = pl['secret key']
20
+ @access_key_id = pl['access_key']
21
+ @secret_access_key = pl['secret_key']
18
22
  @bucket = pl['bucket']
19
- @remote_path = pl['remote path']
23
+ @remote_path = pl['remote_path']
20
24
  @region = pl['region']
21
- @local_pattern = pl['local pattern']
25
+ @local_pattern = pl['local_pattern']
22
26
  @keep = pl['keep'].empty? ? 0 : pl['keep'].to_i
23
27
 
24
28
  @testing = pl['testing']
@@ -52,20 +56,25 @@ class S3backup < QuartzPlugin
52
56
 
53
57
  count = 0
54
58
  # get local files
59
+ directory = connection.directories.get(@bucket)
60
+ all_rotated = directory.files.reject { |m| File.dirname(m.key) != @remote_path }
61
+
55
62
  Dir.glob(@local_pattern).each do |f|
56
- remote_file = File.join(@remote_path, File.basename(f))
57
- next if File.directory?(f)
58
- @log.debug "Copying #{f} to #{remote_file}"
59
- count += 1
60
- File.open(f, 'r') do |file|
61
- connection.put_object(@bucket, File.join(remote_path, File.basename(f)), file)
63
+ base_file = File.basename(f)
64
+ remote_files = all_rotated.map {|m| File.basename(m.key)}
65
+ unless remote_files.include? base_file
66
+ remote_file = File.join(@remote_path, base_file)
67
+ next if File.directory?(f)
68
+ @log.debug "Copying #{f} to #{remote_file}"
69
+ count += 1
70
+ File.open(f, 'r') do |file|
71
+ connection.put_object(@bucket, File.join(remote_path, base_file), file)
72
+ end
62
73
  end
63
74
  end
64
75
 
65
76
  return run_result(true, "Files copied to S3 bucket successfully with no rotation") if @keep == 0
66
77
 
67
- directory = connection.directories.get(@bucket)
68
- all_rotated = directory.files.reject { |m| File.dirname(m.key) != @remote_path }
69
78
  @log.debug "Found #{all_rotated.count} in the remote bucket"
70
79
  if all_rotated.count > @keep
71
80
  remove_count = all_rotated.count - @keep
@@ -1,19 +1,23 @@
1
1
  require File.join(File.dirname(__FILE__), 'quartz_plugin')
2
2
 
3
3
  class Shell < QuartzPlugin
4
+
5
+ @@version_major = 0
6
+ @@version_minor = 0
7
+ @@version_revision = 1
8
+
4
9
  def info
5
- { :uid => "20e07c656e2f477d969e9561e13229fb", :name => "Shell", :version => "0.0.0" }
10
+ { :uid => "20e07c656e2f477d969e9561e13229fb", :name => "Shell", :version => get_version }
6
11
  end
7
12
 
8
13
  def run(message)
9
14
  @log.debug "Running with #{message}"
10
15
  payload = payload(message)
11
16
  command = payload['command']
12
- params = payload['params']
13
- @log.info "Shell command '#{command}' with '#{params}'"
17
+ @log.info "Shell command '#{command}"
14
18
 
15
19
  begin
16
- result = run_shell("#{command} #{params}")
20
+ result = run_shell("#{command}")
17
21
  run_result(result[:ok], result[:message])
18
22
  rescue => ex
19
23
  run_result(false, "Failed to run shell command due to #{ex}")
@@ -1,8 +1,13 @@
1
1
  require File.join(File.dirname(__FILE__), 'quartz_plugin')
2
2
 
3
3
  class Tester < QuartzPlugin
4
+
5
+ @@version_major = 1
6
+ @@version_minor = 0
7
+ @@version_revision = 0
8
+
4
9
  def info
5
- { :uid => "c0bb6ed7950b489f9abba8071ff0e0ab", :name => "Tester", :version => "0.0.0" }
10
+ { :uid => "c0bb6ed7950b489f9abba8071ff0e0ab", :name => "Tester", :version => get_version }
6
11
  end
7
12
 
8
13
  def run(message)
@@ -2,8 +2,13 @@ require File.join(File.dirname(__FILE__), 'quartz_plugin')
2
2
  require 'httparty'
3
3
 
4
4
  class Webget < QuartzPlugin
5
+
6
+ @@version_major = 0
7
+ @@version_minor = 0
8
+ @@version_revision = 1
9
+
5
10
  def info
6
- { :uid => "6b5f722d214f4d71a5be237d44094721", :name => "WebGet", :version => "0.0.0" }
11
+ { :uid => "6b5f722d214f4d71a5be237d44094721", :name => "WebGet", :version => get_version }
7
12
  end
8
13
 
9
14
  def run(message)
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudblocks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
5
- prerelease:
4
+ version: 0.0.12a
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
- - Khash Sajadi
8
+ - CloudBlocks
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-01 00:00:00.000000000Z
12
+ date: 2012-06-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
16
- requirement: &70213937662760 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 0.8.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70213937662760
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.8.1
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: json
27
- requirement: &70213937659840 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 1.6.3
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *70213937659840
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.6.3
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: eventmachine
38
- requirement: &70213937658000 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: 0.12.10
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *70213937658000
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.12.10
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: eventmachine
49
- requirement: &70213937651580 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ~>
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: 1.0.0.beta.4
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *70213937651580
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.0.0.beta.4
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: faye
60
- requirement: &70213937650380 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: 0.8.0
66
86
  type: :runtime
67
87
  prerelease: false
68
- version_requirements: *70213937650380
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 0.8.0
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: open4
71
- requirement: &70213937649300 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,10 +101,15 @@ dependencies:
76
101
  version: 1.3.0
77
102
  type: :runtime
78
103
  prerelease: false
79
- version_requirements: *70213937649300
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: 1.3.0
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: fog
82
- requirement: &70213937648440 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
115
  - - ! '>='
@@ -87,10 +117,15 @@ dependencies:
87
117
  version: 1.1.2
88
118
  type: :runtime
89
119
  prerelease: false
90
- version_requirements: *70213937648440
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: 1.1.2
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: highline
93
- requirement: &70213937647060 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
131
  - - ~>
@@ -98,9 +133,14 @@ dependencies:
98
133
  version: 1.6.11
99
134
  type: :runtime
100
135
  prerelease: false
101
- version_requirements: *70213937647060
102
- description: See http://www.thecloudblocks.com for more info
103
- email: khash@thecloudblocks.com
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 1.6.11
142
+ description: See http://cloudblocks.co for more info
143
+ email: hello@cloudblocks.co
104
144
  executables:
105
145
  - chief
106
146
  - quartz
@@ -122,7 +162,7 @@ files:
122
162
  - lib/plugins/webget.rb
123
163
  - bin/chief
124
164
  - bin/quartz
125
- homepage: http://www.thecloudblocks.com
165
+ homepage: http://cloudblocks.co
126
166
  licenses: []
127
167
  post_install_message:
128
168
  rdoc_options: []
@@ -137,12 +177,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
177
  required_rubygems_version: !ruby/object:Gem::Requirement
138
178
  none: false
139
179
  requirements:
140
- - - ! '>='
180
+ - - ! '>'
141
181
  - !ruby/object:Gem::Version
142
- version: '0'
182
+ version: 1.3.1
143
183
  requirements: []
144
184
  rubyforge_project:
145
- rubygems_version: 1.8.17
185
+ rubygems_version: 1.8.24
146
186
  signing_key:
147
187
  specification_version: 3
148
188
  summary: CloudBlocks Gem and Agent