aspera-cli 4.16.0 → 4.17.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/CHANGELOG.md +50 -19
- data/CONTRIBUTING.md +3 -1
- data/README.md +965 -793
- data/bin/asession +29 -21
- data/lib/aspera/{fasp/agent_alpha.rb → agent/alpha.rb} +26 -25
- data/lib/aspera/{fasp/agent_base.rb → agent/base.rb} +15 -12
- data/lib/aspera/{fasp/agent_connect.rb → agent/connect.rb} +13 -11
- data/lib/aspera/{fasp/agent_direct.rb → agent/direct.rb} +49 -53
- data/lib/aspera/{fasp/agent_httpgw.rb → agent/httpgw.rb} +20 -19
- data/lib/aspera/{fasp/agent_node.rb → agent/node.rb} +20 -33
- data/lib/aspera/{fasp/agent_trsdk.rb → agent/trsdk.rb} +11 -11
- data/lib/aspera/api/aoc.rb +586 -0
- data/lib/aspera/api/ats.rb +46 -0
- data/lib/aspera/api/cos_node.rb +95 -0
- data/lib/aspera/api/node.rb +344 -0
- data/lib/aspera/ascmd.rb +46 -10
- data/lib/aspera/{fasp → ascp}/installation.rb +5 -5
- data/lib/aspera/{fasp → ascp}/management.rb +3 -8
- data/lib/aspera/{fasp → ascp}/products.rb +1 -1
- data/lib/aspera/assert.rb +30 -30
- data/lib/aspera/cli/basic_auth_plugin.rb +11 -10
- data/lib/aspera/cli/extended_value.rb +1 -1
- data/lib/aspera/cli/formatter.rb +13 -13
- data/lib/aspera/cli/hints.rb +5 -5
- data/lib/aspera/cli/main.rb +35 -28
- data/lib/aspera/cli/manager.rb +25 -24
- data/lib/aspera/cli/plugin.rb +22 -15
- data/lib/aspera/cli/plugin_factory.rb +61 -0
- data/lib/aspera/cli/plugins/alee.rb +7 -7
- data/lib/aspera/cli/plugins/aoc.rb +83 -77
- data/lib/aspera/cli/plugins/ats.rb +32 -33
- data/lib/aspera/cli/plugins/bss.rb +3 -4
- data/lib/aspera/cli/plugins/config.rb +169 -186
- data/lib/aspera/cli/plugins/console.rb +8 -6
- data/lib/aspera/cli/plugins/cos.rb +19 -18
- data/lib/aspera/cli/plugins/faspex.rb +61 -54
- data/lib/aspera/cli/plugins/faspex5.rb +150 -103
- data/lib/aspera/cli/plugins/node.rb +68 -73
- data/lib/aspera/cli/plugins/orchestrator.rb +34 -44
- data/lib/aspera/cli/plugins/preview.rb +31 -31
- data/lib/aspera/cli/plugins/server.rb +31 -33
- data/lib/aspera/cli/plugins/shares.rb +13 -11
- data/lib/aspera/cli/sync_actions.rb +8 -8
- data/lib/aspera/cli/transfer_agent.rb +32 -19
- data/lib/aspera/cli/transfer_progress.rb +1 -1
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/colors.rb +5 -0
- data/lib/aspera/command_line_builder.rb +14 -14
- data/lib/aspera/coverage.rb +1 -2
- data/lib/aspera/data_repository.rb +1 -1
- data/lib/aspera/environment.rb +2 -3
- data/lib/aspera/faspex_gw.rb +5 -6
- data/lib/aspera/faspex_postproc.rb +1 -1
- data/lib/aspera/id_generator.rb +2 -2
- data/lib/aspera/json_rpc.rb +5 -5
- data/lib/aspera/keychain/encrypted_hash.rb +6 -6
- data/lib/aspera/keychain/macos_security.rb +27 -22
- data/lib/aspera/log.rb +2 -2
- data/lib/aspera/nagios.rb +3 -3
- data/lib/aspera/node_simulator.rb +5 -6
- data/lib/aspera/oauth/base.rb +143 -0
- data/lib/aspera/oauth/factory.rb +124 -0
- data/lib/aspera/oauth/generic.rb +34 -0
- data/lib/aspera/oauth/jwt.rb +51 -0
- data/lib/aspera/oauth/url_json.rb +31 -0
- data/lib/aspera/oauth/web.rb +50 -0
- data/lib/aspera/oauth.rb +5 -331
- data/lib/aspera/open_application.rb +7 -7
- data/lib/aspera/persistency_action_once.rb +4 -4
- data/lib/aspera/persistency_folder.rb +2 -2
- data/lib/aspera/preview/generator.rb +5 -5
- data/lib/aspera/preview/terminal.rb +3 -2
- data/lib/aspera/preview/utils.rb +3 -3
- data/lib/aspera/proxy_auto_config.rb +4 -4
- data/lib/aspera/rest.rb +175 -144
- data/lib/aspera/rest_errors_aspera.rb +3 -3
- data/lib/aspera/resumer.rb +77 -0
- data/lib/aspera/ssh.rb +6 -1
- data/lib/aspera/{fasp → transfer}/error.rb +3 -3
- data/lib/aspera/{fasp → transfer}/error_info.rb +1 -1
- data/lib/aspera/{fasp → transfer}/faux_file.rb +1 -1
- data/lib/aspera/{fasp → transfer}/parameters.rb +58 -89
- data/lib/aspera/{fasp/transfer_spec.rb → transfer/spec.rb} +18 -16
- data/lib/aspera/{fasp/parameters.yaml → transfer/spec.yaml} +4 -99
- data/lib/aspera/{fasp → transfer}/sync.rb +32 -32
- data/lib/aspera/{fasp → transfer}/uri.rb +9 -8
- data/lib/aspera/web_server_simple.rb +11 -3
- data.tar.gz.sig +0 -0
- metadata +36 -63
- metadata.gz.sig +0 -0
- data/lib/aspera/aoc.rb +0 -601
- data/lib/aspera/ats_api.rb +0 -47
- data/lib/aspera/cos_node.rb +0 -94
- data/lib/aspera/fasp/resume_policy.rb +0 -79
- data/lib/aspera/node.rb +0 -339
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
# cspell:ignore trustpolicy
|
|
4
4
|
|
|
5
5
|
require 'aspera/cli/plugins/node'
|
|
6
|
-
require 'aspera/
|
|
6
|
+
require 'aspera/api/ats'
|
|
7
|
+
require 'aspera/api/aoc'
|
|
7
8
|
require 'aspera/assert'
|
|
8
9
|
|
|
9
10
|
module Aspera
|
|
@@ -11,10 +12,10 @@ module Aspera
|
|
|
11
12
|
module Plugins
|
|
12
13
|
# Access Aspera Transfer Service
|
|
13
14
|
# https://developer.ibm.com/aspera/docs/ats-api-reference/creating-ats-api-keys/
|
|
14
|
-
class Ats <
|
|
15
|
+
class Ats < Cli::Plugin
|
|
15
16
|
CLOUD_TABLE = %w[id name].freeze
|
|
16
|
-
def initialize(env)
|
|
17
|
-
super
|
|
17
|
+
def initialize(**env)
|
|
18
|
+
super
|
|
18
19
|
options.declare(:ibm_api_key, 'IBM API key, see https://cloud.ibm.com/iam/apikeys')
|
|
19
20
|
options.declare(:instance, 'ATS instance in ibm cloud')
|
|
20
21
|
options.declare(:ats_key, 'ATS key identifier (ats_xxx)')
|
|
@@ -35,13 +36,13 @@ module Aspera
|
|
|
35
36
|
# require api key only if needed
|
|
36
37
|
def ats_api_pub_v1
|
|
37
38
|
return @ats_api_pub_v1_cache unless @ats_api_pub_v1_cache.nil?
|
|
38
|
-
@ats_api_pub_v1_cache = Rest.new(
|
|
39
|
-
base_url:
|
|
39
|
+
@ats_api_pub_v1_cache = Rest.new(
|
|
40
|
+
base_url: "#{Api::Ats::SERVICE_BASE_URL}/pub/v1",
|
|
40
41
|
auth: {
|
|
41
42
|
type: :basic,
|
|
42
43
|
username: options.get_option(:ats_key, mandatory: true),
|
|
43
44
|
password: options.get_option(:ats_secret, mandatory: true)}
|
|
44
|
-
|
|
45
|
+
)
|
|
45
46
|
end
|
|
46
47
|
|
|
47
48
|
def execute_action_access_key
|
|
@@ -99,7 +100,7 @@ module Aspera
|
|
|
99
100
|
return Main.result_status('modified')
|
|
100
101
|
when :entitlement
|
|
101
102
|
ak = ats_api_pub_v1.read("access_keys/#{access_key_id}")[:data]
|
|
102
|
-
api_bss = AoC.metering_api(ak['license']['entitlement_id'], ak['license']['customer_id'])
|
|
103
|
+
api_bss = Api::AoC.metering_api(ak['license']['entitlement_id'], ak['license']['customer_id'])
|
|
103
104
|
return {type: :single_object, data: api_bss.read('entitlement')[:data]}
|
|
104
105
|
when :delete
|
|
105
106
|
ats_api_pub_v1.delete("access_keys/#{access_key_id}")
|
|
@@ -109,27 +110,26 @@ module Aspera
|
|
|
109
110
|
server_data = @ats_api_pub.all_servers.find {|i| i['id'].start_with?(ak_data['transfer_server_id'])}
|
|
110
111
|
raise Cli::Error, 'no such server found' if server_data.nil?
|
|
111
112
|
node_url = server_data['transfer_setup_url']
|
|
112
|
-
api_node =
|
|
113
|
+
api_node = Api::Node.new(
|
|
113
114
|
base_url: node_url,
|
|
114
115
|
auth: {
|
|
115
116
|
type: :basic,
|
|
116
117
|
username: access_key_id,
|
|
117
|
-
password:
|
|
118
|
-
}
|
|
118
|
+
password: config.lookup_secret(url: node_url, username: access_key_id)
|
|
119
|
+
})
|
|
119
120
|
command = options.get_next_command(Node::COMMANDS_GEN4)
|
|
120
|
-
return Node.new(
|
|
121
|
+
return Node.new(**init_params, api: api_node).execute_command_gen4(command, ak_data['root_file_id'])
|
|
121
122
|
when :cluster
|
|
122
|
-
ats_url = ats_api_pub_v1.
|
|
123
|
-
|
|
123
|
+
ats_url = ats_api_pub_v1.base_url
|
|
124
|
+
api_ak_auth = Rest.new(
|
|
124
125
|
base_url: ats_url,
|
|
125
126
|
auth: {
|
|
126
127
|
type: :basic,
|
|
127
128
|
username: access_key_id,
|
|
128
|
-
password:
|
|
129
|
-
}
|
|
130
|
-
api_ak_auth = Rest.new(rest_params)
|
|
129
|
+
password: config.lookup_secret(url: ats_url, username: access_key_id)
|
|
130
|
+
})
|
|
131
131
|
return {type: :single_object, data: api_ak_auth.read('servers')[:data]}
|
|
132
|
-
else
|
|
132
|
+
else Aspera.error_unexpected_value(command)
|
|
133
133
|
end
|
|
134
134
|
end
|
|
135
135
|
|
|
@@ -153,19 +153,18 @@ module Aspera
|
|
|
153
153
|
end
|
|
154
154
|
|
|
155
155
|
def ats_api_v2_auth_ibm(rest_add_headers={})
|
|
156
|
-
return Rest.new(
|
|
157
|
-
base_url:
|
|
156
|
+
return Rest.new(
|
|
157
|
+
base_url: "#{Api::Ats::SERVICE_BASE_URL}/v2",
|
|
158
158
|
headers: rest_add_headers,
|
|
159
159
|
auth: {
|
|
160
|
-
type:
|
|
161
|
-
|
|
160
|
+
type: :oauth2,
|
|
161
|
+
grant_method: :generic,
|
|
162
|
+
base_url: 'https://iam.bluemix.net/identity',
|
|
162
163
|
# does not work: base_url: 'https://iam.cloud.ibm.com/identity',
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
apikey: options.get_option(:ibm_api_key, mandatory: true)
|
|
168
|
-
}}})
|
|
164
|
+
grant_type: 'urn:ibm:params:oauth:grant-type:apikey',
|
|
165
|
+
response_type: 'cloud_iam',
|
|
166
|
+
apikey: options.get_option(:ibm_api_key, mandatory: true)
|
|
167
|
+
})
|
|
169
168
|
end
|
|
170
169
|
|
|
171
170
|
def execute_action_api_key
|
|
@@ -201,7 +200,7 @@ module Aspera
|
|
|
201
200
|
when :delete
|
|
202
201
|
ats_ibm_api.delete("api_keys/#{concerned_id}")
|
|
203
202
|
return Main.result_status("deleted #{concerned_id}")
|
|
204
|
-
else
|
|
203
|
+
else Aspera.error_unexpected_value(command)
|
|
205
204
|
end
|
|
206
205
|
end
|
|
207
206
|
|
|
@@ -214,7 +213,7 @@ module Aspera
|
|
|
214
213
|
command = options.get_next_command(actions)
|
|
215
214
|
@ats_api_pub_v1_cache = ats_api_arg
|
|
216
215
|
# keep as member variable as we may want to use the api in AoC name space
|
|
217
|
-
@ats_api_pub =
|
|
216
|
+
@ats_api_pub = Api::Ats.new
|
|
218
217
|
case command
|
|
219
218
|
when :cluster # display general ATS cluster information, this uses public API, no auth
|
|
220
219
|
return execute_action_cluster_pub
|
|
@@ -225,7 +224,7 @@ module Aspera
|
|
|
225
224
|
when :aws_trust_policy
|
|
226
225
|
res = ats_api_pub_v1.read('aws/trustpolicy', {region: options.get_option(:region, mandatory: true)})[:data]
|
|
227
226
|
return {type: :single_object, data: res}
|
|
228
|
-
else error_unexpected_value(command)
|
|
227
|
+
else Aspera.error_unexpected_value(command)
|
|
229
228
|
end
|
|
230
229
|
end
|
|
231
230
|
|
|
@@ -235,5 +234,5 @@ module Aspera
|
|
|
235
234
|
end
|
|
236
235
|
end
|
|
237
236
|
end
|
|
238
|
-
end
|
|
239
|
-
end
|
|
237
|
+
end
|
|
238
|
+
end
|
|
@@ -5,16 +5,15 @@ require 'aspera/rest'
|
|
|
5
5
|
module Aspera
|
|
6
6
|
module Cli
|
|
7
7
|
module Plugins
|
|
8
|
-
class Bss <
|
|
8
|
+
class Bss < Cli::BasicAuthPlugin
|
|
9
9
|
ACTIONS = %i[subscription].freeze
|
|
10
10
|
|
|
11
11
|
FIELDS = {
|
|
12
12
|
'bssSubscriptions' => %w[id name termVolumeGb termMonths trial startDate endDate plan renewalType chargeAgreementNumber customerName]
|
|
13
13
|
}.freeze
|
|
14
14
|
|
|
15
|
-
def initialize(env)
|
|
16
|
-
super
|
|
17
|
-
@api_bss = env[:bss_api] if env.key?(:bss_api)
|
|
15
|
+
def initialize(**env)
|
|
16
|
+
super
|
|
18
17
|
end
|
|
19
18
|
|
|
20
19
|
def all_fields(name)
|