aspera-cli 4.7.0 → 4.9.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/README.md +1267 -999
- data/bin/ascli +20 -1
- data/bin/asession +37 -34
- data/docs/test_env.conf +7 -3
- data/examples/aoc.rb +13 -12
- data/examples/dascli +23 -0
- data/examples/faspex4.rb +34 -29
- data/examples/{transfer.rb → node.rb} +31 -59
- data/examples/server.rb +93 -0
- data/lib/aspera/aoc.rb +153 -143
- data/lib/aspera/ascmd.rb +56 -45
- data/lib/aspera/ats_api.rb +9 -6
- data/lib/aspera/cli/basic_auth_plugin.rb +18 -16
- data/lib/aspera/cli/extended_value.rb +33 -30
- data/lib/aspera/cli/formater.rb +105 -111
- data/lib/aspera/cli/info.rb +3 -2
- data/lib/aspera/cli/listener/line_dump.rb +1 -0
- data/lib/aspera/cli/listener/logger.rb +1 -0
- data/lib/aspera/cli/listener/progress.rb +13 -12
- data/lib/aspera/cli/listener/progress_multi.rb +21 -20
- data/lib/aspera/cli/main.rb +110 -90
- data/lib/aspera/cli/manager.rb +99 -88
- data/lib/aspera/cli/plugin.rb +98 -39
- data/lib/aspera/cli/plugins/alee.rb +6 -5
- data/lib/aspera/cli/plugins/aoc.rb +581 -450
- data/lib/aspera/cli/plugins/ats.rb +84 -83
- data/lib/aspera/cli/plugins/bss.rb +30 -27
- data/lib/aspera/cli/plugins/config.rb +488 -397
- data/lib/aspera/cli/plugins/console.rb +17 -15
- data/lib/aspera/cli/plugins/cos.rb +26 -35
- data/lib/aspera/cli/plugins/faspex.rb +206 -172
- data/lib/aspera/cli/plugins/faspex5.rb +109 -74
- data/lib/aspera/cli/plugins/node.rb +379 -189
- data/lib/aspera/cli/plugins/orchestrator.rb +71 -65
- data/lib/aspera/cli/plugins/preview.rb +131 -122
- data/lib/aspera/cli/plugins/server.rb +50 -150
- data/lib/aspera/cli/plugins/shares.rb +61 -27
- data/lib/aspera/cli/plugins/sync.rb +15 -14
- data/lib/aspera/cli/transfer_agent.rb +75 -64
- data/lib/aspera/cli/version.rb +2 -1
- data/lib/aspera/colors.rb +29 -28
- data/lib/aspera/command_line_builder.rb +50 -43
- data/lib/aspera/cos_node.rb +64 -38
- data/lib/aspera/data_repository.rb +1 -0
- data/lib/aspera/environment.rb +33 -10
- data/lib/aspera/fasp/agent_base.rb +35 -30
- data/lib/aspera/fasp/agent_connect.rb +35 -30
- data/lib/aspera/fasp/agent_direct.rb +68 -60
- data/lib/aspera/fasp/agent_httpgw.rb +71 -64
- data/lib/aspera/fasp/agent_node.rb +24 -23
- data/lib/aspera/fasp/agent_trsdk.rb +19 -20
- data/lib/aspera/fasp/error.rb +2 -1
- data/lib/aspera/fasp/error_info.rb +79 -68
- data/lib/aspera/fasp/installation.rb +130 -126
- data/lib/aspera/fasp/listener.rb +1 -0
- data/lib/aspera/fasp/parameters.rb +71 -60
- data/lib/aspera/fasp/parameters.yaml +69 -17
- data/lib/aspera/fasp/resume_policy.rb +14 -11
- data/lib/aspera/fasp/transfer_spec.rb +6 -5
- data/lib/aspera/fasp/uri.rb +25 -24
- data/lib/aspera/faspex_gw.rb +83 -72
- data/lib/aspera/hash_ext.rb +23 -13
- data/lib/aspera/id_generator.rb +16 -13
- data/lib/aspera/keychain/encrypted_hash.rb +61 -46
- data/lib/aspera/keychain/macos_security.rb +26 -24
- data/lib/aspera/log.rb +35 -39
- data/lib/aspera/nagios.rb +36 -28
- data/lib/aspera/node.rb +19 -19
- data/lib/aspera/oauth.rb +120 -100
- data/lib/aspera/open_application.rb +25 -22
- data/lib/aspera/persistency_action_once.rb +9 -8
- data/lib/aspera/persistency_folder.rb +13 -9
- data/lib/aspera/preview/file_types.rb +261 -266
- data/lib/aspera/preview/generator.rb +74 -73
- data/lib/aspera/preview/image_error.png +0 -0
- data/lib/aspera/preview/options.rb +7 -6
- data/lib/aspera/preview/utils.rb +30 -33
- data/lib/aspera/preview/video_error.png +0 -0
- data/lib/aspera/proxy_auto_config.rb +27 -23
- data/lib/aspera/rest.rb +73 -74
- data/lib/aspera/rest_call_error.rb +1 -0
- data/lib/aspera/rest_error_analyzer.rb +23 -19
- data/lib/aspera/rest_errors_aspera.rb +43 -40
- data/lib/aspera/secret_hider.rb +74 -0
- data/lib/aspera/ssh.rb +13 -10
- data/lib/aspera/sync.rb +49 -47
- data/lib/aspera/temp_file_manager.rb +7 -5
- data/lib/aspera/timer_limiter.rb +9 -8
- data/lib/aspera/uri_reader.rb +17 -18
- data/lib/aspera/web_auth.rb +17 -15
- data.tar.gz.sig +5 -0
- metadata +119 -35
- metadata.gz.sig +0 -0
- 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=[
|
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([
|
38
|
+
command = options.get_next_command(%i[current smart])
|
38
39
|
case command
|
39
40
|
when :smart
|
40
|
-
command=options.get_next_command([
|
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 {
|
54
|
-
|
55
|
-
'
|
56
|
-
|
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: [
|
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,'
|
14
|
-
options.add_opt_simple(:endpoint,'
|
15
|
-
options.add_opt_simple(:apikey,'
|
16
|
-
options.add_opt_simple(:crn,'
|
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,'
|
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=[
|
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
|
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
|
30
|
-
storage_endpoint=options.get_option(:endpoint
|
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
|
35
|
-
instance_id = options.get_option(:crn
|
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
|
-
|
38
|
-
|
39
|
-
[
|
40
|
-
|
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([
|
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
|