aspera-cli 4.4.0 → 4.7.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
- data/README.md +2095 -1503
- data/bin/ascli +2 -1
- data/bin/asession +4 -5
- data/docs/test_env.conf +3 -0
- data/examples/aoc.rb +4 -3
- data/examples/faspex4.rb +25 -25
- data/examples/proxy.pac +1 -1
- data/examples/transfer.rb +17 -17
- data/lib/aspera/aoc.rb +238 -185
- data/lib/aspera/ascmd.rb +93 -83
- data/lib/aspera/ats_api.rb +11 -10
- data/lib/aspera/cli/basic_auth_plugin.rb +13 -14
- data/lib/aspera/cli/extended_value.rb +42 -33
- data/lib/aspera/cli/formater.rb +142 -108
- data/lib/aspera/cli/info.rb +17 -0
- data/lib/aspera/cli/listener/line_dump.rb +3 -2
- data/lib/aspera/cli/listener/logger.rb +2 -1
- data/lib/aspera/cli/listener/progress.rb +16 -18
- data/lib/aspera/cli/listener/progress_multi.rb +18 -21
- data/lib/aspera/cli/main.rb +173 -149
- data/lib/aspera/cli/manager.rb +163 -168
- data/lib/aspera/cli/plugin.rb +43 -31
- data/lib/aspera/cli/plugins/alee.rb +6 -6
- data/lib/aspera/cli/plugins/aoc.rb +405 -370
- data/lib/aspera/cli/plugins/ats.rb +86 -79
- data/lib/aspera/cli/plugins/bss.rb +14 -16
- data/lib/aspera/cli/plugins/config.rb +580 -362
- data/lib/aspera/cli/plugins/console.rb +23 -19
- data/lib/aspera/cli/plugins/cos.rb +18 -18
- data/lib/aspera/cli/plugins/faspex.rb +201 -158
- data/lib/aspera/cli/plugins/faspex5.rb +80 -57
- data/lib/aspera/cli/plugins/node.rb +183 -166
- data/lib/aspera/cli/plugins/orchestrator.rb +71 -67
- data/lib/aspera/cli/plugins/preview.rb +92 -96
- data/lib/aspera/cli/plugins/server.rb +79 -75
- data/lib/aspera/cli/plugins/shares.rb +35 -19
- data/lib/aspera/cli/plugins/sync.rb +20 -22
- data/lib/aspera/cli/transfer_agent.rb +76 -113
- data/lib/aspera/cli/version.rb +2 -1
- data/lib/aspera/colors.rb +35 -27
- data/lib/aspera/command_line_builder.rb +48 -34
- data/lib/aspera/cos_node.rb +29 -21
- data/lib/aspera/data_repository.rb +3 -2
- data/lib/aspera/environment.rb +50 -45
- data/lib/aspera/fasp/{manager.rb → agent_base.rb} +28 -25
- data/lib/aspera/fasp/{connect.rb → agent_connect.rb} +52 -43
- data/lib/aspera/fasp/{local.rb → agent_direct.rb} +58 -72
- data/lib/aspera/fasp/{http_gw.rb → agent_httpgw.rb} +37 -43
- data/lib/aspera/fasp/{node.rb → agent_node.rb} +35 -16
- data/lib/aspera/fasp/agent_trsdk.rb +104 -0
- data/lib/aspera/fasp/error.rb +2 -1
- data/lib/aspera/fasp/error_info.rb +68 -52
- data/lib/aspera/fasp/installation.rb +152 -124
- data/lib/aspera/fasp/listener.rb +1 -0
- data/lib/aspera/fasp/parameters.rb +87 -92
- data/lib/aspera/fasp/parameters.yaml +305 -249
- data/lib/aspera/fasp/resume_policy.rb +11 -14
- data/lib/aspera/fasp/transfer_spec.rb +26 -0
- data/lib/aspera/fasp/uri.rb +22 -21
- data/lib/aspera/faspex_gw.rb +55 -89
- data/lib/aspera/hash_ext.rb +4 -3
- data/lib/aspera/id_generator.rb +8 -7
- data/lib/aspera/keychain/encrypted_hash.rb +121 -0
- data/lib/aspera/keychain/macos_security.rb +90 -0
- data/lib/aspera/log.rb +55 -37
- data/lib/aspera/nagios.rb +13 -12
- data/lib/aspera/node.rb +30 -25
- data/lib/aspera/oauth.rb +175 -226
- data/lib/aspera/open_application.rb +4 -3
- data/lib/aspera/persistency_action_once.rb +6 -6
- data/lib/aspera/persistency_folder.rb +5 -9
- data/lib/aspera/preview/file_types.rb +6 -5
- data/lib/aspera/preview/generator.rb +25 -24
- data/lib/aspera/preview/options.rb +16 -14
- data/lib/aspera/preview/utils.rb +98 -98
- data/lib/aspera/{proxy_auto_config.erb.js → proxy_auto_config.js} +23 -31
- data/lib/aspera/proxy_auto_config.rb +111 -20
- data/lib/aspera/rest.rb +154 -135
- data/lib/aspera/rest_call_error.rb +2 -2
- data/lib/aspera/rest_error_analyzer.rb +23 -25
- data/lib/aspera/rest_errors_aspera.rb +15 -14
- data/lib/aspera/ssh.rb +12 -10
- data/lib/aspera/sync.rb +42 -41
- data/lib/aspera/temp_file_manager.rb +18 -14
- data/lib/aspera/timer_limiter.rb +2 -1
- data/lib/aspera/uri_reader.rb +7 -5
- data/lib/aspera/web_auth.rb +79 -76
- metadata +116 -29
- data/docs/Makefile +0 -66
- data/docs/README.erb.md +0 -3973
- data/docs/README.md +0 -13
- data/docs/diagrams.txt +0 -49
- data/docs/doc_tools.rb +0 -58
- data/lib/aspera/api_detector.rb +0 -60
- data/lib/aspera/cli/plugins/shares2.rb +0 -114
- data/lib/aspera/secrets.rb +0 -20
|
@@ -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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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=
|
|
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=
|
|
37
|
+
command=options.get_next_command([:current, :smart])
|
|
34
38
|
case command
|
|
35
39
|
when :smart
|
|
36
|
-
command=
|
|
40
|
+
command=options.get_next_command([:list,:submit])
|
|
37
41
|
case command
|
|
38
42
|
when :list
|
|
39
|
-
return {:
|
|
43
|
+
return {type: :object_list,data: api_console.read('smart_transfers')[:data]}
|
|
40
44
|
when :submit
|
|
41
|
-
smart_id =
|
|
42
|
-
params =
|
|
43
|
-
return {:
|
|
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=
|
|
50
|
+
command=options.get_next_command([:list])
|
|
47
51
|
case command
|
|
48
52
|
when :list
|
|
49
|
-
return {:
|
|
50
|
-
:
|
|
51
|
-
'from'=>
|
|
52
|
-
'to'=>
|
|
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
|
-
:
|
|
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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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=
|
|
24
|
+
command=options.get_next_command(ACTIONS)
|
|
25
25
|
case command
|
|
26
26
|
when :node
|
|
27
|
-
bucket_name=
|
|
27
|
+
bucket_name=options.get_option(:bucket,:mandatory)
|
|
28
28
|
# get service credentials, Hash, e.g. @json:@file:...
|
|
29
|
-
service_credentials=
|
|
30
|
-
storage_endpoint=
|
|
31
|
-
raise
|
|
32
|
-
raise
|
|
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 =
|
|
35
|
-
instance_id =
|
|
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=
|
|
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({:
|
|
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=
|
|
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
|