Class: Aspera::Products::Transferd

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

Constant Summary collapse

APP_NAME =
'IBM Aspera Transfer Daemon'
V1_DAEMON_NAME =
'asperatransferd'
V2_DAEMON_NAME =

from 1.1.5

'transferd'
RUNTIME_FOLDERS =

folders to extract from SDK archive

%w[bin lib sbin aspera].freeze

Class Method Summary collapse

Class Method Details

.daemon_port_from_log(log_file) ⇒ Object

Well, the port number is only in log file



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/aspera/products/transferd.rb', line 44

def daemon_port_from_log(log_file)
  result = nil
  # if port is zero, a dynamic port was created, get it
  File.open(log_file, 'r') do |file|
    file.each_line do |line|
      # Well, it's tricky to depend on log
      if (m = line.match(/Info: API Server: Listening on ([^:]+):(\d+) /))
        result = m[2].to_i
        # no "break" , need to read last matching log line
      end
    end
  end
  Aspera.assert(!result.nil?){'Port not found in daemon logs'}
  Log.log.debug{"Got port #{result} from log"}
  return result
end

.locationsObject

standard folder locations



16
17
18
19
20
21
# File 'lib/aspera/products/transferd.rb', line 16

def locations
  [{
    app_root: sdk_directory,
    sub_bin:  ''
  }].map{ |i| i.merge({expected: APP_NAME})}
end

.sdk_directoryObject

Returns the path to folder where SDK is installed.

Returns:

  • the path to folder where SDK is installed



31
32
33
34
35
# File 'lib/aspera/products/transferd.rb', line 31

def sdk_directory
  Aspera.assert(!@sdk_dir.nil?){'SDK path was not initialized'}
  FileUtils.mkdir_p(@sdk_dir)
  @sdk_dir
end

.sdk_directory=(folder) ⇒ Object

location of SDK files



24
25
26
27
28
# File 'lib/aspera/products/transferd.rb', line 24

def sdk_directory=(folder)
  Log.log.debug{"sdk_directory=#{folder}"}
  @sdk_dir = folder
  sdk_directory
end

.transferd_pathObject



37
38
39
40
41
# File 'lib/aspera/products/transferd.rb', line 37

def transferd_path
  v1_path = File.join(sdk_directory, Environment.instance.exe_file(V1_DAEMON_NAME))
  return v1_path if File.exist?(v1_path)
  return File.join(sdk_directory, Environment.instance.exe_file(V2_DAEMON_NAME))
end