aspera-cli 4.22.0 → 4.24.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 (114) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +405 -364
  4. data/CONTRIBUTING.md +86 -29
  5. data/README.md +1856 -961
  6. data/bin/ascli +2 -1
  7. data/bin/asession +4 -4
  8. data/lib/aspera/agent/base.rb +4 -0
  9. data/lib/aspera/agent/connect.rb +20 -18
  10. data/lib/aspera/agent/desktop.rb +14 -11
  11. data/lib/aspera/agent/direct.rb +39 -31
  12. data/lib/aspera/agent/httpgw.rb +2 -2
  13. data/lib/aspera/agent/node.rb +9 -11
  14. data/lib/aspera/agent/transferd.rb +18 -11
  15. data/lib/aspera/api/aoc.rb +53 -43
  16. data/lib/aspera/api/cos_node.rb +7 -5
  17. data/lib/aspera/api/httpgw.rb +23 -22
  18. data/lib/aspera/api/node.rb +104 -22
  19. data/lib/aspera/ascmd.rb +35 -21
  20. data/lib/aspera/ascp/installation.rb +43 -43
  21. data/lib/aspera/ascp/management.rb +5 -4
  22. data/lib/aspera/assert.rb +55 -24
  23. data/lib/aspera/cli/basic_auth_plugin.rb +8 -7
  24. data/lib/aspera/cli/error.rb +1 -1
  25. data/lib/aspera/cli/extended_value.rb +28 -29
  26. data/lib/aspera/cli/formatter.rb +191 -168
  27. data/lib/aspera/cli/hints.rb +38 -4
  28. data/lib/aspera/cli/main.rb +139 -108
  29. data/lib/aspera/cli/manager.rb +51 -31
  30. data/lib/aspera/cli/plugin.rb +149 -78
  31. data/lib/aspera/cli/plugin_factory.rb +2 -2
  32. data/lib/aspera/cli/plugins/aoc.rb +217 -88
  33. data/lib/aspera/cli/plugins/ats.rb +15 -13
  34. data/lib/aspera/cli/plugins/config.rb +105 -227
  35. data/lib/aspera/cli/plugins/console.rb +49 -18
  36. data/lib/aspera/cli/plugins/cos.rb +4 -4
  37. data/lib/aspera/cli/plugins/faspex.rb +45 -51
  38. data/lib/aspera/cli/plugins/faspex5.rb +162 -163
  39. data/lib/aspera/cli/plugins/faspio.rb +6 -5
  40. data/lib/aspera/cli/plugins/httpgw.rb +2 -2
  41. data/lib/aspera/cli/plugins/node.rb +233 -247
  42. data/lib/aspera/cli/plugins/orchestrator.rb +10 -14
  43. data/lib/aspera/cli/plugins/preview.rb +26 -29
  44. data/lib/aspera/cli/plugins/server.rb +29 -28
  45. data/lib/aspera/cli/plugins/shares.rb +40 -28
  46. data/lib/aspera/cli/sync_actions.rb +101 -80
  47. data/lib/aspera/cli/transfer_agent.rb +55 -58
  48. data/lib/aspera/cli/transfer_progress.rb +29 -20
  49. data/lib/aspera/cli/version.rb +1 -1
  50. data/lib/aspera/cli/wizard.rb +160 -0
  51. data/lib/aspera/colors.rb +13 -8
  52. data/lib/aspera/command_line_builder.rb +28 -22
  53. data/lib/aspera/command_line_converter.rb +31 -0
  54. data/lib/aspera/data_repository.rb +1 -0
  55. data/lib/aspera/environment.rb +144 -100
  56. data/lib/aspera/faspex_gw.rb +1 -1
  57. data/lib/aspera/faspex_postproc.rb +3 -2
  58. data/lib/aspera/hash_ext.rb +1 -1
  59. data/lib/aspera/id_generator.rb +10 -10
  60. data/lib/aspera/keychain/base.rb +18 -0
  61. data/lib/aspera/keychain/encrypted_hash.rb +6 -12
  62. data/lib/aspera/keychain/factory.rb +9 -3
  63. data/lib/aspera/keychain/hashicorp_vault.rb +9 -6
  64. data/lib/aspera/keychain/macos_security.rb +13 -13
  65. data/lib/aspera/log.rb +70 -20
  66. data/lib/aspera/nagios.rb +5 -6
  67. data/lib/aspera/node_simulator.rb +12 -7
  68. data/lib/aspera/oauth/base.rb +6 -2
  69. data/lib/aspera/oauth/factory.rb +25 -18
  70. data/lib/aspera/oauth/jwt.rb +13 -1
  71. data/lib/aspera/oauth/url_json.rb +3 -3
  72. data/lib/aspera/oauth/web.rb +5 -3
  73. data/lib/aspera/persistency_folder.rb +2 -2
  74. data/lib/aspera/preview/file_types.rb +43 -35
  75. data/lib/aspera/preview/generator.rb +26 -13
  76. data/lib/aspera/preview/terminal.rb +10 -7
  77. data/lib/aspera/preview/utils.rb +11 -9
  78. data/lib/aspera/products/connect.rb +2 -1
  79. data/lib/aspera/products/desktop.rb +1 -1
  80. data/lib/aspera/products/other.rb +2 -2
  81. data/lib/aspera/products/transferd.rb +8 -6
  82. data/lib/aspera/proxy_auto_config.rb +1 -1
  83. data/lib/aspera/rest.rb +46 -28
  84. data/lib/aspera/rest_call_error.rb +1 -1
  85. data/lib/aspera/rest_error_analyzer.rb +1 -0
  86. data/lib/aspera/resumer.rb +1 -1
  87. data/lib/aspera/secret_hider.rb +46 -40
  88. data/lib/aspera/ssh.rb +14 -4
  89. data/lib/aspera/sync/args.schema.yaml +102 -0
  90. data/lib/aspera/sync/conf.schema.yaml +701 -0
  91. data/lib/aspera/sync/database.rb +83 -0
  92. data/lib/aspera/{transfer/sync.rb → sync/operations.rb} +145 -68
  93. data/lib/aspera/temp_file_manager.rb +4 -2
  94. data/lib/aspera/timer_limiter.rb +7 -5
  95. data/lib/aspera/transfer/error.rb +1 -1
  96. data/lib/aspera/transfer/error_info.rb +1 -2
  97. data/lib/aspera/transfer/faux_file.rb +11 -10
  98. data/lib/aspera/transfer/parameters.rb +6 -5
  99. data/lib/aspera/transfer/spec.rb +15 -1
  100. data/lib/aspera/transfer/spec.schema.yaml +316 -293
  101. data/lib/aspera/transfer/spec_doc.rb +34 -16
  102. data/lib/aspera/transfer/uri.rb +5 -5
  103. data/lib/aspera/uri_reader.rb +14 -10
  104. data/lib/aspera/web_auth.rb +2 -2
  105. data/lib/aspera/web_server_simple.rb +2 -2
  106. data.tar.gz.sig +0 -0
  107. metadata +15 -15
  108. metadata.gz.sig +0 -0
  109. data/examples/dascli +0 -30
  110. data/examples/get_proto_file.rb +0 -8
  111. data/examples/proxy.pac +0 -60
  112. data/lib/aspera/transfer/convert.rb +0 -29
  113. data/lib/aspera/transfer/sync_instance.schema.yaml +0 -13
  114. data/lib/aspera/transfer/sync_session.schema.yaml +0 -79
@@ -19,6 +19,8 @@ module Aspera
19
19
  private_constant :CLOUD_TABLE
20
20
  def initialize(**_)
21
21
  super
22
+ @ats_api_pub = nil
23
+ @ats_api_pub_v1_cache = nil
22
24
  options.declare(:ibm_api_key, 'IBM API key, see https://cloud.ibm.com/iam/apikeys')
23
25
  options.declare(:instance, 'ATS instance in ibm cloud')
24
26
  options.declare(:ats_key, 'ATS key identifier (ats_xxx)')
@@ -45,7 +47,8 @@ module Aspera
45
47
  auth: {
46
48
  type: :basic,
47
49
  username: options.get_option(:ats_key, mandatory: true),
48
- password: options.get_option(:ats_secret, mandatory: true)}
50
+ password: options.get_option(:ats_secret, mandatory: true)
51
+ }
49
52
  )
50
53
  end
51
54
 
@@ -82,9 +85,7 @@ module Aspera
82
85
  # specific one do not have s3 end point in id
83
86
  params['transfer_server_id'] = server_data2['id']
84
87
  end
85
- if !params['storage'].key?('authentication_endpoint')
86
- params['storage']['endpoint'] = server_data2['s3_authentication_endpoint']
87
- end
88
+ params['storage']['endpoint'] = server_data2['s3_authentication_endpoint'] if !params['storage'].key?('authentication_endpoint')
88
89
  end
89
90
  end
90
91
  res = ats_api_pub_v1.create('access_keys', params)
@@ -120,9 +121,10 @@ module Aspera
120
121
  type: :basic,
121
122
  username: access_key_id,
122
123
  password: config.lookup_secret(url: node_url, username: access_key_id)
123
- })
124
+ }
125
+ )
124
126
  command = options.get_next_command(Node::COMMANDS_GEN4)
125
- return Node.new(**init_params, api: api_node).execute_command_gen4(command, ak_data['root_file_id'])
127
+ return Node.new(context: context, api: api_node).execute_command_gen4(command, ak_data['root_file_id'])
126
128
  when :cluster
127
129
  ats_url = ats_api_pub_v1.base_url
128
130
  api_ak_auth = Rest.new(
@@ -131,7 +133,8 @@ module Aspera
131
133
  type: :basic,
132
134
  username: access_key_id,
133
135
  password: config.lookup_secret(url: ats_url, username: access_key_id)
134
- })
136
+ }
137
+ )
135
138
  return Main.result_single_object(api_ak_auth.read('servers'))
136
139
  else Aspera.error_unexpected_value(command)
137
140
  end
@@ -150,13 +153,13 @@ module Aspera
150
153
  else
151
154
  server_id = instance_identifier
152
155
  server_data = @ats_api_pub.all_servers.find{ |i| i['id'].eql?(server_id)}
153
- raise 'no such server id' if server_data.nil?
156
+ raise BadIdentifier.new('server', server_id) if server_data.nil?
154
157
  end
155
158
  return Main.result_single_object(server_data)
156
159
  end
157
160
  end
158
161
 
159
- def ats_api_v2_auth_ibm(rest_add_headers={})
162
+ def ats_api_v2_auth_ibm(rest_add_headers = {})
160
163
  return Rest.new(
161
164
  base_url: "#{Api::Ats::SERVICE_BASE_URL}/v2",
162
165
  headers: rest_add_headers,
@@ -168,14 +171,13 @@ module Aspera
168
171
  grant_type: 'urn:ibm:params:oauth:grant-type:apikey',
169
172
  response_type: 'cloud_iam',
170
173
  apikey: options.get_option(:ibm_api_key, mandatory: true)
171
- })
174
+ }
175
+ )
172
176
  end
173
177
 
174
178
  def execute_action_api_key
175
179
  command = options.get_next_command(%i[instances create list show delete])
176
- if %i[show delete].include?(command)
177
- concerned_id = instance_identifier
178
- end
180
+ concerned_id = instance_identifier if %i[show delete].include?(command)
179
181
  rest_add_header = {}
180
182
  if !command.eql?(:instances)
181
183
  instance = options.get_option(:instance)