aspera-cli 4.7.0 → 4.8.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 (94) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +1 -0
  3. data/README.md +844 -861
  4. data/bin/ascli +20 -1
  5. data/bin/asession +37 -34
  6. data/docs/test_env.conf +11 -3
  7. data/examples/aoc.rb +13 -12
  8. data/examples/dascli +26 -0
  9. data/examples/faspex4.rb +34 -29
  10. data/examples/transfer.rb +30 -29
  11. data/lib/aspera/aoc.rb +151 -143
  12. data/lib/aspera/ascmd.rb +56 -45
  13. data/lib/aspera/ats_api.rb +6 -5
  14. data/lib/aspera/cli/basic_auth_plugin.rb +18 -16
  15. data/lib/aspera/cli/extended_value.rb +32 -30
  16. data/lib/aspera/cli/formater.rb +103 -111
  17. data/lib/aspera/cli/info.rb +2 -1
  18. data/lib/aspera/cli/listener/line_dump.rb +1 -0
  19. data/lib/aspera/cli/listener/logger.rb +1 -0
  20. data/lib/aspera/cli/listener/progress.rb +13 -12
  21. data/lib/aspera/cli/listener/progress_multi.rb +21 -20
  22. data/lib/aspera/cli/main.rb +106 -89
  23. data/lib/aspera/cli/manager.rb +96 -85
  24. data/lib/aspera/cli/plugin.rb +50 -32
  25. data/lib/aspera/cli/plugins/alee.rb +6 -5
  26. data/lib/aspera/cli/plugins/aoc.rb +521 -426
  27. data/lib/aspera/cli/plugins/ats.rb +84 -83
  28. data/lib/aspera/cli/plugins/bss.rb +30 -27
  29. data/lib/aspera/cli/plugins/config.rb +483 -397
  30. data/lib/aspera/cli/plugins/console.rb +17 -15
  31. data/lib/aspera/cli/plugins/cos.rb +26 -35
  32. data/lib/aspera/cli/plugins/faspex.rb +201 -168
  33. data/lib/aspera/cli/plugins/faspex5.rb +109 -74
  34. data/lib/aspera/cli/plugins/node.rb +378 -189
  35. data/lib/aspera/cli/plugins/orchestrator.rb +71 -65
  36. data/lib/aspera/cli/plugins/preview.rb +131 -122
  37. data/lib/aspera/cli/plugins/server.rb +94 -93
  38. data/lib/aspera/cli/plugins/shares.rb +42 -28
  39. data/lib/aspera/cli/plugins/sync.rb +15 -14
  40. data/lib/aspera/cli/transfer_agent.rb +56 -52
  41. data/lib/aspera/cli/version.rb +2 -1
  42. data/lib/aspera/colors.rb +29 -28
  43. data/lib/aspera/command_line_builder.rb +50 -43
  44. data/lib/aspera/cos_node.rb +64 -38
  45. data/lib/aspera/data_repository.rb +1 -0
  46. data/lib/aspera/environment.rb +18 -8
  47. data/lib/aspera/fasp/agent_base.rb +26 -23
  48. data/lib/aspera/fasp/agent_connect.rb +35 -30
  49. data/lib/aspera/fasp/agent_direct.rb +68 -60
  50. data/lib/aspera/fasp/agent_httpgw.rb +71 -64
  51. data/lib/aspera/fasp/agent_node.rb +24 -23
  52. data/lib/aspera/fasp/agent_trsdk.rb +19 -20
  53. data/lib/aspera/fasp/error.rb +2 -1
  54. data/lib/aspera/fasp/error_info.rb +79 -68
  55. data/lib/aspera/fasp/installation.rb +122 -114
  56. data/lib/aspera/fasp/listener.rb +1 -0
  57. data/lib/aspera/fasp/parameters.rb +44 -41
  58. data/lib/aspera/fasp/resume_policy.rb +14 -11
  59. data/lib/aspera/fasp/transfer_spec.rb +6 -5
  60. data/lib/aspera/fasp/uri.rb +25 -24
  61. data/lib/aspera/faspex_gw.rb +83 -72
  62. data/lib/aspera/hash_ext.rb +10 -12
  63. data/lib/aspera/id_generator.rb +8 -7
  64. data/lib/aspera/keychain/encrypted_hash.rb +60 -45
  65. data/lib/aspera/keychain/macos_security.rb +26 -24
  66. data/lib/aspera/log.rb +34 -38
  67. data/lib/aspera/nagios.rb +14 -13
  68. data/lib/aspera/node.rb +19 -19
  69. data/lib/aspera/oauth.rb +121 -101
  70. data/lib/aspera/open_application.rb +6 -5
  71. data/lib/aspera/persistency_action_once.rb +9 -8
  72. data/lib/aspera/persistency_folder.rb +10 -9
  73. data/lib/aspera/preview/file_types.rb +261 -266
  74. data/lib/aspera/preview/generator.rb +74 -73
  75. data/lib/aspera/preview/image_error.png +0 -0
  76. data/lib/aspera/preview/options.rb +7 -6
  77. data/lib/aspera/preview/utils.rb +30 -33
  78. data/lib/aspera/preview/video_error.png +0 -0
  79. data/lib/aspera/proxy_auto_config.rb +25 -23
  80. data/lib/aspera/rest.rb +73 -74
  81. data/lib/aspera/rest_call_error.rb +1 -0
  82. data/lib/aspera/rest_error_analyzer.rb +11 -9
  83. data/lib/aspera/rest_errors_aspera.rb +5 -4
  84. data/lib/aspera/secret_hider.rb +68 -0
  85. data/lib/aspera/ssh.rb +12 -10
  86. data/lib/aspera/sync.rb +49 -47
  87. data/lib/aspera/temp_file_manager.rb +7 -5
  88. data/lib/aspera/timer_limiter.rb +9 -8
  89. data/lib/aspera/uri_reader.rb +11 -14
  90. data/lib/aspera/web_auth.rb +17 -15
  91. data.tar.gz.sig +0 -0
  92. metadata +117 -34
  93. metadata.gz.sig +2 -0
  94. data/bin/dascli +0 -13
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'aspera/cli/basic_auth_plugin'
3
4
  require 'aspera/nagios'
4
5
 
@@ -6,26 +7,26 @@ module Aspera
6
7
  module Cli
7
8
  module Plugins
8
9
  class Console < BasicAuthPlugin
9
- DEFAULT_FILTER_AGE_SECONDS=3*3600
10
+ DEFAULT_FILTER_AGE_SECONDS = 3 * 3600
10
11
  private_constant :DEFAULT_FILTER_AGE_SECONDS
11
12
  def initialize(env)
12
13
  super(env)
13
14
  options.add_opt_date(:filter_from,'only after date')
14
15
  options.add_opt_date(:filter_to,'only before date')
15
- time_now=Time.now
16
+ time_now = Time.now
16
17
  options.set_option(:filter_from,Manager.time_to_string(time_now - DEFAULT_FILTER_AGE_SECONDS))
17
18
  options.set_option(:filter_to,Manager.time_to_string(time_now))
18
19
  options.parse_options!
19
20
  end
20
21
 
21
- ACTIONS=[:transfer,:health]
22
+ ACTIONS = %i[transfer health].freeze
22
23
 
23
24
  def execute_action
24
- api_console=basic_auth_api('api')
25
- command=options.get_next_command(ACTIONS)
25
+ api_console = basic_auth_api('api')
26
+ command = options.get_next_command(ACTIONS)
26
27
  case command
27
28
  when :health
28
- nagios=Nagios.new
29
+ nagios = Nagios.new
29
30
  begin
30
31
  api_console.read('ssh_keys')
31
32
  nagios.add_ok('console api','accessible')
@@ -34,28 +35,29 @@ module Aspera
34
35
  end
35
36
  return nagios.result
36
37
  when :transfer
37
- command=options.get_next_command([:current, :smart])
38
+ command = options.get_next_command(%i[current smart])
38
39
  case command
39
40
  when :smart
40
- command=options.get_next_command([:list,:submit])
41
+ command = options.get_next_command(%i[list submit])
41
42
  case command
42
43
  when :list
43
44
  return {type: :object_list,data: api_console.read('smart_transfers')[:data]}
44
45
  when :submit
45
46
  smart_id = options.get_next_argument('smart_id')
46
47
  params = options.get_next_argument('transfer parameters')
47
- return {type: :object_list,data: api_console.create('smart_transfers/'+smart_id,params)[:data]}
48
+ return {type: :object_list,data: api_console.create('smart_transfers/' + smart_id,params)[:data]}
48
49
  end
49
50
  when :current
50
- command=options.get_next_command([:list])
51
+ command = options.get_next_command([:list])
51
52
  case command
52
53
  when :list
53
- return {type: :object_list,
54
- data: api_console.read('transfers',{
55
- 'from'=>options.get_option(:filter_from,:mandatory),
56
- 'to'=>options.get_option(:filter_to,:mandatory)
54
+ return {
55
+ type: :object_list,
56
+ data: api_console.read('transfers',{
57
+ 'from' => options.get_option(:filter_from,is_type: :mandatory),
58
+ 'to' => options.get_option(:filter_to,is_type: :mandatory)
57
59
  })[:data],
58
- fields: ['id','contact','name','status']}
60
+ fields: %w[id contact name status]}
59
61
  end
60
62
  end
61
63
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'aspera/cli/plugin'
3
4
  require 'aspera/cli/plugins/node'
4
5
  require 'aspera/cos_node'
@@ -9,54 +10,44 @@ module Aspera
9
10
  class Cos < Plugin
10
11
  def initialize(env)
11
12
  super(env)
12
- @service_creds=nil
13
- options.add_opt_simple(:bucket,'IBM Cloud Object Storage bucket name')
14
- options.add_opt_simple(:endpoint,'storage endpoint url')
15
- options.add_opt_simple(:apikey,'storage API key')
16
- options.add_opt_simple(:crn,'ressource instance id')
13
+ @service_creds = nil
14
+ options.add_opt_simple(:bucket,'Bucket name')
15
+ options.add_opt_simple(:endpoint,'Storage endpoint url')
16
+ options.add_opt_simple(:apikey,'Storage API key')
17
+ options.add_opt_simple(:crn,'Ressource instance id')
17
18
  options.add_opt_simple(:service_credentials,'IBM Cloud service credentials (Hash)')
18
- options.add_opt_simple(:region,'IBM Cloud Object storage region')
19
+ options.add_opt_simple(:region,'Storage region')
20
+ options.add_opt_simple(:identity,"Authentication url (#{CosNode::IBM_CLOUD_TOKEN_URL})")
21
+ options.set_option(:identity,CosNode::IBM_CLOUD_TOKEN_URL)
22
+ options.parse_options!
19
23
  end
20
24
 
21
- ACTIONS=[:node]
25
+ ACTIONS = %i[node].freeze
22
26
 
23
27
  def execute_action
24
- command=options.get_next_command(ACTIONS)
28
+ command = options.get_next_command(ACTIONS)
25
29
  case command
26
30
  when :node
27
- bucket_name=options.get_option(:bucket,:mandatory)
31
+ bucket_name = options.get_option(:bucket,is_type: :mandatory)
28
32
  # get service credentials, Hash, e.g. @json:@file:...
29
- service_credentials=options.get_option(:service_credentials,:optional)
30
- storage_endpoint=options.get_option(:endpoint,:optional)
31
- raise 'one of: endpoint or service_credentials is required' if service_credentials.nil? && storage_endpoint.nil?
32
- raise 'endpoint and service_credentials are mutually exclusive' unless service_credentials.nil? || storage_endpoint.nil?
33
+ service_credentials = options.get_option(:service_credentials)
34
+ storage_endpoint = options.get_option(:endpoint)
35
+ raise CliBadArgument,'one of: endpoint or service_credentials is required' if service_credentials.nil? && storage_endpoint.nil?
36
+ raise CliBadArgument,'endpoint and service_credentials are mutually exclusive' unless service_credentials.nil? || storage_endpoint.nil?
33
37
  if service_credentials.nil?
34
- service_api_key = options.get_option(:apikey,:mandatory)
35
- instance_id = options.get_option(:crn,:mandatory)
38
+ service_api_key = options.get_option(:apikey,is_type: :mandatory)
39
+ instance_id = options.get_option(:crn,is_type: :mandatory)
36
40
  else
37
- # check necessary contents
38
- raise CliBadArgument,'service_credentials must be a Hash' unless service_credentials.is_a?(Hash)
39
- ['apikey','resource_instance_id','endpoints'].each do |field|
40
- raise CliBadArgument,"service_credentials must have a field: #{field}" unless service_credentials.has_key?(field)
41
- end
42
- Aspera::Log.dump('service_credentials',service_credentials)
43
- # get options
44
- bucket_region=options.get_option(:region,:mandatory)
45
- # get API key from service credentials
46
- service_api_key=service_credentials['apikey']
47
- instance_id=service_credentials['resource_instance_id']
48
- # read endpoints from service provided in service credentials
49
- endpoints=Aspera::Rest.new({base_url: service_credentials['endpoints']}).read('')[:data]
50
- Aspera::Log.dump('endpoints',endpoints)
51
- storage_endpoint=endpoints.dig('service-endpoints','regional',bucket_region,'public',bucket_region)
52
- raise "no such region: #{bucket_region}" if storage_endpoint.nil?
53
- storage_endpoint='https://'+storage_endpoint
41
+ params=CosNode.parameters_from_svc_creds(service_credentials,options.get_option(:region,is_type: :mandatory))
42
+ storage_endpoint = params[:storage_endpoint]
43
+ service_api_key = params[:service_api_key]
44
+ instance_id = params[:instance_id]
54
45
  end
55
- api_node=CosNode.new(bucket_name,storage_endpoint,instance_id,service_api_key)
46
+ api_node = CosNode.new(bucket_name,storage_endpoint,instance_id,service_api_key,options.get_option(:identity,is_type: :mandatory))
56
47
  #command=self.options.get_next_command(Node::ACTIONS)
57
48
  #command=self.options.get_next_command(Node::COMMON_ACTIONS)
58
- command=options.get_next_command([:upload,:download,:info,:access_key,:api_details])
59
- node_plugin=Node.new(@agents.merge(skip_basic_auth_options: true, node_api: api_node, add_request_param: api_node.add_ts))
49
+ command = options.get_next_command(%i[upload download info access_key api_details transfer])
50
+ node_plugin = Node.new(@agents.merge(skip_basic_auth_options: true, node_api: api_node, add_request_param: api_node.add_ts))
60
51
  return node_plugin.execute_action(command)
61
52
  end
62
53
  end