zuora_connect 2.0.45 → 2.0.46a

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fb6362ea1828b6b6b38e032a6e1ba848045d52f8c9915569fe03b438afbda75a
4
- data.tar.gz: 21f29c71fbffa9fba6461055e015ee87a26675bfe9aba992b83ca4fa54299b9c
3
+ metadata.gz: a34f4afae372d7790b9304b6513451ab159dfebd4aaf4b0ac9d4eb1815a506f2
4
+ data.tar.gz: 032b9cc5dabbaac3e8a0c873b8511fe273a499909c51a5744ed2c9583db2c965
5
5
  SHA512:
6
- metadata.gz: 48461b8d413ceb41c6ad199f322cf316c8973011596a8c2b0f29bac04fae4bdfc0c7dcbc0456544b6a924a14594c27b4bf628ae67d5643c4ecad47271c3e3469
7
- data.tar.gz: e55b8ea4428428ad126d5374822e2665d4504a2a54f521f85025bddbc902ceb35dc51c5317701306bd30bed8e9c4923c7bbfeed364c2e5cc609d2e15c16bdbf8
6
+ metadata.gz: 4d3bb428adef914f118c7ffacdaad023fc9bae36d689ea76757a6c244be38f74fc7ff0f3dba8b0e8b5cadc61509ea0e2f7200984a446dfd5f3daaf005aaf80a7
7
+ data.tar.gz: 06dccc05037fe18c29501d2f9a5db21473e5e7492b80d525fa4c3c1abc1c3cae831ac206e32eea34a3d3022bb37697a8dfe164cfbabfb31c42f1d698f4cfda7f
@@ -56,6 +56,13 @@ module ZuoraConnect
56
56
  raise "The instance refresh window cannot be greater than the instance cache period"
57
57
  end
58
58
  self.apartment_switch(nil, false)
59
+
60
+ if ZuoraConnect.logger.is_a?(Ougai::Logger)
61
+ ZuoraConnect.logger.with_fields.merge!(default_ougai_items)
62
+ end
63
+ if Rails.logger.is_a?(Ougai::Logger)
64
+ Rails.logger.with_fields.merge!(default_ougai_items)
65
+ end
59
66
  end
60
67
 
61
68
  def initialize_redis_placeholders
@@ -121,7 +128,7 @@ module ZuoraConnect
121
128
  end
122
129
 
123
130
  def default_ougai_items
124
- return {app_instance_id: self.id}
131
+ return {app_instance_id: self.id, tenant_ids: self.zuora_tenant_ids, organization: self.organizations, environment: self.environment}
125
132
  end
126
133
 
127
134
  def new_session(session: self.data_lookup, username: self.access_token, password: self.refresh_token, holding_pattern: false, **args)
@@ -159,26 +166,26 @@ module ZuoraConnect
159
166
 
160
167
  if session.empty?
161
168
  self.new_session_message = "REFRESHING - Session Empty"
162
- ZuoraConnect.logger.debug(self.new_session_message, self.default_ougai_items)
169
+ ZuoraConnect.logger.debug(self.new_session_message)
163
170
  raise ZuoraConnect::Exceptions::HoldingPattern if holding_pattern && !self.mark_for_refresh
164
171
  self.refresh(session: session)
165
172
 
166
173
  elsif (self.id != session["appInstance"].to_i)
167
174
  self.new_session_message = "REFRESHING - AppInstance ID(#{self.id}) does not match session id(#{session["appInstance"].to_i})"
168
- ZuoraConnect.logger.debug(self.new_session_message, self.default_ougai_items)
175
+ ZuoraConnect.logger.debug(self.new_session_message)
169
176
  raise ZuoraConnect::Exceptions::HoldingPattern if holding_pattern && !self.mark_for_refresh
170
177
  self.refresh(session: session)
171
178
 
172
179
  elsif session["#{self.id}::task_data"].blank?
173
180
  self.new_session_message = "REFRESHING - Task Data Blank"
174
- ZuoraConnect.logger.debug(self.new_session_message, self.default_ougai_items)
181
+ ZuoraConnect.logger.debug(self.new_session_message)
175
182
  raise ZuoraConnect::Exceptions::HoldingPattern if holding_pattern && !self.mark_for_refresh
176
183
  self.refresh(session: session)
177
184
 
178
185
  elsif session["#{self.id}::last_refresh"].blank?
179
186
  self.new_session_message = "REFRESHING - No Time on Cookie"
180
187
  recoverable_session = true
181
- ZuoraConnect.logger.debug(self.new_session_message, self.default_ougai_items)
188
+ ZuoraConnect.logger.debug(self.new_session_message)
182
189
  raise ZuoraConnect::Exceptions::HoldingPattern if holding_pattern && !self.mark_for_refresh
183
190
  self.refresh(session: session)
184
191
 
@@ -186,7 +193,7 @@ module ZuoraConnect
186
193
  elsif (session["#{self.id}::last_refresh"].to_i < INSTANCE_REFRESH_WINDOW.ago.to_i) && self.mark_for_refresh
187
194
  self.new_session_message = "REFRESHING - Session Old by #{time_expire.abs} second"
188
195
  recoverable_session = true
189
- ZuoraConnect.logger.debug(self.new_session_message, self.default_ougai_items)
196
+ ZuoraConnect.logger.debug(self.new_session_message)
190
197
  self.refresh(session: session)
191
198
 
192
199
  else
@@ -195,14 +202,14 @@ module ZuoraConnect
195
202
  else
196
203
  self.new_session_message = "REBUILDING - Expires in #{time_expire} seconds"
197
204
  end
198
- ZuoraConnect.logger.debug(self.new_session_message, self.default_ougai_items)
205
+ ZuoraConnect.logger.debug(self.new_session_message)
199
206
  self.build_task(task_data: session["#{self.id}::task_data"], session: session)
200
207
  end
201
208
  end
202
209
  return self
203
210
  rescue ZuoraConnect::Exceptions::HoldingPattern => ex
204
211
  while self.marked_for_refresh?
205
- ZuoraConnect.logger.info("Holding - Expires in #{self.reset_mark_expires_at}. '#{self.new_session_message}'", self.default_ougai_items)
212
+ ZuoraConnect.logger.info("Holding - Expires in #{self.reset_mark_expires_at}. '#{self.new_session_message}'")
206
213
  sleep(HOLDING_PATTERN_SLEEP)
207
214
  end
208
215
  self.reload_attributes([:refresh_token, :oauth_expires_at, :access_token])
@@ -211,17 +218,17 @@ module ZuoraConnect
211
218
  rescue ZuoraConnect::Exceptions::MissMatch => ex
212
219
  self.delete_app_instance
213
220
  session = {}
214
- ZuoraConnect.logger.error(ex, self.default_ougai_items.merge({app_instance_id_new: self.task_data['id']}))
221
+ ZuoraConnect.logger.error(ex, app_instance_id_new: self.task_data['id'])
215
222
  retry
216
223
  rescue ZuoraConnect::Exceptions::InvalidCredentialSet => ex
217
224
  raise
218
225
  rescue => ex
219
226
  if recoverable_session
220
- ZuoraConnect.logger.warn("REBUILDING - Using backup expired cache", ex, self.default_ougai_items)
227
+ ZuoraConnect.logger.warn("REBUILDING - Using backup expired cache", ex)
221
228
  self.build_task(task_data: session["#{self.id}::task_data"], session: session)
222
229
  return self
223
230
  else
224
- ZuoraConnect.logger.error("Failed new session", ex, self.default_ougai_items)
231
+ ZuoraConnect.logger.error("Failed new session", ex)
225
232
  raise
226
233
  end
227
234
  ensure
@@ -243,19 +250,18 @@ module ZuoraConnect
243
250
  ElasticAPM.set_label(:organization, organizations.first)
244
251
  end
245
252
  end
246
- self.logitem(item: {tenant_ids: tenants, organization: organizations})
247
253
 
248
254
  params = {
249
- :name => self.task_data.dig('name'),
250
- :zuora_entity_ids => (self.task_data.dig(LOGIN_TENANT_DESTINATION,'entities') || []).map{|e| e['id']}.uniq,
251
- :zuora_tenant_ids => tenants.map(&:to_s).uniq,
255
+ name: self.task_data.dig('name'),
256
+ zuora_entity_ids: (self.task_data.dig(LOGIN_TENANT_DESTINATION,'entities') || []).map{|e| e['id']}.uniq,
257
+ zuora_tenant_ids: tenants.map(&:to_s).uniq,
258
+ organizations: organizations
252
259
  }
253
260
  if self.methods.include?(LOGIN_TENANT_DESTINATION.to_sym)
254
261
  client = self.send(LOGIN_TENANT_DESTINATION).client
255
262
  if defined?(client.rest_domain)
256
- zuora_domain = client.rest_domain
257
- ZuoraConnect::RequestIdMiddleware.zuora_rest_domain = zuora_domain
258
- params.merge!({:zuora_domain => zuora_domain })
263
+ ZuoraConnect::RequestIdMiddleware.zuora_rest_domain = client.rest_domain
264
+ params.merge!({zuora_domain: client.rest_domain, environment: client.environment })
259
265
  end
260
266
  end
261
267
  params = params.reject{|k,v| !self.attributes.keys.member?(k.to_s) || self[k] == v}
@@ -274,7 +280,7 @@ module ZuoraConnect
274
280
  response = HTTParty.get(ZuoraConnect.configuration.url + "/api/#{self.api_version}/tools/tasks/#{self.id}.json",:body => {:access_token => self.access_token})
275
281
  response_time = Time.now - start
276
282
 
277
- ZuoraConnect.logger.debug("REFRESH TASK - Connect Task Info Request Time #{response_time.round(2).to_s}", self.default_ougai_items)
283
+ ZuoraConnect.logger.debug("REFRESH TASK - Connect Task Info Request Time #{response_time.round(2).to_s}")
278
284
  if response.code == 200
279
285
  begin
280
286
  parsed_json = JSON.parse(response.body)
@@ -306,26 +312,26 @@ module ZuoraConnect
306
312
  refresh_count += 1
307
313
  if refresh_count < 3
308
314
  sleep(10)
309
- ZuoraConnect.logger.debug("REFRESH TASK - Connection Failure Retrying(#{refresh_count})", ex, self.default_ougai_items)
315
+ ZuoraConnect.logger.debug("REFRESH TASK - Connection Failure Retrying(#{refresh_count})", ex)
310
316
  retry
311
317
  else
312
- ZuoraConnect.logger.fatal("REFRESH TASK - Connection Failed", ex, self.default_ougai_items)
318
+ ZuoraConnect.logger.fatal("REFRESH TASK - Connection Failed", ex)
313
319
  raise
314
320
  end
315
321
  rescue ZuoraConnect::Exceptions::ConnectCommunicationError => ex
316
322
  refresh_count += 1
317
323
  if refresh_count < 3
318
- ZuoraConnect.logger.debug("REFRESH TASK - Communication Failure Retrying(#{refresh_count})", ex, self.default_ougai_items)
324
+ ZuoraConnect.logger.debug("REFRESH TASK - Communication Failure Retrying(#{refresh_count})", ex)
319
325
  self.refresh_oauth if ex.code == 401
320
326
  retry
321
327
  else
322
- ZuoraConnect.logger.fatal("REFRESH TASK - Communication Failed #{ex.code}", ex, self.default_ougai_items)
328
+ ZuoraConnect.logger.fatal("REFRESH TASK - Communication Failed #{ex.code}", ex)
323
329
  raise
324
330
  end
325
331
  end
326
332
  rescue => ex
327
333
  if self['zuora_logins'].present?
328
- ZuoraConnect.logger.warn("REFRESH TASK - Fallback to local encrypted store", ex, self.default_ougai_items)
334
+ ZuoraConnect.logger.warn("REFRESH TASK - Fallback to local encrypted store", ex)
329
335
  skip_connect = true
330
336
  retry
331
337
  end
@@ -637,7 +643,7 @@ module ZuoraConnect
637
643
  def check_oauth_state(method=nil)
638
644
  #Refresh token if already expired
639
645
  if self.oauth_expired?
640
- ZuoraConnect.logger.debug("Before '#{method}' method, Oauth expired", self.default_ougai_items)
646
+ ZuoraConnect.logger.debug("Before '#{method}' method, Oauth expired")
641
647
  self.refresh_oauth
642
648
  end
643
649
  end
@@ -656,7 +662,7 @@ module ZuoraConnect
656
662
  }
657
663
  response = HTTParty.post("#{ZuoraConnect.configuration.url}/oauth/token",:body => params)
658
664
  response_time = Time.now - start
659
- ZuoraConnect.logger.debug("REFRESH OAUTH - In #{response_time.round(2).to_s}", self.default_ougai_items)
665
+ ZuoraConnect.logger.debug("REFRESH OAUTH - In #{response_time.round(2).to_s}")
660
666
 
661
667
  if response.code == 200
662
668
  response_body = JSON.parse(response.body)
@@ -671,10 +677,10 @@ module ZuoraConnect
671
677
  rescue *(ZuoraAPI::Login::CONNECTION_EXCEPTIONS + ZuoraAPI::Login::CONNECTION_READ_EXCEPTIONS) => ex
672
678
  if (refresh_oauth_count += 1) < 3
673
679
  sleep(5)
674
- ZuoraConnect.logger.debug("REFRESH OAUTH - Connection Failure Retrying(#{refresh_oauth_count})", ex, self.default_ougai_items)
680
+ ZuoraConnect.logger.debug("REFRESH OAUTH - Connection Failure Retrying(#{refresh_oauth_count})", ex)
675
681
  retry
676
682
  else
677
- ZuoraConnect.logger.fatal("REFRESH OAUTH - Connection Failed", ex, self.default_ougai_items)
683
+ ZuoraConnect.logger.fatal("REFRESH OAUTH - Connection Failed", ex)
678
684
  raise
679
685
  end
680
686
  rescue ZuoraConnect::Exceptions::ConnectCommunicationError => ex
@@ -685,10 +691,10 @@ module ZuoraConnect
685
691
  return if !self.oauth_expired?
686
692
 
687
693
  if (refresh_oauth_count += 1) < 3
688
- ZuoraConnect.logger.debug("REFRESH OAUTH - Communication Failure Retrying(#{refresh_oauth_count})", ex, self.default_ougai_items)
694
+ ZuoraConnect.logger.debug("REFRESH OAUTH - Communication Failure Retrying(#{refresh_oauth_count})", ex)
689
695
  retry
690
696
  else
691
- ZuoraConnect.logger.fatal("REFRESH OAUTH - Communication Failed #{ex.code}", ex, self.default_ougai_items)
697
+ ZuoraConnect.logger.fatal("REFRESH OAUTH - Communication Failed #{ex.code}", ex)
692
698
  raise
693
699
  end
694
700
  end
@@ -738,10 +744,10 @@ module ZuoraConnect
738
744
  end
739
745
  end
740
746
  if cached_instance.blank?
741
- ZuoraConnect.logger.debug("Cached AppInstance Missing", self.default_ougai_items)
747
+ ZuoraConnect.logger.debug("Cached AppInstance Missing")
742
748
  return session
743
749
  else
744
- ZuoraConnect.logger.debug("Cached AppInstance Found", self.default_ougai_items)
750
+ ZuoraConnect.logger.debug("Cached AppInstance Found")
745
751
  return decrypt_data(data: cached_instance, rescue_return: session).merge(session)
746
752
  end
747
753
  else
@@ -757,7 +763,7 @@ module ZuoraConnect
757
763
  if defined?(Redis.current)
758
764
  #Task data must be present and the last refresh cannot be old. We dont want to overwite new cache data with old
759
765
  if self.task_data.present? && (self.last_refresh.to_i > INSTANCE_REFRESH_WINDOW.ago.to_i)
760
- ZuoraConnect.logger.debug("Caching AppInstance", self.default_ougai_items)
766
+ ZuoraConnect.logger.debug("Caching AppInstance")
761
767
  Redis.current.setex("AppInstance:#{self.id}", INSTANCE_REDIS_CACHE_PERIOD.to_i, self.encrypt_data(data: self.save_data))
762
768
  end
763
769
  end
@@ -821,10 +827,10 @@ module ZuoraConnect
821
827
  begin
822
828
  return JSON.parse(encryptor.decrypt_and_verify(CGI::unescape(data)))
823
829
  rescue ActiveSupport::MessageVerifier::InvalidSignature => ex
824
- ZuoraConnect.logger.error("Error Decrypting", ex, self.default_ougai_items) if log_fatal
830
+ ZuoraConnect.logger.error("Error Decrypting", ex) if log_fatal
825
831
  return rescue_return
826
832
  rescue JSON::ParserError => ex
827
- ZuoraConnect.logger.error("JSON Parse Error", ex, self.default_ougai_items) if log_fatal
833
+ ZuoraConnect.logger.error("JSON Parse Error", ex) if log_fatal
828
834
  return encryptor.decrypt_and_verify(CGI::unescape(data))
829
835
  end
830
836
  end
@@ -1185,7 +1191,7 @@ module ZuoraConnect
1185
1191
 
1186
1192
  def method_missing(method_sym, *arguments, &block)
1187
1193
  if method_sym.to_s.include?("login")
1188
- ZuoraConnect.logger.fatal("Method Missing #{method_sym}. Instance Data: #{self.task_data} Instance Logins: #{self.logins}", self.default_ougai_items)
1194
+ ZuoraConnect.logger.fatal("Method Missing #{method_sym}. Instance Data: #{self.task_data} Instance Logins: #{self.logins}")
1189
1195
  end
1190
1196
  super
1191
1197
  end
@@ -0,0 +1,13 @@
1
+ class AddEnvironmentFields < ActiveRecord::Migration[5.0]
2
+ def change
3
+ unless column_exists? :zuora_connect_app_instances, :environment
4
+ add_column :zuora_connect_app_instances, :environment, :text, default: ""
5
+ end
6
+ unless column_exists? :zuora_connect_app_instances, :organizations
7
+ add_column :zuora_connect_app_instances, :organizations, :jsonb, default: []
8
+ end
9
+ if column_exists? :zuora_connect_app_instances, :organizations
10
+ change_column :zuora_connect_app_instances, :organizations, :jsonb, default: []
11
+ end
12
+ end
13
+ end
@@ -23,12 +23,17 @@ module Ougai
23
23
  end
24
24
 
25
25
  def _call(severity, time, progname, data)
26
+ data.merge!({message: data.delete(:msg)})
27
+ if data[:timestamp].present?
28
+ time = data[:timestamp]
29
+ data.delete(:timestamp)
30
+ end
26
31
  dump({
27
32
  name: progname || @app_name,
28
33
  pid: $$,
29
34
  level: severity,
30
35
  timestamp: time.utc.strftime('%FT%T.%6NZ'),
31
- }.merge(data.merge({message: data.delete(:msg)})))
36
+ }.merge(data))
32
37
  end
33
38
 
34
39
  def convert_time(data)
@@ -83,10 +83,15 @@ module Resque
83
83
  else
84
84
  return reserve_without_round_robin
85
85
  end
86
+
86
87
 
87
- rescue Exception => e
88
- log "Error reserving job: #{e.inspect}"
89
- log e.backtrace.join("\n")
88
+ rescue Exception => ex
89
+ if defined?(Ougai::Logger) && Resque.logger.is_a?(Ougai::Logger)
90
+ log_with_severity :error, "Error reserving job", ex
91
+ else
92
+ log_with_severity :error, "Error reserving job: #{ex.inspect}"
93
+ log_with_severity :error, ex.backtrace.join("\n")
94
+ end
90
95
  raise e
91
96
  end
92
97
 
@@ -41,16 +41,6 @@ module ZuoraConnect
41
41
  data[:trace_id] = ZuoraConnect::RequestIdMiddleware.request_id if ZuoraConnect::RequestIdMiddleware.request_id.present?
42
42
  data[:zuora_trace_id] = ZuoraConnect::RequestIdMiddleware.zuora_request_id if ZuoraConnect::RequestIdMiddleware.zuora_request_id.present?
43
43
  #data[:traces] = {amazon_id: data[:trace_id], zuora_id: data[:zuora_trace_id]}
44
- if !['ElasticAPM', 'ResqueScheduler', 'ResquePool', 'Resque', 'Makara'].include?(name)
45
- if Thread.current[:appinstance].present? && Thread.current[:appinstance].id.present?
46
- data[:app_instance_id] = Thread.current[:appinstance].id
47
- logitems = Thread.current[:appinstance].logitems
48
- if logitems.present? && logitems.class == Hash
49
- data[:tenant_ids] = logitems[:tenant_ids] if logitems[:tenant_ids].present?
50
- data[:organization] = logitems[:organization] if logitems[:organization].present?
51
- end
52
- end
53
- end
54
44
  end
55
45
  else
56
46
  logger.formatter = Ougai::Formatters::Customizable.new(
@@ -86,16 +76,6 @@ module ZuoraConnect
86
76
  pid: Process.pid,
87
77
  message: name == "ActionMailer" ? msg.strip : msg
88
78
  }
89
- if !['ElasticAPM', 'ResqueScheduler', 'ResquePool','Resque', 'Makara'].include?(name)
90
- if Thread.current[:appinstance].present? && Thread.current[:appinstance].id.present?
91
- store[:app_instance_id] = Thread.current[:appinstance].id
92
- logitems = Thread.current[:appinstance].logitems
93
- if logitems.present? && logitems.class == Hash
94
- store[:tenant_ids] = logitems[:tenant_ids] if logitems[:tenant_ids].present?
95
- store[:organization] = logitems[:organization] if logitems[:organization].present?
96
- end
97
- end
98
- end
99
79
  JSON.dump(store) + "\n"
100
80
  else
101
81
  format('%s %s: %s', serverity.ljust(6), datetime, msg) + "\n"
@@ -62,7 +62,7 @@ module ZuoraConnect
62
62
  items.merge!({exception: event.payload[:exception]}) if event.payload[:exception].present?
63
63
 
64
64
  if Thread.current[:appinstance].present?
65
- items.merge!({appinstance_id: Thread.current[:appinstance].id, connect_user: Thread.current[:appinstance].connect_user, new_session: Thread.current[:appinstance].new_session_message})
65
+ items.merge!({connect_user: Thread.current[:appinstance].connect_user, new_session: Thread.current[:appinstance].new_session_message})
66
66
  if Thread.current[:appinstance].logitems.present? && Thread.current[:appinstance].logitems.class == Hash
67
67
  items.merge!(Thread.current[:appinstance].logitems)
68
68
  end
@@ -1,3 +1,3 @@
1
1
  module ZuoraConnect
2
- VERSION = "2.0.45"
2
+ VERSION = "2.0.46a"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zuora_connect
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.45
4
+ version: 2.0.46a
5
5
  platform: ruby
6
6
  authors:
7
7
  - Connect Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-02 00:00:00.000000000 Z
11
+ date: 2020-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apartment
@@ -338,6 +338,7 @@ files:
338
338
  - db/migrate/20190520232221_add_zuora_user_table_and_alter_app_instance_id_table.rb
339
339
  - db/migrate/20190520232222_add_unique_index.rb
340
340
  - db/migrate/20190520232223_add_provisioning_fields.rb
341
+ - db/migrate/20190520232224_add_environment_fields.rb
341
342
  - lib/logging/connect_formatter.rb
342
343
  - lib/metrics/influx/point_value.rb
343
344
  - lib/metrics/net.rb
@@ -413,9 +414,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
413
414
  version: '0'
414
415
  required_rubygems_version: !ruby/object:Gem::Requirement
415
416
  requirements:
416
- - - ">="
417
+ - - ">"
417
418
  - !ruby/object:Gem::Version
418
- version: '0'
419
+ version: 1.3.1
419
420
  requirements: []
420
421
  rubygems_version: 3.0.3
421
422
  signing_key: