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/plugins/node'
|
3
4
|
require 'aspera/ats_api'
|
4
5
|
|
@@ -23,125 +24,125 @@ module Aspera
|
|
23
24
|
|
24
25
|
def server_by_cloud_region
|
25
26
|
# todo: provide list ?
|
26
|
-
cloud=options.get_option(:cloud
|
27
|
-
region=options.get_option(:region
|
27
|
+
cloud = options.get_option(:cloud,is_type: :mandatory).upcase
|
28
|
+
region = options.get_option(:region,is_type: :mandatory)
|
28
29
|
return @ats_api_pub.read("servers/#{cloud}/#{region}")[:data]
|
29
30
|
end
|
30
31
|
|
31
32
|
# require api key only if needed
|
32
33
|
def ats_api_pub_v1
|
33
34
|
return @ats_api_pub_v1_cache unless @ats_api_pub_v1_cache.nil?
|
34
|
-
@ats_api_pub_v1_cache=Rest.new({
|
35
|
-
base_url:
|
36
|
-
auth:
|
37
|
-
|
38
|
-
|
39
|
-
|
35
|
+
@ats_api_pub_v1_cache = Rest.new({
|
36
|
+
base_url: AtsApi.base_url + '/pub/v1',
|
37
|
+
auth: {
|
38
|
+
type: :basic,
|
39
|
+
username: options.get_option(:ats_key,is_type: :mandatory),
|
40
|
+
password: options.get_option(:ats_secret,is_type: :mandatory)}
|
40
41
|
})
|
41
42
|
end
|
42
43
|
|
43
44
|
def execute_action_access_key
|
44
|
-
commands=[
|
45
|
-
command=options.get_next_command(commands)
|
45
|
+
commands = %i[create list show modify delete node cluster entitlement]
|
46
|
+
command = options.get_next_command(commands)
|
46
47
|
# those dont require access key id
|
47
|
-
access_key_id=instance_identifier
|
48
|
+
access_key_id = instance_identifier unless %i[create list].include?(command)
|
48
49
|
case command
|
49
50
|
when :create
|
50
|
-
params=options.get_option(:params
|
51
|
-
server_data=nil
|
51
|
+
params = options.get_option(:params) || {}
|
52
|
+
server_data = nil
|
52
53
|
# if transfer_server_id not provided, get it from command line options
|
53
54
|
if !params.has_key?('transfer_server_id')
|
54
|
-
server_data=server_by_cloud_region
|
55
|
-
params['transfer_server_id']=server_data['id']
|
55
|
+
server_data = server_by_cloud_region
|
56
|
+
params['transfer_server_id'] = server_data['id']
|
56
57
|
end
|
57
58
|
Log.log.debug("using params: #{params}".bg_red.gray)
|
58
59
|
if params.has_key?('storage')
|
59
60
|
case params['storage']['type']
|
60
61
|
# here we need somehow to map storage type to field to get for auth end point
|
61
62
|
when 'ibm-s3'
|
62
|
-
server_data2=nil
|
63
|
+
server_data2 = nil
|
63
64
|
if server_data.nil?
|
64
|
-
server_data2
|
65
|
+
server_data2 = @ats_api_pub.all_servers.find{|s|s['id'].eql?(params['transfer_server_id'])}
|
65
66
|
raise "no such transfer server id: #{params['transfer_server_id']}" if server_data2.nil?
|
66
67
|
else
|
67
|
-
server_data2
|
68
|
+
server_data2 = @ats_api_pub.all_servers.find do |s|
|
68
69
|
s['cloud'].eql?(server_data['cloud']) &&
|
69
70
|
s['region'].eql?(server_data['region']) &&
|
70
71
|
s.has_key?('s3_authentication_endpoint')
|
71
|
-
end
|
72
|
+
end
|
72
73
|
raise "no such transfer server id: #{params['transfer_server_id']}" if server_data2.nil?
|
73
74
|
# specific one do not have s3 end point in id
|
74
|
-
params['transfer_server_id']=server_data2['id']
|
75
|
+
params['transfer_server_id'] = server_data2['id']
|
75
76
|
end
|
76
77
|
if !params['storage'].has_key?('authentication_endpoint')
|
77
78
|
params['storage']['endpoint'] = server_data2['s3_authentication_endpoint']
|
78
79
|
end
|
79
80
|
end
|
80
81
|
end
|
81
|
-
res=ats_api_pub_v1.create('access_keys',params)
|
82
|
+
res = ats_api_pub_v1.create('access_keys',params)
|
82
83
|
return {type: :single_object, data: res[:data]}
|
83
84
|
# TODO : action : modify, with "PUT"
|
84
85
|
when :list
|
85
|
-
params=options.get_option(:params
|
86
|
-
res=ats_api_pub_v1.read('access_keys',params)
|
86
|
+
params = options.get_option(:params) || {'offset' => 0,'max_results' => 1000}
|
87
|
+
res = ats_api_pub_v1.read('access_keys',params)
|
87
88
|
return {type: :object_list, data: res[:data]['data'], fields: ['name','id','created.at','modified.at']}
|
88
89
|
when :show
|
89
|
-
res=ats_api_pub_v1.read("access_keys/#{access_key_id}")
|
90
|
+
res = ats_api_pub_v1.read("access_keys/#{access_key_id}")
|
90
91
|
return {type: :single_object, data: res[:data]}
|
91
92
|
when :modify
|
92
|
-
params=options.get_option(:value
|
93
|
-
params['id']=access_key_id
|
93
|
+
params = options.get_option(:value,is_type: :mandatory)
|
94
|
+
params['id'] = access_key_id
|
94
95
|
ats_api_pub_v1.update("access_keys/#{access_key_id}",params)
|
95
96
|
return Main.result_status('modified')
|
96
97
|
when :entitlement
|
97
|
-
ak=ats_api_pub_v1.read("access_keys/#{access_key_id}")[:data]
|
98
|
-
api_bss=AoC.metering_api(ak['license']['entitlement_id'],ak['license']['customer_id'])
|
98
|
+
ak = ats_api_pub_v1.read("access_keys/#{access_key_id}")[:data]
|
99
|
+
api_bss = AoC.metering_api(ak['license']['entitlement_id'],ak['license']['customer_id'])
|
99
100
|
return {type: :single_object, data: api_bss.read('entitlement')[:data]}
|
100
101
|
when :delete
|
101
102
|
ats_api_pub_v1.delete("access_keys/#{access_key_id}")
|
102
103
|
return Main.result_status("deleted #{access_key_id}")
|
103
104
|
when :node
|
104
|
-
ak_data=ats_api_pub_v1.read("access_keys/#{access_key_id}")[:data]
|
105
|
-
server_data
|
105
|
+
ak_data = ats_api_pub_v1.read("access_keys/#{access_key_id}")[:data]
|
106
|
+
server_data = @ats_api_pub.all_servers.find {|i| i['id'].start_with?(ak_data['transfer_server_id'])}
|
106
107
|
raise CliError,'no such server found' if server_data.nil?
|
107
|
-
base_url=server_data['transfer_setup_url']
|
108
|
-
api_node=Rest.new({
|
109
|
-
base_url:
|
110
|
-
auth:
|
111
|
-
|
112
|
-
|
113
|
-
|
108
|
+
base_url = server_data['transfer_setup_url']
|
109
|
+
api_node = Rest.new({
|
110
|
+
base_url: base_url,
|
111
|
+
auth: {
|
112
|
+
type: :basic,
|
113
|
+
username: access_key_id,
|
114
|
+
password: @agents[:config].get_secret(url: base_url,username: access_key_id)
|
114
115
|
}})
|
115
|
-
command=options.get_next_command(Node::COMMON_ACTIONS)
|
116
|
+
command = options.get_next_command(Node::COMMON_ACTIONS)
|
116
117
|
return Node.new(@agents.merge(skip_basic_auth_options: true, node_api: api_node)).execute_action(command)
|
117
118
|
when :cluster
|
118
|
-
base_url=ats_api_pub_v1.params[:base_url]
|
119
|
-
rest_params={
|
120
|
-
base_url:
|
121
|
-
auth:
|
122
|
-
|
123
|
-
|
124
|
-
|
119
|
+
base_url = ats_api_pub_v1.params[:base_url]
|
120
|
+
rest_params = {
|
121
|
+
base_url: base_url,
|
122
|
+
auth: {
|
123
|
+
type: :basic,
|
124
|
+
username: access_key_id,
|
125
|
+
password: @agents[:config].get_secret(url: base_url, username: access_key_id)
|
125
126
|
}}
|
126
|
-
api_ak_auth=Rest.new(rest_params)
|
127
|
+
api_ak_auth = Rest.new(rest_params)
|
127
128
|
return {type: :single_object, data: api_ak_auth.read('servers')[:data]}
|
128
129
|
else raise 'INTERNAL ERROR'
|
129
130
|
end
|
130
131
|
end
|
131
132
|
|
132
133
|
def execute_action_cluster_pub
|
133
|
-
command=options.get_next_command([
|
134
|
+
command = options.get_next_command(%i[clouds list show])
|
134
135
|
case command
|
135
136
|
when :clouds
|
136
|
-
return {type: :single_object, data: @ats_api_pub.cloud_names, columns: [
|
137
|
+
return {type: :single_object, data: @ats_api_pub.cloud_names, columns: %w[id name]}
|
137
138
|
when :list
|
138
|
-
return {type: :object_list, data: @ats_api_pub.all_servers, fields: [
|
139
|
+
return {type: :object_list, data: @ats_api_pub.all_servers, fields: %w[id cloud region]}
|
139
140
|
when :show
|
140
|
-
if options.get_option(:cloud
|
141
|
-
server_data=server_by_cloud_region
|
141
|
+
if options.get_option(:cloud) || options.get_option(:region,is_type: :optional)
|
142
|
+
server_data = server_by_cloud_region
|
142
143
|
else
|
143
|
-
server_id=instance_identifier
|
144
|
-
server_data
|
144
|
+
server_id = instance_identifier
|
145
|
+
server_data = @ats_api_pub.all_servers.find {|i| i['id'].eql?(server_id)}
|
145
146
|
raise 'no such server id' if server_data.nil?
|
146
147
|
end
|
147
148
|
return {type: :single_object, data: server_data}
|
@@ -150,52 +151,52 @@ module Aspera
|
|
150
151
|
|
151
152
|
def ats_api_v2_auth_ibm(rest_add_headers={})
|
152
153
|
return Rest.new({
|
153
|
-
base_url:
|
154
|
-
headers:
|
155
|
-
auth:
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
154
|
+
base_url: AtsApi.base_url + '/v2',
|
155
|
+
headers: rest_add_headers,
|
156
|
+
auth: {
|
157
|
+
type: :oauth2,
|
158
|
+
base_url: 'https://iam.bluemix.net/identity',
|
159
|
+
#does not work: base_url: 'https://iam.cloud.ibm.com/identity',
|
160
|
+
crtype: :generic,
|
161
|
+
generic: {
|
162
|
+
grant_type: 'urn:ibm:params:oauth:grant-type:apikey',
|
163
|
+
response_type: 'cloud_iam',
|
164
|
+
apikey: options.get_option(:ibm_api_key,is_type: :mandatory)
|
165
|
+
}}})
|
165
166
|
end
|
166
167
|
|
167
168
|
def execute_action_api_key
|
168
|
-
command=options.get_next_command([
|
169
|
-
if [
|
170
|
-
concerned_id=instance_identifier
|
169
|
+
command = options.get_next_command(%i[instances create list show delete])
|
170
|
+
if %i[show delete].include?(command)
|
171
|
+
concerned_id = instance_identifier
|
171
172
|
end
|
172
|
-
rest_add_header={}
|
173
|
+
rest_add_header = {}
|
173
174
|
if !command.eql?(:instances)
|
174
|
-
instance=options.get_option(:instance
|
175
|
+
instance = options.get_option(:instance)
|
175
176
|
#Log.log.error("1>>#{instance}".red)
|
176
177
|
if instance.nil?
|
177
178
|
# Take the first Aspera on Cloud transfer service instance ID if not provided by user
|
178
|
-
instance=ats_api_v2_auth_ibm.read('instances')[:data]['data'].first
|
179
|
+
instance = ats_api_v2_auth_ibm.read('instances')[:data]['data'].first
|
179
180
|
self.format.display_status("using first instance: #{instance}")
|
180
181
|
end
|
181
182
|
#Log.log.error("2>>#{instance}".red)
|
182
|
-
rest_add_header={'X-ATS-Service-Instance-Id'=>instance}
|
183
|
+
rest_add_header = {'X-ATS-Service-Instance-Id' => instance}
|
183
184
|
end
|
184
|
-
ats_ibm_api=ats_api_v2_auth_ibm(rest_add_header)
|
185
|
+
ats_ibm_api = ats_api_v2_auth_ibm(rest_add_header)
|
185
186
|
case command
|
186
187
|
when :instances
|
187
|
-
instances=ats_ibm_api.read('instances')[:data]
|
188
|
+
instances = ats_ibm_api.read('instances')[:data]
|
188
189
|
Log.log.warn("more instances remaining: #{instances['remaining']}") unless instances['remaining'].to_i.eql?(0)
|
189
190
|
return {type: :value_list, data: instances['data'], name: 'instance'}
|
190
191
|
when :create
|
191
|
-
create_value=options.get_option(:value
|
192
|
-
created_key=ats_ibm_api.create('api_keys',create_value)[:data]
|
192
|
+
create_value = options.get_option(:value) || {}
|
193
|
+
created_key = ats_ibm_api.create('api_keys',create_value)[:data]
|
193
194
|
return {type: :single_object, data: created_key}
|
194
195
|
when :list # list known api keys in ATS (this require an api_key ...)
|
195
|
-
res=ats_ibm_api.read('api_keys',{'offset'=>0,'max_results'=>1000})
|
196
|
+
res = ats_ibm_api.read('api_keys',{'offset' => 0,'max_results' => 1000})
|
196
197
|
return {type: :value_list, data: res[:data]['data'], name: 'ats_id'}
|
197
198
|
when :show # show one of api_key in ATS
|
198
|
-
res=ats_ibm_api.read("api_keys/#{concerned_id}")
|
199
|
+
res = ats_ibm_api.read("api_keys/#{concerned_id}")
|
199
200
|
return {type: :single_object, data: res[:data]}
|
200
201
|
when :delete
|
201
202
|
ats_ibm_api.delete("api_keys/#{concerned_id}")
|
@@ -204,14 +205,14 @@ module Aspera
|
|
204
205
|
end
|
205
206
|
end
|
206
207
|
|
207
|
-
ACTIONS=[
|
208
|
+
ACTIONS = %i[cluster access_key api_key aws_trust_policy].freeze
|
208
209
|
|
209
210
|
# called for legacy and AoC
|
210
211
|
def execute_action_gen(ats_api_arg)
|
211
|
-
actions=ACTIONS
|
212
|
+
actions = ACTIONS.dup
|
212
213
|
actions.delete(:api_key) unless ats_api_arg.nil?
|
213
|
-
command=options.get_next_command(actions)
|
214
|
-
@ats_api_pub_v1_cache=ats_api_arg
|
214
|
+
command = options.get_next_command(actions)
|
215
|
+
@ats_api_pub_v1_cache = ats_api_arg
|
215
216
|
# keep as member variable as we may want to use the api in AoC name space
|
216
217
|
@ats_api_pub = AtsApi.new
|
217
218
|
case command
|
@@ -222,7 +223,7 @@ module Aspera
|
|
222
223
|
when :api_key # manage credential to access ATS API
|
223
224
|
return execute_action_api_key
|
224
225
|
when :aws_trust_policy
|
225
|
-
res=ats_api_pub_v1.read('aws/trustpolicy',{region: options.get_option(:region
|
226
|
+
res = ats_api_pub_v1.read('aws/trustpolicy',{region: options.get_option(:region,is_type: :mandatory)})[:data]
|
226
227
|
return {type: :single_object, data: res}
|
227
228
|
else raise 'ERROR'
|
228
229
|
end
|
@@ -1,19 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'aspera/rest'
|
3
4
|
|
4
5
|
module Aspera
|
5
6
|
module Cli
|
6
7
|
module Plugins
|
7
8
|
class Bss < BasicAuthPlugin
|
8
|
-
ACTIONS=[
|
9
|
+
ACTIONS = %i[subscription].freeze
|
9
10
|
|
10
|
-
FIELDS={
|
11
|
+
FIELDS = {
|
11
12
|
'bssSubscriptions' => %w[id name termVolumeGb termMonths trial startDate endDate plan renewalType chargeAgreementNumber customerName]
|
12
|
-
}
|
13
|
+
}.freeze
|
13
14
|
|
14
15
|
def initialize(env)
|
15
16
|
super(env)
|
16
|
-
@api_bss=env[:bss_api] if env.has_key?(:bss_api)
|
17
|
+
@api_bss = env[:bss_api] if env.has_key?(:bss_api)
|
17
18
|
end
|
18
19
|
|
19
20
|
def all_fields(name)
|
@@ -22,43 +23,45 @@ module Aspera
|
|
22
23
|
|
23
24
|
def execute_action
|
24
25
|
if @api_bss.nil?
|
25
|
-
key = options.get_option(:password
|
26
|
-
@api_bss=Rest.new(
|
27
|
-
|
28
|
-
|
26
|
+
key = options.get_option(:password,is_type: :mandatory)
|
27
|
+
@api_bss = Rest.new(
|
28
|
+
base_url: 'https://dashboard.bss.asperasoft.com/platform',
|
29
|
+
headers: {cookie: "_dashboard_key=#{key}"})
|
29
30
|
end
|
30
|
-
command=options.get_next_command(ACTIONS)
|
31
|
+
command = options.get_next_command(ACTIONS)
|
31
32
|
case command
|
32
33
|
when :subscription
|
33
|
-
command=options.get_next_command([
|
34
|
-
object='bssSubscriptions'
|
34
|
+
command = options.get_next_command(%i[find show instances])
|
35
|
+
object = 'bssSubscriptions'
|
35
36
|
case command
|
36
37
|
when :find
|
37
|
-
query = options.get_option(:query
|
38
|
-
value = options.get_option(:value
|
39
|
-
request={
|
40
|
-
'variables'=>{'filter'=>{'key'=>query,'value'=>value}},
|
41
|
-
'query'=>"query($filter: BssSubscriptionFilter!) {#{object}(filter: $filter) { #{all_fields('bssSubscriptions')} } }"
|
38
|
+
query = options.get_option(:query,is_type: :mandatory) # AOC_ORGANIZATION_QUERY AOC_USER_EMAIL
|
39
|
+
value = options.get_option(:value,is_type: :mandatory)
|
40
|
+
request = {
|
41
|
+
'variables' => {'filter' => {'key' => query,'value' => value}},
|
42
|
+
'query' => "query($filter: BssSubscriptionFilter!) {#{object}(filter: $filter) { #{all_fields('bssSubscriptions')} } }"
|
42
43
|
}
|
43
|
-
result
|
44
|
+
result = @api_bss.create('graphql',request)[:data]
|
44
45
|
# give fields to keep order
|
45
46
|
return {type: :object_list, data: result['data'][object],fields: FIELDS['bssSubscriptions']}
|
46
47
|
when :show
|
47
|
-
id = instance_identifier
|
48
|
-
request={
|
49
|
-
'variables'=>{'id'=>id},
|
50
|
-
'query'=>"query($id: ID!) {#{object}(id: $id) { #{all_fields('bssSubscriptions')} roleAssignments(uniqueSubjectId: true) { id subjectId }
|
48
|
+
id = instance_identifier
|
49
|
+
request = {
|
50
|
+
'variables' => {'id' => id},
|
51
|
+
'query' => "query($id: ID!) {#{object}(id: $id) { #{all_fields('bssSubscriptions')} roleAssignments(uniqueSubjectId: true) { id subjectId } "\
|
52
|
+
'instances { id state planId serviceId ssmSubscriptionId entitlement { id } aocOrganization { id subdomainName name status tier urlId trialExpiresAt '\
|
53
|
+
'users(organizationAdmin: true) { id name email atsAdmin subscriptionAdmin } } } } }'
|
51
54
|
}
|
52
|
-
result
|
55
|
+
result = @api_bss.create('graphql',request)[:data]['data'][object].first
|
53
56
|
result.delete('instances')
|
54
57
|
return {type: :single_object, data: result}
|
55
58
|
when :instances
|
56
|
-
id = instance_identifier
|
57
|
-
request={
|
58
|
-
'variables'=>{'id'=>id},
|
59
|
-
'query'=>"query($id: ID!) {#{object}(id: $id) { aocOrganization { id subdomainName name status tier urlId trialExpiresAt } } } }"
|
59
|
+
id = instance_identifier
|
60
|
+
request = {
|
61
|
+
'variables' => {'id' => id},
|
62
|
+
'query' => "query($id: ID!) {#{object}(id: $id) { aocOrganization { id subdomainName name status tier urlId trialExpiresAt } } } }"
|
60
63
|
}
|
61
|
-
result
|
64
|
+
result = @api_bss.create('graphql',request)[:data]['data'][object].first
|
62
65
|
return {type: :object_list, data: result['instances']}
|
63
66
|
end
|
64
67
|
end
|