aspera-cli 4.9.0 → 4.11.0

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.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/BUGS.md +20 -0
  4. data/CHANGELOG.md +509 -0
  5. data/CONTRIBUTING.md +118 -0
  6. data/README.md +1241 -916
  7. data/bin/ascli +4 -4
  8. data/bin/asession +11 -11
  9. data/docs/test_env.conf +32 -21
  10. data/examples/aoc.rb +4 -4
  11. data/examples/dascli +16 -9
  12. data/examples/faspex4.rb +8 -8
  13. data/examples/node.rb +12 -12
  14. data/examples/server.rb +10 -10
  15. data/lib/aspera/aoc.rb +273 -266
  16. data/lib/aspera/ascmd.rb +56 -54
  17. data/lib/aspera/ats_api.rb +4 -4
  18. data/lib/aspera/cli/basic_auth_plugin.rb +15 -12
  19. data/lib/aspera/cli/extended_value.rb +5 -5
  20. data/lib/aspera/cli/formater.rb +64 -64
  21. data/lib/aspera/cli/info.rb +2 -2
  22. data/lib/aspera/cli/listener/line_dump.rb +1 -1
  23. data/lib/aspera/cli/listener/logger.rb +1 -1
  24. data/lib/aspera/cli/listener/progress.rb +5 -6
  25. data/lib/aspera/cli/listener/progress_multi.rb +14 -19
  26. data/lib/aspera/cli/main.rb +66 -67
  27. data/lib/aspera/cli/manager.rb +112 -110
  28. data/lib/aspera/cli/plugin.rb +57 -36
  29. data/lib/aspera/cli/plugins/alee.rb +4 -4
  30. data/lib/aspera/cli/plugins/aoc.rb +309 -670
  31. data/lib/aspera/cli/plugins/ats.rb +44 -46
  32. data/lib/aspera/cli/plugins/bss.rb +10 -10
  33. data/lib/aspera/cli/plugins/config.rb +497 -378
  34. data/lib/aspera/cli/plugins/console.rb +12 -12
  35. data/lib/aspera/cli/plugins/cos.rb +18 -20
  36. data/lib/aspera/cli/plugins/faspex.rb +112 -114
  37. data/lib/aspera/cli/plugins/faspex5.rb +71 -46
  38. data/lib/aspera/cli/plugins/node.rb +379 -283
  39. data/lib/aspera/cli/plugins/orchestrator.rb +46 -46
  40. data/lib/aspera/cli/plugins/preview.rb +122 -114
  41. data/lib/aspera/cli/plugins/server.rb +137 -83
  42. data/lib/aspera/cli/plugins/shares.rb +30 -29
  43. data/lib/aspera/cli/plugins/sync.rb +13 -33
  44. data/lib/aspera/cli/transfer_agent.rb +60 -59
  45. data/lib/aspera/cli/version.rb +1 -1
  46. data/lib/aspera/colors.rb +3 -3
  47. data/lib/aspera/command_line_builder.rb +27 -27
  48. data/lib/aspera/cos_node.rb +22 -20
  49. data/lib/aspera/data_repository.rb +1 -1
  50. data/lib/aspera/environment.rb +35 -15
  51. data/lib/aspera/fasp/agent_base.rb +15 -15
  52. data/lib/aspera/fasp/agent_connect.rb +23 -21
  53. data/lib/aspera/fasp/agent_direct.rb +66 -64
  54. data/lib/aspera/fasp/agent_httpgw.rb +141 -78
  55. data/lib/aspera/fasp/agent_node.rb +23 -21
  56. data/lib/aspera/fasp/agent_trsdk.rb +20 -20
  57. data/lib/aspera/fasp/error.rb +3 -2
  58. data/lib/aspera/fasp/error_info.rb +11 -8
  59. data/lib/aspera/fasp/installation.rb +79 -79
  60. data/lib/aspera/fasp/listener.rb +1 -1
  61. data/lib/aspera/fasp/parameters.rb +86 -71
  62. data/lib/aspera/fasp/parameters.yaml +7 -4
  63. data/lib/aspera/fasp/resume_policy.rb +8 -8
  64. data/lib/aspera/fasp/transfer_spec.rb +35 -2
  65. data/lib/aspera/fasp/uri.rb +7 -7
  66. data/lib/aspera/faspex_gw.rb +7 -5
  67. data/lib/aspera/hash_ext.rb +3 -3
  68. data/lib/aspera/id_generator.rb +5 -5
  69. data/lib/aspera/keychain/encrypted_hash.rb +38 -105
  70. data/lib/aspera/keychain/macos_security.rb +128 -57
  71. data/lib/aspera/log.rb +7 -7
  72. data/lib/aspera/nagios.rb +19 -18
  73. data/lib/aspera/node.rb +209 -35
  74. data/lib/aspera/oauth.rb +37 -36
  75. data/lib/aspera/open_application.rb +19 -11
  76. data/lib/aspera/persistency_action_once.rb +4 -4
  77. data/lib/aspera/persistency_folder.rb +16 -15
  78. data/lib/aspera/preview/file_types.rb +8 -8
  79. data/lib/aspera/preview/generator.rb +67 -67
  80. data/lib/aspera/preview/utils.rb +27 -27
  81. data/lib/aspera/proxy_auto_config.js +41 -41
  82. data/lib/aspera/proxy_auto_config.rb +21 -14
  83. data/lib/aspera/rest.rb +72 -67
  84. data/lib/aspera/rest_call_error.rb +2 -1
  85. data/lib/aspera/rest_error_analyzer.rb +18 -17
  86. data/lib/aspera/rest_errors_aspera.rb +16 -16
  87. data/lib/aspera/secret_hider.rb +15 -13
  88. data/lib/aspera/ssh.rb +11 -10
  89. data/lib/aspera/sync.rb +158 -44
  90. data/lib/aspera/temp_file_manager.rb +2 -2
  91. data/lib/aspera/uri_reader.rb +4 -4
  92. data/lib/aspera/web_auth.rb +14 -13
  93. data.tar.gz.sig +0 -0
  94. metadata +11 -36
  95. metadata.gz.sig +0 -0
@@ -6,18 +6,18 @@ require 'xmlsimple'
6
6
  module Aspera
7
7
  module Cli
8
8
  module Plugins
9
- class Orchestrator < BasicAuthPlugin
9
+ class Orchestrator < Aspera::Cli::BasicAuthPlugin
10
10
  def initialize(env)
11
11
  super(env)
12
- options.add_opt_simple(:params,'parameters hash table, use @json:{"param":"value"}')
13
- options.add_opt_simple(:result,"specify result value as: 'work step:parameter'")
14
- options.add_opt_boolean(:synchronous,'work step:parameter expected as result')
15
- options.add_opt_list(:ret_style,%i[header arg ext],'how return type is requested in api')
16
- options.add_opt_list(:auth_style,%i[arg_pass head_basic apikey],'authentication type')
17
- options.set_option(:params,{})
18
- options.set_option(:synchronous,:no)
19
- options.set_option(:ret_style,:arg)
20
- options.set_option(:auth_style,:head_basic)
12
+ options.add_opt_simple(:params, 'parameters hash table, use @json:{"param":"value"}')
13
+ options.add_opt_simple(:result, "specify result value as: 'work step:parameter'")
14
+ options.add_opt_boolean(:synchronous, 'work step:parameter expected as result')
15
+ options.add_opt_list(:ret_style, %i[header arg ext], 'how return type is requested in api')
16
+ options.add_opt_list(:auth_style, %i[arg_pass head_basic apikey], 'authentication type')
17
+ options.set_option(:params, {})
18
+ options.set_option(:synchronous, :no)
19
+ options.set_option(:ret_style, :arg)
20
+ options.set_option(:auth_style, :head_basic)
21
21
  options.parse_options!
22
22
  end
23
23
 
@@ -41,18 +41,18 @@ module Aspera
41
41
  # return @api_orch.call(call_args)
42
42
  # end
43
43
 
44
- def call_ao(endpoint,opt={})
45
- opt[:prefix] = 'api' unless opt.has_key?(:prefix)
44
+ def call_ao(endpoint, opt={})
45
+ opt[:prefix] = 'api' unless opt.key?(:prefix)
46
46
  # calls are GET
47
- call_args = {operation: 'GET',subpath: endpoint}
47
+ call_args = {operation: 'GET', subpath: endpoint}
48
48
  # specify prefix if necessary
49
49
  call_args[:subpath] = "#{opt[:prefix]}/#{call_args[:subpath]}" unless opt[:prefix].nil?
50
50
  # specify id if necessary
51
- call_args[:subpath] = "#{call_args[:subpath]}/#{opt[:id]}" if opt.has_key?(:id)
52
- call_type = options.get_option(:ret_style,is_type: :mandatory)
53
- call_type = opt[:ret_style] if opt.has_key?(:ret_style)
51
+ call_args[:subpath] = "#{call_args[:subpath]}/#{opt[:id]}" if opt.key?(:id)
52
+ call_type = options.get_option(:ret_style, is_type: :mandatory)
53
+ call_type = opt[:ret_style] if opt.key?(:ret_style)
54
54
  format = 'json'
55
- format = opt[:format] if opt.has_key?(:format)
55
+ format = opt[:format] if opt.key?(:format)
56
56
  call_args[:url_params] = opt[:args] unless opt[:args].nil?
57
57
  unless format.nil?
58
58
  case call_type
@@ -68,24 +68,24 @@ module Aspera
68
68
  end
69
69
  result = @api_orch.call(call_args)
70
70
  result[:data] = XmlSimple.xml_in(result[:http].body, opt[:xml_opt] || {'ForceArray' => true}) if format.eql?('xml')
71
- Log.dump(:data,result[:data])
71
+ Log.dump(:data, result[:data])
72
72
  return result
73
73
  end
74
74
 
75
75
  def execute_action
76
- rest_params = {base_url: options.get_option(:url,is_type: :mandatory)}
77
- case options.get_option(:auth_style,is_type: :mandatory)
76
+ rest_params = {base_url: options.get_option(:url, is_type: :mandatory)}
77
+ case options.get_option(:auth_style, is_type: :mandatory)
78
78
  when :arg_pass
79
79
  rest_params[:auth] = {
80
80
  type: :url,
81
81
  url_creds: {
82
- 'login' => options.get_option(:username,is_type: :mandatory),
83
- 'password' => options.get_option(:password,is_type: :mandatory) }}
82
+ 'login' => options.get_option(:username, is_type: :mandatory),
83
+ 'password' => options.get_option(:password, is_type: :mandatory) }}
84
84
  when :head_basic
85
85
  rest_params[:auth] = {
86
86
  type: :basic,
87
- username: options.get_option(:username,is_type: :mandatory),
88
- password: options.get_option(:password,is_type: :mandatory) }
87
+ username: options.get_option(:username, is_type: :mandatory),
88
+ password: options.get_option(:password, is_type: :mandatory) }
89
89
  when :apikey
90
90
  raise 'Not implemented'
91
91
  end
@@ -97,24 +97,24 @@ module Aspera
97
97
  when :health
98
98
  nagios = Nagios.new
99
99
  begin
100
- info = call_ao('remote_node_ping',format: 'xml', xml_opt: {'ForceArray' => false})[:data]
101
- nagios.add_ok('api','accessible')
102
- nagios.check_product_version('api','orchestrator', info['orchestrator-version'])
100
+ info = call_ao('remote_node_ping', format: 'xml', xml_opt: {'ForceArray' => false})[:data]
101
+ nagios.add_ok('api', 'accessible')
102
+ nagios.check_product_version('api', 'orchestrator', info['orchestrator-version'])
103
103
  rescue StandardError => e
104
- nagios.add_critical('node api',e.to_s)
104
+ nagios.add_critical('node api', e.to_s)
105
105
  end
106
106
  return nagios.result
107
107
  when :info
108
- result = call_ao('remote_node_ping',format: 'xml', xml_opt: {'ForceArray' => false})[:data]
109
- return {type: :single_object,data: result}
108
+ result = call_ao('remote_node_ping', format: 'xml', xml_opt: {'ForceArray' => false})[:data]
109
+ return {type: :single_object, data: result}
110
110
  when :processes
111
111
  # TODO: Jira ? API has only XML format
112
- result = call_ao('processes_status',format: 'xml')[:data]
113
- return {type: :object_list,data: result['process']}
112
+ result = call_ao('processes_status', format: 'xml')[:data]
113
+ return {type: :object_list, data: result['process']}
114
114
  when :plugins
115
115
  # TODO: Jira ? only json format on url
116
116
  result = call_ao('plugin_version')[:data]
117
- return {type: :object_list,data: result['Plugin']}
117
+ return {type: :object_list, data: result['Plugin']}
118
118
  when :workflow
119
119
  command = options.get_next_command(%i[list status inputs details start export])
120
120
  unless [:list].include?(command)
@@ -124,21 +124,21 @@ module Aspera
124
124
  when :status
125
125
  options = {}
126
126
  options[:id] = wf_id unless wf_id.eql?('ALL')
127
- result = call_ao('workflows_status',options)[:data]
128
- return {type: :object_list,data: result['workflows']['workflow']}
127
+ result = call_ao('workflows_status', options)[:data]
128
+ return {type: :object_list, data: result['workflows']['workflow']}
129
129
  when :list
130
- result = call_ao('workflows_list',id: 0)[:data]
131
- return {type: :object_list,data: result['workflows']['workflow'],
130
+ result = call_ao('workflows_list', id: 0)[:data]
131
+ return {type: :object_list, data: result['workflows']['workflow'],
132
132
  fields: %w[id portable_id name published_status published_revision_id latest_revision_id last_modification]}
133
133
  when :details
134
- result = call_ao('workflow_details',id: wf_id)[:data]
135
- return {type: :object_list,data: result['workflows']['workflow']['statuses']}
134
+ result = call_ao('workflow_details', id: wf_id)[:data]
135
+ return {type: :object_list, data: result['workflows']['workflow']['statuses']}
136
136
  when :inputs
137
- result = call_ao('workflow_inputs_spec',id: wf_id)[:data]
138
- return {type: :single_object,data: result['workflow_inputs_spec']}
137
+ result = call_ao('workflow_inputs_spec', id: wf_id)[:data]
138
+ return {type: :single_object, data: result['workflow_inputs_spec']}
139
139
  when :export
140
- result = call_ao('export_workflow',id: wf_id,format: nil)[:http]
141
- return {type: :text,data: result.body}
140
+ result = call_ao('export_workflow', id: wf_id, format: nil)[:http]
141
+ return {type: :text, data: result.body}
142
142
  when :start
143
143
  result = {
144
144
  type: :single_object,
@@ -147,11 +147,11 @@ fields: %w[id portable_id name published_status published_revision_id latest_rev
147
147
  call_params = {format: :json}
148
148
  override_accept = nil
149
149
  # set external parameters if any
150
- self.options.get_option(:params,is_type: :mandatory).each do |name,value|
150
+ self.options.get_option(:params, is_type: :mandatory).each do |name, value|
151
151
  call_params["external_parameters[#{name}]"] = value
152
152
  end
153
153
  # synchronous call ?
154
- call_params['synchronous'] = true if self.options.get_option(:synchronous,is_type: :mandatory)
154
+ call_params['synchronous'] = true if self.options.get_option(:synchronous, is_type: :mandatory)
155
155
  # expected result for synchro call ?
156
156
  expected = self.options.get_option(:result)
157
157
  unless expected.nil?
@@ -167,7 +167,7 @@ fields: %w[id portable_id name published_status published_revision_id latest_rev
167
167
  result[:type] = :text
168
168
  override_accept = 'text/plain'
169
169
  end
170
- result[:data] = call_ao('initiate',id: wf_id,args: call_params,accept: override_accept)[:data]
170
+ result[:data] = call_ao('initiate', id: wf_id, args: call_params, accept: override_accept)[:data]
171
171
  return result
172
172
  end # wf command
173
173
  else raise "ERROR, unknown command: [#{command}]"