holistics 0.1.0 → 0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ffcfdb6aa3257f5a42c021a116e428316ee4d02d
4
- data.tar.gz: 4aa5954b9ab8d2157284d64570e0c085f0ff9f3b
3
+ metadata.gz: f326702c9d1af543ba76f9790aff1b1944fb6e4d
4
+ data.tar.gz: cf04ab410f5a2de32dc9693490bbfcc5364acceb
5
5
  SHA512:
6
- metadata.gz: 297dffd7ca7867cd1deb9907196768cb1a533254bc057f41d103d09acf93da127cf3704a72e6a5e9078becdbda830da0250cc720c49d84c8ebd90363124d7577
7
- data.tar.gz: 56a782a5815716bd7ac88e4680ffb526d09c03b95ed8ded9990f2070e28d8033ab13df84d100386f6a555eb24bb799f762dc67c945dd49caec3823e6583b5520
6
+ metadata.gz: abf41026bc233126273fb08f90f94d0f7295c9dcc53c5589c1acf72563cfc01ca410c2beb98bda90d1b4fc486867b67283119eaab969d9a6a494c6d3e3244df3
7
+ data.tar.gz: f8c7f05f08afcb88b8ec19c01600bd80a12bb8536004b435fbf0ba9faed3947483249a7dc19e1566ef2ccc6eaa92426705f88f7f9374a1e44f8ddc6ac861ad69
data/CHANGELOG.md CHANGED
@@ -9,4 +9,9 @@ This project adheres to [Semantic Versioning](http://semver.org/).
9
9
  * Support generation of transport config files from CLI: `holistics generate_configs -s <src_ds_id> -d <dest_ds_id> -t <tables> [-o <output>]`
10
10
 
11
11
  ## v0.1.0
12
- * Modularized transport and data_sources commands. Rename existing transport command to transport_old.
12
+ * Modularized transport and data_sources commands. Rename existing transport command to transport_old.
13
+
14
+ ## v0.2
15
+ * Support command to import csv into table
16
+
17
+
@@ -1,4 +1,3 @@
1
- require 'httparty'
2
1
  require 'tabular_formatter'
3
2
  require 'yaml'
4
3
  require 'json'
@@ -9,16 +8,34 @@ require 'holistics/helpers/job_manager'
9
8
  module Holistics
10
9
  class ApiClient
11
10
 
12
- def job_manager
13
- @job_helper ||= Helpers::JobManager.new
14
- end
11
+ def import_csv options
12
+ local_filepath = options[:filepath]
13
+ dest_ds_id = options[:dest_ds_id]
14
+ dest_fqname = options[:dest_table_name]
15
15
 
16
- def http_request
17
- @http_helper ||= Helpers::HttpRequest.new
18
- end
16
+ begin
17
+ file = File.open local_filepath
18
+ rescue
19
+ STDERR.puts "Could not open file at '#{local_filepath}'."
20
+ puts "Invalid file path. Please check your file path."
19
21
 
20
- def auth_info
21
- @auth_info ||= Helpers::AuthInfo.new
22
+ return
23
+ end
24
+
25
+ puts "Read csv file '#{local_filepath}'."
26
+
27
+ params = {
28
+ dest_fqname: dest_fqname,
29
+ dest_ds_id: dest_ds_id,
30
+ _utoken: auth_info.get_token_from_gconfig
31
+ }
32
+
33
+ json = http_request.post_csv 'data_imports/import_csv.json', params, file, 'Error uploading CSV file'
34
+
35
+ job_id = json['message']['job_id']
36
+
37
+ puts "Job submitted. Job ID: #{job_id}."
38
+ job_manager.tail_logs job_id.to_i
22
39
  end
23
40
 
24
41
  def ds_list
@@ -97,5 +114,25 @@ module Holistics
97
114
  STDERR.puts "Error parsing transport config file: #{e.message}"
98
115
  exit 1
99
116
  end
117
+
118
+ private
119
+
120
+ def file_manager
121
+ @file_manager ||= Helpers::FileManager.new
122
+ end
123
+
124
+ def job_manager
125
+ @job_helper ||= Helpers::JobManager.new
126
+ end
127
+
128
+ def http_request
129
+ @http_helper ||= Helpers::HttpRequest.new
130
+ end
131
+
132
+ def auth_info
133
+ @auth_info ||= Helpers::AuthInfo.new
134
+ end
135
+
136
+
100
137
  end
101
138
  end
@@ -1,4 +1,5 @@
1
1
  require 'httparty'
2
+ require 'net/http/post/multipart'
2
3
 
3
4
  module Holistics
4
5
  module Helpers
@@ -49,6 +50,21 @@ module Holistics
49
50
  JSON.parse response.body
50
51
  end
51
52
 
53
+ def post_csv url, params, file, msg_if_error = DEFAULT_ERROR_MSG
54
+ uri = URI.parse endpoint_for url
55
+ csv = UploadIO.new file, "text/csv", File.basename(file.path)
56
+ params = params.merge file: csv
57
+ request = Net::HTTP::Post::Multipart.new uri.path, params
58
+
59
+ response = Net::HTTP.start(uri.host, uri.port) do |http|
60
+ http.request(request)
61
+ end
62
+
63
+ exit_if_error(msg_if_error, response)
64
+
65
+ JSON.parse response.body
66
+ end
67
+
52
68
  private
53
69
 
54
70
  def exit_if_error (message, response)
@@ -63,7 +79,11 @@ module Holistics
63
79
  end
64
80
 
65
81
  def response_has_error?(response)
66
- response.code != 200
82
+ response.code.to_i != 200
83
+ end
84
+
85
+ def endpoint_for route
86
+ "#{server_url}/#{route}"
67
87
  end
68
88
  end
69
89
  end
@@ -1,3 +1,3 @@
1
1
  module Holistics
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2'
3
3
  end
data/lib/holistics.rb CHANGED
@@ -5,6 +5,7 @@ require 'holistics/api_client'
5
5
  require 'holistics/custom_logger'
6
6
  require 'holistics/auth_api_client'
7
7
 
8
+ require 'import'
8
9
  require 'transport'
9
10
  require 'data_sources'
10
11
 
@@ -31,6 +32,7 @@ module Holistics
31
32
  super(args, options, config)
32
33
  end
33
34
 
35
+ register(Holistics::Import, 'import', 'import<command>', "Execute import commands")
34
36
  register(Holistics::Transport, 'transport', 'transport <command>', "Execute transport module's commands")
35
37
  register(Holistics::DataSources, 'data_sources', 'data_sources <command>', "Execute data_sources module's commands")
36
38
 
data/lib/import.rb ADDED
@@ -0,0 +1,20 @@
1
+ require 'thor'
2
+
3
+ module Holistics
4
+ class Import < Thor
5
+
6
+ no_commands do
7
+ def api_client
8
+ @api_client ||= ApiClient.new
9
+ end
10
+ end
11
+
12
+ method_option :filepath, aliases: '-f', type: :string, required: true, desc: 'Path to CSV file'
13
+ method_option :dest_ds_id, aliases: '-d', type: :string, required: true, desc: 'Destination data source'
14
+ method_option :dest_table_name, aliases: '-t', type: :string, required: true, desc: 'Specify destination table to write to'
15
+ desc 'csv', 'Import a local CSV file to destination server'
16
+ def csv
17
+ api_client.import_csv(options.dup)
18
+ end
19
+ end
20
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: holistics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thanh Dinh Khac
@@ -88,6 +88,7 @@ files:
88
88
  - lib/holistics/helpers/http_request.rb
89
89
  - lib/holistics/helpers/job_manager.rb
90
90
  - lib/holistics/version.rb
91
+ - lib/import.rb
91
92
  - lib/tabular_formatter.rb
92
93
  - lib/transport.rb
93
94
  - lib/vcr_helper.rb