aspera-cli 4.2.1 → 4.5.0

Sign up to get free protection for your applications and to get access to all the features.
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 } } } }"