aspera-cli 4.6.0 → 4.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +427 -300
  3. data/bin/ascli +2 -1
  4. data/bin/asession +1 -0
  5. data/docs/test_env.conf +2 -0
  6. data/examples/aoc.rb +4 -3
  7. data/examples/faspex4.rb +21 -19
  8. data/examples/proxy.pac +1 -1
  9. data/examples/transfer.rb +15 -15
  10. data/lib/aspera/aoc.rb +135 -124
  11. data/lib/aspera/ascmd.rb +85 -75
  12. data/lib/aspera/ats_api.rb +11 -10
  13. data/lib/aspera/cli/basic_auth_plugin.rb +13 -14
  14. data/lib/aspera/cli/extended_value.rb +42 -33
  15. data/lib/aspera/cli/formater.rb +138 -111
  16. data/lib/aspera/cli/info.rb +17 -0
  17. data/lib/aspera/cli/listener/line_dump.rb +3 -2
  18. data/lib/aspera/cli/listener/logger.rb +2 -1
  19. data/lib/aspera/cli/listener/progress.rb +16 -18
  20. data/lib/aspera/cli/listener/progress_multi.rb +13 -16
  21. data/lib/aspera/cli/main.rb +122 -130
  22. data/lib/aspera/cli/manager.rb +146 -154
  23. data/lib/aspera/cli/plugin.rb +38 -34
  24. data/lib/aspera/cli/plugins/alee.rb +6 -6
  25. data/lib/aspera/cli/plugins/aoc.rb +273 -276
  26. data/lib/aspera/cli/plugins/ats.rb +82 -76
  27. data/lib/aspera/cli/plugins/bss.rb +14 -16
  28. data/lib/aspera/cli/plugins/config.rb +350 -306
  29. data/lib/aspera/cli/plugins/console.rb +23 -19
  30. data/lib/aspera/cli/plugins/cos.rb +18 -18
  31. data/lib/aspera/cli/plugins/faspex.rb +180 -159
  32. data/lib/aspera/cli/plugins/faspex5.rb +64 -54
  33. data/lib/aspera/cli/plugins/node.rb +147 -140
  34. data/lib/aspera/cli/plugins/orchestrator.rb +68 -66
  35. data/lib/aspera/cli/plugins/preview.rb +92 -96
  36. data/lib/aspera/cli/plugins/server.rb +79 -75
  37. data/lib/aspera/cli/plugins/shares.rb +23 -24
  38. data/lib/aspera/cli/plugins/sync.rb +20 -22
  39. data/lib/aspera/cli/transfer_agent.rb +40 -39
  40. data/lib/aspera/cli/version.rb +2 -1
  41. data/lib/aspera/colors.rb +35 -27
  42. data/lib/aspera/command_line_builder.rb +48 -34
  43. data/lib/aspera/cos_node.rb +29 -21
  44. data/lib/aspera/data_repository.rb +3 -2
  45. data/lib/aspera/environment.rb +50 -45
  46. data/lib/aspera/fasp/agent_base.rb +22 -20
  47. data/lib/aspera/fasp/agent_connect.rb +13 -11
  48. data/lib/aspera/fasp/agent_direct.rb +48 -59
  49. data/lib/aspera/fasp/agent_httpgw.rb +33 -39
  50. data/lib/aspera/fasp/agent_node.rb +15 -13
  51. data/lib/aspera/fasp/agent_trsdk.rb +12 -14
  52. data/lib/aspera/fasp/error.rb +2 -1
  53. data/lib/aspera/fasp/error_info.rb +68 -52
  54. data/lib/aspera/fasp/installation.rb +106 -94
  55. data/lib/aspera/fasp/listener.rb +1 -0
  56. data/lib/aspera/fasp/parameters.rb +83 -92
  57. data/lib/aspera/fasp/parameters.yaml +305 -249
  58. data/lib/aspera/fasp/resume_policy.rb +11 -14
  59. data/lib/aspera/fasp/transfer_spec.rb +26 -0
  60. data/lib/aspera/fasp/uri.rb +22 -21
  61. data/lib/aspera/faspex_gw.rb +55 -90
  62. data/lib/aspera/hash_ext.rb +4 -3
  63. data/lib/aspera/id_generator.rb +8 -7
  64. data/lib/aspera/keychain/encrypted_hash.rb +17 -16
  65. data/lib/aspera/keychain/macos_security.rb +6 -10
  66. data/lib/aspera/log.rb +25 -20
  67. data/lib/aspera/nagios.rb +13 -12
  68. data/lib/aspera/node.rb +30 -22
  69. data/lib/aspera/oauth.rb +175 -226
  70. data/lib/aspera/open_application.rb +4 -3
  71. data/lib/aspera/persistency_action_once.rb +6 -6
  72. data/lib/aspera/persistency_folder.rb +5 -9
  73. data/lib/aspera/preview/file_types.rb +6 -5
  74. data/lib/aspera/preview/generator.rb +25 -24
  75. data/lib/aspera/preview/options.rb +16 -14
  76. data/lib/aspera/preview/utils.rb +98 -98
  77. data/lib/aspera/{proxy_auto_config.erb.js → proxy_auto_config.js} +23 -31
  78. data/lib/aspera/proxy_auto_config.rb +111 -20
  79. data/lib/aspera/rest.rb +115 -113
  80. data/lib/aspera/rest_call_error.rb +2 -2
  81. data/lib/aspera/rest_error_analyzer.rb +23 -25
  82. data/lib/aspera/rest_errors_aspera.rb +15 -14
  83. data/lib/aspera/ssh.rb +12 -10
  84. data/lib/aspera/sync.rb +42 -41
  85. data/lib/aspera/temp_file_manager.rb +18 -14
  86. data/lib/aspera/timer_limiter.rb +2 -1
  87. data/lib/aspera/uri_reader.rb +7 -5
  88. data/lib/aspera/web_auth.rb +79 -76
  89. metadata +64 -21
  90. data/docs/Makefile +0 -65
  91. data/docs/README.erb.md +0 -4424
  92. data/docs/README.md +0 -13
  93. data/docs/diagrams.txt +0 -49
  94. data/docs/doc_tools.rb +0 -58
  95. data/lib/aspera/cli/plugins/shares2.rb +0 -114
  96. data/lib/aspera/fasp/default.rb +0 -17
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'aspera/cli/basic_auth_plugin'
2
3
  require 'aspera/nagios'
3
4
 
@@ -5,53 +6,56 @@ module Aspera
5
6
  module Cli
6
7
  module Plugins
7
8
  class Console < BasicAuthPlugin
9
+ DEFAULT_FILTER_AGE_SECONDS=3*3600
10
+ private_constant :DEFAULT_FILTER_AGE_SECONDS
8
11
  def initialize(env)
9
12
  super(env)
10
- self.options.add_opt_date(:filter_from,"only after date")
11
- self.options.add_opt_date(:filter_to,"only before date")
12
- self.options.set_option(:filter_from,Manager.time_to_string(Time.now - 3*3600))
13
- self.options.set_option(:filter_to,Manager.time_to_string(Time.now))
14
- self.options.parse_options!
13
+ options.add_opt_date(:filter_from,'only after date')
14
+ options.add_opt_date(:filter_to,'only before date')
15
+ time_now=Time.now
16
+ options.set_option(:filter_from,Manager.time_to_string(time_now - DEFAULT_FILTER_AGE_SECONDS))
17
+ options.set_option(:filter_to,Manager.time_to_string(time_now))
18
+ options.parse_options!
15
19
  end
16
20
 
17
21
  ACTIONS=[:transfer,:health]
18
22
 
19
23
  def execute_action
20
24
  api_console=basic_auth_api('api')
21
- command=self.options.get_next_command(ACTIONS)
25
+ command=options.get_next_command(ACTIONS)
22
26
  case command
23
27
  when :health
24
28
  nagios=Nagios.new
25
29
  begin
26
30
  api_console.read('ssh_keys')
27
31
  nagios.add_ok('console api','accessible')
28
- rescue => e
32
+ rescue StandardError => e
29
33
  nagios.add_critical('console api',e.to_s)
30
34
  end
31
35
  return nagios.result
32
36
  when :transfer
33
- command=self.options.get_next_command([ :current, :smart ])
37
+ command=options.get_next_command([:current, :smart])
34
38
  case command
35
39
  when :smart
36
- command=self.options.get_next_command([:list,:submit])
40
+ command=options.get_next_command([:list,:submit])
37
41
  case command
38
42
  when :list
39
- return {:type=>:object_list,:data=>api_console.read('smart_transfers')[:data]}
43
+ return {type: :object_list,data: api_console.read('smart_transfers')[:data]}
40
44
  when :submit
41
- smart_id = self.options.get_next_argument("smart_id")
42
- params = self.options.get_next_argument("transfer parameters")
43
- return {:type=>:object_list,:data=>api_console.create('smart_transfers/'+smart_id,params)[:data]}
45
+ smart_id = options.get_next_argument('smart_id')
46
+ params = options.get_next_argument('transfer parameters')
47
+ return {type: :object_list,data: api_console.create('smart_transfers/'+smart_id,params)[:data]}
44
48
  end
45
49
  when :current
46
- command=self.options.get_next_command([ :list ])
50
+ command=options.get_next_command([:list])
47
51
  case command
48
52
  when :list
49
- return {:type=>:object_list,
50
- :data=>api_console.read('transfers',{
51
- 'from'=>self.options.get_option(:filter_from,:mandatory),
52
- 'to'=>self.options.get_option(:filter_to,:mandatory)
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)
53
57
  })[:data],
54
- :fields=>['id','contact','name','status']}
58
+ fields: ['id','contact','name','status']}
55
59
  end
56
60
  end
57
61
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'aspera/cli/plugin'
2
3
  require 'aspera/cli/plugins/node'
3
4
  require 'aspera/cos_node'
@@ -9,30 +10,29 @@ module Aspera
9
10
  def initialize(env)
10
11
  super(env)
11
12
  @service_creds=nil
12
- self.options.add_opt_simple(:bucket,'IBM Cloud Object storage bucket')
13
- self.options.add_opt_simple(:endpoint,'storage endpoint url')
14
- self.options.add_opt_simple(:apikey,'storage API key')
15
- self.options.add_opt_simple(:crn,'ressource instance id')
16
- #self.options.add_opt_simple(:oauth,'Oauth url')
17
- self.options.add_opt_simple(:service_credentials,'IBM Cloud service credentials (Hash)')
18
- self.options.add_opt_simple(:region,'IBM Cloud Object storage region')
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')
17
+ options.add_opt_simple(:service_credentials,'IBM Cloud service credentials (Hash)')
18
+ options.add_opt_simple(:region,'IBM Cloud Object storage region')
19
19
  end
20
20
 
21
21
  ACTIONS=[:node]
22
22
 
23
23
  def execute_action
24
- command=self.options.get_next_command(ACTIONS)
24
+ command=options.get_next_command(ACTIONS)
25
25
  case command
26
26
  when :node
27
- bucket_name=self.options.get_option(:bucket,:mandatory)
27
+ bucket_name=options.get_option(:bucket,:mandatory)
28
28
  # get service credentials, Hash, e.g. @json:@file:...
29
- service_credentials=self.options.get_option(:service_credentials,:optional)
30
- storage_endpoint=self.options.get_option(:endpoint,:optional)
31
- raise "one of: endpoint or service_credentials is required" if service_credentials.nil? and storage_endpoint.nil?
32
- raise "endpoint and service_credentials are mutually exclusive" unless service_credentials.nil? or storage_endpoint.nil?
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
33
  if service_credentials.nil?
34
- service_api_key = self.options.get_option(:apikey,:mandatory)
35
- instance_id = self.options.get_option(:crn,:mandatory)
34
+ service_api_key = options.get_option(:apikey,:mandatory)
35
+ instance_id = options.get_option(:crn,:mandatory)
36
36
  else
37
37
  # check necessary contents
38
38
  raise CliBadArgument,'service_credentials must be a Hash' unless service_credentials.is_a?(Hash)
@@ -41,12 +41,12 @@ module Aspera
41
41
  end
42
42
  Aspera::Log.dump('service_credentials',service_credentials)
43
43
  # get options
44
- bucket_region=self.options.get_option(:region,:mandatory)
44
+ bucket_region=options.get_option(:region,:mandatory)
45
45
  # get API key from service credentials
46
46
  service_api_key=service_credentials['apikey']
47
47
  instance_id=service_credentials['resource_instance_id']
48
48
  # read endpoints from service provided in service credentials
49
- endpoints=Aspera::Rest.new({:base_url=>service_credentials['endpoints']}).read('')[:data]
49
+ endpoints=Aspera::Rest.new({base_url: service_credentials['endpoints']}).read('')[:data]
50
50
  Aspera::Log.dump('endpoints',endpoints)
51
51
  storage_endpoint=endpoints.dig('service-endpoints','regional',bucket_region,'public',bucket_region)
52
52
  raise "no such region: #{bucket_region}" if storage_endpoint.nil?
@@ -55,7 +55,7 @@ module Aspera
55
55
  api_node=CosNode.new(bucket_name,storage_endpoint,instance_id,service_api_key)
56
56
  #command=self.options.get_next_command(Node::ACTIONS)
57
57
  #command=self.options.get_next_command(Node::COMMON_ACTIONS)
58
- command=self.options.get_next_command([:upload,:download,:info,:access_key,:api_details])
58
+ command=options.get_next_command([:upload,:download,:info,:access_key,:api_details])
59
59
  node_plugin=Node.new(@agents.merge(skip_basic_auth_options: true, node_api: api_node, add_request_param: api_node.add_ts))
60
60
  return node_plugin.execute_action(command)
61
61
  end