tn_s3_file_uploader 0.1.12 → 0.1.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/tn_s3_file_uploader.rb +1 -0
- data/lib/tn_s3_file_uploader/cli_parser.rb +6 -0
- data/lib/tn_s3_file_uploader/log.rb +6 -0
- data/lib/tn_s3_file_uploader/log_uploader.rb +10 -3
- data/lib/tn_s3_file_uploader/runner.rb +8 -5
- data/lib/tn_s3_file_uploader/s3.rb +3 -1
- data/lib/tn_s3_file_uploader/version.rb +1 -1
- metadata +88 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2062bc0a4484eda4e75c513648636a5845e94ee8
|
4
|
+
data.tar.gz: 174f02613f6c19f6b066b2023cb6ddad7d307e64
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e288891e8d56061f2de39048d9326077b9ddc7c6e185b786b8cddae040ffbf7dae5adbac27da76ed45ad3451f0609a5eb5720048d1233fb225277e97b6d5c88
|
7
|
+
data.tar.gz: 5a172c4b7f2a0da1a08967aa79ad69c120cc6e87163bfe7a5f4d8dbbe38ae432a0db770aa112c7c2e05e70278d0ebd4dce5b31c41f8427d74143daff1f3dd79e
|
data/lib/tn_s3_file_uploader.rb
CHANGED
@@ -3,6 +3,7 @@ require 'tn_s3_file_uploader/cli_parser'
|
|
3
3
|
require 'tn_s3_file_uploader/file_path_generator'
|
4
4
|
require 'tn_s3_file_uploader/log_uploader'
|
5
5
|
require 'tn_s3_file_uploader/s3'
|
6
|
+
require 'tn_s3_file_uploader/log'
|
6
7
|
|
7
8
|
require 'tn_s3_file_uploader/error_reporting/error_report_manager'
|
8
9
|
require 'tn_s3_file_uploader/error_reporting/honeybadger_error_reporter'
|
@@ -31,6 +31,12 @@ module TnS3FileUploader
|
|
31
31
|
options[:delete_log_files_flag] = delete_log_files_flag
|
32
32
|
end
|
33
33
|
|
34
|
+
options[:fixed_time] = ""
|
35
|
+
opts.on("-t", "--fixed-time [FIXED_TIME]", "The time which will be added to generated log name"\
|
36
|
+
"It is an optional parameter. Use this argument to override time used to specify the resolution for the timestamp, if this option is not provided the time to use will be script run time.") do |fixed_time|
|
37
|
+
options[:fixed_time] = fixed_time
|
38
|
+
end
|
39
|
+
|
34
40
|
options[:file_timestamp_resolution] = 300
|
35
41
|
opts.on("--file-timestamp-resolution RES", Integer, "The resolution of the destination filename in seconds (positive non-zero integer)") do |file_timestamp_resolution|
|
36
42
|
if valid_seconds?(file_timestamp_resolution)
|
@@ -26,10 +26,14 @@ module TnS3FileUploader
|
|
26
26
|
file_path_generator = FilePathGenerator.new(options)
|
27
27
|
|
28
28
|
log_files.each do |log_file|
|
29
|
-
|
29
|
+
if options[:fixed_time].nil? || options[:fixed_time].empty?
|
30
|
+
time = last_modified_time(log_file)
|
31
|
+
else
|
32
|
+
time = DateTime.strptime(options[:fixed_time], '%Y-%m-%d_%H:%M:%S').to_time
|
33
|
+
end
|
30
34
|
destination_full_path = file_path_generator.dest_full_path_for(time, log_file)
|
31
35
|
|
32
|
-
|
36
|
+
Log.log "Found log file #{ log_file }, formatting file name for upload to S3 bucket #{ bucket } into folder #{ destination_full_path }"
|
33
37
|
|
34
38
|
# Note no leading or trailing slashes - this will break the upload to S3 (see our s3.rb)
|
35
39
|
begin
|
@@ -86,7 +90,10 @@ module TnS3FileUploader
|
|
86
90
|
|
87
91
|
def delete_file(file)
|
88
92
|
file_path = Pathname.new(file)
|
89
|
-
|
93
|
+
if file_path.file?
|
94
|
+
File.delete(file)
|
95
|
+
Log.log "Deleted file #{file}"
|
96
|
+
end
|
90
97
|
end
|
91
98
|
end
|
92
99
|
|
@@ -14,21 +14,24 @@ module TnS3FileUploader
|
|
14
14
|
def run
|
15
15
|
add_log_error_reporter
|
16
16
|
add_honeybadger
|
17
|
-
|
17
|
+
Log.log "Running TnS3FileUploader..." if @options[:verbose]
|
18
18
|
|
19
19
|
upload
|
20
|
+
rescue => e
|
21
|
+
@error_report_manager.report_error(e, { :options => @options } )
|
20
22
|
rescue Exception => e
|
21
23
|
@error_report_manager.report_error(e, { :options => @options } )
|
24
|
+
raise
|
22
25
|
end
|
23
26
|
|
24
27
|
private
|
25
28
|
|
26
29
|
def upload
|
27
30
|
if @options[:verbose]
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
31
|
+
Log.log "Using:"
|
32
|
+
Log.log "log file pattern = #{ @options[:input_file_pattern] }"
|
33
|
+
Log.log "s3 dest folder = #{ @options[:s3_output_pattern] }"
|
34
|
+
Log.log "file timestamp resolution = #{ @options[:file_timestamp_resolution] }"
|
32
35
|
end
|
33
36
|
|
34
37
|
s3_client = create_s3_client
|
@@ -37,9 +37,11 @@ module TnS3FileUploader
|
|
37
37
|
s3_bucket = @s3_client.buckets[bucket]
|
38
38
|
s3_file_path = s3_bucket.objects[dest_full_path]
|
39
39
|
|
40
|
-
|
40
|
+
Log.log "Uploading file #{file} to S3 bucket #{bucket} and path #{dest_full_path}"
|
41
41
|
|
42
42
|
s3_file_path.write(File.open(file, 'rb'))
|
43
|
+
|
44
|
+
Log.log "Finished Uploading file #{file} to S3 bucket #{bucket} and path #{dest_full_path}"
|
43
45
|
rescue StandardError, Timeout::Error => e
|
44
46
|
if retry_count < MAX_RETRIES
|
45
47
|
#This fixes a bug where the credentials may have rotated on the EC2 instance but the old values
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tn_s3_file_uploader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thinknear.com
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: honeybadger
|
@@ -38,6 +38,90 @@ dependencies:
|
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.35'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: timecop
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec-expectations
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: cucumber
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: fakes3
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.1.5.2
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.1.5.2
|
41
125
|
description: Amazon S3 file uploader that can build folder structures based on timestamp.
|
42
126
|
Typically used in conjunction with Unix's logrotate.
|
43
127
|
email: opensource@thinknear.com
|
@@ -55,6 +139,7 @@ files:
|
|
55
139
|
- lib/tn_s3_file_uploader/error_reporting/honeybadger_error_reporter.rb
|
56
140
|
- lib/tn_s3_file_uploader/error_reporting/log_error_reporter.rb
|
57
141
|
- lib/tn_s3_file_uploader/file_path_generator.rb
|
142
|
+
- lib/tn_s3_file_uploader/log.rb
|
58
143
|
- lib/tn_s3_file_uploader/log_uploader.rb
|
59
144
|
- lib/tn_s3_file_uploader/runner.rb
|
60
145
|
- lib/tn_s3_file_uploader/s3.rb
|
@@ -79,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
164
|
version: '0'
|
80
165
|
requirements: []
|
81
166
|
rubyforge_project:
|
82
|
-
rubygems_version: 2.4.
|
167
|
+
rubygems_version: 2.4.6
|
83
168
|
signing_key:
|
84
169
|
specification_version: 4
|
85
170
|
summary: Amazon S3 file uploader
|