iron_worker_ng 1.6.1 → 1.6.2
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.
- checksums.yaml +4 -4
- data/README.md +16 -0
- data/bin/iron_worker +30 -1
- data/lib/iron_worker_ng/api_client.rb +10 -0
- data/lib/iron_worker_ng/cli.rb +46 -0
- data/lib/iron_worker_ng/client.rb +14 -0
- data/lib/iron_worker_ng/code/runtime/php.rb +7 -7
- data/lib/iron_worker_ng/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98b0e00e293fcd4830606d9df08dcade43b6aa11
|
4
|
+
data.tar.gz: c815b1f91b12f0a065e8e258a995891f2f414627
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 242738189db79e8bc2219df6cec277751e985bc7ce6bafabf234feb48cf215ec9d83b343af17694a53f75d54c2add90fca1b3a97c434b995a6f4c8d157fc5218
|
7
|
+
data.tar.gz: 51d840ba457f9dfb0f7b8dec34b9c092cb9b5b288fff1ebf82a0115d61e128967750205eae555215b5acfd3f52577b86be7828d0df190aaef6ddc8ac5d1c8d94
|
data/README.md
CHANGED
@@ -110,6 +110,7 @@ You can specify not only priority:
|
|
110
110
|
- **timeout**: The maximum runtime of your task in seconds. No task can exceed 3600 seconds (60 minutes). The default is 3600 but can be set to a shorter duration.
|
111
111
|
- **delay**: The number of seconds to delay before actually queuing the task. Default is 0.
|
112
112
|
- **label**: Optional text label for your task.
|
113
|
+
- **cluster**: cluster name ex: "high-mem" or "dedicated". If not set default is set to "default" which is the public IronWorker cluster.
|
113
114
|
|
114
115
|
## Get task status
|
115
116
|
|
@@ -132,6 +133,21 @@ You can retry task by id using same payload and options:
|
|
132
133
|
or
|
133
134
|
```ruby
|
134
135
|
client.tasks.retry('5032f7360a4681382838e082', :delay => 10)
|
136
|
+
|
137
|
+
## Pause or Resume task processing
|
138
|
+
|
139
|
+
You can temporarily pause or resume queued and scheduled tasks processing by code name:
|
140
|
+
|
141
|
+
iron_worker pause hello
|
142
|
+
|
143
|
+
iron_worker resume hello
|
144
|
+
|
145
|
+
or by code:
|
146
|
+
Pause or resume for the code package specified by `code_id`.
|
147
|
+
|
148
|
+
```ruby
|
149
|
+
response = client.codes.pause_task_queue('1234567890')
|
150
|
+
response = client.codes.resume_task_queue('1234567890')
|
135
151
|
```
|
136
152
|
|
137
153
|
|
data/bin/iron_worker
CHANGED
@@ -41,7 +41,7 @@ if $*.size == 1 && ($*[0] == '-v' || $*[0] == '--version')
|
|
41
41
|
exit 0
|
42
42
|
end
|
43
43
|
|
44
|
-
commands = ['upload', 'patch', 'queue', 'retry', 'schedule', 'update', 'log', 'run', 'install', 'webhook', 'info', 'stacks']
|
44
|
+
commands = ['upload', 'patch', 'queue', 'retry', 'schedule', 'update', 'log', 'run', 'install', 'webhook', 'info', 'stacks', 'pause', 'resume']
|
45
45
|
|
46
46
|
if $*.size == 0 || (not commands.include?($*[0]))
|
47
47
|
puts 'usage: iron_worker COMMAND [OPTIONS]'
|
@@ -511,4 +511,33 @@ elsif command == 'update'
|
|
511
511
|
|
512
512
|
@cli.update_schedule($*[0], params)
|
513
513
|
end
|
514
|
+
|
515
|
+
elsif command == 'pause' || command == 'resume'
|
516
|
+
params = {}
|
517
|
+
options = {}
|
518
|
+
|
519
|
+
opts = OptionParser.new do |opts|
|
520
|
+
opts.banner = "usage: iron_worker #{command} CODE_PACKAGE_NAME"
|
521
|
+
|
522
|
+
common_opts(opts)
|
523
|
+
end
|
524
|
+
|
525
|
+
begin
|
526
|
+
opts.parse!
|
527
|
+
rescue OptionParser::ParseError
|
528
|
+
puts $!.to_s
|
529
|
+
exit 1
|
530
|
+
end
|
531
|
+
|
532
|
+
unless $*.size == 1
|
533
|
+
puts 'Please specify code package name'
|
534
|
+
puts opts
|
535
|
+
exit 1
|
536
|
+
end
|
537
|
+
|
538
|
+
if command == 'resume'
|
539
|
+
@cli.resume($*[0], params, options)
|
540
|
+
else
|
541
|
+
@cli.pause($*[0], params, options)
|
542
|
+
end
|
514
543
|
end
|
@@ -62,6 +62,16 @@ module IronWorkerNG
|
|
62
62
|
parse_response(get("projects/#{@project_id}/codes/#{id}/download", options), false)
|
63
63
|
end
|
64
64
|
|
65
|
+
def codes_pause_task_queue(id, options = {})
|
66
|
+
check_id(id)
|
67
|
+
parse_response(post("projects/#{@project_id}/codes/#{id}/pause_task_queue", options))
|
68
|
+
end
|
69
|
+
|
70
|
+
def codes_resume_task_queue(id, options = {})
|
71
|
+
check_id(id)
|
72
|
+
parse_response(post("projects/#{@project_id}/codes/#{id}/resume_task_queue", options))
|
73
|
+
end
|
74
|
+
|
65
75
|
def tasks_list(options = {})
|
66
76
|
parse_response(get("projects/#{@project_id}/tasks", options))
|
67
77
|
end
|
data/lib/iron_worker_ng/cli.rb
CHANGED
@@ -326,6 +326,52 @@ module IronWorkerNG
|
|
326
326
|
display_table(data)
|
327
327
|
end
|
328
328
|
|
329
|
+
def pause(name, params, options)
|
330
|
+
code = get_code_by_name(name)
|
331
|
+
log "Pausing task queue for code '#{code._id}'"
|
332
|
+
|
333
|
+
response = client.codes.pause_task_queue(code._id, options)
|
334
|
+
|
335
|
+
if response.msg == 'Paused'
|
336
|
+
log "Task queue and schedules for #{name} paused successfully"
|
337
|
+
elsif response.msg == 'Already paused'
|
338
|
+
log "Task queue and schedules for #{name} are already paused"
|
339
|
+
else
|
340
|
+
log 'Something went wrong'
|
341
|
+
end
|
342
|
+
log "Check 'https://hud.iron.io/tq/projects/#{client.api.project_id}/code/#{code._id}' for more info"
|
343
|
+
end
|
344
|
+
|
345
|
+
def resume(name, params, options)
|
346
|
+
code = get_code_by_name(name)
|
347
|
+
log "Resuming task queue for code '#{code._id}'"
|
348
|
+
|
349
|
+
response = client.codes.resume_task_queue(code._id, options)
|
350
|
+
|
351
|
+
if response.msg == 'Resumed'
|
352
|
+
log "Task queue and schedules for #{name} resumed successfully"
|
353
|
+
elsif response.msg == 'Already resumed'
|
354
|
+
log "Task queue and schedules for #{name} are already resumed"
|
355
|
+
else
|
356
|
+
log 'Something went wrong'
|
357
|
+
end
|
358
|
+
log "Check 'https://hud.iron.io/tq/projects/#{client.api.project_id}/code/#{code._id}' for more info"
|
359
|
+
end
|
360
|
+
|
361
|
+
def get_code_by_name(name)
|
362
|
+
client
|
363
|
+
|
364
|
+
codes = client.codes.list({:all => true})
|
365
|
+
code = codes.find { |code| code.name == name }
|
366
|
+
|
367
|
+
unless code
|
368
|
+
log "Code package with name='#{name}' not found"
|
369
|
+
exit 1
|
370
|
+
end
|
371
|
+
code
|
372
|
+
end
|
373
|
+
|
374
|
+
|
329
375
|
def parse_time(s)
|
330
376
|
t = Time.parse(s)
|
331
377
|
|
@@ -276,6 +276,20 @@ EXEC_FILE
|
|
276
276
|
@api.codes_download(code_id, options)
|
277
277
|
end
|
278
278
|
|
279
|
+
def codes_pause_task_queue(code_id, options = {})
|
280
|
+
IronCore::Logger.debug 'IronWorkerNG', "Calling codes.pause_task_queue with code_id='#{code_id}' and options='#{options.to_s}'"
|
281
|
+
|
282
|
+
res = @api.codes_pause_task_queue(code_id, options)
|
283
|
+
OpenStruct.new(res)
|
284
|
+
end
|
285
|
+
|
286
|
+
def codes_resume_task_queue(code_id, options = {})
|
287
|
+
IronCore::Logger.debug 'IronWorkerNG', "Calling codes.resume_task_queue with code_id='#{code_id}' and options='#{options.to_s}'"
|
288
|
+
|
289
|
+
res = @api.codes_resume_task_queue(code_id, options)
|
290
|
+
OpenStruct.new(res)
|
291
|
+
end
|
292
|
+
|
279
293
|
def tasks_list(options = {})
|
280
294
|
IronCore::Logger.debug 'IronWorkerNG', "Calling tasks.list with options='#{options.to_s}'"
|
281
295
|
|
@@ -10,7 +10,7 @@ module IronWorkerNG
|
|
10
10
|
<?php
|
11
11
|
/* #{IronWorkerNG.full_version} */
|
12
12
|
|
13
|
-
function getArgs() {
|
13
|
+
function getArgs($assoc = true) {
|
14
14
|
global $argv;
|
15
15
|
|
16
16
|
$args = array('task_id' => null, 'dir' => null, 'payload' => array(), 'config' => null);
|
@@ -24,7 +24,7 @@ function getArgs() {
|
|
24
24
|
if ($v == '-payload' && file_exists($argv[$k + 1])) {
|
25
25
|
$args['payload'] = file_get_contents($argv[$k + 1]);
|
26
26
|
|
27
|
-
$parsed_payload = json_decode($args['payload']);
|
27
|
+
$parsed_payload = json_decode($args['payload'], $assoc);
|
28
28
|
|
29
29
|
if ($parsed_payload != null) {
|
30
30
|
$args['payload'] = $parsed_payload;
|
@@ -34,7 +34,7 @@ function getArgs() {
|
|
34
34
|
if ($v == '-config' && file_exists($argv[$k + 1])) {
|
35
35
|
$args['config'] = file_get_contents($argv[$k + 1]);
|
36
36
|
|
37
|
-
$parsed_config = json_decode($args['config'],
|
37
|
+
$parsed_config = json_decode($args['config'], $assoc);
|
38
38
|
|
39
39
|
if ($parsed_config != null) {
|
40
40
|
$args['config'] = $parsed_config;
|
@@ -45,14 +45,14 @@ function getArgs() {
|
|
45
45
|
return $args;
|
46
46
|
}
|
47
47
|
|
48
|
-
function getPayload() {
|
49
|
-
$args = getArgs();
|
48
|
+
function getPayload($assoc = true) {
|
49
|
+
$args = getArgs($assoc);
|
50
50
|
|
51
51
|
return $args['payload'];
|
52
52
|
}
|
53
53
|
|
54
|
-
function getConfig(){
|
55
|
-
$args = getArgs();
|
54
|
+
function getConfig($assoc = true){
|
55
|
+
$args = getArgs($assoc);
|
56
56
|
|
57
57
|
return $args['config'];
|
58
58
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iron_worker_ng
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kirilenko
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-12-
|
12
|
+
date: 2014-12-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: iron_core
|