cantemo-portal-agent 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -77,7 +77,7 @@ module Envoi
77
77
 
78
78
  def initialize(args = { })
79
79
  initialize_logger(args)
80
- logger.debug { "Initializing Watch Folder. Args: #{args}" }
80
+ logger.debug { "Initializing Watch Folder Handler '#{self.class.name}'. Args: #{args}" }
81
81
 
82
82
  @definition = args[:definition]
83
83
  raise ArgumentError, "Definition is a required argument." unless definition
@@ -91,23 +91,7 @@ module Envoi
91
91
 
92
92
  process_definition(@definition)
93
93
  initialize_listener
94
- end
95
-
96
- def process_definition(work_folder_def)
97
- # @paths = [ File.expand_path('~/watch_folders/aspera') ]
98
- @paths = definition['paths'] || []
99
- path = definition['path']
100
- @paths << path if path && !@paths.include?(path)
101
-
102
- # @quarantine_directory_path = definition['quarantine_directory_path'] || definition['quarantine_path']
103
- @poll_interval = definition['poll_interval'] || 15
104
- @min_stable_poll_count = definition['minimum_stable_poll_count'] || 3
105
- @min_stable_time = definition['minimum_stable_time']
106
- if @min_stable_time.nil? && @min_stable_poll_count && @min_stable_time
107
- @min_stable_time = @poll_interval * @min_stable_poll_count
108
- end
109
- @processing_limit = definition['processing_limit'] || 10
110
-
94
+ logger.debug ( "Watch Folder Handler '#{self.class.name}' Initialized. ")
111
95
  end
112
96
 
113
97
  def initialize_logger(args = { })
@@ -120,11 +104,28 @@ module Envoi
120
104
  @logger
121
105
  end
122
106
 
107
+ def process_definition(watch_folder_def)
108
+ # @paths = [ File.expand_path('~/watch_folders/aspera') ]
109
+ @paths = watch_folder_def['paths'] || []
110
+ path = watch_folder_def['path']
111
+ @paths << path if path && !@paths.include?(path)
112
+
113
+ # @quarantine_directory_path = definition['quarantine_directory_path'] || definition['quarantine_path']
114
+ @poll_interval = watch_folder_def['poll_interval'] || 15
115
+ @min_stable_poll_count = watch_folder_def['minimum_stable_poll_count'] || 3
116
+ @min_stable_time = watch_folder_def['minimum_stable_time']
117
+ if @min_stable_time.nil? && @min_stable_poll_count && @min_stable_time
118
+ @min_stable_time = @poll_interval * @min_stable_poll_count
119
+ end
120
+ @processing_limit = watch_folder_def['processing_limit'] || 10
121
+ end
122
+
123
123
  def process_deleted_path(path)
124
124
  return path.each { |path| process_deleted_path(path, event_type) } if path.is_a?(Array)
125
125
  logger.debug { "PATH #{:deleted} '#{path}'" }
126
126
  file = known_path_map[path]
127
127
  known_path_map.delete(path)
128
+ ignored_files_map.delete(path)
128
129
  return unless file
129
130
  file.event_type = :deleted
130
131
  file.event_timestamp = Time.now
@@ -144,11 +145,6 @@ module Envoi
144
145
  end
145
146
 
146
147
  def initialize_listener(args = { })
147
- # @directories = directories.map do |directory|
148
- # Pathname.new(directory.to_s).realpath
149
- # end
150
-
151
-
152
148
  @listener = ::Listen.to(*paths, {}) do |m, a, r|
153
149
  if !r.empty?
154
150
  log "#{r.length} file(s) removed."
@@ -166,10 +162,15 @@ module Envoi
166
162
  end
167
163
 
168
164
  end
165
+ end
166
+
167
+ # Listen doesn't perform an initial inventory by default so this method will pick up
168
+ # any files that are already present
169
+ def perform_initial_inventory
169
170
  _config = @listener.instance_variable_get(:@backend).instance_variable_get(:@adapter).config
171
+ # change_config = ::Listen::Change::Config.new(_config.queue, _config.silencer)
170
172
 
171
173
  _snapshots ||= {}
172
- # change_config = ::Listen::Change::Config.new(_config.queue, _config.silencer)
173
174
  _config.directories.each do |dir|
174
175
  record = ::Listen::Record.new(dir)
175
176
  record.build
@@ -185,55 +186,27 @@ module Envoi
185
186
  # pp _snapshots
186
187
  end
187
188
 
188
- def log(message)
189
- puts "#{Time.now} #{message}"
190
- end
191
-
192
189
  def add_to_ignore(file)
193
190
  @ignored_files_map[file.path] = file
194
191
  end
195
192
 
196
- # def handle_stable_file(file, quarantine_directory_path = @quarantine_directory_path)
197
- # full_file_path = file[:path]
198
- # logger.info { "Processing File Path: #{full_file_path}..." }
199
- # if true
200
- # FileUtils.rm full_file_path
201
- # else
202
- # if quarantine_directory_path
203
- # FileUtils.mv full_file_path, quarantine_directory_path
204
- # end
205
- # end
206
- # end
207
-
193
+ # Really this is just for debugging as polling isn't used to determine file stability
208
194
  def poll(options = { })
209
195
  should_increment_counter = options.fetch(:should_increment_counter, true)
210
196
 
211
197
  @previous_poll_time = @last_poll_time
212
198
  @last_poll_time = Time.now
199
+
213
200
  lock.synchronize do
214
201
  @known_path_map.each do |fp, f|
215
202
  next if f.ignore?
216
203
  next unless f.exist?
217
204
 
218
205
  logger.debug { "Incrementing Stable Stats: #{f.summary}" }
219
-
220
- f.last_poll_time ||= Time.now
206
+ f.last_poll_time = Time.now
221
207
  f[:stable_poll_count] += 1 if should_increment_counter
222
-
223
- #
224
- # if @min_stable_time
225
- # if (Time.now - f.event_timestamp) >= @min_stable_time
226
- # is_stable = true
227
- # end
228
- # else
229
- # if f[:stable_poll_count] >= @min_stable_poll_count
230
- # is_stable = true
231
- # # handle_stable_file(f)
232
- # end
233
- # end
234
208
  end
235
209
  end
236
- stable_files
237
210
  end
238
211
 
239
212
  def stable_files
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cantemo-portal-agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Whitson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-17 00:00:00.000000000 Z
11
+ date: 2018-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asperalm
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.8.9
19
+ version: '0.9'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.8.9
26
+ version: '0.9'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: aws-sdk-s3
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -147,6 +147,7 @@ files:
147
147
  - exe/cantemo-portal-agent
148
148
  - lib/cantemo/portal/agent.rb
149
149
  - lib/cantemo/portal/agent/WatchFolderUtility/foreman.rb
150
+ - lib/cantemo/portal/agent/cli/commands/watch_folder.rb
150
151
  - lib/cantemo/portal/agent/cli/commands/watch_folders-working.rb
151
152
  - lib/cantemo/portal/agent/cli/commands/watch_folders.rb
152
153
  - lib/cantemo/portal/agent/version.rb
@@ -188,6 +189,7 @@ files:
188
189
  - lib/envoi/mam/vdms/agent.rb
189
190
  - lib/envoi/mam/vidispine/agent.rb
190
191
  - lib/envoi/mam/wiredrive/agent.rb
192
+ - lib/envoi/watch_folder_utility/watch_folder.rb
191
193
  - lib/envoi/watch_folder_utility/watch_folder/handler/listen.rb
192
194
  homepage: http://www.github.com/XPlatform-Consulting/envoi-mam-agent
193
195
  licenses: