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.
Files changed (97) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +50 -19
  4. data/CONTRIBUTING.md +3 -1
  5. data/README.md +965 -793
  6. data/bin/asession +29 -21
  7. data/lib/aspera/{fasp/agent_alpha.rb → agent/alpha.rb} +26 -25
  8. data/lib/aspera/{fasp/agent_base.rb → agent/base.rb} +15 -12
  9. data/lib/aspera/{fasp/agent_connect.rb → agent/connect.rb} +13 -11
  10. data/lib/aspera/{fasp/agent_direct.rb → agent/direct.rb} +49 -53
  11. data/lib/aspera/{fasp/agent_httpgw.rb → agent/httpgw.rb} +20 -19
  12. data/lib/aspera/{fasp/agent_node.rb → agent/node.rb} +20 -33
  13. data/lib/aspera/{fasp/agent_trsdk.rb → agent/trsdk.rb} +11 -11
  14. data/lib/aspera/api/aoc.rb +586 -0
  15. data/lib/aspera/api/ats.rb +46 -0
  16. data/lib/aspera/api/cos_node.rb +95 -0
  17. data/lib/aspera/api/node.rb +344 -0
  18. data/lib/aspera/ascmd.rb +46 -10
  19. data/lib/aspera/{fasp → ascp}/installation.rb +5 -5
  20. data/lib/aspera/{fasp → ascp}/management.rb +3 -8
  21. data/lib/aspera/{fasp → ascp}/products.rb +1 -1
  22. data/lib/aspera/assert.rb +30 -30
  23. data/lib/aspera/cli/basic_auth_plugin.rb +11 -10
  24. data/lib/aspera/cli/extended_value.rb +1 -1
  25. data/lib/aspera/cli/formatter.rb +13 -13
  26. data/lib/aspera/cli/hints.rb +5 -5
  27. data/lib/aspera/cli/main.rb +35 -28
  28. data/lib/aspera/cli/manager.rb +25 -24
  29. data/lib/aspera/cli/plugin.rb +22 -15
  30. data/lib/aspera/cli/plugin_factory.rb +61 -0
  31. data/lib/aspera/cli/plugins/alee.rb +7 -7
  32. data/lib/aspera/cli/plugins/aoc.rb +83 -77
  33. data/lib/aspera/cli/plugins/ats.rb +32 -33
  34. data/lib/aspera/cli/plugins/bss.rb +3 -4
  35. data/lib/aspera/cli/plugins/config.rb +169 -186
  36. data/lib/aspera/cli/plugins/console.rb +8 -6
  37. data/lib/aspera/cli/plugins/cos.rb +19 -18
  38. data/lib/aspera/cli/plugins/faspex.rb +61 -54
  39. data/lib/aspera/cli/plugins/faspex5.rb +150 -103
  40. data/lib/aspera/cli/plugins/node.rb +68 -73
  41. data/lib/aspera/cli/plugins/orchestrator.rb +34 -44
  42. data/lib/aspera/cli/plugins/preview.rb +31 -31
  43. data/lib/aspera/cli/plugins/server.rb +31 -33
  44. data/lib/aspera/cli/plugins/shares.rb +13 -11
  45. data/lib/aspera/cli/sync_actions.rb +8 -8
  46. data/lib/aspera/cli/transfer_agent.rb +32 -19
  47. data/lib/aspera/cli/transfer_progress.rb +1 -1
  48. data/lib/aspera/cli/version.rb +1 -1
  49. data/lib/aspera/colors.rb +5 -0
  50. data/lib/aspera/command_line_builder.rb +14 -14
  51. data/lib/aspera/coverage.rb +1 -2
  52. data/lib/aspera/data_repository.rb +1 -1
  53. data/lib/aspera/environment.rb +2 -3
  54. data/lib/aspera/faspex_gw.rb +5 -6
  55. data/lib/aspera/faspex_postproc.rb +1 -1
  56. data/lib/aspera/id_generator.rb +2 -2
  57. data/lib/aspera/json_rpc.rb +5 -5
  58. data/lib/aspera/keychain/encrypted_hash.rb +6 -6
  59. data/lib/aspera/keychain/macos_security.rb +27 -22
  60. data/lib/aspera/log.rb +2 -2
  61. data/lib/aspera/nagios.rb +3 -3
  62. data/lib/aspera/node_simulator.rb +5 -6
  63. data/lib/aspera/oauth/base.rb +143 -0
  64. data/lib/aspera/oauth/factory.rb +124 -0
  65. data/lib/aspera/oauth/generic.rb +34 -0
  66. data/lib/aspera/oauth/jwt.rb +51 -0
  67. data/lib/aspera/oauth/url_json.rb +31 -0
  68. data/lib/aspera/oauth/web.rb +50 -0
  69. data/lib/aspera/oauth.rb +5 -331
  70. data/lib/aspera/open_application.rb +7 -7
  71. data/lib/aspera/persistency_action_once.rb +4 -4
  72. data/lib/aspera/persistency_folder.rb +2 -2
  73. data/lib/aspera/preview/generator.rb +5 -5
  74. data/lib/aspera/preview/terminal.rb +3 -2
  75. data/lib/aspera/preview/utils.rb +3 -3
  76. data/lib/aspera/proxy_auto_config.rb +4 -4
  77. data/lib/aspera/rest.rb +175 -144
  78. data/lib/aspera/rest_errors_aspera.rb +3 -3
  79. data/lib/aspera/resumer.rb +77 -0
  80. data/lib/aspera/ssh.rb +6 -1
  81. data/lib/aspera/{fasp → transfer}/error.rb +3 -3
  82. data/lib/aspera/{fasp → transfer}/error_info.rb +1 -1
  83. data/lib/aspera/{fasp → transfer}/faux_file.rb +1 -1
  84. data/lib/aspera/{fasp → transfer}/parameters.rb +58 -89
  85. data/lib/aspera/{fasp/transfer_spec.rb → transfer/spec.rb} +18 -16
  86. data/lib/aspera/{fasp/parameters.yaml → transfer/spec.yaml} +4 -99
  87. data/lib/aspera/{fasp → transfer}/sync.rb +32 -32
  88. data/lib/aspera/{fasp → transfer}/uri.rb +9 -8
  89. data/lib/aspera/web_server_simple.rb +11 -3
  90. data.tar.gz.sig +0 -0
  91. metadata +36 -63
  92. metadata.gz.sig +0 -0
  93. data/lib/aspera/aoc.rb +0 -601
  94. data/lib/aspera/ats_api.rb +0 -47
  95. data/lib/aspera/cos_node.rb +0 -94
  96. data/lib/aspera/fasp/resume_policy.rb +0 -79
  97. 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/ats_api'
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 < Aspera::Cli::Plugin
15
+ class Ats < Cli::Plugin
15
16
  CLOUD_TABLE = %w[id name].freeze
16
- def initialize(env)
17
- super(env)
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: AtsApi.base_url + '/pub/v1',
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 = Aspera::Node.new(params: {
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: @agents[:config].lookup_secret(url: node_url, username: access_key_id)
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(@agents, api: api_node).execute_command_gen4(command, ak_data['root_file_id'])
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.params[:base_url]
123
- rest_params = {
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: @agents[:config].lookup_secret(url: ats_url, username: access_key_id)
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 error_unreachable_line
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: AtsApi.base_url + '/v2',
156
+ return Rest.new(
157
+ base_url: "#{Api::Ats::SERVICE_BASE_URL}/v2",
158
158
  headers: rest_add_headers,
159
159
  auth: {
160
- type: :oauth2,
161
- base_url: 'https://iam.bluemix.net/identity',
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
- grant_method: :generic,
164
- generic: {
165
- grant_type: 'urn:ibm:params:oauth:grant-type:apikey',
166
- response_type: 'cloud_iam',
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 error_unreachable_line
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 = AtsApi.new
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 # Cli
239
- end # Aspera
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 < Aspera::Cli::BasicAuthPlugin
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(env)
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)