zuora_connect 2.0.60u → 3.0.0l

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,37 +1,6 @@
1
1
  module ZuoraConnect
2
2
  require 'uri'
3
3
 
4
- # Object of this class is passed to the ActiveSupport::Notification hook
5
- class PageRequest
6
-
7
- # This method is triggered when a non error page is loaded (not 404)
8
- def call(name, started, finished, unique_id, payload)
9
- # If the url contains any css or JavaScript files then do not collect metrics for them
10
- return nil if ["css", "assets", "jpg", "png", "jpeg", "ico"].any? { |word| payload[:path].include?(word) }
11
-
12
- # Getting the endpoint and the content_type
13
- content_hash = {:html => "text/html", :js => "application/javascript", :json => "application/json", :csv => "text/csv"}
14
- content_type = content_hash.key?(payload[:format]) ? content_hash[payload[:format]] : payload[:format]
15
- content_type = content_type.to_s.gsub('text/javascript', 'application/javascript')
16
-
17
- # payloads with 500 requests do not have status as it is not set by the controller
18
- # https://github.com/rails/rails/issues/33335
19
- #status_code = payload[:status] ? payload[:status] : payload[:exception_object].present? ? 500 : ""
20
- if payload[:exception].present?
21
- status_code, exception = [500, payload[:exception].first]
22
- else
23
- status_code, exception = [payload[:status], nil]
24
- end
25
-
26
- tags = {method: payload[:method], status: status_code, error_type: exception, content_type: content_type, controller: payload[:controller], action: payload[:action]}.compact
27
-
28
- values = {view_time: payload[:view_runtime], db_time: payload[:db_runtime], response_time: ((finished-started)*1000)}.compact
29
- values = values.map{ |k,v| [k,v.round(2)]}.to_h
30
-
31
- ZuoraConnect::AppInstanceBase.write_to_telegraf(direction: :inbound, tags: tags, values: values)
32
- end
33
- end
34
-
35
4
  class MetricsMiddleware
36
5
 
37
6
  require "zuora_connect/version"
@@ -42,7 +11,7 @@ module ZuoraConnect
42
11
  end
43
12
 
44
13
  def call(env)
45
- @bad_headers = ["HTTP_X_FORWARDED_FOR", "HTTP_X_FORWARDED_HOST", "HTTP_X_FORWARDED_PORT", "HTTP_X_FORWARDED_PROTO", "HTTP_X_FORWARDED_SCHEME", "HTTP_X_FORWARDED_SSL"]
14
+ @bad_headers = ["HTTP_X_FORWARDED_FOR", "HTTP_X_FORWARDED_HOST", "HTTP_X_FORWARDED_PORT", "HTTP_X_FORWARDED_PROTO", "HTTP_X_FORWARDED_SCHEME", "HTTP_X_FORWARDED_SSL"]
46
15
  if !ActionDispatch::Request::HTTP_METHODS.include?(env["REQUEST_METHOD"].upcase)
47
16
  [405, {"Content-Type" => "text/plain"}, ["Method Not Allowed"]]
48
17
  else
@@ -65,15 +34,18 @@ module ZuoraConnect
65
34
  @bad_headers.each { |header| env.delete(header) }
66
35
 
67
36
  if defined?(Prometheus) && env['PATH_INFO'] == '/connect/internal/metrics'
37
+
68
38
  # Prometheus Stuff
69
- metrics = ZuoraConnect::AppInstance.get_metrics('stats')
39
+ metrics = ZuoraObservability::Metrics.resque
40
+ metrics = defined?(ZuoraConnect::AppInstance.get_metrics) ? ZuoraConnect::AppInstance.get_metrics(metrics) : metrics
41
+
70
42
  redis_up = metrics.present? && metrics.dig(:Resque, :Workers_Total).present? ? 1 : 0
71
43
  Prometheus::REDIS_CONNECTION.set(redis_up)
72
44
 
73
45
  process_prometheus_metric(metrics: metrics)
74
46
 
75
47
  if defined?(Unicorn) && Unicorn.respond_to?(:listener_names)
76
- ZuoraConnect::AppInstanceBase.unicorn_listener_stats.each do |key, value|
48
+ ZuoraObservability::Metrics.unicorn_listener.each do |key, value|
77
49
  gauge = Prometheus.const_get("unicorn_#{key}".gsub(/[^a-zA-Z0-9_]/, '_').upcase)
78
50
  gauge.set(value) if gauge.present?
79
51
  end
@@ -84,14 +56,7 @@ module ZuoraConnect
84
56
  start_time = Time.now
85
57
  begin
86
58
  @status, @headers, @response = @app.call(env)
87
- ensure
88
-
89
- # If the url contains any CSS or JavaScript files then do not collect metrics for them
90
- if ["css", "assets", "jpg", "png", "jpeg", "ico"].any? { |word| env['PATH_INFO'].include?(word) } || /.*\.js$/.match(env['PATH_INFO'])
91
- tags = {status: @status, controller: 'ActionController', action: 'Assets', app_instance: 0}
92
- values = {response_time: ((Time.now - start_time)*1000).round(2) }
93
- ZuoraConnect::AppInstanceBase.write_to_telegraf(direction: 'request-inbound-assets', tags: tags, values: values)
94
- end
59
+ ensure
95
60
 
96
61
  # Uncomment following block of code for handling engine requests/requests without controller
97
62
  # else
@@ -112,7 +77,7 @@ module ZuoraConnect
112
77
 
113
78
  values = {response_time: ((Time.now - start_time)*1000).round(2) }
114
79
 
115
- ZuoraConnect::AppInstanceBase.write_to_telegraf(direction: :inbound, tags: tags, values: values)
80
+ ZuoraObservability::Metrics.write_to_telegraf(direction: :inbound, tags: tags, values: values)
116
81
  end
117
82
  end
118
83
  Thread.current[:inbound_metric] = nil
@@ -140,7 +105,7 @@ module ZuoraConnect
140
105
  gauge_name.to_sym,
141
106
  docstring: "#{key} metric",
142
107
  labels: %i(type name),
143
- preset_labels: { type: type, name: ZuoraConnect::Telegraf.app_name },
108
+ preset_labels: { type: type, name: ZuoraObservability::Env.app_name },
144
109
  store_settings: most_recent_aggregation
145
110
  )
146
111
  gauge.set(value)
@@ -12,14 +12,14 @@ module Resque
12
12
  when "Hash"
13
13
  data = args.merge({:worker_class => self.to_s})
14
14
  end
15
- if Rails.logger.is_a?(Ougai::Logger)
15
+ if Rails.logger.is_a?(Ougai::Logger) && !Rails.env.development?
16
16
  Rails.logger.with_fields = {job: data, trace_id: SecureRandom.uuid, name: "RailsWorker"}
17
17
  end
18
18
 
19
19
  begin
20
- connection_count ||= 0
20
+ connection_count ||= 0
21
21
  @appinstance = ZuoraConnect::AppInstance.find(args['app_instance_id'].to_i)
22
- Rails.logger.info('Starting job')
22
+ job_start_log(args)
23
23
 
24
24
  @appinstance.new_session(holding_pattern: true)
25
25
  rescue ActiveRecord::RecordNotFound => exception
@@ -52,12 +52,12 @@ module Resque
52
52
  return
53
53
  rescue ZuoraConnect::Exceptions::ConnectCommunicationError => exception
54
54
  Rails.logger.warn("Enqueue Job Again ~ 2 mins", exception)
55
- @appinstance.queue_pause(time: 2.minutes.to_i)
55
+ @appinstance.queue_pause(time: 2.minutes.to_i)
56
56
  Resque.enqueue_to(self.job.queue, self.job.payload['class'], args)
57
57
  return
58
58
  rescue Net::ReadTimeout, Net::OpenTimeout, Errno::ECONNRESET, Errno::ECONNREFUSED, SocketError => exception
59
59
  Rails.logger.warn("Enqueue Job Again ~ 2 mins", exception)
60
- @appinstance.queue_pause(time: 2.minutes.to_i)
60
+ @appinstance.queue_pause(time: 2.minutes.to_i)
61
61
  Resque.enqueue_to(self.job.queue, self.job.payload['class'], args)
62
62
  return
63
63
  end
@@ -68,6 +68,10 @@ module Resque
68
68
  @appinstance.cache_app_instance if defined?(@appinstance)
69
69
  Rails.logger.flush if Rails.logger.methods.include?(:flush)
70
70
  end
71
+
72
+ def job_start_log(args)
73
+ Rails.logger.info("Starting job")
74
+ end
71
75
  end
72
76
  end
73
- end
77
+ end
@@ -17,7 +17,7 @@ module Resque
17
17
  when "Hash"
18
18
  data = args.merge({:worker_class => self.to_s})
19
19
  end
20
- if Rails.logger.is_a?(Ougai::Logger)
20
+ if Rails.logger.is_a?(Ougai::Logger) && !Rails.env.development?
21
21
  Rails.logger.with_fields = {job: data, trace_id: SecureRandom.uuid, name: "RailsWorker"}
22
22
  end
23
23
  data = {:msg => 'Starting job', :job => data}
@@ -9,12 +9,11 @@ require 'resque/silence_done'
9
9
  require 'resque/self_lookup'
10
10
  require 'resque/plugins/custom_logger'
11
11
  require 'resque/plugins/app_instance_job'
12
- require 'logging/connect_formatter'
13
- require 'metrics/influx/point_value'
14
12
  require 'metrics/net'
15
13
  require 'mono_logger'
16
14
  require 'zuora_connect/zuora_audit'
17
15
  require 'active_record'
16
+ require 'zuora_observability'
18
17
  ::ActiveRecord::Base.send :include, ZuoraConnect::ZuoraAudit
19
18
 
20
19
  module ZuoraConnect
@@ -29,68 +28,9 @@ module ZuoraConnect
29
28
  when 'test'
30
29
  Rails.logger
31
30
  else
32
- @logger ||= custom_logger(name: "Connect", level: Rails.logger.level)
31
+ @logger ||= ZuoraObservability::Logger.custom_logger(name: "Connect", level: Rails.logger.level)
33
32
  end
34
33
  end
35
-
36
- def custom_logger(name: "", level: Rails.logger.present? ? Rails.logger.level : MonoLogger::INFO, type: :ougai)
37
- #puts name + ' - ' + {Logger::WARN => 'Logger::WARN', Logger::ERROR => 'Logger::ERROR', Logger::DEBUG => 'Logger::DEBUG', Logger::INFO => 'Logger::INFO' }[level] + ' - '
38
- if type == :ougai
39
- require 'ougai'
40
- require "ougai/formatters/customizable"
41
- #logger = Ougai::Logger.new(MonoLogger.new(STDOUT))
42
- logger = Ougai::Logger.new(STDOUT)
43
- logger.level = level
44
- if ZuoraConnect.configuration.json_logging
45
- logger.formatter = Ougai::Formatters::ConnectFormatter.new(name)
46
- logger.before_log = lambda do |data|
47
- data[:trace_id] = ZuoraConnect::RequestIdMiddleware.request_id if ZuoraConnect::RequestIdMiddleware.request_id.present?
48
- data[:zuora_trace_id] = ZuoraConnect::RequestIdMiddleware.zuora_request_id if ZuoraConnect::RequestIdMiddleware.zuora_request_id.present?
49
- #data[:traces] = {amazon_id: data[:trace_id], zuora_id: data[:zuora_trace_id]}
50
- end
51
- else
52
- logger.formatter = Ougai::Formatters::Customizable.new(
53
- format_err: proc do |data|
54
- next nil unless data.key?(:err)
55
- err = data.delete(:err)
56
- " #{err[:name]} (#{err[:message]})\n #{err[:stack]}"
57
- end,
58
- format_data: proc do |data|
59
- data.delete(:app_instance_id); data.delete(:tenant_ids); data.delete(:organization); data.delete(:environment)
60
- format('%s %s: %s', 'DATA'.ljust(6), Time.now.strftime('%FT%T.%6NZ'), "#{data.to_json}") if data.present?
61
- end,
62
- format_msg: proc do |severity, datetime, _progname, data|
63
- msg = data.delete(:msg)
64
- format('%s %s: %s', severity.ljust(6), datetime, msg)
65
- end
66
- )
67
- logger.formatter.datetime_format = '%FT%T.%6NZ'
68
- end
69
- else
70
- logger = MonoLogger.new(STDOUT)
71
- logger.level = level
72
- logger.formatter = proc do |serverity, datetime, progname, msg|
73
- begin
74
- msg = JSON.parse(msg)
75
- rescue JSON::ParserError => ex
76
- end
77
- if ZuoraConnect.configuration.json_logging
78
- require 'json'
79
- store = {
80
- name: name,
81
- level: serverity,
82
- timestamp: datetime.strftime('%FT%T.%6NZ'),
83
- pid: Process.pid,
84
- message: name == "ActionMailer" ? msg.strip : msg
85
- }
86
- JSON.dump(store) + "\n"
87
- else
88
- format('%s %s: %s', serverity.ljust(6), datetime, msg) + "\n"
89
- end
90
- end
91
- end
92
- return logger
93
- end
94
34
  end
95
35
 
96
36
  module Controllers
@@ -147,7 +87,7 @@ module ZuoraConnect
147
87
  verify_server_cert: false,
148
88
  log_level: Logger::INFO,
149
89
  service_name: ENV['DEIS_APP'].present? ? ENV['DEIS_APP'] : Rails.application.class.parent_name,
150
- logger: ZuoraConnect.custom_logger(name: "ElasticAPM", level: MonoLogger::WARN)
90
+ logger: ZuoraObservability::Logger.custom_logger(name: "ElasticAPM", level: MonoLogger::WARN)
151
91
  })
152
92
  defaults.merge!({disable_send: true}) if defined?(Rails::Console)
153
93
 
@@ -280,6 +280,7 @@ module ZuoraConnect
280
280
  next_instance_id,
281
281
  zuora_entity_id,
282
282
  rest_domain,
283
+ tenant_id: request.headers['zuora-tenant-id'],
283
284
  retry_count: retry_count
284
285
  )
285
286
  rescue ActiveRecord::RecordNotUnique
@@ -302,7 +303,8 @@ module ZuoraConnect
302
303
  private
303
304
  def setup_instance_via_prod_mode
304
305
  zuora_entity_id = request.headers['ZuoraCurrentEntity'] || cookies['ZuoraCurrentEntity']
305
-
306
+ ZuoraConnect::ZuoraUser.current_user_id = nil
307
+
306
308
  if zuora_entity_id.present?
307
309
  zuora_tenant_id = cookies['Zuora-Tenant-Id']
308
310
  zuora_user_id = cookies['Zuora-User-Id']
@@ -636,7 +638,7 @@ module ZuoraConnect
636
638
  (ZuoraConnect::AppInstance.all.where("id > #{min_instance_id}").order(id: :desc).limit(1).pluck(:id).first || min_instance_id) + 1
637
639
  end
638
640
 
639
- def new_instance(id, zuora_entity_id, rest_domain, task_data: nil, retry_count: 0)
641
+ def new_instance(id, zuora_entity_id, rest_domain, tenant_id: nil, task_data: nil, retry_count: 0)
640
642
  app_instance = ZuoraConnect::AppInstance.new(
641
643
  :id => id,
642
644
  :api_token => generate_token,
@@ -646,6 +648,8 @@ module ZuoraConnect
646
648
  :zuora_entity_ids => [zuora_entity_id]
647
649
  )
648
650
 
651
+ app_instance[:zuora_tenant_ids] = [tenant_id.to_s] if tenant_id.present?
652
+
649
653
  if task_data.nil?
650
654
  # no encryption
651
655
  app_instance['zuora_logins'] = task_data
@@ -677,27 +681,30 @@ module ZuoraConnect
677
681
 
678
682
  def setup_instance_via_dev_mode
679
683
  session["appInstance"] = ZuoraConnect.configuration.dev_mode_appinstance
680
- user = ZuoraConnect.configuration.dev_mode_user
681
- key = ZuoraConnect.configuration.dev_mode_pass
682
- values = {:user => user , :key => key, :appinstance => session["appInstance"]}
683
- @appinstance = ZuoraConnect::AppInstance.find_by(:id => values[:appinstance].to_i)
684
+ session["#{ZuoraConnect.configuration.dev_mode_appinstance}::admin"] = ZuoraConnect.configuration.dev_mode_admin
685
+
686
+ values = {
687
+ id: ZuoraConnect.configuration.dev_mode_appinstance,
688
+ access_token: ZuoraConnect.configuration.dev_mode_user,
689
+ refresh_token: ZuoraConnect.configuration.dev_mode_pass,
690
+ token: ZuoraConnect.configuration.dev_mode_pass+ZuoraConnect.configuration.dev_mode_pass,
691
+ api_token: ZuoraConnect.configuration.dev_mode_pass+ZuoraConnect.configuration.dev_mode_pass
692
+ }
693
+
694
+ @appinstance = ZuoraConnect::AppInstance.find_by(:id => ZuoraConnect.configuration.dev_mode_appinstance.to_i)
684
695
  ZuoraConnect::ZuoraUser.current_user_id = 0
685
696
  if @appinstance.blank?
686
697
  Apartment::Tenant.switch!("public")
687
698
  begin
688
- Apartment::Tenant.create(values[:appinstance].to_s)
699
+ Apartment::Tenant.create(ZuoraConnect.configuration.dev_mode_appinstance.to_s)
689
700
  rescue Apartment::TenantExists => ex
690
- Apartment::Tenant.drop(values[:appinstance].to_s)
701
+ Apartment::Tenant.drop(ZuoraConnect.configuration.dev_mode_appinstance.to_s)
691
702
  retry
692
703
  end
693
-
694
- @appinstance = ZuoraConnect::AppInstance.new(:id => values[:appinstance].to_i, :access_token => values[:user], :refresh_token => values[:key], :token => "#{values[:key]}#{values[:key]}", :api_token => "#{values[:key]}#{values[:key]}")
695
- @appinstance.save(:validate => false)
696
- end
697
- if @appinstance.access_token.blank? || @appinstance.refresh_token.blank? || @appinstance.token.blank? || @appinstance.api_token.blank?
698
- @appinstance.update_attributes!(:access_token => values["user"], :refresh_token => values["key"], :token => "#{values[:key]}#{values[:key]}", :api_token => "#{values[:key]}#{values[:key]}")
704
+ @appinstance = ZuoraConnect::AppInstance.new()
699
705
  end
700
- session["#{@appinstance.id}::admin"] = ZuoraConnect.configuration.dev_mode_admin
706
+ @appinstance.assign_attributes(values)
707
+ @appinstance.save(:validate => false)
701
708
  end
702
709
  end
703
710
  end
@@ -10,9 +10,10 @@ module ZuoraConnect
10
10
 
11
11
  initializer "connect", before: :load_config_initializers do |app|
12
12
  Rails.application.routes.prepend do
13
+ get '/connect/internal/data' => 'zuora_observability/metrics#metrics'
13
14
  mount ZuoraConnect::Engine, at: "/connect"
14
15
  match '/api/connect/health', via: :all, to: 'zuora_connect/static#health'
15
- match '/api/connect/internal/data', via: :all, to: 'zuora_connect/static#metrics'
16
+ match '/api/connect/internal/data', via: :all, to: 'zuora_observability/metrics#metrics'
16
17
  end
17
18
  end
18
19
 
@@ -5,17 +5,6 @@ require 'middleware/bad_multipart_form_data_sanitizer'
5
5
 
6
6
  module ZuoraConnect
7
7
  class Railtie < Rails::Railtie
8
- REQUEST_HEADERS_TO_IGNORE = %W(
9
- RAW_POST_DATA
10
- REQUEST_METHOD
11
- REQUEST_URI
12
- REQUEST_PATH
13
- PATH_INFO
14
- CONTENT_TYPE
15
- ORIGINAL_FULLPATH
16
- QUERY_STRING
17
- )
18
-
19
8
  config.before_initialize do
20
9
  version = Rails.version
21
10
  if version >= "5.0.0"
@@ -43,71 +32,5 @@ module ZuoraConnect
43
32
  app.config.middleware.use Rack::Deflater, if: ->(env, *) { env['PATH_INFO'] == '/connect/internal/metrics' }
44
33
  end
45
34
  end
46
-
47
- # hook to process_action
48
- ActiveSupport::Notifications.subscribe('process_action.action_controller', ZuoraConnect::PageRequest.new)
49
-
50
- initializer(:rails_stdout_logging, before: :initialize_logger) do
51
- require 'lograge'
52
-
53
- Rails.configuration.logger = ZuoraConnect.custom_logger(name: "Rails")
54
- if !Rails.env.test? && !Rails.env.development?
55
- Rails.configuration.lograge.enabled = true
56
- Rails.configuration.colorize_logging = false
57
- end
58
-
59
- if Rails.configuration.lograge.enabled
60
- if Rails.configuration.logger.class.to_s == 'Ougai::Logger'
61
- Rails.configuration.lograge.formatter = Class.new do |fmt|
62
- def fmt.call(data)
63
- { msg: 'Rails Request', request: data }
64
- end
65
- end
66
- end
67
- #Rails.configuration.lograge.formatter = Lograge::Formatters::Json.new
68
- Rails.configuration.lograge.custom_options = lambda do |event|
69
- exceptions = %w(controller action format)
70
- items = {
71
- #time: event.time.strftime('%FT%T.%6N'),
72
- params: event.payload[:params].as_json(except: exceptions).to_json.to_s
73
- }
74
- items.merge!({exception_object: event.payload[:exception_object]}) if event.payload[:exception_object].present?
75
- items.merge!({exception: event.payload[:exception]}) if event.payload[:exception].present?
76
-
77
- if event.payload[:headers].present?
78
- # By convertion, headers usually do not have dots. Nginx even rejects headers with dots
79
- # All Rails headers are namespaced, like 'rack.input'.
80
- # Thus, we can obtain the client headers by rejecting dots
81
- request_headers =
82
- event.payload[:headers].env.
83
- reject { |key| key.to_s.include?('.') || REQUEST_HEADERS_TO_IGNORE.include?(key.to_s) }
84
- begin
85
- if request_headers["HTTP_AUTHORIZATION"].present?
86
- if request_headers["HTTP_AUTHORIZATION"].include?("Basic")
87
- user_password = request_headers["HTTP_AUTHORIZATION"].split("Basic").last.strip
88
- user, password = Base64.decode64(user_password).split(":")
89
- request_headers["HTTP_AUTHORIZATION"] = "Basic #{user}:ValueFiltered"
90
- elsif
91
- request_headers["HTTP_AUTHORIZATION"] = "ValueFiltered"
92
- end
93
- end
94
- request_headers["HTTP_API_TOKEN"] = "ValueFiltered" if request_headers["HTTP_API_TOKEN"].present?
95
- rescue
96
- request_headers.delete("HTTP_API_TOKEN")
97
- request_headers.delete("HTTP_AUTHORIZATION")
98
- end
99
- items.merge!({ headers: request_headers.to_s })
100
- end
101
-
102
- if Thread.current[:appinstance].present?
103
- items.merge!({connect_user: Thread.current[:appinstance].connect_user, new_session: Thread.current[:appinstance].new_session_message})
104
- if Thread.current[:appinstance].logitems.present? && Thread.current[:appinstance].logitems.class == Hash
105
- items.merge!(Thread.current[:appinstance].logitems)
106
- end
107
- end
108
- return items
109
- end
110
- end
111
- end
112
35
  end
113
36
  end
@@ -1,3 +1,3 @@
1
1
  module ZuoraConnect
2
- VERSION = "2.0.60u"
2
+ VERSION = "3.0.0l"
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.60u
4
+ version: 3.0.0l
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-11-18 00:00:00.000000000 Z
11
+ date: 2020-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: apartment
@@ -56,40 +56,40 @@ dependencies:
56
56
  name: zuora_api
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: 1.7.00
62
- - - "~>"
62
+ - - ">="
63
63
  - !ruby/object:Gem::Version
64
64
  version: 1.7.00
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
- - - ">="
69
+ - - "~>"
70
70
  - !ruby/object:Gem::Version
71
71
  version: 1.7.00
72
- - - "~>"
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: 1.7.00
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: httparty
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - ">="
79
+ - - "~>"
80
80
  - !ruby/object:Gem::Version
81
81
  version: 0.16.4
82
- - - "~>"
82
+ - - ">="
83
83
  - !ruby/object:Gem::Version
84
84
  version: 0.16.4
85
85
  type: :runtime
86
86
  prerelease: false
87
87
  version_requirements: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - ">="
89
+ - - "~>"
90
90
  - !ruby/object:Gem::Version
91
91
  version: 0.16.4
92
- - - "~>"
92
+ - - ">="
93
93
  - !ruby/object:Gem::Version
94
94
  version: 0.16.4
95
95
  - !ruby/object:Gem::Dependency
@@ -182,6 +182,20 @@ dependencies:
182
182
  - - ">="
183
183
  - !ruby/object:Gem::Version
184
184
  version: '0'
185
+ - !ruby/object:Gem::Dependency
186
+ name: zuora_observability
187
+ requirement: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - '='
190
+ - !ruby/object:Gem::Version
191
+ version: 0.1.0.pre.b
192
+ type: :runtime
193
+ prerelease: false
194
+ version_requirements: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - '='
197
+ - !ruby/object:Gem::Version
198
+ version: 0.1.0.pre.b
185
199
  - !ruby/object:Gem::Dependency
186
200
  name: rspec
187
201
  requirement: !ruby/object:Gem::Requirement
@@ -196,6 +210,20 @@ dependencies:
196
210
  - - "~>"
197
211
  - !ruby/object:Gem::Version
198
212
  version: '3.0'
213
+ - !ruby/object:Gem::Dependency
214
+ name: rspec_junit_formatter
215
+ requirement: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - ">="
218
+ - !ruby/object:Gem::Version
219
+ version: '0'
220
+ type: :development
221
+ prerelease: false
222
+ version_requirements: !ruby/object:Gem::Requirement
223
+ requirements:
224
+ - - ">="
225
+ - !ruby/object:Gem::Version
226
+ version: '0'
199
227
  - !ruby/object:Gem::Dependency
200
228
  name: rspec-rails
201
229
  requirement: !ruby/object:Gem::Requirement
@@ -224,6 +252,34 @@ dependencies:
224
252
  - - ">="
225
253
  - !ruby/object:Gem::Version
226
254
  version: '0'
255
+ - !ruby/object:Gem::Dependency
256
+ name: simplecov
257
+ requirement: !ruby/object:Gem::Requirement
258
+ requirements:
259
+ - - ">="
260
+ - !ruby/object:Gem::Version
261
+ version: '0'
262
+ type: :development
263
+ prerelease: false
264
+ version_requirements: !ruby/object:Gem::Requirement
265
+ requirements:
266
+ - - ">="
267
+ - !ruby/object:Gem::Version
268
+ version: '0'
269
+ - !ruby/object:Gem::Dependency
270
+ name: simplecov-cobertura
271
+ requirement: !ruby/object:Gem::Requirement
272
+ requirements:
273
+ - - ">="
274
+ - !ruby/object:Gem::Version
275
+ version: '0'
276
+ type: :development
277
+ prerelease: false
278
+ version_requirements: !ruby/object:Gem::Requirement
279
+ requirements:
280
+ - - ">="
281
+ - !ruby/object:Gem::Version
282
+ version: '0'
227
283
  - !ruby/object:Gem::Dependency
228
284
  name: factory_bot
229
285
  requirement: !ruby/object:Gem::Requirement
@@ -318,7 +374,6 @@ files:
318
374
  - app/models/zuora_connect/app_instance.rb
319
375
  - app/models/zuora_connect/app_instance_base.rb
320
376
  - app/models/zuora_connect/login.rb
321
- - app/models/zuora_connect/telegraf.rb
322
377
  - app/models/zuora_connect/zuora_user.rb
323
378
  - app/views/layouts/zuora_connect/application.html.erb
324
379
  - app/views/sql/refresh_aggregate_table.txt
@@ -353,8 +408,6 @@ files:
353
408
  - db/migrate/20190520232222_add_unique_index.rb
354
409
  - db/migrate/20190520232223_add_provisioning_fields.rb
355
410
  - db/migrate/20190520232224_add_environment_fields.rb
356
- - lib/logging/connect_formatter.rb
357
- - lib/metrics/influx/point_value.rb
358
411
  - lib/metrics/net.rb
359
412
  - lib/middleware/bad_multipart_form_data_sanitizer.rb
360
413
  - lib/middleware/json_parse_errors.rb
@@ -434,7 +487,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
434
487
  - !ruby/object:Gem::Version
435
488
  version: 1.3.1
436
489
  requirements: []
437
- rubygems_version: 3.0.3
490
+ rubygems_version: 3.1.4
438
491
  signing_key:
439
492
  specification_version: 4
440
493
  summary: Summary of Connect.