aspera-cli 4.14.0 → 4.16.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 +29 -3
- data/CHANGELOG.md +300 -185
- data/CONTRIBUTING.md +74 -23
- data/README.md +2346 -1619
- data/bin/ascli +16 -25
- data/bin/asession +15 -15
- data/examples/dascli +2 -2
- data/examples/proxy.pac +1 -1
- data/lib/aspera/aoc.rb +216 -150
- data/lib/aspera/ascmd.rb +25 -18
- data/lib/aspera/assert.rb +45 -0
- data/lib/aspera/cli/basic_auth_plugin.rb +9 -6
- data/lib/aspera/cli/error.rb +17 -0
- data/lib/aspera/cli/extended_value.rb +51 -16
- data/lib/aspera/cli/formatter.rb +276 -174
- data/lib/aspera/cli/hints.rb +81 -0
- data/lib/aspera/cli/main.rb +114 -147
- data/lib/aspera/cli/manager.rb +181 -136
- data/lib/aspera/cli/plugin.rb +82 -64
- data/lib/aspera/cli/plugins/alee.rb +0 -1
- data/lib/aspera/cli/plugins/aoc.rb +327 -331
- data/lib/aspera/cli/plugins/ats.rb +12 -8
- data/lib/aspera/cli/plugins/bss.rb +2 -2
- data/lib/aspera/cli/plugins/config.rb +575 -439
- data/lib/aspera/cli/plugins/console.rb +40 -0
- data/lib/aspera/cli/plugins/cos.rb +4 -5
- data/lib/aspera/cli/plugins/faspex.rb +111 -92
- data/lib/aspera/cli/plugins/faspex5.rb +245 -182
- data/lib/aspera/cli/plugins/node.rb +239 -160
- data/lib/aspera/cli/plugins/orchestrator.rb +56 -19
- data/lib/aspera/cli/plugins/preview.rb +54 -38
- data/lib/aspera/cli/plugins/server.rb +63 -20
- data/lib/aspera/cli/plugins/shares.rb +64 -38
- data/lib/aspera/cli/sync_actions.rb +68 -0
- data/lib/aspera/cli/transfer_agent.rb +64 -67
- data/lib/aspera/cli/transfer_progress.rb +73 -0
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/colors.rb +3 -1
- data/lib/aspera/command_line_builder.rb +27 -22
- data/lib/aspera/cos_node.rb +6 -4
- data/lib/aspera/coverage.rb +22 -0
- data/lib/aspera/data_repository.rb +33 -2
- data/lib/aspera/environment.rb +21 -8
- data/lib/aspera/fasp/agent_alpha.rb +116 -0
- data/lib/aspera/fasp/agent_base.rb +40 -76
- data/lib/aspera/fasp/agent_connect.rb +21 -22
- data/lib/aspera/fasp/agent_direct.rb +169 -179
- data/lib/aspera/fasp/agent_httpgw.rb +200 -195
- data/lib/aspera/fasp/agent_node.rb +43 -35
- data/lib/aspera/fasp/agent_trsdk.rb +124 -41
- data/lib/aspera/fasp/error_info.rb +2 -2
- data/lib/aspera/fasp/faux_file.rb +52 -0
- data/lib/aspera/fasp/installation.rb +89 -191
- data/lib/aspera/fasp/management.rb +249 -0
- data/lib/aspera/fasp/parameters.rb +86 -47
- data/lib/aspera/fasp/parameters.yaml +75 -8
- data/lib/aspera/fasp/products.rb +162 -0
- data/lib/aspera/fasp/resume_policy.rb +7 -5
- data/lib/aspera/fasp/sync.rb +273 -0
- data/lib/aspera/fasp/transfer_spec.rb +10 -8
- data/lib/aspera/fasp/uri.rb +6 -6
- data/lib/aspera/faspex_gw.rb +11 -8
- data/lib/aspera/faspex_postproc.rb +8 -7
- data/lib/aspera/hash_ext.rb +2 -2
- data/lib/aspera/id_generator.rb +3 -1
- data/lib/aspera/json_rpc.rb +51 -0
- data/lib/aspera/keychain/encrypted_hash.rb +46 -11
- data/lib/aspera/keychain/macos_security.rb +15 -13
- data/lib/aspera/line_logger.rb +23 -0
- data/lib/aspera/log.rb +61 -19
- data/lib/aspera/nagios.rb +7 -2
- data/lib/aspera/node.rb +105 -21
- data/lib/aspera/node_simulator.rb +214 -0
- data/lib/aspera/oauth.rb +57 -36
- data/lib/aspera/open_application.rb +4 -4
- data/lib/aspera/persistency_action_once.rb +13 -14
- data/lib/aspera/persistency_folder.rb +5 -4
- data/lib/aspera/preview/file_types.rb +56 -268
- data/lib/aspera/preview/generator.rb +28 -39
- data/lib/aspera/preview/options.rb +2 -0
- data/lib/aspera/preview/terminal.rb +36 -16
- data/lib/aspera/preview/utils.rb +23 -29
- data/lib/aspera/proxy_auto_config.rb +6 -3
- data/lib/aspera/rest.rb +127 -80
- data/lib/aspera/rest_call_error.rb +1 -1
- data/lib/aspera/rest_error_analyzer.rb +16 -14
- data/lib/aspera/rest_errors_aspera.rb +39 -34
- data/lib/aspera/secret_hider.rb +18 -17
- data/lib/aspera/ssh.rb +10 -5
- data/lib/aspera/temp_file_manager.rb +11 -4
- data/lib/aspera/web_auth.rb +10 -7
- data/lib/aspera/web_server_simple.rb +11 -5
- data.tar.gz.sig +0 -0
- metadata +108 -39
- metadata.gz.sig +0 -0
- data/lib/aspera/cli/listener/line_dump.rb +0 -19
- data/lib/aspera/cli/listener/logger.rb +0 -22
- data/lib/aspera/cli/listener/progress.rb +0 -50
- data/lib/aspera/cli/listener/progress_multi.rb +0 -84
- data/lib/aspera/cli/plugins/sync.rb +0 -44
- data/lib/aspera/fasp/listener.rb +0 -13
- data/lib/aspera/sync.rb +0 -213
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
# cspell:ignore trustpolicy
|
|
4
|
+
|
|
3
5
|
require 'aspera/cli/plugins/node'
|
|
4
6
|
require 'aspera/ats_api'
|
|
7
|
+
require 'aspera/assert'
|
|
5
8
|
|
|
6
9
|
module Aspera
|
|
7
10
|
module Cli
|
|
@@ -9,6 +12,7 @@ module Aspera
|
|
|
9
12
|
# Access Aspera Transfer Service
|
|
10
13
|
# https://developer.ibm.com/aspera/docs/ats-api-reference/creating-ats-api-keys/
|
|
11
14
|
class Ats < Aspera::Cli::Plugin
|
|
15
|
+
CLOUD_TABLE = %w[id name].freeze
|
|
12
16
|
def initialize(env)
|
|
13
17
|
super(env)
|
|
14
18
|
options.declare(:ibm_api_key, 'IBM API key, see https://cloud.ibm.com/iam/apikeys')
|
|
@@ -89,7 +93,7 @@ module Aspera
|
|
|
89
93
|
res = ats_api_pub_v1.read("access_keys/#{access_key_id}")
|
|
90
94
|
return {type: :single_object, data: res[:data]}
|
|
91
95
|
when :modify
|
|
92
|
-
params = value_create_modify(command: command
|
|
96
|
+
params = value_create_modify(command: command)
|
|
93
97
|
params['id'] = access_key_id
|
|
94
98
|
ats_api_pub_v1.update("access_keys/#{access_key_id}", params)
|
|
95
99
|
return Main.result_status('modified')
|
|
@@ -103,7 +107,7 @@ module Aspera
|
|
|
103
107
|
when :node
|
|
104
108
|
ak_data = ats_api_pub_v1.read("access_keys/#{access_key_id}")[:data]
|
|
105
109
|
server_data = @ats_api_pub.all_servers.find {|i| i['id'].start_with?(ak_data['transfer_server_id'])}
|
|
106
|
-
raise
|
|
110
|
+
raise Cli::Error, 'no such server found' if server_data.nil?
|
|
107
111
|
node_url = server_data['transfer_setup_url']
|
|
108
112
|
api_node = Aspera::Node.new(params: {
|
|
109
113
|
base_url: node_url,
|
|
@@ -113,7 +117,7 @@ module Aspera
|
|
|
113
117
|
password: @agents[:config].lookup_secret(url: node_url, username: access_key_id)
|
|
114
118
|
}})
|
|
115
119
|
command = options.get_next_command(Node::COMMANDS_GEN4)
|
|
116
|
-
return Node.new(@agents
|
|
120
|
+
return Node.new(@agents, api: api_node).execute_command_gen4(command, ak_data['root_file_id'])
|
|
117
121
|
when :cluster
|
|
118
122
|
ats_url = ats_api_pub_v1.params[:base_url]
|
|
119
123
|
rest_params = {
|
|
@@ -125,7 +129,7 @@ module Aspera
|
|
|
125
129
|
}}
|
|
126
130
|
api_ak_auth = Rest.new(rest_params)
|
|
127
131
|
return {type: :single_object, data: api_ak_auth.read('servers')[:data]}
|
|
128
|
-
else
|
|
132
|
+
else error_unreachable_line
|
|
129
133
|
end
|
|
130
134
|
end
|
|
131
135
|
|
|
@@ -133,7 +137,7 @@ module Aspera
|
|
|
133
137
|
command = options.get_next_command(%i[clouds list show])
|
|
134
138
|
case command
|
|
135
139
|
when :clouds
|
|
136
|
-
return {type: :
|
|
140
|
+
return {type: :object_list, data: @ats_api_pub.cloud_names.map { |k, v| CLOUD_TABLE.zip([k, v]).to_h }}
|
|
137
141
|
when :list
|
|
138
142
|
return {type: :object_list, data: @ats_api_pub.all_servers, fields: %w[id cloud region]}
|
|
139
143
|
when :show
|
|
@@ -186,7 +190,7 @@ module Aspera
|
|
|
186
190
|
Log.log.warn{"more instances remaining: #{instances['remaining']}"} unless instances['remaining'].to_i.eql?(0)
|
|
187
191
|
return {type: :value_list, data: instances['data'], name: 'instance'}
|
|
188
192
|
when :create
|
|
189
|
-
created_key = ats_ibm_api.create('api_keys', value_create_modify(command: command, default: {}
|
|
193
|
+
created_key = ats_ibm_api.create('api_keys', value_create_modify(command: command, default: {}))[:data]
|
|
190
194
|
return {type: :single_object, data: created_key}
|
|
191
195
|
when :list # list known api keys in ATS (this require an api_key ...)
|
|
192
196
|
res = ats_ibm_api.read('api_keys', {'offset' => 0, 'max_results' => 1000})
|
|
@@ -197,7 +201,7 @@ module Aspera
|
|
|
197
201
|
when :delete
|
|
198
202
|
ats_ibm_api.delete("api_keys/#{concerned_id}")
|
|
199
203
|
return Main.result_status("deleted #{concerned_id}")
|
|
200
|
-
else
|
|
204
|
+
else error_unreachable_line
|
|
201
205
|
end
|
|
202
206
|
end
|
|
203
207
|
|
|
@@ -221,7 +225,7 @@ module Aspera
|
|
|
221
225
|
when :aws_trust_policy
|
|
222
226
|
res = ats_api_pub_v1.read('aws/trustpolicy', {region: options.get_option(:region, mandatory: true)})[:data]
|
|
223
227
|
return {type: :single_object, data: res}
|
|
224
|
-
else
|
|
228
|
+
else error_unexpected_value(command)
|
|
225
229
|
end
|
|
226
230
|
end
|
|
227
231
|
|
|
@@ -48,8 +48,8 @@ module Aspera
|
|
|
48
48
|
id = instance_identifier
|
|
49
49
|
request = {
|
|
50
50
|
'variables' => {'id' => id},
|
|
51
|
-
'query' => "query($id: ID!) {#{object}(id: $id) { #{all_fields('bssSubscriptions')} roleAssignments(uniqueSubjectId: true) { id subjectId } "\
|
|
52
|
-
'instances { id state planId serviceId ssmSubscriptionId entitlement { id } aocOrganization { id subdomainName name status tier urlId trialExpiresAt '\
|
|
51
|
+
'query' => "query($id: ID!) {#{object}(id: $id) { #{all_fields('bssSubscriptions')} roleAssignments(uniqueSubjectId: true) { id subjectId } " \
|
|
52
|
+
'instances { id state planId serviceId ssmSubscriptionId entitlement { id } aocOrganization { id subdomainName name status tier urlId trialExpiresAt ' \
|
|
53
53
|
'users(organizationAdmin: true) { id name email atsAdmin subscriptionAdmin } } } } }'
|
|
54
54
|
}
|
|
55
55
|
result = @api_bss.create('graphql', request)[:data]['data'][object].first
|