aspera-cli 4.6.0 → 4.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +427 -300
- data/bin/ascli +2 -1
- data/bin/asession +1 -0
- data/docs/test_env.conf +2 -0
- data/examples/aoc.rb +4 -3
- data/examples/faspex4.rb +21 -19
- data/examples/proxy.pac +1 -1
- data/examples/transfer.rb +15 -15
- data/lib/aspera/aoc.rb +135 -124
- data/lib/aspera/ascmd.rb +85 -75
- 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 +138 -111
- 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 +13 -16
- data/lib/aspera/cli/main.rb +122 -130
- data/lib/aspera/cli/manager.rb +146 -154
- data/lib/aspera/cli/plugin.rb +38 -34
- data/lib/aspera/cli/plugins/alee.rb +6 -6
- data/lib/aspera/cli/plugins/aoc.rb +273 -276
- data/lib/aspera/cli/plugins/ats.rb +82 -76
- data/lib/aspera/cli/plugins/bss.rb +14 -16
- data/lib/aspera/cli/plugins/config.rb +350 -306
- 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 +180 -159
- data/lib/aspera/cli/plugins/faspex5.rb +64 -54
- data/lib/aspera/cli/plugins/node.rb +147 -140
- data/lib/aspera/cli/plugins/orchestrator.rb +68 -66
- 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 +23 -24
- data/lib/aspera/cli/plugins/sync.rb +20 -22
- data/lib/aspera/cli/transfer_agent.rb +40 -39
- 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/agent_base.rb +22 -20
- data/lib/aspera/fasp/agent_connect.rb +13 -11
- data/lib/aspera/fasp/agent_direct.rb +48 -59
- data/lib/aspera/fasp/agent_httpgw.rb +33 -39
- data/lib/aspera/fasp/agent_node.rb +15 -13
- data/lib/aspera/fasp/agent_trsdk.rb +12 -14
- data/lib/aspera/fasp/error.rb +2 -1
- data/lib/aspera/fasp/error_info.rb +68 -52
- data/lib/aspera/fasp/installation.rb +106 -94
- data/lib/aspera/fasp/listener.rb +1 -0
- data/lib/aspera/fasp/parameters.rb +83 -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 -90
- data/lib/aspera/hash_ext.rb +4 -3
- data/lib/aspera/id_generator.rb +8 -7
- data/lib/aspera/keychain/encrypted_hash.rb +17 -16
- data/lib/aspera/keychain/macos_security.rb +6 -10
- data/lib/aspera/log.rb +25 -20
- data/lib/aspera/nagios.rb +13 -12
- data/lib/aspera/node.rb +30 -22
- 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 +115 -113
- 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 +64 -21
- data/docs/Makefile +0 -65
- data/docs/README.erb.md +0 -4424
- data/docs/README.md +0 -13
- data/docs/diagrams.txt +0 -49
- data/docs/doc_tools.rb +0 -58
- data/lib/aspera/cli/plugins/shares2.rb +0 -114
- data/lib/aspera/fasp/default.rb +0 -17
@@ -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
|