Class: Aspera::SyncAdmin

Inherits:
Object
  • Object
show all
Defined in:
lib/aspera/sync.rb

Overview

end Sync

Instance Method Summary collapse

Constructor Details

#initialize(sync_params, session_name) ⇒ SyncAdmin

Returns a new instance of SyncAdmin.



176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# File 'lib/aspera/sync.rb', line 176

def initialize(sync_params, session_name)
  @cmdline = [ASYNC_ADMIN_EXECUTABLE, '--quiet']
  if sync_params.key?('local')
    raise 'Missing session name' if sync_params['name'].nil?
    raise 'Session not found' unless session_name.nil? || session_name.eql?(sync_params['name'])
    @cmdline.push("--name=#{sync_params['name']}")
    if sync_params.key?('local_db_dir')
      @cmdline.push("--local-db-dir=#{sync_params['local_db_dir']}")
    elsif sync_params.dig('local', 'path')
      @cmdline.push("--local-dir=#{sync_params.dig('local', 'path')}")
    else
      raise 'Missing either local_db_dir or local.path'
    end
  elsif sync_params.key?('sessions')
    session = session_name.nil? ? sync_params['sessions'].first : sync_params['sessions'].find{|s|s['name'].eql?(session_name)}
    raise 'Session not found' if session.nil?
    raise 'Missing session name' if session['name'].nil?
    @cmdline.push("--name=#{session['name']}")
    if session.key?('local_db_dir')
      @cmdline.push("--local-db-dir=#{session['local_db_dir']}")
    elsif session.key?('local_dir')
      @cmdline.push("--local-dir=#{session['local_dir']}")
    else
      raise 'Missing either local_db_dir or local_dir'
    end
  else
    raise 'At least one of `local` or `sessions` must be present in async parameters'
  end
end

Instance Method Details

#statusObject



206
207
208
209
210
211
# File 'lib/aspera/sync.rb', line 206

def status
  stdout, stderr, status = Open3.capture3(*@cmdline)
  Log.log.debug{"status=#{status}, stderr=#{stderr}"}
  raise "Sync failed: #{status.exitstatus} : #{stderr}" unless status.success?
  return stdout.split("\n").each_with_object({}){|l, m|i = l.split(/:  */); m[i.first.lstrip] = i.last.lstrip} # rubocop:disable Style/Semicolon
end