aspera-cli 4.2.1 → 4.5.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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1580 -946
  3. data/bin/ascli +1 -1
  4. data/bin/asession +3 -5
  5. data/docs/Makefile +8 -11
  6. data/docs/README.erb.md +1521 -829
  7. data/docs/doc_tools.rb +58 -0
  8. data/docs/test_env.conf +3 -1
  9. data/examples/faspex4.rb +28 -19
  10. data/examples/transfer.rb +2 -2
  11. data/lib/aspera/aoc.rb +157 -134
  12. data/lib/aspera/cli/listener/progress_multi.rb +5 -5
  13. data/lib/aspera/cli/main.rb +106 -48
  14. data/lib/aspera/cli/manager.rb +19 -20
  15. data/lib/aspera/cli/plugin.rb +22 -7
  16. data/lib/aspera/cli/plugins/aoc.rb +260 -208
  17. data/lib/aspera/cli/plugins/ats.rb +11 -10
  18. data/lib/aspera/cli/plugins/bss.rb +2 -2
  19. data/lib/aspera/cli/plugins/config.rb +360 -189
  20. data/lib/aspera/cli/plugins/faspex.rb +119 -56
  21. data/lib/aspera/cli/plugins/faspex5.rb +32 -17
  22. data/lib/aspera/cli/plugins/node.rb +72 -31
  23. data/lib/aspera/cli/plugins/orchestrator.rb +5 -3
  24. data/lib/aspera/cli/plugins/preview.rb +94 -68
  25. data/lib/aspera/cli/plugins/server.rb +16 -5
  26. data/lib/aspera/cli/plugins/shares.rb +17 -0
  27. data/lib/aspera/cli/transfer_agent.rb +64 -82
  28. data/lib/aspera/cli/version.rb +1 -1
  29. data/lib/aspera/command_line_builder.rb +48 -31
  30. data/lib/aspera/cos_node.rb +4 -3
  31. data/lib/aspera/environment.rb +4 -4
  32. data/lib/aspera/fasp/{manager.rb → agent_base.rb} +7 -6
  33. data/lib/aspera/fasp/{connect.rb → agent_connect.rb} +46 -39
  34. data/lib/aspera/fasp/{local.rb → agent_direct.rb} +42 -38
  35. data/lib/aspera/fasp/{http_gw.rb → agent_httpgw.rb} +50 -29
  36. data/lib/aspera/fasp/{node.rb → agent_node.rb} +43 -4
  37. data/lib/aspera/fasp/agent_trsdk.rb +106 -0
  38. data/lib/aspera/fasp/default.rb +17 -0
  39. data/lib/aspera/fasp/installation.rb +64 -48
  40. data/lib/aspera/fasp/parameters.rb +78 -91
  41. data/lib/aspera/fasp/parameters.yaml +531 -0
  42. data/lib/aspera/fasp/uri.rb +1 -1
  43. data/lib/aspera/faspex_gw.rb +12 -11
  44. data/lib/aspera/id_generator.rb +22 -0
  45. data/lib/aspera/keychain/encrypted_hash.rb +120 -0
  46. data/lib/aspera/keychain/macos_security.rb +94 -0
  47. data/lib/aspera/log.rb +45 -32
  48. data/lib/aspera/node.rb +9 -4
  49. data/lib/aspera/oauth.rb +116 -100
  50. data/lib/aspera/persistency_action_once.rb +11 -7
  51. data/lib/aspera/persistency_folder.rb +6 -26
  52. data/lib/aspera/rest.rb +66 -50
  53. data/lib/aspera/sync.rb +40 -35
  54. data/lib/aspera/timer_limiter.rb +22 -0
  55. metadata +86 -29
  56. data/docs/transfer_spec.html +0 -99
  57. data/lib/aspera/api_detector.rb +0 -60
  58. data/lib/aspera/fasp/aoc.rb +0 -24
  59. data/lib/aspera/secrets.rb +0 -20
@@ -44,9 +44,7 @@ module Aspera
44
44
  commands=[:create,:list,:show,:modify,:delete,:node,:cluster,:entitlement]
45
45
  command=self.options.get_next_command(commands)
46
46
  # those dont require access key id
47
- unless [:create,:list].include?(command)
48
- access_key_id=self.options.get_option(:id,:mandatory)
49
- end
47
+ access_key_id=self.instance_identifier() unless [:create,:list].include?(command)
50
48
  case command
51
49
  when :create
52
50
  params=self.options.get_option(:params,:optional) || {}
@@ -102,21 +100,24 @@ module Aspera
102
100
  ak_data=ats_api_pub_v1.read("access_keys/#{access_key_id}")[:data]
103
101
  server_data=@ats_api_pub.all_servers.select {|i| i['id'].start_with?(ak_data['transfer_server_id'])}.first
104
102
  raise CliError,"no such server found" if server_data.nil?
103
+ base_url=server_data['transfer_setup_url']
105
104
  api_node=Rest.new({
106
- :base_url => server_data['transfer_setup_url'],
105
+ :base_url => base_url,
107
106
  :auth => {
108
107
  :type => :basic,
109
108
  :username => access_key_id,
110
- :password => @agents[:secret].get_secret(access_key_id)}})
109
+ :password => @agents[:config].get_secret(url: base_url,username: access_key_id)
110
+ }})
111
111
  command=self.options.get_next_command(Node::COMMON_ACTIONS)
112
112
  return Node.new(@agents.merge(skip_basic_auth_options: true, node_api: api_node)).execute_action(command)
113
113
  when :cluster
114
+ base_url=ats_api_pub_v1.params[:base_url]
114
115
  rest_params={
115
- :base_url => ats_api_pub_v1.params[:base_url],
116
+ :base_url => base_url,
116
117
  :auth => {
117
118
  :type => :basic,
118
119
  :username => access_key_id,
119
- :password => @agents[:secret].get_secret(access_key_id)
120
+ :password => @agents[:config].get_secret(url: base_url, username: access_key_id)
120
121
  }}
121
122
  api_ak_auth=Rest.new(rest_params)
122
123
  return {:type=>:single_object, :data=>api_ak_auth.read("servers")[:data]}
@@ -132,10 +133,10 @@ module Aspera
132
133
  when :list
133
134
  return {:type=>:object_list, :data=>@ats_api_pub.all_servers, :fields=>['id','cloud','region']}
134
135
  when :show
135
- server_id=self.options.get_option(:id,:optional)
136
- if server_id.nil?
136
+ if self.options.get_option(:cloud,:optional) or self.options.get_option(:region,:optional)
137
137
  server_data=server_by_cloud_region
138
138
  else
139
+ server_id=instance_identifier()
139
140
  server_data=@ats_api_pub.all_servers.select {|i| i['id'].eql?(server_id)}.first
140
141
  raise "no such server id" if server_data.nil?
141
142
  end
@@ -160,7 +161,7 @@ module Aspera
160
161
  def execute_action_api_key
161
162
  command=self.options.get_next_command([:instances, :create, :list, :show, :delete])
162
163
  if [:show,:delete].include?(command)
163
- concerned_id=self.options.get_option(:id,:mandatory)
164
+ concerned_id=self.instance_identifier()
164
165
  end
165
166
  rest_add_header={}
166
167
  if !command.eql?(:instances)
@@ -46,7 +46,7 @@ module Aspera
46
46
  # give fields to keep order
47
47
  return {:type=>:object_list, :data=>result['data'][object],:fields=> FIELDS['bssSubscriptions']}
48
48
  when :show
49
- id = self.options.get_option(:id,:mandatory)
49
+ id = self.instance_identifier()
50
50
  request={
51
51
  'variables'=>{'id'=>id},
52
52
  'query'=>"query($id: ID!) {#{object}(id: $id) { #{all_fields('bssSubscriptions')} roleAssignments(uniqueSubjectId: true) { id subjectId } instances { id state planId serviceId ssmSubscriptionId entitlement { id } aocOrganization { id subdomainName name status tier urlId trialExpiresAt users(organizationAdmin: true) { id name email atsAdmin subscriptionAdmin } } } } }"
@@ -55,7 +55,7 @@ module Aspera
55
55
  result.delete('instances')
56
56
  return {:type=>:single_object, :data=>result}
57
57
  when :instances
58
- id = self.options.get_option(:id,:mandatory)
58
+ id = self.instance_identifier()
59
59
  request={
60
60
  'variables'=>{'id'=>id},
61
61
  'query'=>"query($id: ID!) {#{object}(id: $id) { aocOrganization { id subdomainName name status tier urlId trialExpiresAt } } } }"