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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/BUGS.md +20 -0
- data/CHANGELOG.md +509 -0
- data/CONTRIBUTING.md +118 -0
- data/README.md +1241 -916
- data/bin/ascli +4 -4
- data/bin/asession +11 -11
- data/docs/test_env.conf +32 -21
- data/examples/aoc.rb +4 -4
- data/examples/dascli +16 -9
- data/examples/faspex4.rb +8 -8
- data/examples/node.rb +12 -12
- data/examples/server.rb +10 -10
- data/lib/aspera/aoc.rb +273 -266
- data/lib/aspera/ascmd.rb +56 -54
- data/lib/aspera/ats_api.rb +4 -4
- data/lib/aspera/cli/basic_auth_plugin.rb +15 -12
- data/lib/aspera/cli/extended_value.rb +5 -5
- data/lib/aspera/cli/formater.rb +64 -64
- data/lib/aspera/cli/info.rb +2 -2
- data/lib/aspera/cli/listener/line_dump.rb +1 -1
- data/lib/aspera/cli/listener/logger.rb +1 -1
- data/lib/aspera/cli/listener/progress.rb +5 -6
- data/lib/aspera/cli/listener/progress_multi.rb +14 -19
- data/lib/aspera/cli/main.rb +66 -67
- data/lib/aspera/cli/manager.rb +112 -110
- data/lib/aspera/cli/plugin.rb +57 -36
- data/lib/aspera/cli/plugins/alee.rb +4 -4
- data/lib/aspera/cli/plugins/aoc.rb +309 -670
- data/lib/aspera/cli/plugins/ats.rb +44 -46
- data/lib/aspera/cli/plugins/bss.rb +10 -10
- data/lib/aspera/cli/plugins/config.rb +497 -378
- data/lib/aspera/cli/plugins/console.rb +12 -12
- data/lib/aspera/cli/plugins/cos.rb +18 -20
- data/lib/aspera/cli/plugins/faspex.rb +112 -114
- data/lib/aspera/cli/plugins/faspex5.rb +71 -46
- data/lib/aspera/cli/plugins/node.rb +379 -283
- data/lib/aspera/cli/plugins/orchestrator.rb +46 -46
- data/lib/aspera/cli/plugins/preview.rb +122 -114
- data/lib/aspera/cli/plugins/server.rb +137 -83
- data/lib/aspera/cli/plugins/shares.rb +30 -29
- data/lib/aspera/cli/plugins/sync.rb +13 -33
- data/lib/aspera/cli/transfer_agent.rb +60 -59
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/colors.rb +3 -3
- data/lib/aspera/command_line_builder.rb +27 -27
- data/lib/aspera/cos_node.rb +22 -20
- data/lib/aspera/data_repository.rb +1 -1
- data/lib/aspera/environment.rb +35 -15
- data/lib/aspera/fasp/agent_base.rb +15 -15
- data/lib/aspera/fasp/agent_connect.rb +23 -21
- data/lib/aspera/fasp/agent_direct.rb +66 -64
- data/lib/aspera/fasp/agent_httpgw.rb +141 -78
- data/lib/aspera/fasp/agent_node.rb +23 -21
- data/lib/aspera/fasp/agent_trsdk.rb +20 -20
- data/lib/aspera/fasp/error.rb +3 -2
- data/lib/aspera/fasp/error_info.rb +11 -8
- data/lib/aspera/fasp/installation.rb +79 -79
- data/lib/aspera/fasp/listener.rb +1 -1
- data/lib/aspera/fasp/parameters.rb +86 -71
- data/lib/aspera/fasp/parameters.yaml +7 -4
- data/lib/aspera/fasp/resume_policy.rb +8 -8
- data/lib/aspera/fasp/transfer_spec.rb +35 -2
- data/lib/aspera/fasp/uri.rb +7 -7
- data/lib/aspera/faspex_gw.rb +7 -5
- data/lib/aspera/hash_ext.rb +3 -3
- data/lib/aspera/id_generator.rb +5 -5
- data/lib/aspera/keychain/encrypted_hash.rb +38 -105
- data/lib/aspera/keychain/macos_security.rb +128 -57
- data/lib/aspera/log.rb +7 -7
- data/lib/aspera/nagios.rb +19 -18
- data/lib/aspera/node.rb +209 -35
- data/lib/aspera/oauth.rb +37 -36
- data/lib/aspera/open_application.rb +19 -11
- data/lib/aspera/persistency_action_once.rb +4 -4
- data/lib/aspera/persistency_folder.rb +16 -15
- data/lib/aspera/preview/file_types.rb +8 -8
- data/lib/aspera/preview/generator.rb +67 -67
- data/lib/aspera/preview/utils.rb +27 -27
- data/lib/aspera/proxy_auto_config.js +41 -41
- data/lib/aspera/proxy_auto_config.rb +21 -14
- data/lib/aspera/rest.rb +72 -67
- data/lib/aspera/rest_call_error.rb +2 -1
- data/lib/aspera/rest_error_analyzer.rb +18 -17
- data/lib/aspera/rest_errors_aspera.rb +16 -16
- data/lib/aspera/secret_hider.rb +15 -13
- data/lib/aspera/ssh.rb +11 -10
- data/lib/aspera/sync.rb +158 -44
- data/lib/aspera/temp_file_manager.rb +2 -2
- data/lib/aspera/uri_reader.rb +4 -4
- data/lib/aspera/web_auth.rb +14 -13
- data.tar.gz.sig +0 -0
- metadata +11 -36
- 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
|
16
|
-
options.add_opt_list(:auth_style
|
17
|
-
options.set_option(:params,{})
|
18
|
-
options.set_option(:synchronous
|
19
|
-
options.set_option(:ret_style
|
20
|
-
options.set_option(:auth_style
|
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.
|
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.
|
52
|
-
call_type = options.get_option(:ret_style,is_type: :mandatory)
|
53
|
-
call_type = opt[:ret_style] if opt.
|
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.
|
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}]"
|