aspera-cli 4.6.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.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +427 -300
  3. data/bin/ascli +2 -1
  4. data/bin/asession +1 -0
  5. data/docs/test_env.conf +2 -0
  6. data/examples/aoc.rb +4 -3
  7. data/examples/faspex4.rb +21 -19
  8. data/examples/proxy.pac +1 -1
  9. data/examples/transfer.rb +15 -15
  10. data/lib/aspera/aoc.rb +135 -124
  11. data/lib/aspera/ascmd.rb +85 -75
  12. data/lib/aspera/ats_api.rb +11 -10
  13. data/lib/aspera/cli/basic_auth_plugin.rb +13 -14
  14. data/lib/aspera/cli/extended_value.rb +42 -33
  15. data/lib/aspera/cli/formater.rb +138 -111
  16. data/lib/aspera/cli/info.rb +17 -0
  17. data/lib/aspera/cli/listener/line_dump.rb +3 -2
  18. data/lib/aspera/cli/listener/logger.rb +2 -1
  19. data/lib/aspera/cli/listener/progress.rb +16 -18
  20. data/lib/aspera/cli/listener/progress_multi.rb +13 -16
  21. data/lib/aspera/cli/main.rb +122 -130
  22. data/lib/aspera/cli/manager.rb +146 -154
  23. data/lib/aspera/cli/plugin.rb +38 -34
  24. data/lib/aspera/cli/plugins/alee.rb +6 -6
  25. data/lib/aspera/cli/plugins/aoc.rb +273 -276
  26. data/lib/aspera/cli/plugins/ats.rb +82 -76
  27. data/lib/aspera/cli/plugins/bss.rb +14 -16
  28. data/lib/aspera/cli/plugins/config.rb +350 -306
  29. data/lib/aspera/cli/plugins/console.rb +23 -19
  30. data/lib/aspera/cli/plugins/cos.rb +18 -18
  31. data/lib/aspera/cli/plugins/faspex.rb +180 -159
  32. data/lib/aspera/cli/plugins/faspex5.rb +64 -54
  33. data/lib/aspera/cli/plugins/node.rb +147 -140
  34. data/lib/aspera/cli/plugins/orchestrator.rb +68 -66
  35. data/lib/aspera/cli/plugins/preview.rb +92 -96
  36. data/lib/aspera/cli/plugins/server.rb +79 -75
  37. data/lib/aspera/cli/plugins/shares.rb +23 -24
  38. data/lib/aspera/cli/plugins/sync.rb +20 -22
  39. data/lib/aspera/cli/transfer_agent.rb +40 -39
  40. data/lib/aspera/cli/version.rb +2 -1
  41. data/lib/aspera/colors.rb +35 -27
  42. data/lib/aspera/command_line_builder.rb +48 -34
  43. data/lib/aspera/cos_node.rb +29 -21
  44. data/lib/aspera/data_repository.rb +3 -2
  45. data/lib/aspera/environment.rb +50 -45
  46. data/lib/aspera/fasp/agent_base.rb +22 -20
  47. data/lib/aspera/fasp/agent_connect.rb +13 -11
  48. data/lib/aspera/fasp/agent_direct.rb +48 -59
  49. data/lib/aspera/fasp/agent_httpgw.rb +33 -39
  50. data/lib/aspera/fasp/agent_node.rb +15 -13
  51. data/lib/aspera/fasp/agent_trsdk.rb +12 -14
  52. data/lib/aspera/fasp/error.rb +2 -1
  53. data/lib/aspera/fasp/error_info.rb +68 -52
  54. data/lib/aspera/fasp/installation.rb +106 -94
  55. data/lib/aspera/fasp/listener.rb +1 -0
  56. data/lib/aspera/fasp/parameters.rb +83 -92
  57. data/lib/aspera/fasp/parameters.yaml +305 -249
  58. data/lib/aspera/fasp/resume_policy.rb +11 -14
  59. data/lib/aspera/fasp/transfer_spec.rb +26 -0
  60. data/lib/aspera/fasp/uri.rb +22 -21
  61. data/lib/aspera/faspex_gw.rb +55 -90
  62. data/lib/aspera/hash_ext.rb +4 -3
  63. data/lib/aspera/id_generator.rb +8 -7
  64. data/lib/aspera/keychain/encrypted_hash.rb +17 -16
  65. data/lib/aspera/keychain/macos_security.rb +6 -10
  66. data/lib/aspera/log.rb +25 -20
  67. data/lib/aspera/nagios.rb +13 -12
  68. data/lib/aspera/node.rb +30 -22
  69. data/lib/aspera/oauth.rb +175 -226
  70. data/lib/aspera/open_application.rb +4 -3
  71. data/lib/aspera/persistency_action_once.rb +6 -6
  72. data/lib/aspera/persistency_folder.rb +5 -9
  73. data/lib/aspera/preview/file_types.rb +6 -5
  74. data/lib/aspera/preview/generator.rb +25 -24
  75. data/lib/aspera/preview/options.rb +16 -14
  76. data/lib/aspera/preview/utils.rb +98 -98
  77. data/lib/aspera/{proxy_auto_config.erb.js → proxy_auto_config.js} +23 -31
  78. data/lib/aspera/proxy_auto_config.rb +111 -20
  79. data/lib/aspera/rest.rb +115 -113
  80. data/lib/aspera/rest_call_error.rb +2 -2
  81. data/lib/aspera/rest_error_analyzer.rb +23 -25
  82. data/lib/aspera/rest_errors_aspera.rb +15 -14
  83. data/lib/aspera/ssh.rb +12 -10
  84. data/lib/aspera/sync.rb +42 -41
  85. data/lib/aspera/temp_file_manager.rb +18 -14
  86. data/lib/aspera/timer_limiter.rb +2 -1
  87. data/lib/aspera/uri_reader.rb +7 -5
  88. data/lib/aspera/web_auth.rb +79 -76
  89. metadata +64 -21
  90. data/docs/Makefile +0 -65
  91. data/docs/README.erb.md +0 -4424
  92. data/docs/README.md +0 -13
  93. data/docs/diagrams.txt +0 -49
  94. data/docs/doc_tools.rb +0 -58
  95. data/lib/aspera/cli/plugins/shares2.rb +0 -114
  96. data/lib/aspera/fasp/default.rb +0 -17
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'aspera/cli/plugins/node'
2
3
  require 'aspera/ats_api'
3
4
 
@@ -10,21 +11,20 @@ module Aspera
10
11
  class Ats < Plugin
11
12
  def initialize(env)
12
13
  super(env)
13
- self.options.add_opt_simple(:ibm_api_key,"IBM API key, see https://cloud.ibm.com/iam/apikeys")
14
- self.options.add_opt_simple(:instance,"ATS instance in ibm cloud")
15
- self.options.add_opt_simple(:ats_key,"ATS key identifier (ats_xxx)")
16
- self.options.add_opt_simple(:ats_secret,"ATS key secret")
17
- self.options.add_opt_simple(:params,"Parameters access key creation (@json:)")
18
- self.options.add_opt_simple(:cloud,"Cloud provider")
19
- self.options.add_opt_simple(:region,"Cloud region")
20
- self.options.parse_options!
14
+ options.add_opt_simple(:ibm_api_key,'IBM API key, see https://cloud.ibm.com/iam/apikeys')
15
+ options.add_opt_simple(:instance,'ATS instance in ibm cloud')
16
+ options.add_opt_simple(:ats_key,'ATS key identifier (ats_xxx)')
17
+ options.add_opt_simple(:ats_secret,'ATS key secret')
18
+ options.add_opt_simple(:params,'Parameters access key creation (@json:)')
19
+ options.add_opt_simple(:cloud,'Cloud provider')
20
+ options.add_opt_simple(:region,'Cloud region')
21
+ options.parse_options!
21
22
  end
22
23
 
23
- #
24
24
  def server_by_cloud_region
25
25
  # todo: provide list ?
26
- cloud=self.options.get_option(:cloud,:mandatory).upcase
27
- region=self.options.get_option(:region,:mandatory)
26
+ cloud=options.get_option(:cloud,:mandatory).upcase
27
+ region=options.get_option(:region,:mandatory)
28
28
  return @ats_api_pub.read("servers/#{cloud}/#{region}")[:data]
29
29
  end
30
30
 
@@ -32,22 +32,22 @@ module Aspera
32
32
  def ats_api_pub_v1
33
33
  return @ats_api_pub_v1_cache unless @ats_api_pub_v1_cache.nil?
34
34
  @ats_api_pub_v1_cache=Rest.new({
35
- :base_url => AtsApi.base_url+'/pub/v1',
36
- :auth => {
37
- :type => :basic,
38
- :username => self.options.get_option(:ats_key,:mandatory),
39
- :password => self.options.get_option(:ats_secret,:mandatory)}
35
+ base_url: AtsApi.base_url+'/pub/v1',
36
+ auth: {
37
+ type: :basic,
38
+ username: options.get_option(:ats_key,:mandatory),
39
+ password: options.get_option(:ats_secret,:mandatory)}
40
40
  })
41
41
  end
42
42
 
43
43
  def execute_action_access_key
44
44
  commands=[:create,:list,:show,:modify,:delete,:node,:cluster,:entitlement]
45
- command=self.options.get_next_command(commands)
45
+ command=options.get_next_command(commands)
46
46
  # those dont require access key id
47
- access_key_id=self.instance_identifier() unless [:create,:list].include?(command)
47
+ access_key_id=instance_identifier() unless [:create,:list].include?(command)
48
48
  case command
49
49
  when :create
50
- params=self.options.get_option(:params,:optional) || {}
50
+ params=options.get_option(:params,:optional) || {}
51
51
  server_data=nil
52
52
  # if transfer_server_id not provided, get it from command line options
53
53
  if !params.has_key?('transfer_server_id')
@@ -64,7 +64,11 @@ module Aspera
64
64
  server_data2=@ats_api_pub.all_servers.select{|s|s['id'].eql?(params['transfer_server_id'])}.first
65
65
  raise "no such transfer server id: #{params['transfer_server_id']}" if server_data2.nil?
66
66
  else
67
- server_data2=@ats_api_pub.all_servers.select{|s|s['cloud'].eql?(server_data['cloud']) and s['region'].eql?(server_data['region']) and s.has_key?('s3_authentication_endpoint')}.first
67
+ server_data2=@ats_api_pub.all_servers.select do |s|
68
+ s['cloud'].eql?(server_data['cloud']) &&
69
+ s['region'].eql?(server_data['region']) &&
70
+ s.has_key?('s3_authentication_endpoint')
71
+ end.first
68
72
  raise "no such transfer server id: #{params['transfer_server_id']}" if server_data2.nil?
69
73
  # specific one do not have s3 end point in id
70
74
  params['transfer_server_id']=server_data2['id']
@@ -75,97 +79,99 @@ module Aspera
75
79
  end
76
80
  end
77
81
  res=ats_api_pub_v1.create('access_keys',params)
78
- return {:type=>:single_object, :data=>res[:data]}
82
+ return {type: :single_object, data: res[:data]}
79
83
  # TODO : action : modify, with "PUT"
80
84
  when :list
81
- params=self.options.get_option(:params,:optional) || {'offset'=>0,'max_results'=>1000}
82
- res=ats_api_pub_v1.read("access_keys",params)
83
- return {:type=>:object_list, :data=>res[:data]['data'], :fields => ['name','id','created.at','modified.at']}
85
+ params=options.get_option(:params,:optional) || {'offset'=>0,'max_results'=>1000}
86
+ res=ats_api_pub_v1.read('access_keys',params)
87
+ return {type: :object_list, data: res[:data]['data'], fields: ['name','id','created.at','modified.at']}
84
88
  when :show
85
89
  res=ats_api_pub_v1.read("access_keys/#{access_key_id}")
86
- return {:type=>:single_object, :data=>res[:data]}
90
+ return {type: :single_object, data: res[:data]}
87
91
  when :modify
88
- params=self.options.get_option(:value,:mandatory)
89
- params["id"]=access_key_id
90
- res=ats_api_pub_v1.update("access_keys/#{access_key_id}",params)
92
+ params=options.get_option(:value,:mandatory)
93
+ params['id']=access_key_id
94
+ ats_api_pub_v1.update("access_keys/#{access_key_id}",params)
91
95
  return Main.result_status('modified')
92
96
  when :entitlement
93
97
  ak=ats_api_pub_v1.read("access_keys/#{access_key_id}")[:data]
94
98
  api_bss=AoC.metering_api(ak['license']['entitlement_id'],ak['license']['customer_id'])
95
- return {:type=>:single_object, :data=>api_bss.read('entitlement')[:data]}
99
+ return {type: :single_object, data: api_bss.read('entitlement')[:data]}
96
100
  when :delete
97
- res=ats_api_pub_v1.delete("access_keys/#{access_key_id}")
101
+ ats_api_pub_v1.delete("access_keys/#{access_key_id}")
98
102
  return Main.result_status("deleted #{access_key_id}")
99
103
  when :node
100
104
  ak_data=ats_api_pub_v1.read("access_keys/#{access_key_id}")[:data]
101
105
  server_data=@ats_api_pub.all_servers.select {|i| i['id'].start_with?(ak_data['transfer_server_id'])}.first
102
- raise CliError,"no such server found" if server_data.nil?
106
+ raise CliError,'no such server found' if server_data.nil?
103
107
  base_url=server_data['transfer_setup_url']
104
108
  api_node=Rest.new({
105
- :base_url => base_url,
106
- :auth => {
107
- :type => :basic,
108
- :username => access_key_id,
109
- :password => @agents[:config].get_secret(url: base_url,username: access_key_id)
109
+ base_url: base_url,
110
+ auth: {
111
+ type: :basic,
112
+ username: access_key_id,
113
+ password: @agents[:config].get_secret(url: base_url,username: access_key_id)
110
114
  }})
111
- command=self.options.get_next_command(Node::COMMON_ACTIONS)
115
+ command=options.get_next_command(Node::COMMON_ACTIONS)
112
116
  return Node.new(@agents.merge(skip_basic_auth_options: true, node_api: api_node)).execute_action(command)
113
117
  when :cluster
114
118
  base_url=ats_api_pub_v1.params[:base_url]
115
119
  rest_params={
116
- :base_url => base_url,
117
- :auth => {
118
- :type => :basic,
119
- :username => access_key_id,
120
- :password => @agents[:config].get_secret(url: base_url, username: access_key_id)
120
+ base_url: base_url,
121
+ auth: {
122
+ type: :basic,
123
+ username: access_key_id,
124
+ password: @agents[:config].get_secret(url: base_url, username: access_key_id)
121
125
  }}
122
126
  api_ak_auth=Rest.new(rest_params)
123
- return {:type=>:single_object, :data=>api_ak_auth.read("servers")[:data]}
124
- else raise "INTERNAL ERROR"
127
+ return {type: :single_object, data: api_ak_auth.read('servers')[:data]}
128
+ else raise 'INTERNAL ERROR'
125
129
  end
126
130
  end
127
131
 
128
132
  def execute_action_cluster_pub
129
- command=self.options.get_next_command([ :clouds, :list, :show])
133
+ command=options.get_next_command([:clouds, :list, :show])
130
134
  case command
131
135
  when :clouds
132
- return {:type=>:single_object, :data=>@ats_api_pub.cloud_names, :columns=>['id','name']}
136
+ return {type: :single_object, data: @ats_api_pub.cloud_names, columns: ['id','name']}
133
137
  when :list
134
- return {:type=>:object_list, :data=>@ats_api_pub.all_servers, :fields=>['id','cloud','region']}
138
+ return {type: :object_list, data: @ats_api_pub.all_servers, fields: ['id','cloud','region']}
135
139
  when :show
136
- if self.options.get_option(:cloud,:optional) or self.options.get_option(:region,:optional)
140
+ if options.get_option(:cloud,:optional) || options.get_option(:region,:optional)
137
141
  server_data=server_by_cloud_region
138
142
  else
139
143
  server_id=instance_identifier()
140
144
  server_data=@ats_api_pub.all_servers.select {|i| i['id'].eql?(server_id)}.first
141
- raise "no such server id" if server_data.nil?
145
+ raise 'no such server id' if server_data.nil?
142
146
  end
143
- return {:type=>:single_object, :data=>server_data}
147
+ return {type: :single_object, data: server_data}
144
148
  end
145
149
  end
146
150
 
147
151
  def ats_api_v2_auth_ibm(rest_add_headers={})
148
152
  return Rest.new({
149
- :base_url => AtsApi.base_url+'/v2',
150
- :headers => rest_add_headers,
151
- :auth => {
152
- :type => :oauth2,
153
- :base_url => 'https://iam.bluemix.net/identity',
154
- #does not work: :base_url => 'https://iam.cloud.ibm.com/identity',
155
- :grant => :ibm_apikey,
156
- :api_key => self.options.get_option(:ibm_api_key,:mandatory)
157
- }
158
- })
153
+ base_url: AtsApi.base_url+'/v2',
154
+ headers: rest_add_headers,
155
+ auth: {
156
+ type: :oauth2,
157
+ base_url: 'https://iam.bluemix.net/identity',
158
+ #does not work: base_url: 'https://iam.cloud.ibm.com/identity',
159
+ crtype: :generic,
160
+ generic: {
161
+ grant_type: 'urn:ibm:params:oauth:grant-type:apikey',
162
+ response_type: 'cloud_iam',
163
+ apikey: options.get_option(:ibm_api_key,:mandatory)
164
+ }}})
159
165
  end
160
166
 
161
167
  def execute_action_api_key
162
- command=self.options.get_next_command([:instances, :create, :list, :show, :delete])
168
+ command=options.get_next_command([:instances, :create, :list, :show, :delete])
163
169
  if [:show,:delete].include?(command)
164
- concerned_id=self.instance_identifier()
170
+ concerned_id=instance_identifier()
165
171
  end
166
172
  rest_add_header={}
167
173
  if !command.eql?(:instances)
168
- instance=self.options.get_option(:instance,:optional)
174
+ instance=options.get_option(:instance,:optional)
169
175
  #Log.log.error("1>>#{instance}".red)
170
176
  if instance.nil?
171
177
  # Take the first Aspera on Cloud transfer service instance ID if not provided by user
@@ -180,31 +186,31 @@ module Aspera
180
186
  when :instances
181
187
  instances=ats_ibm_api.read('instances')[:data]
182
188
  Log.log.warn("more instances remaining: #{instances['remaining']}") unless instances['remaining'].to_i.eql?(0)
183
- return {:type=>:value_list, :data=>instances['data'], :name=>'instance'}
189
+ return {type: :value_list, data: instances['data'], name: 'instance'}
184
190
  when :create
185
- create_value=self.options.get_option(:value,:optional)||{}
191
+ create_value=options.get_option(:value,:optional)||{}
186
192
  created_key=ats_ibm_api.create('api_keys',create_value)[:data]
187
- return {:type=>:single_object, :data=>created_key}
193
+ return {type: :single_object, data: created_key}
188
194
  when :list # list known api keys in ATS (this require an api_key ...)
189
195
  res=ats_ibm_api.read('api_keys',{'offset'=>0,'max_results'=>1000})
190
- return {:type=>:value_list, :data=>res[:data]['data'], :name => 'ats_id'}
196
+ return {type: :value_list, data: res[:data]['data'], name: 'ats_id'}
191
197
  when :show # show one of api_key in ATS
192
198
  res=ats_ibm_api.read("api_keys/#{concerned_id}")
193
- return {:type=>:single_object, :data=>res[:data]}
194
- when :delete #
195
- res=ats_ibm_api.delete("api_keys/#{concerned_id}")
199
+ return {type: :single_object, data: res[:data]}
200
+ when :delete
201
+ ats_ibm_api.delete("api_keys/#{concerned_id}")
196
202
  return Main.result_status("deleted #{concerned_id}")
197
- else raise "INTERNAL ERROR"
203
+ else raise 'INTERNAL ERROR'
198
204
  end
199
205
  end
200
206
 
201
- ACTIONS=[ :cluster, :access_key ,:api_key, :aws_trust_policy]
207
+ ACTIONS=[:cluster, :access_key,:api_key, :aws_trust_policy]
202
208
 
203
209
  # called for legacy and AoC
204
210
  def execute_action_gen(ats_api_arg)
205
211
  actions=ACTIONS
206
212
  actions.delete(:api_key) unless ats_api_arg.nil?
207
- command=self.options.get_next_command(actions)
213
+ command=options.get_next_command(actions)
208
214
  @ats_api_pub_v1_cache=ats_api_arg
209
215
  # keep as member variable as we may want to use the api in AoC name space
210
216
  @ats_api_pub = AtsApi.new
@@ -216,9 +222,9 @@ module Aspera
216
222
  when :api_key # manage credential to access ATS API
217
223
  return execute_action_api_key
218
224
  when :aws_trust_policy
219
- res=ats_api_pub_v1.read('aws/trustpolicy',{:region=>self.options.get_option(:region,:mandatory)})[:data]
220
- return {:type=>:single_object, :data=>res}
221
- else raise "ERROR"
225
+ res=ats_api_pub_v1.read('aws/trustpolicy',{region: options.get_option(:region,:mandatory)})[:data]
226
+ return {type: :single_object, data: res}
227
+ else raise 'ERROR'
222
228
  end
223
229
  end
224
230
 
@@ -1,21 +1,19 @@
1
+ # frozen_string_literal: true
1
2
  require 'aspera/rest'
2
3
 
3
4
  module Aspera
4
5
  module Cli
5
6
  module Plugins
6
7
  class Bss < BasicAuthPlugin
7
-
8
- ACTIONS=[ :subscription ]
8
+ ACTIONS=[:subscription]
9
9
 
10
10
  FIELDS={
11
- 'bssSubscriptions' => %w{id name termVolumeGb termMonths trial startDate endDate plan renewalType chargeAgreementNumber customerName}
11
+ 'bssSubscriptions' => %w[id name termVolumeGb termMonths trial startDate endDate plan renewalType chargeAgreementNumber customerName]
12
12
  }
13
13
 
14
14
  def initialize(env)
15
15
  super(env)
16
- if env.has_key?(:bss_api)
17
- @api_bss=env[:bss_api]
18
- end
16
+ @api_bss=env[:bss_api] if env.has_key?(:bss_api)
19
17
  end
20
18
 
21
19
  def all_fields(name)
@@ -24,44 +22,44 @@ module Aspera
24
22
 
25
23
  def execute_action
26
24
  if @api_bss.nil?
27
- key = self.options.get_option(:password,:mandatory)
25
+ key = options.get_option(:password,:mandatory)
28
26
  @api_bss=Rest.new(
29
27
  base_url: 'https://dashboard.bss.asperasoft.com/platform',
30
28
  headers: {cookie: "_dashboard_key=#{key}"})
31
29
  end
32
- command=self.options.get_next_command(ACTIONS)
30
+ command=options.get_next_command(ACTIONS)
33
31
  case command
34
32
  when :subscription
35
- command=self.options.get_next_command([:find,:show, :instances])
33
+ command=options.get_next_command([:find,:show, :instances])
36
34
  object='bssSubscriptions'
37
35
  case command
38
36
  when :find
39
- query = self.options.get_option(:query,:mandatory) # AOC_ORGANIZATION_QUERY AOC_USER_EMAIL
40
- value = self.options.get_option(:value,:mandatory)
37
+ query = options.get_option(:query,:mandatory) # AOC_ORGANIZATION_QUERY AOC_USER_EMAIL
38
+ value = options.get_option(:value,:mandatory)
41
39
  request={
42
40
  'variables'=>{'filter'=>{'key'=>query,'value'=>value}},
43
41
  'query'=>"query($filter: BssSubscriptionFilter!) {#{object}(filter: $filter) { #{all_fields('bssSubscriptions')} } }"
44
42
  }
45
43
  result=@api_bss.create('graphql',request)[:data]
46
44
  # give fields to keep order
47
- return {:type=>:object_list, :data=>result['data'][object],:fields=> FIELDS['bssSubscriptions']}
45
+ return {type: :object_list, data: result['data'][object],fields: FIELDS['bssSubscriptions']}
48
46
  when :show
49
- id = self.instance_identifier()
47
+ id = instance_identifier()
50
48
  request={
51
49
  'variables'=>{'id'=>id},
52
50
  'query'=>"query($id: ID!) {#{object}(id: $id) { #{all_fields('bssSubscriptions')} roleAssignments(uniqueSubjectId: true) { id subjectId } instances { id state planId serviceId ssmSubscriptionId entitlement { id } aocOrganization { id subdomainName name status tier urlId trialExpiresAt users(organizationAdmin: true) { id name email atsAdmin subscriptionAdmin } } } } }"
53
51
  }
54
52
  result=@api_bss.create('graphql',request)[:data]['data'][object].first
55
53
  result.delete('instances')
56
- return {:type=>:single_object, :data=>result}
54
+ return {type: :single_object, data: result}
57
55
  when :instances
58
- id = self.instance_identifier()
56
+ id = instance_identifier()
59
57
  request={
60
58
  'variables'=>{'id'=>id},
61
59
  'query'=>"query($id: ID!) {#{object}(id: $id) { aocOrganization { id subdomainName name status tier urlId trialExpiresAt } } } }"
62
60
  }
63
61
  result=@api_bss.create('graphql',request)[:data]['data'][object].first
64
- return {:type=>:object_list, :data=>result['instances']}
62
+ return {type: :object_list, data: result['instances']}
65
63
  end
66
64
  end
67
65
  end