aspera-cli 4.14.0 → 4.16.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|