aspera-cli 4.21.1 → 4.22.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/BUGS.md +1 -1
- data/CHANGELOG.md +52 -22
- data/CONTRIBUTING.md +69 -148
- data/README.md +929 -668
- data/bin/ascli +5 -14
- data/bin/asession +1 -3
- data/examples/get_proto_file.rb +4 -3
- data/examples/proxy.pac +20 -20
- data/lib/aspera/agent/base.rb +11 -5
- data/lib/aspera/agent/connect.rb +30 -28
- data/lib/aspera/agent/{alpha.rb → desktop.rb} +35 -31
- data/lib/aspera/agent/direct.rb +141 -121
- data/lib/aspera/agent/httpgw.rb +22 -26
- data/lib/aspera/agent/node.rb +14 -11
- data/lib/aspera/agent/transferd.rb +30 -19
- data/lib/aspera/api/alee.rb +1 -1
- data/lib/aspera/api/aoc.rb +6 -6
- data/lib/aspera/api/cos_node.rb +2 -2
- data/lib/aspera/api/httpgw.rb +7 -3
- data/lib/aspera/api/node.rb +10 -8
- data/lib/aspera/ascmd.rb +3 -3
- data/lib/aspera/ascp/installation.rb +53 -72
- data/lib/aspera/ascp/management.rb +1 -1
- data/lib/aspera/assert.rb +11 -2
- data/lib/aspera/cli/error.rb +2 -2
- data/lib/aspera/cli/extended_value.rb +46 -21
- data/lib/aspera/cli/formatter.rb +55 -48
- data/lib/aspera/cli/hints.rb +1 -1
- data/lib/aspera/cli/info.rb +1 -0
- data/lib/aspera/cli/main.rb +192 -170
- data/lib/aspera/cli/manager.rb +18 -18
- data/lib/aspera/cli/plugin.rb +23 -20
- data/lib/aspera/cli/plugin_factory.rb +1 -1
- data/lib/aspera/cli/plugins/alee.rb +1 -1
- data/lib/aspera/cli/plugins/aoc.rb +247 -159
- data/lib/aspera/cli/plugins/ats.rb +19 -17
- data/lib/aspera/cli/plugins/config.rb +76 -113
- data/lib/aspera/cli/plugins/console.rb +5 -3
- data/lib/aspera/cli/plugins/faspex.rb +39 -35
- data/lib/aspera/cli/plugins/faspex5.rb +111 -84
- data/lib/aspera/cli/plugins/faspio.rb +13 -1
- data/lib/aspera/cli/plugins/httpgw.rb +13 -1
- data/lib/aspera/cli/plugins/node.rb +312 -182
- data/lib/aspera/cli/plugins/orchestrator.rb +34 -40
- data/lib/aspera/cli/plugins/preview.rb +3 -3
- data/lib/aspera/cli/plugins/server.rb +6 -6
- data/lib/aspera/cli/plugins/shares.rb +5 -5
- data/lib/aspera/cli/sync_actions.rb +19 -18
- data/lib/aspera/cli/transfer_agent.rb +5 -5
- data/lib/aspera/cli/transfer_progress.rb +2 -2
- data/lib/aspera/cli/version.rb +1 -1
- data/lib/aspera/command_line_builder.rb +116 -95
- data/lib/aspera/coverage.rb +8 -5
- data/lib/aspera/environment.rb +26 -17
- data/lib/aspera/faspex_gw.rb +14 -14
- data/lib/aspera/faspex_postproc.rb +10 -11
- data/lib/aspera/hash_ext.rb +4 -14
- data/lib/aspera/json_rpc.rb +1 -1
- data/lib/aspera/keychain/encrypted_hash.rb +47 -34
- data/lib/aspera/keychain/factory.rb +41 -0
- data/lib/aspera/keychain/hashicorp_vault.rb +71 -0
- data/lib/aspera/keychain/macos_security.rb +19 -11
- data/lib/aspera/log.rb +28 -34
- data/lib/aspera/nagios.rb +6 -6
- data/lib/aspera/node_simulator.rb +8 -8
- data/lib/aspera/oauth/base.rb +14 -7
- data/lib/aspera/oauth/factory.rb +5 -6
- data/lib/aspera/oauth/url_json.rb +6 -6
- data/lib/aspera/persistency_action_once.rb +6 -4
- data/lib/aspera/persistency_folder.rb +2 -2
- data/lib/aspera/preview/generator.rb +13 -10
- data/lib/aspera/preview/options.rb +16 -16
- data/lib/aspera/preview/terminal.rb +4 -4
- data/lib/aspera/preview/utils.rb +15 -17
- data/lib/aspera/products/connect.rb +35 -1
- data/lib/aspera/products/{alpha.rb → desktop.rb} +3 -3
- data/lib/aspera/products/transferd.rb +9 -2
- data/lib/aspera/proxy_auto_config.rb +2 -2
- data/lib/aspera/rest.rb +56 -47
- data/lib/aspera/rest_errors_aspera.rb +1 -1
- data/lib/aspera/secret_hider.rb +12 -5
- data/lib/aspera/ssh.rb +4 -4
- data/lib/aspera/temp_file_manager.rb +5 -4
- data/lib/aspera/transfer/convert.rb +29 -0
- data/lib/aspera/transfer/error_info.rb +66 -66
- data/lib/aspera/transfer/parameters.rb +13 -68
- data/lib/aspera/transfer/spec.rb +5 -6
- data/lib/aspera/transfer/spec.schema.yaml +753 -0
- data/lib/aspera/transfer/spec_doc.rb +62 -0
- data/lib/aspera/transfer/sync.rb +23 -72
- data/lib/aspera/transfer/sync_instance.schema.yaml +13 -0
- data/lib/aspera/transfer/sync_session.schema.yaml +79 -0
- data/lib/aspera/transfer/uri.rb +6 -6
- data/lib/aspera/uri_reader.rb +18 -1
- data/lib/aspera/web_auth.rb +1 -1
- data/lib/aspera/web_server_simple.rb +53 -44
- data.tar.gz.sig +0 -0
- metadata +28 -165
- metadata.gz.sig +0 -0
- data/examples/build_exec +0 -74
- data/examples/build_exec_rubyc +0 -40
- data/examples/build_package.sh +0 -28
- data/lib/aspera/transfer/spec.yaml +0 -718
data/lib/aspera/cli/plugin.rb
CHANGED
@@ -12,15 +12,13 @@ module Aspera
|
|
12
12
|
# operations with id
|
13
13
|
INSTANCE_OPS = %i[modify delete show].freeze
|
14
14
|
# all standard operations
|
15
|
-
ALL_OPS =
|
15
|
+
ALL_OPS = (GLOBAL_OPS + INSTANCE_OPS).freeze
|
16
16
|
# special query parameter: max number of items for list command
|
17
17
|
MAX_ITEMS = 'max'
|
18
18
|
# special query parameter: max number of pages for list command
|
19
19
|
MAX_PAGES = 'pmax'
|
20
20
|
# special identifier format: look for this name to find where supported
|
21
21
|
REGEX_LOOKUP_ID_BY_FIELD = /^%([^:]+):(.*)$/.freeze
|
22
|
-
# instance variables, also constructor parameters
|
23
|
-
INIT_PARAMS = %i[options transfer config formatter persistency only_manual].freeze
|
24
22
|
|
25
23
|
class << self
|
26
24
|
def declare_generic_options(options)
|
@@ -31,18 +29,17 @@ module Aspera
|
|
31
29
|
end
|
32
30
|
end
|
33
31
|
|
34
|
-
|
32
|
+
def options; @broker.options; end
|
33
|
+
def transfer; @broker.transfer; end
|
34
|
+
def config; @broker.config; end
|
35
|
+
def formatter; @broker.formatter; end
|
36
|
+
def persistency; @broker.persistency; end
|
35
37
|
|
36
|
-
def initialize(
|
38
|
+
def initialize(broker:, man_header: true)
|
37
39
|
# check presence in descendant of mandatory method and constant
|
38
40
|
Aspera.assert(respond_to?(:execute_action)){"Missing method 'execute_action' in #{self.class}"}
|
39
41
|
Aspera.assert(self.class.constants.include?(:ACTIONS)){"Missing constant 'ACTIONS' in #{self.class}"}
|
40
|
-
@
|
41
|
-
@transfer = transfer
|
42
|
-
@config = config
|
43
|
-
@formatter = formatter
|
44
|
-
@persistency = persistency
|
45
|
-
@only_manual = only_manual
|
42
|
+
@broker = broker
|
46
43
|
add_manual_header if man_header
|
47
44
|
end
|
48
45
|
|
@@ -56,7 +53,7 @@ module Aspera
|
|
56
53
|
|
57
54
|
# @return a hash of instance variables
|
58
55
|
def init_params
|
59
|
-
|
56
|
+
return {broker: @broker}
|
60
57
|
end
|
61
58
|
|
62
59
|
# must be called AFTER the instance action, ... folder browse <call instance_identifier>
|
@@ -121,10 +118,10 @@ module Aspera
|
|
121
118
|
end
|
122
119
|
display_fields = [id_result, 'status']
|
123
120
|
if is_bulk
|
124
|
-
return
|
121
|
+
return Main.result_object_list(result_list, fields: display_fields)
|
125
122
|
else
|
126
123
|
display_fields = fields unless fields.eql?(:default)
|
127
|
-
return
|
124
|
+
return Main.result_single_object(result_list.first, fields: display_fields)
|
128
125
|
end
|
129
126
|
end
|
130
127
|
|
@@ -164,7 +161,13 @@ module Aspera
|
|
164
161
|
if !delete_style.nil?
|
165
162
|
one_res_id = [one_res_id] unless one_res_id.is_a?(Array)
|
166
163
|
Aspera.assert_type(one_res_id, Array, exception_class: Cli::BadArgument)
|
167
|
-
rest_api.call(
|
164
|
+
rest_api.call(
|
165
|
+
operation: 'DELETE',
|
166
|
+
subpath: res_class_path,
|
167
|
+
content_type: Rest::MIME_JSON,
|
168
|
+
body: {delete_style => one_res_id},
|
169
|
+
headers: {'Accept' => Rest::MIME_JSON}
|
170
|
+
)
|
168
171
|
return Main.result_status('deleted')
|
169
172
|
end
|
170
173
|
return do_bulk_operation(command: command, descr: 'identifier', values: one_res_id) do |one_id|
|
@@ -172,9 +175,9 @@ module Aspera
|
|
172
175
|
{'id' => one_id}
|
173
176
|
end
|
174
177
|
when :show
|
175
|
-
return
|
178
|
+
return Main.result_single_object(rest_api.read(one_res_path), fields: display_fields)
|
176
179
|
when :list
|
177
|
-
resp = rest_api.call(operation: 'GET', subpath: res_class_path, headers: {'Accept' =>
|
180
|
+
resp = rest_api.call(operation: 'GET', subpath: res_class_path, headers: {'Accept' => Rest::MIME_JSON}, query: query_read_delete)
|
178
181
|
return Main.result_empty if resp[:http].code == '204'
|
179
182
|
data = resp[:data]
|
180
183
|
# TODO: not generic : which application is this for ?
|
@@ -190,10 +193,10 @@ module Aspera
|
|
190
193
|
end
|
191
194
|
case data
|
192
195
|
when Hash
|
193
|
-
return
|
196
|
+
return Main.result_single_object(data, fields: display_fields)
|
194
197
|
when Array
|
195
|
-
return
|
196
|
-
return
|
198
|
+
return Main.result_object_list(data, fields: display_fields) if data.empty? || data.first.is_a?(Hash)
|
199
|
+
return Main.result_value_list(data, name: 'id')
|
197
200
|
else
|
198
201
|
raise "An error occurred: unexpected result type for list: #{data.class}"
|
199
202
|
end
|
@@ -40,7 +40,7 @@ module Aspera
|
|
40
40
|
next unless File.directory?(folder)
|
41
41
|
# TODO: add gem root to load path ? and require short folder ?
|
42
42
|
# $LOAD_PATH.push(folder) if i[:add_path]
|
43
|
-
Dir.entries(folder).select{|file|file.end_with?(RUBY_FILE_EXT)}.each do |source|
|
43
|
+
Dir.entries(folder).select{ |file| file.end_with?(RUBY_FILE_EXT)}.each do |source|
|
44
44
|
add_plugin_info(File.join(folder, source))
|
45
45
|
end
|
46
46
|
end
|
@@ -27,7 +27,7 @@ module Aspera
|
|
27
27
|
entitlement_id = options.get_option(:username, mandatory: true)
|
28
28
|
customer_id = options.get_option(:password, mandatory: true)
|
29
29
|
api_metering = Api::Alee.new(entitlement_id, customer_id)
|
30
|
-
return
|
30
|
+
return Main.result_single_object(api_metering.read('entitlement'))
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|