zuora_connect 1.7.79 → 1.7.81aa

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 46906c17305be77a0ba215d50a2ea4ec7f30235d
4
- data.tar.gz: 267b86121e3ac0fb026a99c80ae02f80c081ba63
2
+ SHA256:
3
+ metadata.gz: ab13fc8d7e9c36ad2074d2e97b1b27b8d34a261b41f8209bee95bff710fb339c
4
+ data.tar.gz: e606836efe2c4d8bf36900fc2f782a082e2c6f782495465198754fc2eefb127e
5
5
  SHA512:
6
- metadata.gz: 2b93724ea04b3fcd639fb0c2c69001e37fe211832648948736faa3394dfd3f53af96403799ff534d95a0257bf324776c8f45c23b260c2c3cdefbdc316792cd17
7
- data.tar.gz: 33e3931d870c481361ee770707f90d7b58c0a1541c7815de33777301ae30787d843105cab346a1971ab1d30f1f76400a839938cbbb1bfdf9790068f7e939d0a8
6
+ metadata.gz: ec0e65a1878586d729fa737e1608195f25dcd46519637f461014a90bc5ca508dc48691f49889743efede381697cd2a6c4d55d59569077bd154d893817496de93
7
+ data.tar.gz: c53da17d05089474b3f858e9ab4b46e74621c5ad61748e28342f1e7c2bcf87c15367e8130bd5009c741f738f77df43f47c5ca39daba7a02cd8ab6af4153bb4f5
@@ -41,5 +41,18 @@ module ZuoraConnect
41
41
 
42
42
  end
43
43
 
44
+ def cache_bust
45
+ if defined?(Redis.current)
46
+ Redis.current.del("AppInstance:#{@appinstance.id}")
47
+ respond_to do |format|
48
+ format.json {render json: {}, status: :ok}
49
+ end
50
+ else
51
+ respond_to do |format|
52
+ format.json {render json: {}, status: :bad_request}
53
+ end
54
+ end
55
+ end
56
+
44
57
  end
45
58
  end
@@ -26,6 +26,19 @@ module ZuoraConnect
26
26
  end
27
27
 
28
28
  def health
29
+ if params[:error].present?
30
+ begin
31
+ raise ZuoraConnect::Exceptions::Error.new('This is an error')
32
+ rescue => ex
33
+ case params[:error]
34
+ when 'Log'
35
+ Rails.logger.error(ex)
36
+ when 'Exception'
37
+ raise
38
+ end
39
+ end
40
+ end
41
+
29
42
  render json: {
30
43
  message: "Alive",
31
44
  status: 200
@@ -42,8 +55,8 @@ module ZuoraConnect
42
55
  rescue
43
56
  render json: {
44
57
  message: "Failure initializing app instance",
45
- status: 400
46
- }, status: 400
58
+ status: 500
59
+ }, status: 500
47
60
  end
48
61
  end
49
62
 
@@ -27,7 +27,7 @@ module ZuoraConnect
27
27
  self.attr_builder("timezone", ZuoraConnect.configuration.default_time_zone)
28
28
  self.attr_builder("locale", ZuoraConnect.configuration.default_locale)
29
29
  PaperTrail.whodunnit = "Backend" if defined?(PaperTrail)
30
- if defined?(ElasticAPM)
30
+ if defined?(ElasticAPM) && ElasticAPM.running?
31
31
  ElasticAPM.set_user("Backend")
32
32
  ElasticAPM.set_tag(:app_instance, self.id)
33
33
  end
@@ -93,7 +93,7 @@ module ZuoraConnect
93
93
  self.last_refresh = session["#{self.id}::last_refresh"]
94
94
  self.connect_user = session["#{self.id}::user::email"] if session["#{self.id}::user::email"].present?
95
95
  PaperTrail.whodunnit = self.connect_user if defined?(PaperTrail)
96
- ElasticAPM.set_user(self.connect_user) if defined?(ElasticAPM)
96
+ ElasticAPM.set_user(self.connect_user) if defined?(ElasticAPM) && ElasticAPM.running?
97
97
  recoverable_session = false
98
98
 
99
99
  ## DEV MODE TASK DATA MOCKUP
@@ -120,26 +120,26 @@ module ZuoraConnect
120
120
 
121
121
  if session.empty?
122
122
  self.new_session_message = "REFRESHING - Session Empty"
123
- Rails.logger.add(log_level, self.new_session_message)
123
+ ZuoraConnect.logger.add(log_level, self.new_session_message)
124
124
  raise ZuoraConnect::Exceptions::HoldingPattern if holding_pattern && !self.mark_for_refresh
125
125
  self.refresh(session: session)
126
126
 
127
127
  elsif (self.id != session["appInstance"].to_i)
128
128
  self.new_session_message = "REFRESHING - AppInstance ID(#{self.id}) does not match session id(#{session["appInstance"].to_i})"
129
- Rails.logger.add(log_level, self.new_session_message)
129
+ ZuoraConnect.logger.add(log_level, self.new_session_message)
130
130
  raise ZuoraConnect::Exceptions::HoldingPattern if holding_pattern && !self.mark_for_refresh
131
131
  self.refresh(session: session)
132
132
 
133
133
  elsif session["#{self.id}::task_data"].blank?
134
134
  self.new_session_message = "REFRESHING - Task Data Blank"
135
- Rails.logger.add(log_level, self.new_session_message)
135
+ ZuoraConnect.logger.add(log_level, self.new_session_message)
136
136
  raise ZuoraConnect::Exceptions::HoldingPattern if holding_pattern && !self.mark_for_refresh
137
137
  self.refresh(session: session)
138
138
 
139
139
  elsif session["#{self.id}::last_refresh"].blank?
140
140
  self.new_session_message = "REFRESHING - No Time on Cookie"
141
141
  recoverable_session = true
142
- Rails.logger.add(log_level, self.new_session_message)
142
+ ZuoraConnect.logger.add(log_level, self.new_session_message)
143
143
  raise ZuoraConnect::Exceptions::HoldingPattern if holding_pattern && !self.mark_for_refresh
144
144
  self.refresh(session: session)
145
145
 
@@ -147,7 +147,7 @@ module ZuoraConnect
147
147
  elsif (session["#{self.id}::last_refresh"].to_i < INSTANCE_REFRESH_WINDOW.ago.to_i) && self.mark_for_refresh
148
148
  self.new_session_message = "REFRESHING - Session Old by #{time_expire.abs} second"
149
149
  recoverable_session = true
150
- Rails.logger.add(log_level, self.new_session_message)
150
+ ZuoraConnect.logger.add(log_level, self.new_session_message)
151
151
  self.refresh(session: session)
152
152
 
153
153
  else
@@ -156,14 +156,14 @@ module ZuoraConnect
156
156
  else
157
157
  self.new_session_message = "REBUILDING - Expires in #{time_expire} seconds"
158
158
  end
159
- Rails.logger.add(log_level, self.new_session_message)
159
+ ZuoraConnect.logger.add(log_level, self.new_session_message)
160
160
  self.build_task(task_data: session["#{self.id}::task_data"], session: session)
161
161
  end
162
162
  end
163
163
  return self
164
164
  rescue ZuoraConnect::Exceptions::HoldingPattern => ex
165
165
  while self.marked_for_refresh?
166
- Rails.logger.info("Holding - Expires in #{self.reset_mark_expires_at}. '#{self.new_session_message}'")
166
+ ZuoraConnect.logger.info("Holding - Expires in #{self.reset_mark_expires_at}. '#{self.new_session_message}'")
167
167
  sleep(HOLDING_PATTERN_SLEEP)
168
168
  end
169
169
  self.reload_attributes([:refresh_token, :oauth_expires_at, :access_token])
@@ -171,7 +171,7 @@ module ZuoraConnect
171
171
  retry
172
172
  rescue => ex
173
173
  if recoverable_session
174
- Rails.logger.error("REBUILDING - Using backup expired cache")
174
+ ZuoraConnect.logger.error("REBUILDING - Using backup expired cache")
175
175
  self.build_task(task_data: session["#{self.id}::task_data"], session: session)
176
176
  return self
177
177
  else
@@ -181,12 +181,12 @@ module ZuoraConnect
181
181
  begin
182
182
  I18n.locale = self.locale
183
183
  rescue I18n::InvalidLocale => ex
184
- Rails.logger.debug("Invalid Locale: #{ex.message}")
184
+ ZuoraConnect.logger.debug("Invalid Locale: #{ex.message}")
185
185
  end
186
186
  Time.zone = self.timezone
187
187
  tenants = self.task_data.dig('tenant_ids') || []
188
188
  organizations = self.task_data.dig('organizations') || []
189
- if defined?(ElasticAPM)
189
+ if defined?(ElasticAPM) && ElasticAPM.running?
190
190
  ElasticAPM.set_tag(:tenant_id, tenants.first)
191
191
  ElasticAPM.set_tag(:organization, organizations.first)
192
192
  end
@@ -200,33 +200,33 @@ module ZuoraConnect
200
200
  response = HTTParty.get(ZuoraConnect.configuration.url + "/api/#{self.api_version}/tools/tasks/#{self.id}.json",:body => {:access_token => self.access_token})
201
201
  response_time = Time.now - start
202
202
 
203
- Rails.logger.debug("[#{self.id}] REFRESH TASK - Connect Task Info Request Time #{response_time.round(2).to_s}")
203
+ ZuoraConnect.logger.debug("[#{self.id}] REFRESH TASK - Connect Task Info Request Time #{response_time.round(2).to_s}")
204
204
  if response.code == 200
205
205
  self.build_task(task_data: JSON.parse(response.body), session: session)
206
206
  self.last_refresh = Time.now.to_i
207
207
  self.cache_app_instance
208
208
  self.reset_mark_for_refresh
209
209
  else
210
- Rails.logger.fatal("[#{self.id}] REFRESH TASK - Failed Code #{response.code}")
210
+ ZuoraConnect.logger.fatal("[#{self.id}] REFRESH TASK - Failed Code #{response.code}")
211
211
  raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Error Communicating with Connect", response.body, response.code)
212
212
  end
213
213
  rescue *(ZuoraAPI::Login::CONNECTION_EXCEPTIONS).concat(ZuoraAPI::Login::CONNECTION_READ_EXCEPTIONS) => ex
214
214
  if (refresh_count += 1) < 3
215
- Rails.logger.info("[#{self.id}] REFRESH TASK - #{ex.class} Retrying(#{refresh_count})")
215
+ ZuoraConnect.logger.info("[#{self.id}] REFRESH TASK - #{ex.class} Retrying(#{refresh_count})")
216
216
  retry
217
217
  else
218
- Rails.logger.fatal("[#{self.id}] REFRESH TASK - #{ex.class} Failed #{refresh_count}x")
218
+ ZuoraConnect.logger.fatal("[#{self.id}] REFRESH TASK - #{ex.class} Failed #{refresh_count}x")
219
219
  raise
220
220
  end
221
221
  rescue ZuoraConnect::Exceptions::ConnectCommunicationError => ex
222
222
  if (refresh_count += 1) < 3
223
- Rails.logger.info("[#{self.id}] REFRESH TASK - Failed Retrying(#{refresh_count})")
223
+ ZuoraConnect.logger.info("[#{self.id}] REFRESH TASK - Failed Retrying(#{refresh_count})")
224
224
  if ex.code == 401
225
225
  self.refresh_oauth
226
226
  end
227
227
  retry
228
228
  else
229
- Rails.logger.fatal("[#{self.id}] REFRESH TASK - Failed #{refresh_count}x")
229
+ ZuoraConnect.logger.fatal("[#{self.id}] REFRESH TASK - Failed #{refresh_count}x")
230
230
  raise
231
231
  end
232
232
  end
@@ -316,8 +316,8 @@ module ZuoraConnect
316
316
  end
317
317
  end
318
318
  rescue => ex
319
- Rails.logger.error("Task Data: #{task_data}") if task_data.present?
320
- Rails.logger.error("Task Session: #{session.to_h}") if session.present?
319
+ ZuoraConnect.logger.error("Task Data: #{task_data}") if task_data.present?
320
+ ZuoraConnect.logger.error("Task Session: #{session.to_h}") if session.present?
321
321
  raise
322
322
  end
323
323
 
@@ -393,7 +393,7 @@ module ZuoraConnect
393
393
  def check_oauth_state(method)
394
394
  #Refresh token if already expired
395
395
  if self.oauth_expired?
396
- Rails.logger.debug("[#{self.id}] Before '#{method}' method, Oauth expired")
396
+ ZuoraConnect.logger.debug("[#{self.id}] Before '#{method}' method, Oauth expired")
397
397
  self.refresh_oauth
398
398
  end
399
399
  end
@@ -412,7 +412,7 @@ module ZuoraConnect
412
412
  }
413
413
  response = HTTParty.post("#{ZuoraConnect.configuration.url}/oauth/token",:body => params)
414
414
  response_time = Time.now - start
415
- Rails.logger.info("[#{self.id}] REFRESH OAUTH - In #{response_time.round(2).to_s}")
415
+ ZuoraConnect.logger.debug("[#{self.id}] REFRESH OAUTH - In #{response_time.round(2).to_s}")
416
416
 
417
417
  if response.code == 200
418
418
  response_body = JSON.parse(response.body)
@@ -422,15 +422,15 @@ module ZuoraConnect
422
422
  self.oauth_expires_at = Time.at(response_body["created_at"].to_i) + response_body["expires_in"].seconds
423
423
  self.save(:validate => false)
424
424
  else
425
- Rails.logger.fatal("[#{self.id}] REFRESH OAUTH - Failed Code #{response.code}")
425
+ ZuoraConnect.logger.fatal("[#{self.id}] REFRESH OAUTH - Failed Code #{response.code}")
426
426
  raise ZuoraConnect::Exceptions::ConnectCommunicationError.new("Error Refreshing Access Token", response.body, response.code)
427
427
  end
428
428
  rescue *(ZuoraAPI::Login::CONNECTION_EXCEPTIONS).concat(ZuoraAPI::Login::CONNECTION_READ_EXCEPTIONS) => ex
429
429
  if (refresh_oauth_count += 1) < 3
430
- Rails.logger.info("[#{self.id}] REFRESH OAUTH - #{ex.class} Retrying(#{refresh_oauth_count})")
430
+ ZuoraConnect.logger.info("[#{self.id}] REFRESH OAUTH - #{ex.class} Retrying(#{refresh_oauth_count})")
431
431
  retry
432
432
  else
433
- Rails.logger.fatal("[#{self.id}] REFRESH OAUTH - #{ex.class} Failed #{refresh_oauth_count}x")
433
+ ZuoraConnect.logger.fatal("[#{self.id}] REFRESH OAUTH - #{ex.class} Failed #{refresh_oauth_count}x")
434
434
  raise
435
435
  end
436
436
  rescue ZuoraConnect::Exceptions::ConnectCommunicationError => ex
@@ -441,10 +441,10 @@ module ZuoraConnect
441
441
  return if !self.oauth_expired?
442
442
 
443
443
  if (refresh_oauth_count += 1) < 3
444
- Rails.logger.info("[#{self.id}] REFRESH OAUTH - Failed Retrying(#{refresh_oauth_count})")
444
+ ZuoraConnect.logger.info("[#{self.id}] REFRESH OAUTH - Failed Retrying(#{refresh_oauth_count})")
445
445
  retry
446
446
  else
447
- Rails.logger.fatal("[#{self.id}] REFRESH OAUTH - Failed #{refresh_oauth_count}x")
447
+ ZuoraConnect.logger.fatal("[#{self.id}] REFRESH OAUTH - Failed #{refresh_oauth_count}x")
448
448
  raise
449
449
  end
450
450
  end
@@ -494,10 +494,10 @@ module ZuoraConnect
494
494
  end
495
495
  end
496
496
  if cached_instance.blank?
497
- Rails.logger.debug("[#{self.id}] Cached AppInstance Missing")
497
+ ZuoraConnect.logger.debug("[#{self.id}] Cached AppInstance Missing")
498
498
  return session
499
499
  else
500
- Rails.logger.debug("[#{self.id}] Cached AppInstance Found")
500
+ ZuoraConnect.logger.debug("[#{self.id}] Cached AppInstance Found")
501
501
  return decrypt_data(data: cached_instance, rescue_return: session).merge(session)
502
502
  end
503
503
  else
@@ -509,7 +509,7 @@ module ZuoraConnect
509
509
  if defined?(Redis.current)
510
510
  #Task data must be present and the last refresh cannot be old. We dont want to overwite new cache data with old
511
511
  if self.task_data.present? && (self.last_refresh.to_i > INSTANCE_REFRESH_WINDOW.ago.to_i)
512
- Rails.logger.debug("[#{self.id}] Caching AppInstance")
512
+ ZuoraConnect.logger.debug("[#{self.id}] Caching AppInstance")
513
513
  Redis.current.setex("AppInstance:#{self.id}", INSTANCE_REDIS_CACHE_PERIOD.to_i, self.encrypt_data(data: self.save_data))
514
514
  end
515
515
  end
@@ -570,7 +570,7 @@ module ZuoraConnect
570
570
  begin
571
571
  return JSON.parse(encryptor.decrypt_and_verify(CGI::unescape(data)))
572
572
  rescue ActiveSupport::MessageVerifier::InvalidSignature => ex
573
- Rails.logger.add(Logger::FATAL, 'Error Decrypting') if log_fatal
573
+ ZuoraConnect.logger.add(Logger::FATAL, 'Error Decrypting') if log_fatal
574
574
  return rescue_return
575
575
  rescue JSON::ParserError => ex
576
576
  return encryptor.decrypt_and_verify(CGI::unescape(data))
@@ -632,8 +632,8 @@ module ZuoraConnect
632
632
  self.update_column(:catalog_update_attempt_at, Time.now.utc)
633
633
 
634
634
  entity_reference = entity_id.blank? ? 'Default' : entity_id
635
- Rails.logger.debug("Fetch Catalog")
636
- Rails.logger.debug("Zuora Entity: #{entity_id.blank? ? 'default' : entity_id}")
635
+ ZuoraConnect.logger.debug("Fetch Catalog")
636
+ ZuoraConnect.logger.debug("Zuora Entity: #{entity_id.blank? ? 'default' : entity_id}")
637
637
 
638
638
  login = zuora_login.client(entity_reference)
639
639
 
@@ -644,12 +644,12 @@ module ZuoraConnect
644
644
  response = {'nextPage' => login.rest_endpoint("catalog/products?pageSize=#{page_size}")}
645
645
  while !response["nextPage"].blank?
646
646
  url = login.rest_endpoint(response["nextPage"].split('/v1/').last)
647
- Rails.logger.debug("Fetch Catalog URL #{url}")
647
+ ZuoraConnect.logger.debug("Fetch Catalog URL #{url}")
648
648
  output_json, response = login.rest_call(:debug => false, :url => url, :errors => [ZuoraAPI::Exceptions::ZuoraAPISessionError], :timeout_retry => true)
649
- Rails.logger.debug("Fetch Catalog Response Code #{response.code}")
649
+ ZuoraConnect.logger.debug("Fetch Catalog Response Code #{response.code}")
650
650
 
651
651
  if !output_json['success'] =~ (/(true|t|yes|y|1)$/i) || output_json['success'].class != TrueClass
652
- Rails.logger.error("Fetch Catalog DATA #{output_json.to_json}")
652
+ ZuoraConnect.logger.error("Fetch Catalog DATA #{output_json.to_json}")
653
653
  raise ZuoraAPI::Exceptions::ZuoraAPIError.new("Error Getting Catalog: #{output_json}")
654
654
  end
655
655
 
@@ -939,9 +939,9 @@ module ZuoraConnect
939
939
 
940
940
  def method_missing(method_sym, *arguments, &block)
941
941
  if method_sym.to_s.include?("login")
942
- Rails.logger.fatal("Method Missing #{method_sym}")
943
- Rails.logger.fatal("Instance Data: #{self.task_data}")
944
- Rails.logger.fatal("Instance Logins: #{self.logins}")
942
+ ZuoraConnect.logger.fatal("Method Missing #{method_sym}")
943
+ ZuoraConnect.logger.fatal("Instance Data: #{self.task_data}")
944
+ ZuoraConnect.logger.fatal("Instance Logins: #{self.logins}")
945
945
  end
946
946
  super
947
947
  end
@@ -12,14 +12,14 @@ module ZuoraConnect
12
12
  end
13
13
 
14
14
  def connect
15
- Rails.logger.debug(self.format_metric_log('Telegraf','Need new connection')) if ZuoraConnect.configuration.telegraf_debug
15
+ ZuoraConnect.logger.debug(self.format_metric_log('Telegraf','Need new connection')) if ZuoraConnect.configuration.telegraf_debug
16
16
  uri = URI.parse(ZuoraConnect.configuration.telegraf_endpoint)
17
17
  self.host = UDPSocket.new.tap do |socket|
18
18
  socket.connect uri.host, uri.port
19
19
  end
20
20
  rescue => ex
21
21
  self.host = nil
22
- Rails.logger.warn(self.format_metric_log('Telegraf', "Failed to connect: #{ex.class}"))
22
+ ZuoraConnect.logger.warn(self.format_metric_log('Telegraf', "Failed to connect: #{ex.class}"))
23
23
  end
24
24
 
25
25
  def write(direction: 'Unknown', tags: {}, values: {})
@@ -44,9 +44,9 @@ module ZuoraConnect
44
44
  end
45
45
  end
46
46
  if ZuoraConnect.configuration.telegraf_debug
47
- Rails.logger.debug(self.format_metric_log('Telegraf', tags.to_s))
48
- Rails.logger.debug(self.format_metric_log('Telegraf', values.to_s))
49
- Rails.logger.debug(self.format_metric_log('Telegraf', "Writing '#{direction.capitalize}': #{time.real.round(5)} ms"))
47
+ ZuoraConnect.logger.debug(self.format_metric_log('Telegraf', tags.to_s))
48
+ ZuoraConnect.logger.debug(self.format_metric_log('Telegraf', values.to_s))
49
+ ZuoraConnect.logger.debug(self.format_metric_log('Telegraf', "Writing '#{direction.capitalize}': #{time.real.round(5)} ms"))
50
50
  end
51
51
  end
52
52
 
@@ -56,14 +56,18 @@ module ZuoraConnect
56
56
  self.host.write InfluxDB::PointValue.new({series: series, tags: tags, values: values}).dump
57
57
  rescue => ex
58
58
  self.connect
59
- Rails.logger.warn(self.format_metric_log('Telegraf',"Failed to write udp: #{ex.class}"))
59
+ ZuoraConnect.logger.warn(self.format_metric_log('Telegraf',"Failed to write udp: #{ex.class}"))
60
60
  end
61
61
 
62
62
  def format_metric_log(message, dump = nil)
63
63
  message_color, dump_color = "1;91", "0;1"
64
64
  log_entry = " \e[#{message_color}m#{message}\e[0m "
65
65
  log_entry << "\e[#{dump_color}m%#{String === dump ? 's' : 'p'}\e[0m" % dump if dump
66
- log_entry
66
+ if Rails.env == :development
67
+ log_entry
68
+ else
69
+ [message, dump].compact.join(' - ')
70
+ end
67
71
  end
68
72
 
69
73
  def self.app_name
@@ -19,4 +19,13 @@ Resque.module_eval do
19
19
 
20
20
  Hash[queue_names.zip(sizes)]
21
21
  end
22
- end
22
+ end
23
+
24
+ if defined?(Resque)
25
+ Resque.logger = ZuoraConnect.custom_logger(name: "Resque", type: 'Monologger')
26
+ Resque::Scheduler.logger = ZuoraConnect.custom_logger(name: "ResqueScheduler") if defined?(Resque::Scheduler)
27
+ end
28
+
29
+ Makara::Logging::Logger.logger = ZuoraConnect.custom_logger(name: "Makara") if defined?(Makara)
30
+ ElasticAPM.agent.config.logger = ZuoraConnect.custom_logger(name: "ElasticAPM", level: MonoLogger::WARN) if defined?(ElasticAPM) && ElasticAPM.running?
31
+ ActionMailer::Base.logger = ZuoraConnect.custom_logger(name: "ActionMailer", type: 'Monologger') if defined?(ActionMailer)
@@ -2,7 +2,8 @@ if defined?(Unicorn::WorkerKiller)
2
2
  Unicorn::WorkerKiller.module_eval do
3
3
  self.singleton_class.send(:alias_method, :kill_self_old, :kill_self)
4
4
  def self.kill_self(logger, start_time)
5
- self.kill_self_old(logger, start_time)
5
+ @unicorn_logger ||= ZuoraConnect.custom_logger(name: "UnicornKiller")
6
+ self.kill_self_old(@unicorn_logger, start_time)
6
7
  ZuoraConnect::AppInstance.write_to_telegraf(direction: 'Unicorn-Killer', tags: {app_instance: 0}, values: {kill: 1})
7
8
  end
8
9
  end
@@ -9,6 +9,7 @@ ZuoraConnect::Engine.routes.draw do
9
9
  namespace :v1 do
10
10
  resources :app_instance, :only => [:index], defaults: {format: :json} do
11
11
  match "drop", via: [:get, :post], on: :collection
12
+ match "cache_bust", via: [:get, :post], on: :collection
12
13
  end
13
14
  end
14
15
  end
@@ -0,0 +1,39 @@
1
+ require 'ougai/formatters/base'
2
+ require 'ougai/formatters/for_json'
3
+
4
+ module Ougai
5
+ module Formatters
6
+ # A JSON formatter compatible with node-bunyan
7
+ class ConnectFormatter < Base
8
+ include ForJson
9
+
10
+ # Intialize a formatter
11
+ # @param [String] app_name application name (execution program name if nil)
12
+ # @param [String] hostname hostname (hostname if nil)
13
+ # @param [Hash] opts the initial values of attributes
14
+ # @option opts [String] :trace_indent (2) the value of trace_indent attribute
15
+ # @option opts [String] :trace_max_lines (100) the value of trace_max_lines attribute
16
+ # @option opts [String] :serialize_backtrace (true) the value of serialize_backtrace attribute
17
+ # @option opts [String] :jsonize (true) the value of jsonize attribute
18
+ # @option opts [String] :with_newline (true) the value of with_newline attribute
19
+ def initialize(app_name = nil, hostname = nil, opts = {})
20
+ aname, hname, opts = Base.parse_new_params([app_name, hostname, opts])
21
+ super(aname, hname, opts)
22
+ init_opts_for_json(opts)
23
+ end
24
+
25
+ def _call(severity, time, progname, data)
26
+ dump({
27
+ name: progname || @app_name,
28
+ pid: $$,
29
+ level: severity,
30
+ timestamp: time.utc.strftime('%FT%T.%6NZ'),
31
+ }.merge(data.merge({message: data.delete(:msg)})))
32
+ end
33
+
34
+ def convert_time(data)
35
+ #data[:timestamp] = format_datetime(data[:time])
36
+ end
37
+ end
38
+ end
39
+ end
@@ -162,7 +162,7 @@ class HttpLogger
162
162
  end
163
163
 
164
164
  def format_log_entry(message, dump = nil)
165
- if self.class.colorize
165
+ if self.class.colorize && Rails.configuration.colorize_logging
166
166
  message_color, dump_color = "4;32;1", "0;1"
167
167
  log_entry = " \e[#{message_color}m#{message}\e[0m "
168
168
  log_entry << "\e[#{dump_color}m%#{String === dump ? 's' : 'p'}\e[0m" % dump if dump
@@ -212,7 +212,7 @@ if defined?(Rails)
212
212
  if defined?(ActiveSupport) && ActiveSupport.respond_to?(:on_load)
213
213
  # Rails3
214
214
  ActiveSupport.on_load(:after_initialize) do
215
- HttpLogger.logger = Rails.logger unless HttpLogger.logger
215
+ HttpLogger.logger = ZuoraConnect.logger unless HttpLogger.logger
216
216
  end
217
217
  end
218
218
  end
@@ -1,4 +1,4 @@
1
- module Middleware
1
+ module ZuoraConnect
2
2
  require 'uri'
3
3
 
4
4
  # Object of this class is passed to the ActiveSupport::Notification hook
@@ -0,0 +1,14 @@
1
+ module ZuoraConnect
2
+ class RequestIdMiddleware
3
+ mattr_accessor :request_id
4
+
5
+ def initialize(app)
6
+ @app = app
7
+ end
8
+
9
+ def call(env)
10
+ self.request_id = env['action_dispatch.request_id']
11
+ @app.call(env)
12
+ end
13
+ end
14
+ end
@@ -7,28 +7,7 @@ module Resque
7
7
  module Plugins
8
8
  module CustomLogger
9
9
  def before_perform(*args)
10
- marker = SecureRandom.uuid
11
-
12
- logger = MonoLogger.new(STDOUT)
13
- logger.level = Rails.application.config.log_level
14
- logger.formatter = proc do |serverity, datetime, progname, msg|
15
- begin
16
- msg = JSON.parse(msg)
17
- rescue JSON::ParserError => ex
18
- end
19
-
20
- require 'json'
21
- JSON.dump(
22
- trace_id: marker,
23
- level: serverity,
24
- timestamp: datetime.strftime('%FT%T.%6N'),
25
- pid: Process.pid,
26
- msg: msg
27
- ) + "\n"
28
- end
29
-
30
- Resque.logger = logger
31
- Rails.logger = logger
10
+ Rails.logger.with_fields = { trace_id: SecureRandom.uuid, name: "RailsWorker"} if Rails.logger.class.to_s == 'Ougai::Logger'
32
11
  case args.class.to_s
33
12
  when "Array"
34
13
  if args.first.class == Hash
@@ -39,8 +18,10 @@ module Resque
39
18
  when "Hash"
40
19
  data = args.merge({:worker_class => self.to_s})
41
20
  end
42
- Rails.logger.info(data.to_json) if data.present?
21
+ data = {:msg => 'Starting job', :job => data}
22
+ data.merge!({:app_instance_id => data.dig(:job, 'app_instance_id')}) if data.dig(:job, 'app_instance_id').present?
23
+ Rails.logger.info(data) if data.present?
43
24
  end
44
25
  end
45
26
  end
46
- end
27
+ end
@@ -9,13 +9,79 @@ require 'resque/dynamic_queues'
9
9
  require 'resque/silence_done'
10
10
  require 'resque/self_lookup'
11
11
  require 'resque/plugins/custom_logger'
12
+ require 'logging/connect_formatter'
12
13
  require 'metrics/influx/point_value'
13
14
  require 'metrics/net'
14
15
 
15
16
  module ZuoraConnect
16
17
  class << self
17
18
  attr_accessor :configuration
19
+ attr_writer :logger
20
+
21
+ def logger
22
+ case Rails.env.to_s
23
+ when 'development'
24
+ Rails.logger
25
+ else
26
+ @logger ||= custom_logger(name: "Connect", level: Rails.logger.level)
27
+ end
28
+ end
29
+
30
+ def custom_logger(name: "", level: Rails.logger.present? ? Rails.logger.level : MonoLogger::INFO, type: :ougai)
31
+ #puts name + ' - ' + {Logger::WARN => 'Logger::WARN', Logger::ERROR => 'Logger::ERROR', Logger::DEBUG => 'Logger::DEBUG', Logger::INFO => 'Logger::INFO' }[level] + ' - '
32
+ if type == :ougai
33
+ require 'ougai'
34
+ #logger = Ougai::Logger.new(MonoLogger.new(STDOUT))
35
+ logger = Ougai::Logger.new(STDOUT)
36
+ logger.formatter = Ougai::Formatters::ConnectFormatter.new(name)
37
+ logger.level = level
38
+ logger.before_log = lambda do |data|
39
+ data[:trace_id] = ZuoraConnect::RequestIdMiddleware.request_id if ZuoraConnect::RequestIdMiddleware.request_id.present?
40
+ if !['ElasticAPM', 'ResqueScheduler', 'Resque', 'Makara'].include?(name)
41
+ if Thread.current[:appinstance].present?
42
+ data[:app_instance_id] = Thread.current[:appinstance].id
43
+ logitems = Thread.current[:appinstance].logitems
44
+ if logitems.present? && logitems.class == Hash
45
+ data[:tenant_ids] = logitems[:tenant_ids] if logitems[:tenant_ids].present?
46
+ data[:organization] = logitems[:organization] if logitems[:organization].present?
47
+ end
48
+ end
49
+ end
50
+ end
51
+ else
52
+ logger = MonoLogger.new(STDOUT)
53
+ logger.level = level
54
+ logger.formatter = proc do |serverity, datetime, progname, msg|
55
+ begin
56
+ msg = JSON.parse(msg)
57
+ rescue JSON::ParserError => ex
58
+ end
59
+
60
+ require 'json'
61
+ store = {
62
+ name: name,
63
+ level: serverity,
64
+ timestamp: datetime.strftime('%FT%T.%6NZ'),
65
+ pid: Process.pid,
66
+ message: name == "ActionMailer" ? msg.strip : msg
67
+ }
68
+ if !['ElasticAPM', 'ResqueScheduler', 'Resque', 'Makara'].include?(name)
69
+ if Thread.current[:appinstance].present?
70
+ store[:app_instance_id] = Thread.current[:appinstance].id
71
+ logitems = Thread.current[:appinstance].logitems
72
+ if logitems.present? && logitems.class == Hash
73
+ store[:tenant_ids] = logitems[:tenant_ids] if logitems[:tenant_ids].present?
74
+ store[:organization] = logitems[:organization] if logitems[:organization].present?
75
+ end
76
+ end
77
+ end
78
+ JSON.dump(store) + "\n"
79
+ end
80
+ end
81
+ return logger
82
+ end
18
83
  end
84
+
19
85
  module Controllers
20
86
  autoload :Helpers, 'zuora_connect/controllers/helpers'
21
87
  end
@@ -39,4 +105,44 @@ module ZuoraConnect
39
105
 
40
106
  return configuration
41
107
  end
108
+
109
+ def self.elastic_apm_defaults
110
+ defaults = {}
111
+ case Rails.env.to_s
112
+ when 'production'
113
+ defaults = {
114
+ server_url: "http://apm-server.logging:8200",
115
+ transaction_sample_rate: 0.20,
116
+ capture_body: 'errors'
117
+ }
118
+ when 'staging'
119
+ defaults = {
120
+ server_url: "http://apm-server.logging:8200",
121
+ transaction_sample_rate: 1.0
122
+ }
123
+ when 'development'
124
+ defaults = {
125
+ server_url: "http://logging.0.ecc.auw2.zuora:8200",
126
+ transaction_sample_rate: 1.0
127
+ }
128
+ when 'test'
129
+ defaults = {
130
+ active: false,
131
+ disable_send: true
132
+ }
133
+ end
134
+
135
+ defaults.merge!({
136
+ pool_size: 1,
137
+ transaction_max_spans: 500,
138
+ ignore_url_patterns: ['^\/admin\/resque.*', '^\/admin\/redis.*', '^\/admin\/peek.*', '^\/peek.*'],
139
+ verify_server_cert: false,
140
+ log_level: Logger::INFO,
141
+ service_name: ENV['DEIS_APP'].present? ? ENV['DEIS_APP'] : Rails.application.class.parent_name,
142
+ logger: ZuoraConnect.custom_logger(name: "ElasticAPM", level: MonoLogger::WARN)
143
+ })
144
+ defaults.merge!({disable_send: true}) if defined?(Rails::Console)
145
+
146
+ return defaults
147
+ end
42
148
  end
@@ -3,7 +3,7 @@ module ZuoraConnect
3
3
 
4
4
  attr_accessor :default_locale, :default_time_zone, :url, :mode, :delayed_job,:private_key, :additional_apartment_models
5
5
 
6
- attr_accessor :enable_metrics, :enable_apm, :telegraf_endpoint, :telegraf_debug, :custom_prometheus_update_block, :silencer_resque_finish, :blpop_queue
6
+ attr_accessor :enable_metrics, :telegraf_endpoint, :telegraf_debug, :custom_prometheus_update_block, :silencer_resque_finish, :blpop_queue
7
7
 
8
8
  attr_accessor :oauth_client_id, :oauth_client_secret, :oauth_client_redirect_uri
9
9
 
@@ -24,7 +24,6 @@ module ZuoraConnect
24
24
  @enable_metrics = false
25
25
  @telegraf_endpoint = 'udp://telegraf-app-metrics.monitoring.svc.cluster.local:8094'
26
26
  @telegraf_debug = false
27
- @enable_apm = false
28
27
  # OAuth Settings
29
28
  @oauth_client_id = ""
30
29
  @oauth_client_secret = ""
@@ -8,23 +8,23 @@ module ZuoraConnect
8
8
  #Skip session for api requests
9
9
  Thread.current[:appinstance] = nil
10
10
  request.session_options[:skip] = true
11
- ElasticAPM.set_tag(:trace_id, request.uuid) if defined?(ElasticAPM)
11
+ ElasticAPM.set_tag(:trace_id, request.uuid) if defined?(ElasticAPM) && ElasticAPM.running?
12
12
 
13
13
  start_time = Time.now
14
14
  if request.headers["API-Token"].present?
15
15
  @appinstance = ZuoraConnect::AppInstance.where(:api_token => request.headers["API-Token"]).first
16
- Rails.logger.debug("[#{@appinstance.id}] API REQUEST - API token") if @appinstance.present?
16
+ ZuoraConnect.logger.debug("[#{@appinstance.id}] API REQUEST - API token") if @appinstance.present?
17
17
  check_instance
18
18
  else
19
19
  authenticate_or_request_with_http_basic do |username, password|
20
20
  @appinstance = ZuoraConnect::AppInstance.where(:token => password).first
21
21
  @appinstance ||= ZuoraConnect::AppInstance.where(:api_token => password).first
22
- Rails.logger.debug("[#{@appinstance.id}] API REQUEST - Basic Auth") if @appinstance.present?
22
+ ZuoraConnect.logger.debug("[#{@appinstance.id}] API REQUEST - Basic Auth") if @appinstance.present?
23
23
  check_instance
24
24
  end
25
25
  end
26
26
  if @appinstance.present?
27
- Rails.logger.debug("[#{@appinstance.id}] Authenticate App API Request Completed In - #{(Time.now - start_time).round(2)}s")
27
+ ZuoraConnect.logger.debug("[#{@appinstance.id}] Authenticate App API Request Completed In - #{(Time.now - start_time).round(2)}s")
28
28
  end
29
29
  end
30
30
 
@@ -66,13 +66,13 @@ module ZuoraConnect
66
66
  render "zuora_connect/static/invalid_launch_request"
67
67
  end
68
68
  rescue => ex
69
- Rails.logger.debug("Error parsing Instance ID's: #{ex.message}")
69
+ ZuoraConnect.logger.debug("Error parsing Instance ID's: #{ex.message}")
70
70
  render "zuora_connect/static/invalid_launch_request"
71
71
  end
72
72
  end
73
73
 
74
74
  def authenticate_connect_app_request
75
- ElasticAPM.set_tag(:trace_id, request.uuid) if defined?(ElasticAPM)
75
+ ElasticAPM.set_tag(:trace_id, request.uuid) if defined?(ElasticAPM) && ElasticAPM.running?
76
76
  Thread.current[:appinstance] = nil
77
77
  if params[:app_instance_ids].present? && !params[:app_instance_id].present?
78
78
  begin
@@ -86,7 +86,7 @@ module ZuoraConnect
86
86
  @appinstance.cache_app_instance
87
87
  session["appInstance"] = app_instance_ids[0]
88
88
  else
89
- Rails.logger.fatal("Launch Error: Param Instance didnt match session data")
89
+ ZuoraConnect.logger.fatal("Launch Error: Param Instance didnt match session data")
90
90
  render "zuora_connect/static/invalid_launch_request"
91
91
  return
92
92
  end
@@ -95,7 +95,7 @@ module ZuoraConnect
95
95
  return
96
96
  end
97
97
  rescue => ex
98
- Rails.logger.fatal("Launch Error: #{ex.message}")
98
+ ZuoraConnect.logger.fatal("Launch Error: #{ex.message}")
99
99
  render "zuora_connect/static/invalid_launch_request"
100
100
  return
101
101
  end
@@ -113,7 +113,7 @@ module ZuoraConnect
113
113
  return
114
114
  end
115
115
  rescue => ex
116
- Rails.logger.fatal("Launch Error: #{ex.message}")
116
+ ZuoraConnect.logger.fatal("Launch Error: #{ex.message}")
117
117
  render "zuora_connect/static/invalid_launch_request"
118
118
  return
119
119
  end
@@ -136,16 +136,16 @@ module ZuoraConnect
136
136
  end
137
137
  end
138
138
  if session["#{@appinstance.id}::user::email"].present?
139
- ElasticAPM.set_user(session["#{@appinstance.id}::user::email"]) if defined?(ElasticAPM)
139
+ ElasticAPM.set_user(session["#{@appinstance.id}::user::email"]) if defined?(ElasticAPM) && ElasticAPM.running?
140
140
  PaperTrail.whodunnit = session["#{@appinstance.id}::user::email"] if defined?(PaperTrail)
141
141
  end
142
142
  begin
143
143
  I18n.locale = session["#{@appinstance.id}::user::locale"] ? session["#{@appinstance.id}::user::locale"] : @appinstance.locale
144
144
  rescue I18n::InvalidLocale => ex
145
- Rails.logger.error("Invalid Locale: #{ex.message}")
145
+ ZuoraConnect.logger.error("Invalid Locale: #{ex.message}")
146
146
  end
147
147
  Time.zone = session["#{@appinstance.id}::user::timezone"] ? session["#{@appinstance.id}::user::timezone"] : @appinstance.timezone
148
- Rails.logger.debug("[#{@appinstance.blank? ? "N/A" : @appinstance.id}] Authenticate App Request Completed In - #{(Time.now - start_time).round(2)}s")
148
+ ZuoraConnect.logger.debug("[#{@appinstance.blank? ? "N/A" : @appinstance.id}] Authenticate App Request Completed In - #{(Time.now - start_time).round(2)}s")
149
149
  end
150
150
 
151
151
  def persist_connect_app_session
@@ -170,7 +170,6 @@ module ZuoraConnect
170
170
  def setup_instance_via_data
171
171
  session.clear
172
172
  values = JSON.parse(ZuoraConnect::AppInstance.decrypt_response(Base64.urlsafe_decode64(request["data"])))
173
- Rails.logger.debug("Data: #{values.to_json}")
174
173
  if values["param_data"]
175
174
  values["param_data"].each do |k ,v|
176
175
  params[k] = v
@@ -185,7 +184,7 @@ module ZuoraConnect
185
184
  session["#{values["appInstance"]}::user::email"] = values["current_user"]["email"]
186
185
  end
187
186
 
188
- Rails.logger.debug("App Params: #{values.to_json}}") if Rails.env != "production"
187
+ ZuoraConnect.logger.debug({msg: 'Setup values', connect: values}) if Rails.env != "production"
189
188
 
190
189
  @appinstance = ZuoraConnect::AppInstance.where(:id => values["appInstance"].to_i).first
191
190
  if @appinstance.blank?
@@ -193,7 +192,7 @@ module ZuoraConnect
193
192
  begin
194
193
  Apartment::Tenant.create(values["appInstance"].to_s)
195
194
  rescue Apartment::TenantExists => ex
196
- Rails.logger.debug("Tenant Already Exists")
195
+ ZuoraConnect.logger.debug("Tenant Already Exists")
197
196
  end
198
197
  @appinstance = ZuoraConnect::AppInstance.new(:api_token => values[:api_token],:id => values["appInstance"].to_i, :access_token => values["access_token"].blank? ? values["user"] : values["access_token"], :token => values["refresh_token"] , :refresh_token => values["refresh_token"].blank? ? values["key"] : values["refresh_token"], :oauth_expires_at => values["expires"])
199
198
  @appinstance.save(:validate => false)
@@ -250,7 +249,7 @@ module ZuoraConnect
250
249
  end
251
250
  Thread.current[:appinstance] = @appinstance
252
251
  PaperTrail.whodunnit = "API User" if defined?(PaperTrail)
253
- ElasticAPM.set_user("API User") if defined?(ElasticAPM)
252
+ ElasticAPM.set_user("API User") if defined?(ElasticAPM) && ElasticAPM.running?
254
253
  return true
255
254
  else
256
255
  render text: "Access Denied", status: :unauthorized
@@ -3,6 +3,7 @@ require 'zuora_connect'
3
3
  require 'apartment'
4
4
  require 'httparty'
5
5
  require 'zuora_api'
6
+
6
7
  module ZuoraConnect
7
8
  class Engine < ::Rails::Engine
8
9
  isolate_namespace ZuoraConnect
@@ -1,4 +1,5 @@
1
1
  require 'middleware/metrics_middleware'
2
+ require 'middleware/request_id_middleware'
2
3
 
3
4
  module ZuoraConnect
4
5
  class Railtie < Rails::Railtie
@@ -22,33 +23,38 @@ module ZuoraConnect
22
23
  end
23
24
  end
24
25
  initializer "zuora_connect.configure_rails_initialization" do |app|
25
- app.middleware.insert_after Rack::Sendfile, Middleware::MetricsMiddleware
26
+ app.middleware.insert_after Rack::Sendfile, ZuoraConnect::MetricsMiddleware
27
+ app.middleware.insert_after ActionDispatch::RequestId, ZuoraConnect::RequestIdMiddleware
26
28
  end
27
29
 
28
30
  # hook to process_action
29
- ActiveSupport::Notifications.subscribe('process_action.action_controller', Middleware::PageRequest.new)
31
+ ActiveSupport::Notifications.subscribe('process_action.action_controller', ZuoraConnect::PageRequest.new)
30
32
 
31
33
  initializer(:rails_stdout_logging, before: :initialize_logger) do
32
34
  if Rails.env != 'development' && !ENV['DEIS_APP'].blank?
33
35
  require 'lograge'
34
- logger = ActiveSupport::Logger.new(STDOUT)
35
- logger.formatter = ::Logger::Formatter.new
36
- # logger.formatter = proc do |severity, datetime, progname, msg|
37
- # {severity: severity, time: datetime.strftime('%FT%T.%6N'), process_id: Process.pid, message: msg }.to_json
38
- # end
39
- Rails.configuration.logger = ActiveSupport::TaggedLogging.new(logger)
40
- Rails.configuration.log_tags = [:uuid]
36
+
37
+ Rails.configuration.logger = ZuoraConnect.custom_logger(name: "Rails")
38
+
41
39
  Rails.configuration.lograge.enabled = true
42
- Rails.configuration.lograge.formatter = Lograge::Formatters::Json.new
40
+ Rails.configuration.colorize_logging = false
41
+ if Rails.configuration.logger.class.to_s == 'Ougai::Logger'
42
+ Rails.configuration.lograge.formatter = Class.new do |fmt|
43
+ def fmt.call(data)
44
+ { msg: 'Rails Request', request: data }
45
+ end
46
+ end
47
+ end
48
+ #Rails.configuration.lograge.formatter = Lograge::Formatters::Json.new
43
49
  Rails.configuration.lograge.custom_options = lambda do |event|
44
50
  exceptions = %w(controller action format id)
45
51
  items = {
46
52
  #time: event.time.strftime('%FT%T.%6N'),
47
- params: event.payload[:params].except(*exceptions),
48
- exception: event.payload[:exception],
49
- exception_object: event.payload[:exception_object],
50
- process_id: Process.pid
53
+ params: event.payload[:params].except(*exceptions).to_json.to_s
51
54
  }
55
+ items.merge!({exception_object: event.payload[:exception_object]}) if event.payload[:exception_object].present?
56
+ items.merge!({exception: event.payload[:exception]}) if event.payload[:exception].present?
57
+
52
58
  if Thread.current[:appinstance].present?
53
59
  items.merge!({appinstance_id: Thread.current[:appinstance].id, connect_user: Thread.current[:appinstance].connect_user, new_session: Thread.current[:appinstance].new_session_message})
54
60
  if Thread.current[:appinstance].logitems.present? && Thread.current[:appinstance].logitems.class == Hash
@@ -1,3 +1,3 @@
1
1
  module ZuoraConnect
2
- VERSION = "1.7.79"
2
+ VERSION = "1.7.81aa"
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: 1.7.79
4
+ version: 1.7.81aa
5
5
  platform: ruby
6
6
  authors:
7
7
  - Connect Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-06 00:00:00.000000000 Z
11
+ date: 2019-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apartment
@@ -25,65 +25,59 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: zuora_api
28
+ name: ougai
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: 1.6.21
34
31
  - - ">="
35
32
  - !ruby/object:Gem::Version
36
- version: 1.6.21
33
+ version: '0'
37
34
  type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
- - - "~>"
42
- - !ruby/object:Gem::Version
43
- version: 1.6.21
44
38
  - - ">="
45
39
  - !ruby/object:Gem::Version
46
- version: 1.6.21
40
+ version: '0'
47
41
  - !ruby/object:Gem::Dependency
48
- name: httparty
42
+ name: zuora_api
49
43
  requirement: !ruby/object:Gem::Requirement
50
44
  requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: 0.16.4
54
45
  - - ">="
55
46
  - !ruby/object:Gem::Version
56
- version: 0.16.4
47
+ version: 1.6.21
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: 1.6.21
57
51
  type: :runtime
58
52
  prerelease: false
59
53
  version_requirements: !ruby/object:Gem::Requirement
60
54
  requirements:
61
- - - "~>"
62
- - !ruby/object:Gem::Version
63
- version: 0.16.4
64
55
  - - ">="
65
56
  - !ruby/object:Gem::Version
66
- version: 0.16.4
57
+ version: 1.6.21
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: 1.6.21
67
61
  - !ruby/object:Gem::Dependency
68
- name: elastic-apm
62
+ name: httparty
69
63
  requirement: !ruby/object:Gem::Requirement
70
64
  requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: 2.5.0
74
65
  - - ">="
75
66
  - !ruby/object:Gem::Version
76
- version: 2.5.0
67
+ version: 0.16.4
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: 0.16.4
77
71
  type: :runtime
78
72
  prerelease: false
79
73
  version_requirements: !ruby/object:Gem::Requirement
80
74
  requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: 2.5.0
84
75
  - - ">="
85
76
  - !ruby/object:Gem::Version
86
- version: 2.5.0
77
+ version: 0.16.4
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: 0.16.4
87
81
  - !ruby/object:Gem::Dependency
88
82
  name: bundler
89
83
  requirement: !ruby/object:Gem::Requirement
@@ -305,7 +299,6 @@ files:
305
299
  - app/views/zuora_connect/static/session_error.html.erb
306
300
  - config/initializers/apartment.rb
307
301
  - config/initializers/aws.rb
308
- - config/initializers/elastic_apm.rb
309
302
  - config/initializers/object_method_hooks.rb
310
303
  - config/initializers/postgresql_adapter.rb
311
304
  - config/initializers/prometheus.rb
@@ -325,9 +318,11 @@ files:
325
318
  - db/migrate/20110503003604_catalog_default.rb
326
319
  - db/migrate/20180301052853_add_catalog_attempted_at.rb
327
320
  - db/migrate/20181206162339_add_fields_to_instance.rb
321
+ - lib/logging/connect_formatter.rb
328
322
  - lib/metrics/influx/point_value.rb
329
323
  - lib/metrics/net.rb
330
324
  - lib/middleware/metrics_middleware.rb
325
+ - lib/middleware/request_id_middleware.rb
331
326
  - lib/resque/additions.rb
332
327
  - lib/resque/dynamic_queues.rb
333
328
  - lib/resque/plugins/custom_logger.rb
@@ -397,54 +392,53 @@ required_ruby_version: !ruby/object:Gem::Requirement
397
392
  version: '0'
398
393
  required_rubygems_version: !ruby/object:Gem::Requirement
399
394
  requirements:
400
- - - ">="
395
+ - - ">"
401
396
  - !ruby/object:Gem::Version
402
- version: '0'
397
+ version: 1.3.1
403
398
  requirements: []
404
- rubyforge_project:
405
- rubygems_version: 2.6.8
399
+ rubygems_version: 3.0.3
406
400
  signing_key:
407
401
  specification_version: 4
408
402
  summary: Summary of Connect.
409
403
  test_files:
404
+ - test/lib/generators/zuora_connect/datatable_generator_test.rb
405
+ - test/integration/navigation_test.rb
410
406
  - test/test_helper.rb
407
+ - test/models/zuora_connect/app_instance_test.rb
411
408
  - test/fixtures/zuora_connect/app_instances.yml
412
409
  - test/controllers/zuora_connect/api/v1/app_instance_controller_test.rb
413
- - test/models/zuora_connect/app_instance_test.rb
414
410
  - test/zuora_connect_test.rb
415
- - test/lib/generators/zuora_connect/datatable_generator_test.rb
416
- - test/integration/navigation_test.rb
417
411
  - test/dummy/README.rdoc
418
- - test/dummy/bin/bundle
419
- - test/dummy/bin/rails
420
- - test/dummy/bin/rake
421
- - test/dummy/bin/setup
422
- - test/dummy/app/helpers/application_helper.rb
423
- - test/dummy/app/views/layouts/application.html.erb
412
+ - test/dummy/Rakefile
424
413
  - test/dummy/app/assets/stylesheets/application.css
425
414
  - test/dummy/app/assets/javascripts/application.js
426
415
  - test/dummy/app/controllers/application_controller.rb
427
- - test/dummy/public/favicon.ico
428
- - test/dummy/public/422.html
429
- - test/dummy/public/500.html
430
- - test/dummy/public/404.html
431
- - test/dummy/config/locales/en.yml
432
- - test/dummy/config/secrets.yml
416
+ - test/dummy/app/helpers/application_helper.rb
417
+ - test/dummy/app/views/layouts/application.html.erb
418
+ - test/dummy/config/environments/test.rb
419
+ - test/dummy/config/environments/production.rb
420
+ - test/dummy/config/environments/development.rb
421
+ - test/dummy/config/database.yml
433
422
  - test/dummy/config/routes.rb
434
- - test/dummy/config/environment.rb
423
+ - test/dummy/config/initializers/assets.rb
435
424
  - test/dummy/config/initializers/cookies_serializer.rb
436
- - test/dummy/config/initializers/session_store.rb
437
- - test/dummy/config/initializers/backtrace_silencers.rb
438
- - test/dummy/config/initializers/inflections.rb
439
425
  - test/dummy/config/initializers/mime_types.rb
440
- - test/dummy/config/initializers/assets.rb
426
+ - test/dummy/config/initializers/backtrace_silencers.rb
441
427
  - test/dummy/config/initializers/filter_parameter_logging.rb
428
+ - test/dummy/config/initializers/session_store.rb
442
429
  - test/dummy/config/initializers/wrap_parameters.rb
443
- - test/dummy/config/boot.rb
444
- - test/dummy/config/database.yml
445
- - test/dummy/config/environments/development.rb
446
- - test/dummy/config/environments/production.rb
447
- - test/dummy/config/environments/test.rb
430
+ - test/dummy/config/initializers/inflections.rb
431
+ - test/dummy/config/locales/en.yml
432
+ - test/dummy/config/environment.rb
448
433
  - test/dummy/config/application.rb
434
+ - test/dummy/config/boot.rb
435
+ - test/dummy/config/secrets.yml
436
+ - test/dummy/bin/setup
437
+ - test/dummy/bin/rails
438
+ - test/dummy/bin/bundle
439
+ - test/dummy/bin/rake
449
440
  - test/dummy/config.ru
450
- - test/dummy/Rakefile
441
+ - test/dummy/public/422.html
442
+ - test/dummy/public/500.html
443
+ - test/dummy/public/favicon.ico
444
+ - test/dummy/public/404.html
@@ -1,22 +0,0 @@
1
- ElasticAPM.agent.config.disable_send = true
2
- if ZuoraConnect.configuration.enable_apm && !defined?(Rails::Console)
3
- require 'elastic_apm'
4
- case Rails.env.to_s
5
- when 'production'
6
- ElasticAPM.agent.config.server_url = "http://apm-server.logging:8200"
7
- ElasticAPM.agent.config.transaction_sample_rate = 0.20
8
- ElasticAPM.agent.config.capture_body = false
9
- when 'staging'
10
- ElasticAPM.agent.config.server_url = "http://apm-server.logging:8200"
11
- ElasticAPM.agent.config.transaction_sample_rate = 1.0
12
- when 'development'
13
- ElasticAPM.agent.config.server_url = "http://logging.0.ecc.auw2.zuora:8200"
14
- ElasticAPM.agent.config.transaction_sample_rate = 1.0
15
- end
16
- ElasticAPM.agent.config.pool_size = 1
17
- ElasticAPM.agent.config.transaction_max_spans = 500
18
- ElasticAPM.agent.config.ignore_url_patterns = ['^\/admin\/resque.*', '^\/admin\/redis.*', '^\/admin\/peek.*', '^\/peek.*']
19
- ElasticAPM.agent.config.verify_server_cert = false
20
- ElasticAPM.agent.config.log_level = Logger::INFO
21
- ElasticAPM.agent.config.disable_send = false
22
- end