td 0.10.13 → 0.10.15

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/ChangeLog CHANGED
@@ -1,4 +1,17 @@
1
1
 
2
+ == 2012-02-27 version 0.10.15
3
+
4
+ * Updated dependency: td-logger-0.3.8
5
+ * sched:run: shows the scheduled time at the end of command
6
+
7
+
8
+ == 2012-02-22 version 0.10.14
9
+
10
+ * Added sched:update and sched:run
11
+ * sched:list shows 'Database'
12
+ * sched:history shows information of the schedule
13
+
14
+
2
15
  == 2012-02-21 version 0.10.13
3
16
 
4
17
  * table:delete asks y/N before deleting a table
@@ -11,10 +11,10 @@ module Command
11
11
 
12
12
  rows = []
13
13
  ass.each {|as|
14
- rows << {:Name=>as.name, :Relation=>as.relation_key}
14
+ rows << {:Name=>as.name, :Relation=>as.relation_key, :Timezone=>as.timezone}
15
15
  }
16
16
 
17
- puts cmd_render_table(rows, :fields => [:Name, :Relation])
17
+ puts cmd_render_table(rows, :fields => [:Name, :Relation, :Timezone])
18
18
 
19
19
  if rows.empty?
20
20
  $stderr.puts "There are no aggregation schemas."
@@ -71,12 +71,18 @@ module Command
71
71
  end
72
72
 
73
73
  def aggr_create(op)
74
+ timezone = nil
75
+
76
+ op.on('-t', '--timezone TZ', 'name of the timezone (like Asia/Tokyo)') {|s|
77
+ timezone = s
78
+ }
79
+
74
80
  name, relation_key = op.cmd_parse
75
81
 
76
82
  client = get_client
77
83
 
78
84
  begin
79
- client.create_aggregation_schema(name, relation_key)
85
+ client.create_aggregation_schema(name, relation_key, {'timezone'=>timezone})
80
86
  rescue AlreadyExistsError
81
87
  cmd_debug_error $!
82
88
  $stderr.puts "Aggregation '#{name}' already exists."
@@ -239,7 +239,9 @@ module List
239
239
  add_list 'sched:list', %w[], 'Show list of schedules', 'sched:list', 'scheds'
240
240
  add_list 'sched:create', %w[name cron sql], 'Create a schedule', 'sched:create sched1 "0 * * * *" -d example_db "select count(*) from table1" -r rset1'
241
241
  add_list 'sched:delete', %w[name], 'Delete a schedule', 'sched:delete sched1'
242
+ add_list 'sched:update', %w[name], 'Modify a schedule', 'sched:update sched1 -s "0 */2 * * *" -d my_db -t "Asia/Tokyo" -D 3600'
242
243
  add_list 'sched:history', %w[name max?], 'Show history of scheduled queries', 'sched sched1 --page 1'
244
+ add_list 'sched:run', %w[name time], 'Run scheduled queries for the specified time', 'sched:run "2013-01-01 00:00:00" -n 6'
243
245
 
244
246
  add_list 'query', %w[sql], 'Issue a query', 'query -d example_db -w -r rset1 "select count(*) from table1"'
245
247
 
@@ -11,18 +11,20 @@ module Command
11
11
 
12
12
  rows = []
13
13
  scheds.each {|sched|
14
- rows << {:Name => sched.name, :Cron => sched.cron, :Result => sched.rset_name, :Query => sched.query}
14
+ rows << {:Name => sched.name, :Cron => sched.cron, :Timezone => sched.timezone, :Delay => sched.delay, :Result => sched.rset_name, :Database => sched.database, :Query => sched.query, :"Next schedule" => sched.next_time ? sched.next_time.localtime : nil }
15
15
  }
16
16
  rows = rows.sort_by {|map|
17
17
  map[:Name]
18
18
  }
19
19
 
20
- puts cmd_render_table(rows, :fields => [:Name, :Cron, :Result, :Query])
20
+ puts cmd_render_table(rows, :fields => [:Name, :Cron, :Timezone, :"Next schedule", :Delay, :Result, :Database, :Query], :max_width=>500)
21
21
  end
22
22
 
23
23
  def sched_create(op)
24
24
  db_name = nil
25
25
  result = nil
26
+ timezone = nil
27
+ delay = 0
26
28
 
27
29
  op.on('-d', '--database DB_NAME', 'use the database (required)') {|s|
28
30
  db_name = s
@@ -30,6 +32,12 @@ module Command
30
32
  op.on('-r', '--result RESULT_TABLE', 'write result to the result table (use result:create command)') {|s|
31
33
  result = s
32
34
  }
35
+ op.on('-t', '--timezone TZ', 'name of the timezone (like Asia/Tokyo)') {|s|
36
+ timezone = s
37
+ }
38
+ op.on('-D', '--delay SECONDS', 'delay time of the schedule', Integer) {|i|
39
+ delay = i
40
+ }
33
41
 
34
42
  name, cron, sql = op.cmd_parse
35
43
 
@@ -44,14 +52,14 @@ module Command
44
52
  get_database(client, db_name)
45
53
 
46
54
  begin
47
- first_time = client.create_schedule(name, :cron=>cron, :query=>sql, :database=>db_name, :result=>result)
55
+ first_time = client.create_schedule(name, :cron=>cron, :query=>sql, :database=>db_name, :result=>result, :timezone=>timezone, :delay=>delay)
48
56
  rescue AlreadyExistsError
49
57
  cmd_debug_error $!
50
58
  $stderr.puts "Schedule '#{name}' already exists."
51
59
  exit 1
52
60
  end
53
61
 
54
- $stderr.puts "Schedule '#{name}' is created. It starts at #{first_time}."
62
+ $stderr.puts "Schedule '#{name}' is created. It starts at #{first_time.localtime}."
55
63
  end
56
64
 
57
65
  def sched_delete(op)
@@ -71,6 +79,62 @@ module Command
71
79
  $stderr.puts "Schedule '#{name}' is deleted."
72
80
  end
73
81
 
82
+ def sched_update(op)
83
+ cron = nil
84
+ sql = nil
85
+ db_name = nil
86
+ result = nil
87
+ timezone = nil
88
+ delay = nil
89
+
90
+ op.on('-s', '--schedule CRON', 'change the schedule') {|s|
91
+ cron = s
92
+ }
93
+ op.on('-q', '--query SQL', 'change the query') {|s|
94
+ sql = s
95
+ }
96
+ op.on('-d', '--database DB_NAME', 'change the database') {|s|
97
+ db_name = s
98
+ }
99
+ op.on('-r', '--result RESULT_TABLE', 'change the result table') {|s|
100
+ result = s
101
+ }
102
+ op.on('-t', '--timezone TZ', 'change the name of the timezone (like Asia/Tokyo)') {|s|
103
+ timezone = s
104
+ }
105
+ op.on('-D', '--delay SECONDS', 'change the delay time of the schedule', Integer) {|i|
106
+ delay = i
107
+ }
108
+
109
+ name = op.cmd_parse
110
+
111
+ params = {}
112
+ params['cron'] = cron if cron
113
+ params['query'] = sql if sql
114
+ params['database'] = db_name if db_name
115
+ params['result'] = result if result
116
+ params['timezone'] = timezone if timezone
117
+ params['delay'] = delay.to_s if delay
118
+
119
+ if params.empty?
120
+ $stderr.puts op.to_s
121
+ exit 1
122
+ end
123
+
124
+ client = get_client
125
+
126
+ begin
127
+ client.update_schedule(name, params)
128
+ rescue NotFoundError
129
+ cmd_debug_error $!
130
+ $stderr.puts "Schedule '#{name}' does not exist."
131
+ $stderr.puts "Use '#{$prog} sched:list' to show list of the schedules."
132
+ exit 1
133
+ end
134
+
135
+ $stderr.puts "Schedule '#{name}' is updated."
136
+ end
137
+
74
138
  def sched_history(op)
75
139
  page = 0
76
140
  skip = 0
@@ -101,6 +165,18 @@ module Command
101
165
  exit 1
102
166
  end
103
167
 
168
+ scheds = client.schedules
169
+ if s = scheds.find {|s| s.name == name }
170
+ puts "Name : #{s.name}"
171
+ puts "Cron : #{s.cron}"
172
+ puts "Timezone : #{s.timezone}"
173
+ puts "Delay : #{s.delay} sec"
174
+ puts "Next : #{s.next_time}"
175
+ puts "Result : #{s.rset_name}"
176
+ puts "Database : #{s.database}"
177
+ puts "Query : #{s.query}"
178
+ end
179
+
104
180
  rows = []
105
181
  history.each {|j|
106
182
  rows << {:Time => j.scheduled_at.localtime, :JobID => j.job_id, :Status => j.status, :Result=>j.rset_name}
@@ -109,5 +185,40 @@ module Command
109
185
  puts cmd_render_table(rows, :fields => [:JobID, :Time, :Status, :Result])
110
186
  end
111
187
 
188
+ def sched_run(op)
189
+ num = 1
190
+
191
+ op.on('-n', '--num N', 'number of jobs to run', Integer) {|i|
192
+ num = i
193
+ }
194
+
195
+ name, time = op.cmd_parse
196
+
197
+ if time.to_i.to_s == time.to_s
198
+ # UNIX time
199
+ t = Time.at(time.to_i)
200
+ else
201
+ require 'time'
202
+ begin
203
+ t = Time.parse(time)
204
+ rescue
205
+ $stderr.puts "invalid time format: #{time}"
206
+ exit 1
207
+ end
208
+ end
209
+
210
+ client = get_client
211
+
212
+ begin
213
+ client.run_schedule(name, t.to_i, num)
214
+ rescue NotFoundError
215
+ cmd_debug_error $!
216
+ $stderr.puts "Schedule '#{name}' does not exist."
217
+ $stderr.puts "Use '#{$prog} sched:list' to show list of the schedules."
218
+ end
219
+
220
+ puts "Scheduled #{num} jobs from #{t}."
221
+ end
222
+
112
223
  end
113
224
  end
@@ -28,7 +28,7 @@ module Command
28
28
 
29
29
  def table_delete(op)
30
30
  force = false
31
- op.on('-f', '--force', 'clear tables and delete the database', TrueClass) {|b|
31
+ op.on('-f', '--force', 'never prompt', TrueClass) {|b|
32
32
  force = true
33
33
  }
34
34
 
data/lib/td/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module TreasureData
2
2
 
3
- VERSION = '0.10.13'
3
+ VERSION = '0.10.15'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: td
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.13
4
+ version: 0.10.15
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-21 00:00:00.000000000Z
12
+ date: 2012-02-27 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: msgpack
16
- requirement: &70299899663140 !ruby/object:Gem::Requirement
16
+ requirement: &70345059633180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.4.4
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70299899663140
24
+ version_requirements: *70345059633180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: json
27
- requirement: &70299899661720 !ruby/object:Gem::Requirement
27
+ requirement: &70345059632320 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 1.4.3
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70299899661720
35
+ version_requirements: *70345059632320
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: hirb
38
- requirement: &70299899657320 !ruby/object:Gem::Requirement
38
+ requirement: &70345059631620 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,29 +43,29 @@ dependencies:
43
43
  version: 0.4.5
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70299899657320
46
+ version_requirements: *70345059631620
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: td-client
49
- requirement: &70299899656420 !ruby/object:Gem::Requirement
49
+ requirement: &70345059630660 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 0.8.8
54
+ version: 0.8.10
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70299899656420
57
+ version_requirements: *70345059630660
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: td-logger
60
- requirement: &70299899655440 !ruby/object:Gem::Requirement
60
+ requirement: &70345059629760 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
64
64
  - !ruby/object:Gem::Version
65
- version: 0.3.7
65
+ version: 0.3.8
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70299899655440
68
+ version_requirements: *70345059629760
69
69
  description:
70
70
  email:
71
71
  executables: