hivonic 0.2.1 → 0.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 112f99bf5bad93212b9df62d83aa3cb391e3b829
4
- data.tar.gz: c51924364c0aec4fb6017adf178401186eea2313
3
+ metadata.gz: 15830f42fedc4df4e21533db43f475daf06fd565
4
+ data.tar.gz: 6d058be4e343b6b917f8d015087d00a052064de9
5
5
  SHA512:
6
- metadata.gz: f58108d633fb37ac0854ce8af25a30aab6e1057318a66d62f3e56efc7841481f86febc1587d0edc386e8451d162eea918d257ba1c1ae8d8fb635aaa36000003c
7
- data.tar.gz: 634b563745de787f9244e43425c46a35d58b7d355026e3a3516c33b88b5d4f33f287462f09421ec441cac0dead56284c8899f0e633ea9ca7880c895a1253b46e
6
+ metadata.gz: 89c55470ee78cbacafb6746e67c1d55afe21539c68150b263e1ce097ec7b8bedeeeb2073c127337665d4ddf4599cc7e3986f63ce34c86b347ac5e4128d7bde5e
7
+ data.tar.gz: 77424c5772365a789a3aee119fb11c0642b78f65ff71569df593e11027f9704563528b00cc5441e484aae7640b7dd00d7480c8bf3590c4d29107f27002dbc0d2
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Hivonic Changelog
2
2
  ===
3
3
 
4
+ 0.3.0
5
+ ---
6
+ * Now cleans up views in addition to tables
7
+ * Tweaked HIVONIC_REGEXP default so it is a little less opinionated
8
+ * Fixed cleanup, so it no longer calls build_query repeatedly (also a performance improvement)
9
+
10
+ 0.2.2
11
+ ---
12
+ * Fixed issue with mock() instance that represents output from the subcommand in tests
13
+
4
14
  0.2.1
5
15
  ---
6
16
  * Tweaked HIVONIC_REGEXP env var's default value
data/bin/hivonic CHANGED
@@ -15,7 +15,7 @@ program_desc 'A simple hive utility application for cleaning up temporary tables
15
15
  # arg_name 'database'
16
16
 
17
17
  hive_opts = ENV['HIVONIC_HIVE_OPTS'] || '-S' # -hiveconf hive.root.logger=DEBUG -S
18
- regexp = ENV['HIVONIC_REGEXP'] || '\A(tmp|view)[a-z|_|0-9]+_(\d{14})\z'
18
+ regexp = ENV['HIVONIC_REGEXP'] || '\A(tmp)[a-z|_|0-9]+_(\d{14})\z'
19
19
  time_format = ENV['HIVONIC_TIME_FORMAT'] || '%Y%m%d%H%M%S'
20
20
  time_group_index = ENV['HIVONIC_TIME_GROUP_INDEX'] || 2
21
21
  ttl = ENV['HIVONIC_TTL'] || 86400
@@ -54,9 +54,17 @@ command :rm do |c|
54
54
  end
55
55
 
56
56
  command :cleanup do |c|
57
+ c.flag [:type], :default_value => 'tables'
57
58
  c.action do |global_options, options, args|
58
59
  database_check!(args)
59
- Hivonic::Commands.run 'cleanup_tables', global_options, args
60
+ case options[:type]
61
+ when 'tables'
62
+ Hivonic::Commands.run 'cleanup_tables', global_options, args
63
+ when 'views'
64
+ Hivonic::Commands.run 'cleanup_views', global_options, args
65
+ else
66
+ exit_now!('Unknown type for cleanup command')
67
+ end
60
68
  end
61
69
  end
62
70
 
@@ -73,6 +73,7 @@ module Hivonic::Commands
73
73
  stdout = "DRY RUN: Subcommand => #{subcommand}"
74
74
  @exitstatus = 0
75
75
  else
76
+ puts "Running: Subcommand => #{subcommand}"
76
77
  stdout = `#{subcommand}`
77
78
  @exitstatus = $?.exitstatus
78
79
  end
@@ -155,13 +156,26 @@ module Hivonic::Commands
155
156
  end
156
157
 
157
158
  def query
158
- @query = "DROP TABLE #{self.db}.#{self.table};"
159
+ @query = "DROP TABLE IF EXISTS #{self.db}.#{self.table};"
160
+ end
161
+ end
162
+
163
+ class DropView < HiveQueryCommand
164
+ attr_reader :view
165
+
166
+ def initialize(opts, args)
167
+ super
168
+ @view = args[1]
169
+ end
170
+
171
+ def query
172
+ @query = "DROP VIEW IF EXISTS #{self.db}.#{self.view};"
159
173
  end
160
174
  end
161
175
 
162
176
  register_handler_for :drop_table
163
177
 
164
- class CleanupTables < HiveQueryCommand
178
+ class CleanupQueryCommand < HiveQueryCommand
165
179
  def list_tables
166
180
  opts = {}
167
181
  opts['regexp'] = self.regexp
@@ -172,6 +186,7 @@ module Hivonic::Commands
172
186
 
173
187
  output, status = ListTables.run opts, [self.db]
174
188
  raise 'Uh oh!' unless is_successful? status
189
+ puts "Expired Tables: \n#{output}\n"
175
190
  output.split(/\n/)
176
191
  end
177
192
 
@@ -181,6 +196,10 @@ module Hivonic::Commands
181
196
  end
182
197
  end
183
198
 
199
+ def drop_query_for(table, opts)
200
+ raise NotImplementedError.new 'You must implement drop_query_for method on subclass'
201
+ end
202
+
184
203
  def build_query
185
204
  tables = list_tables
186
205
 
@@ -188,12 +207,12 @@ module Hivonic::Commands
188
207
  opts = {}
189
208
  opts['regexp'] = self.regexp
190
209
 
191
- DropTable.new(opts, [self.db, table]).query
210
+ drop_query_for table, opts
192
211
  end.join(' ')
193
212
  end
194
213
 
195
214
  def query
196
- @query = build_query
215
+ @query ||= build_query
197
216
  end
198
217
 
199
218
  def subcommand
@@ -206,5 +225,19 @@ module Hivonic::Commands
206
225
  end
207
226
  end
208
227
 
228
+ class CleanupTables < CleanupQueryCommand
229
+ def drop_query_for(table, opts)
230
+ DropTable.new(opts, [self.db, table]).query
231
+ end
232
+ end
233
+
209
234
  register_handler_for :cleanup_tables
235
+
236
+ class CleanupViews < CleanupQueryCommand
237
+ def drop_query_for(table, opts)
238
+ DropView.new(opts, [self.db, table]).query
239
+ end
240
+ end
241
+
242
+ register_handler_for :cleanup_views
210
243
  end
@@ -1,3 +1,3 @@
1
1
  module Hivonic
2
- VERSION = '0.2.1'
2
+ VERSION = '0.3.0'
3
3
  end
@@ -6,6 +6,7 @@ class Hivonic::CommandsTest < Test::Unit::TestCase
6
6
  should 'pass opts and args to #run method of the handler' do
7
7
  Hivonic::Commands.expects(:handler_for).with(cmd = mock()).returns(handler = mock())
8
8
  handler.expects(:run).with(opts = mock(), args = mock()).returns([output = mock(), exitstatus = mock()])
9
+ output.expects(:empty?).returns(false)
9
10
  assert_equal exitstatus, Hivonic::Commands.run(cmd, opts, args)
10
11
  end
11
12
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hivonic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Will Drew
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-17 00:00:00.000000000 Z
11
+ date: 2015-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gli