aspera-cli 4.16.0 → 4.17.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/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)
|