aspera-cli 4.23.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +32 -1
- data/CONTRIBUTING.md +86 -29
- data/README.md +1651 -856
- data/bin/ascli +2 -1
- data/bin/asession +4 -4
- data/lib/aspera/agent/base.rb +4 -0
- data/lib/aspera/agent/connect.rb +20 -18
- data/lib/aspera/agent/desktop.rb +14 -11
- data/lib/aspera/agent/direct.rb +39 -31
- data/lib/aspera/agent/httpgw.rb +2 -2
- data/lib/aspera/agent/node.rb +9 -11
- data/lib/aspera/agent/transferd.rb +18 -11
- data/lib/aspera/api/aoc.rb +44 -31
- data/lib/aspera/api/cos_node.rb +7 -5
- data/lib/aspera/api/httpgw.rb +15 -18
- data/lib/aspera/api/node.rb +104 -22
- data/lib/aspera/ascmd.rb +22 -16
- data/lib/aspera/ascp/installation.rb +37 -40
- data/lib/aspera/ascp/management.rb +5 -4
- data/lib/aspera/assert.rb +54 -23
- data/lib/aspera/cli/basic_auth_plugin.rb +8 -7
- data/lib/aspera/cli/error.rb +1 -1
- data/lib/aspera/cli/extended_value.rb +28 -29
- data/lib/aspera/cli/formatter.rb +191 -168
- data/lib/aspera/cli/hints.rb +29 -3
- data/lib/aspera/cli/main.rb +138 -107
- data/lib/aspera/cli/manager.rb +50 -30
- data/lib/aspera/cli/plugin.rb +148 -77
- data/lib/aspera/cli/plugin_factory.rb +2 -2
- data/lib/aspera/cli/plugins/aoc.rb +189 -70
- data/lib/aspera/cli/plugins/ats.rb +15 -13
- data/lib/aspera/cli/plugins/config.rb +86 -213
- data/lib/aspera/cli/plugins/console.rb +49 -18
- data/lib/aspera/cli/plugins/cos.rb +4 -4
- data/lib/aspera/cli/plugins/faspex.rb +45 -51
- data/lib/aspera/cli/plugins/faspex5.rb +162 -163
- data/lib/aspera/cli/plugins/faspio.rb +6 -5
- data/lib/aspera/cli/plugins/httpgw.rb +2 -2
- data/lib/aspera/cli/plugins/node.rb +144 -162
- data/lib/aspera/cli/plugins/orchestrator.rb +10 -14
- data/lib/aspera/cli/plugins/preview.rb +26 -29
- data/lib/aspera/cli/plugins/server.rb +28 -28
- data/lib/aspera/cli/plugins/shares.rb +40 -28
- data/lib/aspera/cli/sync_actions.rb +101 -80
- data/lib/aspera/cli/transfer_agent.rb +51 -50
- data/lib/aspera/cli/transfer_progress.rb +29 -20
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/cli/wizard.rb +160 -0
- data/lib/aspera/colors.rb +13 -8
- data/lib/aspera/command_line_builder.rb +28 -22
- data/lib/aspera/command_line_converter.rb +31 -0
- data/lib/aspera/environment.rb +144 -101
- data/lib/aspera/faspex_gw.rb +1 -1
- data/lib/aspera/faspex_postproc.rb +3 -2
- data/lib/aspera/hash_ext.rb +1 -1
- data/lib/aspera/id_generator.rb +10 -10
- data/lib/aspera/keychain/base.rb +18 -0
- data/lib/aspera/keychain/encrypted_hash.rb +6 -12
- data/lib/aspera/keychain/factory.rb +9 -3
- data/lib/aspera/keychain/hashicorp_vault.rb +9 -6
- data/lib/aspera/keychain/macos_security.rb +13 -13
- data/lib/aspera/log.rb +69 -20
- data/lib/aspera/nagios.rb +5 -6
- data/lib/aspera/node_simulator.rb +12 -7
- data/lib/aspera/oauth/base.rb +5 -3
- data/lib/aspera/oauth/factory.rb +24 -18
- data/lib/aspera/oauth/jwt.rb +13 -1
- data/lib/aspera/oauth/url_json.rb +3 -3
- data/lib/aspera/oauth/web.rb +5 -3
- data/lib/aspera/persistency_folder.rb +2 -2
- data/lib/aspera/preview/file_types.rb +4 -3
- data/lib/aspera/preview/generator.rb +25 -12
- data/lib/aspera/preview/terminal.rb +10 -7
- data/lib/aspera/preview/utils.rb +11 -9
- data/lib/aspera/products/connect.rb +1 -1
- data/lib/aspera/products/desktop.rb +1 -1
- data/lib/aspera/products/other.rb +2 -2
- data/lib/aspera/products/transferd.rb +8 -6
- data/lib/aspera/proxy_auto_config.rb +1 -1
- data/lib/aspera/rest.rb +29 -22
- data/lib/aspera/rest_call_error.rb +1 -1
- data/lib/aspera/resumer.rb +1 -1
- data/lib/aspera/secret_hider.rb +46 -40
- data/lib/aspera/ssh.rb +13 -3
- data/lib/aspera/sync/args.schema.yaml +102 -0
- data/lib/aspera/sync/conf.schema.yaml +701 -0
- data/lib/aspera/sync/database.rb +83 -0
- data/lib/aspera/{transfer/sync.rb → sync/operations.rb} +132 -65
- data/lib/aspera/temp_file_manager.rb +3 -2
- data/lib/aspera/transfer/error.rb +1 -1
- data/lib/aspera/transfer/error_info.rb +1 -2
- data/lib/aspera/transfer/faux_file.rb +11 -10
- data/lib/aspera/transfer/parameters.rb +6 -5
- data/lib/aspera/transfer/spec.rb +15 -1
- data/lib/aspera/transfer/spec.schema.yaml +316 -293
- data/lib/aspera/transfer/spec_doc.rb +34 -16
- data/lib/aspera/transfer/uri.rb +5 -5
- data/lib/aspera/uri_reader.rb +14 -10
- data/lib/aspera/web_auth.rb +2 -2
- data/lib/aspera/web_server_simple.rb +2 -2
- data.tar.gz.sig +0 -0
- metadata +15 -13
- metadata.gz.sig +2 -2
- data/lib/aspera/transfer/async_conf.schema.yaml +0 -716
- data/lib/aspera/transfer/convert.rb +0 -29
- data/lib/aspera/transfer/sync_instance.schema.yaml +0 -20
- data/lib/aspera/transfer/sync_session.schema.yaml +0 -86
data/lib/aspera/ssh.rb
CHANGED
@@ -8,6 +8,8 @@ module Aspera
|
|
8
8
|
# A simple wrapper around Net::SSH
|
9
9
|
# executes one command and get its result from stdout
|
10
10
|
class Ssh
|
11
|
+
class Error < Aspera::Error
|
12
|
+
end
|
11
13
|
class << self
|
12
14
|
def disable_ed25519_keys
|
13
15
|
Log.log.debug('Disabling SSH ed25519 user keys')
|
@@ -42,17 +44,25 @@ module Aspera
|
|
42
44
|
@ssh_options[:logger] = Log.log
|
43
45
|
end
|
44
46
|
|
45
|
-
|
47
|
+
# Anything on stderr raises an exception
|
48
|
+
def execute(cmd, input: nil, exception: false)
|
46
49
|
Aspera.assert_type(cmd, String)
|
47
50
|
Log.log.debug{"cmd=#{cmd}"}
|
48
51
|
response = []
|
52
|
+
error = []
|
49
53
|
Net::SSH.start(@host, @username, @ssh_options) do |session|
|
50
54
|
ssh_channel = session.open_channel do |channel|
|
51
55
|
# prepare stdout processing
|
52
56
|
channel.on_data{ |_chan, data| response.push(data)}
|
53
57
|
# prepare stderr processing, stderr if type = 1
|
54
58
|
channel.on_extended_data do |_chan, _type, data|
|
55
|
-
|
59
|
+
error.push(data)
|
60
|
+
end
|
61
|
+
channel.on_request('exit-status') do |_ch, data|
|
62
|
+
exit_code = data.read_long
|
63
|
+
next if exit_code.zero?
|
64
|
+
error_message = "#{cmd}: exit #{exit_code}, #{error.join.chomp}"
|
65
|
+
raise Error, error_message if exception
|
56
66
|
# Happens when windows user hasn't logged in and created home account.
|
57
67
|
error_message += "\nHint: home not created in Windows?" if data.include?('Could not chdir to home directory')
|
58
68
|
Log.log.debug(error_message)
|
@@ -62,7 +72,7 @@ module Aspera
|
|
62
72
|
end
|
63
73
|
# wait for channel to finish (command exit)
|
64
74
|
ssh_channel.wait
|
65
|
-
# main
|
75
|
+
# main SSH session loop
|
66
76
|
session.loop
|
67
77
|
end
|
68
78
|
# response as single string
|
@@ -0,0 +1,102 @@
|
|
1
|
+
$schema: https://json-schema.org/draft/2020-12/schema
|
2
|
+
$id: https://github.com/IBM/aspera-cli/tree/main/lib/aspera/transfer/sync_instance.schema.yaml
|
3
|
+
$comment: >-
|
4
|
+
`x-` fields documented in `command_line_builder.rb`
|
5
|
+
This spec is specific to `ascli`.
|
6
|
+
The native async `conf` format is now preferred.
|
7
|
+
title: SyncInstanceSpec
|
8
|
+
description: Instance (global) and Session (per-sync) parameters for async.
|
9
|
+
type: object
|
10
|
+
properties:
|
11
|
+
alt_logdir:
|
12
|
+
type: string
|
13
|
+
watchd:
|
14
|
+
type: string
|
15
|
+
apply_local_docroot:
|
16
|
+
x-cli-switch: true
|
17
|
+
quiet:
|
18
|
+
x-cli-switch: true
|
19
|
+
ws_connect:
|
20
|
+
x-cli-switch: true
|
21
|
+
sessions:
|
22
|
+
type: array
|
23
|
+
items:
|
24
|
+
description: Session parameters for async.
|
25
|
+
type: object
|
26
|
+
properties:
|
27
|
+
name:
|
28
|
+
type: string
|
29
|
+
local_dir:
|
30
|
+
type: string
|
31
|
+
remote_dir:
|
32
|
+
type: string
|
33
|
+
local_db_dir:
|
34
|
+
type: string
|
35
|
+
remote_db_dir:
|
36
|
+
type: string
|
37
|
+
host:
|
38
|
+
type: string
|
39
|
+
x-ts-name: remote_host
|
40
|
+
user:
|
41
|
+
type: string
|
42
|
+
x-ts-name: remote_user
|
43
|
+
private_key_paths:
|
44
|
+
type: array
|
45
|
+
x-cli-option: "--private-key-path"
|
46
|
+
direction:
|
47
|
+
type: string
|
48
|
+
checksum:
|
49
|
+
type: string
|
50
|
+
tags:
|
51
|
+
type: object
|
52
|
+
x-cli-option: "--tags64"
|
53
|
+
x-cli-convert: json64
|
54
|
+
x-ts-name: tags
|
55
|
+
tcp_port:
|
56
|
+
type: integer
|
57
|
+
x-ts-name: ssh_port
|
58
|
+
rate_policy:
|
59
|
+
type: string
|
60
|
+
target_rate:
|
61
|
+
type: string
|
62
|
+
cooloff:
|
63
|
+
type: integer
|
64
|
+
pending_max:
|
65
|
+
type: integer
|
66
|
+
scan_intensity:
|
67
|
+
type: string
|
68
|
+
cipher:
|
69
|
+
type: string
|
70
|
+
x-cli-convert: remove_hyphen
|
71
|
+
x-ts-name: cipher
|
72
|
+
transfer_threads:
|
73
|
+
type: integer
|
74
|
+
preserve_time:
|
75
|
+
x-cli-switch: true
|
76
|
+
x-ts-name: preserve_times
|
77
|
+
preserve_access_time:
|
78
|
+
x-cli-switch: true
|
79
|
+
preserve_modification_time:
|
80
|
+
x-cli-switch: true
|
81
|
+
preserve_uid:
|
82
|
+
x-cli-switch: true
|
83
|
+
x-ts-name: preserve_file_owner_uid
|
84
|
+
preserve_gid:
|
85
|
+
x-cli-switch: true
|
86
|
+
x-ts-name: preserve_file_owner_gid
|
87
|
+
create_dir:
|
88
|
+
x-cli-switch: true
|
89
|
+
x-ts-name: create_dir
|
90
|
+
reset:
|
91
|
+
x-cli-switch: true
|
92
|
+
remote_password:
|
93
|
+
x-cli-envvar: ASPERA_SCP_PASS
|
94
|
+
x-ts-name: remote_password
|
95
|
+
cookie:
|
96
|
+
x-cli-envvar: ASPERA_SCP_COOKIE
|
97
|
+
x-ts-name: cookie
|
98
|
+
token:
|
99
|
+
x-cli-envvar: ASPERA_SCP_TOKEN
|
100
|
+
x-ts-name: token
|
101
|
+
license:
|
102
|
+
x-cli-envvar: ASPERA_SCP_LICENSE
|