newrelic_rpm 8.10.1 → 8.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (385) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.rubocop.yml +20 -187
  4. data/.rubocop_todo.yml +11 -202
  5. data/.simplecov +6 -4
  6. data/CHANGELOG.md +68 -25
  7. data/Gemfile +0 -1
  8. data/README.md +1 -1
  9. data/Rakefile +3 -20
  10. data/Thorfile +0 -1
  11. data/bin/nrdebug +63 -43
  12. data/config.dot +5 -5
  13. data/init.rb +1 -2
  14. data/install.rb +1 -2
  15. data/lib/new_relic/agent/adaptive_sampler.rb +0 -1
  16. data/lib/new_relic/agent/agent/shutdown.rb +0 -1
  17. data/lib/new_relic/agent/agent/special_startup.rb +0 -1
  18. data/lib/new_relic/agent/agent/start_worker_thread.rb +0 -1
  19. data/lib/new_relic/agent/agent/startup.rb +0 -1
  20. data/lib/new_relic/agent/agent.rb +100 -73
  21. data/lib/new_relic/agent/agent_logger.rb +4 -5
  22. data/lib/new_relic/agent/attribute_filter.rb +39 -21
  23. data/lib/new_relic/agent/attribute_processing.rb +3 -4
  24. data/lib/new_relic/agent/attributes.rb +0 -1
  25. data/lib/new_relic/agent/audit_logger.rb +2 -3
  26. data/lib/new_relic/agent/autostart.rb +0 -1
  27. data/lib/new_relic/agent/chained_call.rb +0 -1
  28. data/lib/new_relic/agent/commands/agent_command.rb +0 -1
  29. data/lib/new_relic/agent/commands/agent_command_router.rb +3 -4
  30. data/lib/new_relic/agent/commands/thread_profiler_session.rb +0 -1
  31. data/lib/new_relic/agent/configuration/default_source.rb +56 -27
  32. data/lib/new_relic/agent/configuration/dotted_hash.rb +1 -2
  33. data/lib/new_relic/agent/configuration/environment_source.rb +3 -4
  34. data/lib/new_relic/agent/configuration/event_harvest_config.rb +0 -1
  35. data/lib/new_relic/agent/configuration/high_security_source.rb +0 -1
  36. data/lib/new_relic/agent/configuration/manager.rb +1 -2
  37. data/lib/new_relic/agent/configuration/manual_source.rb +0 -1
  38. data/lib/new_relic/agent/configuration/mask_defaults.rb +2 -3
  39. data/lib/new_relic/agent/configuration/security_policy_source.rb +0 -1
  40. data/lib/new_relic/agent/configuration/server_source.rb +0 -1
  41. data/lib/new_relic/agent/configuration/yaml_source.rb +2 -3
  42. data/lib/new_relic/agent/configuration.rb +0 -1
  43. data/lib/new_relic/agent/connect/request_builder.rb +1 -2
  44. data/lib/new_relic/agent/connect/response_handler.rb +1 -2
  45. data/lib/new_relic/agent/custom_event_aggregator.rb +0 -1
  46. data/lib/new_relic/agent/database/explain_plan_helpers.rb +0 -1
  47. data/lib/new_relic/agent/database/obfuscation_helpers.rb +0 -1
  48. data/lib/new_relic/agent/database/obfuscator.rb +0 -1
  49. data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +0 -1
  50. data/lib/new_relic/agent/database.rb +13 -14
  51. data/lib/new_relic/agent/database_adapter.rb +0 -1
  52. data/lib/new_relic/agent/datastores/metric_helper.rb +0 -4
  53. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +2 -3
  54. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +1 -4
  55. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +0 -1
  56. data/lib/new_relic/agent/datastores/mongo.rb +0 -1
  57. data/lib/new_relic/agent/datastores/redis.rb +0 -1
  58. data/lib/new_relic/agent/datastores.rb +0 -1
  59. data/lib/new_relic/agent/deprecator.rb +0 -1
  60. data/lib/new_relic/agent/distributed_tracing/cross_app_payload.rb +0 -1
  61. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +0 -1
  62. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +0 -1
  63. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +0 -1
  64. data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +0 -2
  65. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +0 -1
  66. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +0 -1
  67. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +0 -1
  68. data/lib/new_relic/agent/distributed_tracing.rb +0 -1
  69. data/lib/new_relic/agent/encoding_normalizer.rb +0 -1
  70. data/lib/new_relic/agent/error_collector.rb +0 -1
  71. data/lib/new_relic/agent/error_event_aggregator.rb +0 -1
  72. data/lib/new_relic/agent/error_filter.rb +4 -5
  73. data/lib/new_relic/agent/error_trace_aggregator.rb +1 -2
  74. data/lib/new_relic/agent/event_aggregator.rb +0 -1
  75. data/lib/new_relic/agent/event_buffer.rb +0 -1
  76. data/lib/new_relic/agent/event_listener.rb +0 -1
  77. data/lib/new_relic/agent/event_loop.rb +2 -3
  78. data/lib/new_relic/agent/external.rb +1 -2
  79. data/lib/new_relic/agent/guid_generator.rb +0 -1
  80. data/lib/new_relic/agent/harvester.rb +0 -1
  81. data/lib/new_relic/agent/heap.rb +2 -3
  82. data/lib/new_relic/agent/hostname.rb +0 -1
  83. data/lib/new_relic/agent/http_clients/abstract.rb +0 -1
  84. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +0 -1
  85. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +0 -1
  86. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +1 -2
  87. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +1 -2
  88. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +0 -1
  89. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +1 -2
  90. data/lib/new_relic/agent/http_clients/uri_util.rb +0 -1
  91. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +0 -1
  92. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +0 -1
  93. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +1 -2
  94. data/lib/new_relic/agent/instrumentation/active_job.rb +0 -1
  95. data/lib/new_relic/agent/instrumentation/active_merchant.rb +2 -2
  96. data/lib/new_relic/agent/instrumentation/active_record.rb +0 -1
  97. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +0 -1
  98. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +0 -1
  99. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +0 -1
  100. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +0 -1
  101. data/lib/new_relic/agent/instrumentation/active_storage.rb +0 -1
  102. data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +0 -1
  103. data/lib/new_relic/agent/instrumentation/active_support_logger/chain.rb +0 -1
  104. data/lib/new_relic/agent/instrumentation/active_support_logger/instrumentation.rb +0 -1
  105. data/lib/new_relic/agent/instrumentation/active_support_logger/prepend.rb +0 -1
  106. data/lib/new_relic/agent/instrumentation/active_support_logger.rb +0 -1
  107. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +0 -1
  108. data/lib/new_relic/agent/instrumentation/authlogic.rb +0 -1
  109. data/lib/new_relic/agent/instrumentation/bunny/chain.rb +0 -1
  110. data/lib/new_relic/agent/instrumentation/bunny/instrumentation.rb +0 -1
  111. data/lib/new_relic/agent/instrumentation/bunny/prepend.rb +0 -1
  112. data/lib/new_relic/agent/instrumentation/bunny.rb +0 -1
  113. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +2 -3
  114. data/lib/new_relic/agent/instrumentation/curb/chain.rb +0 -1
  115. data/lib/new_relic/agent/instrumentation/curb/instrumentation.rb +14 -11
  116. data/lib/new_relic/agent/instrumentation/curb/prepend.rb +0 -1
  117. data/lib/new_relic/agent/instrumentation/curb.rb +0 -1
  118. data/lib/new_relic/agent/instrumentation/data_mapper.rb +1 -2
  119. data/lib/new_relic/agent/instrumentation/delayed_job/chain.rb +0 -1
  120. data/lib/new_relic/agent/instrumentation/delayed_job/instrumentation.rb +0 -1
  121. data/lib/new_relic/agent/instrumentation/delayed_job/prepend.rb +0 -1
  122. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +0 -1
  123. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +0 -1
  124. data/lib/new_relic/agent/instrumentation/excon.rb +0 -1
  125. data/lib/new_relic/agent/instrumentation/grape/chain.rb +0 -1
  126. data/lib/new_relic/agent/instrumentation/grape/instrumentation.rb +0 -1
  127. data/lib/new_relic/agent/instrumentation/grape/prepend.rb +0 -1
  128. data/lib/new_relic/agent/instrumentation/grape.rb +0 -1
  129. data/lib/new_relic/agent/instrumentation/grpc/client/chain.rb +0 -1
  130. data/lib/new_relic/agent/instrumentation/grpc/client/instrumentation.rb +0 -1
  131. data/lib/new_relic/agent/instrumentation/grpc/client/prepend.rb +0 -1
  132. data/lib/new_relic/agent/instrumentation/grpc/client/request_wrapper.rb +0 -1
  133. data/lib/new_relic/agent/instrumentation/grpc/helper.rb +0 -1
  134. data/lib/new_relic/agent/instrumentation/grpc/server/chain.rb +0 -1
  135. data/lib/new_relic/agent/instrumentation/grpc/server/instrumentation.rb +0 -1
  136. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_desc_prepend.rb +0 -1
  137. data/lib/new_relic/agent/instrumentation/grpc/server/rpc_server_prepend.rb +0 -1
  138. data/lib/new_relic/agent/instrumentation/grpc_client.rb +0 -1
  139. data/lib/new_relic/agent/instrumentation/grpc_server.rb +0 -1
  140. data/lib/new_relic/agent/instrumentation/httpclient/chain.rb +0 -1
  141. data/lib/new_relic/agent/instrumentation/httpclient/instrumentation.rb +0 -1
  142. data/lib/new_relic/agent/instrumentation/httpclient/prepend.rb +0 -1
  143. data/lib/new_relic/agent/instrumentation/httpclient.rb +0 -1
  144. data/lib/new_relic/agent/instrumentation/httprb/chain.rb +0 -1
  145. data/lib/new_relic/agent/instrumentation/httprb/instrumentation.rb +0 -1
  146. data/lib/new_relic/agent/instrumentation/httprb/prepend.rb +0 -1
  147. data/lib/new_relic/agent/instrumentation/httprb.rb +0 -1
  148. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +0 -1
  149. data/lib/new_relic/agent/instrumentation/logger/chain.rb +0 -1
  150. data/lib/new_relic/agent/instrumentation/logger/instrumentation.rb +0 -1
  151. data/lib/new_relic/agent/instrumentation/logger/prepend.rb +0 -1
  152. data/lib/new_relic/agent/instrumentation/logger.rb +0 -1
  153. data/lib/new_relic/agent/instrumentation/memcache/chain.rb +0 -1
  154. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +1 -2
  155. data/lib/new_relic/agent/instrumentation/memcache/helper.rb +0 -1
  156. data/lib/new_relic/agent/instrumentation/memcache/instrumentation.rb +0 -1
  157. data/lib/new_relic/agent/instrumentation/memcache/prepend.rb +1 -2
  158. data/lib/new_relic/agent/instrumentation/memcache.rb +4 -5
  159. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +1 -2
  160. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +0 -1
  161. data/lib/new_relic/agent/instrumentation/mongo.rb +0 -1
  162. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +1 -2
  163. data/lib/new_relic/agent/instrumentation/net_http/chain.rb +0 -1
  164. data/lib/new_relic/agent/instrumentation/net_http/instrumentation.rb +0 -1
  165. data/lib/new_relic/agent/instrumentation/net_http/prepend.rb +0 -1
  166. data/lib/new_relic/agent/instrumentation/net_http.rb +0 -1
  167. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +2 -3
  168. data/lib/new_relic/agent/instrumentation/padrino/chain.rb +0 -1
  169. data/lib/new_relic/agent/instrumentation/padrino/instrumentation.rb +0 -1
  170. data/lib/new_relic/agent/instrumentation/padrino/prepend.rb +0 -1
  171. data/lib/new_relic/agent/instrumentation/padrino.rb +0 -1
  172. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +0 -1
  173. data/lib/new_relic/agent/instrumentation/queue_time.rb +0 -2
  174. data/lib/new_relic/agent/instrumentation/rack/chain.rb +0 -1
  175. data/lib/new_relic/agent/instrumentation/rack/helpers.rb +0 -1
  176. data/lib/new_relic/agent/instrumentation/rack/instrumentation.rb +0 -1
  177. data/lib/new_relic/agent/instrumentation/rack/prepend.rb +0 -1
  178. data/lib/new_relic/agent/instrumentation/rack.rb +0 -1
  179. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +0 -1
  180. data/lib/new_relic/agent/instrumentation/rails_middleware.rb +0 -1
  181. data/lib/new_relic/agent/instrumentation/rails_notifications/action_cable.rb +0 -1
  182. data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +0 -1
  183. data/lib/new_relic/agent/instrumentation/rails_notifications/action_view.rb +0 -1
  184. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +0 -1
  185. data/lib/new_relic/agent/instrumentation/rake/chain.rb +0 -1
  186. data/lib/new_relic/agent/instrumentation/rake/instrumentation.rb +5 -1
  187. data/lib/new_relic/agent/instrumentation/rake/prepend.rb +0 -1
  188. data/lib/new_relic/agent/instrumentation/rake.rb +0 -1
  189. data/lib/new_relic/agent/instrumentation/redis/chain.rb +0 -1
  190. data/lib/new_relic/agent/instrumentation/redis/instrumentation.rb +0 -1
  191. data/lib/new_relic/agent/instrumentation/redis/prepend.rb +0 -1
  192. data/lib/new_relic/agent/instrumentation/redis.rb +0 -1
  193. data/lib/new_relic/agent/instrumentation/resque/chain.rb +0 -1
  194. data/lib/new_relic/agent/instrumentation/resque/helper.rb +0 -1
  195. data/lib/new_relic/agent/instrumentation/resque/instrumentation.rb +0 -1
  196. data/lib/new_relic/agent/instrumentation/resque/prepend.rb +0 -1
  197. data/lib/new_relic/agent/instrumentation/resque.rb +0 -1
  198. data/lib/new_relic/agent/instrumentation/sequel.rb +0 -1
  199. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +0 -1
  200. data/lib/new_relic/agent/instrumentation/sidekiq.rb +1 -2
  201. data/lib/new_relic/agent/instrumentation/sinatra/chain.rb +0 -1
  202. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +0 -1
  203. data/lib/new_relic/agent/instrumentation/sinatra/instrumentation.rb +0 -1
  204. data/lib/new_relic/agent/instrumentation/sinatra/prepend.rb +0 -1
  205. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +0 -1
  206. data/lib/new_relic/agent/instrumentation/sinatra.rb +0 -1
  207. data/lib/new_relic/agent/instrumentation/sunspot.rb +0 -1
  208. data/lib/new_relic/agent/instrumentation/thread/chain.rb +0 -1
  209. data/lib/new_relic/agent/instrumentation/thread/instrumentation.rb +0 -1
  210. data/lib/new_relic/agent/instrumentation/thread/prepend.rb +0 -1
  211. data/lib/new_relic/agent/instrumentation/thread.rb +0 -1
  212. data/lib/new_relic/agent/instrumentation/tilt/chain.rb +0 -1
  213. data/lib/new_relic/agent/instrumentation/tilt/instrumentation.rb +0 -1
  214. data/lib/new_relic/agent/instrumentation/tilt/prepend.rb +0 -1
  215. data/lib/new_relic/agent/instrumentation/tilt.rb +0 -1
  216. data/lib/new_relic/agent/instrumentation/typhoeus/chain.rb +0 -1
  217. data/lib/new_relic/agent/instrumentation/typhoeus/instrumentation.rb +3 -4
  218. data/lib/new_relic/agent/instrumentation/typhoeus/prepend.rb +0 -1
  219. data/lib/new_relic/agent/instrumentation/typhoeus.rb +0 -1
  220. data/lib/new_relic/agent/instrumentation.rb +0 -1
  221. data/lib/new_relic/agent/internal_agent_error.rb +0 -1
  222. data/lib/new_relic/agent/javascript_instrumentor.rb +1 -2
  223. data/lib/new_relic/agent/linking_metadata.rb +0 -1
  224. data/lib/new_relic/agent/local_log_decorator.rb +0 -1
  225. data/lib/new_relic/agent/log_event_aggregator.rb +0 -1
  226. data/lib/new_relic/agent/log_once.rb +0 -1
  227. data/lib/new_relic/agent/log_priority.rb +0 -1
  228. data/lib/new_relic/agent/logging.rb +0 -1
  229. data/lib/new_relic/agent/memory_logger.rb +0 -1
  230. data/lib/new_relic/agent/messaging.rb +1 -2
  231. data/lib/new_relic/agent/method_tracer.rb +0 -1
  232. data/lib/new_relic/agent/method_tracer_helpers.rb +1 -2
  233. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +0 -1
  234. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +0 -1
  235. data/lib/new_relic/agent/monitors/inbound_request_monitor.rb +0 -1
  236. data/lib/new_relic/agent/monitors/synthetics_monitor.rb +0 -1
  237. data/lib/new_relic/agent/monitors.rb +0 -1
  238. data/lib/new_relic/agent/new_relic_service/encoders.rb +0 -1
  239. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +0 -1
  240. data/lib/new_relic/agent/new_relic_service/marshaller.rb +0 -1
  241. data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +0 -1
  242. data/lib/new_relic/agent/new_relic_service.rb +193 -142
  243. data/lib/new_relic/agent/{noticible_error.rb → noticeable_error.rb} +1 -2
  244. data/lib/new_relic/agent/null_logger.rb +0 -1
  245. data/lib/new_relic/agent/obfuscator.rb +1 -2
  246. data/lib/new_relic/agent/parameter_filtering.rb +0 -1
  247. data/lib/new_relic/agent/payload_metric_mapping.rb +0 -1
  248. data/lib/new_relic/agent/pipe_channel_manager.rb +0 -1
  249. data/lib/new_relic/agent/pipe_service.rb +0 -1
  250. data/lib/new_relic/agent/prepend_supportability.rb +0 -1
  251. data/lib/new_relic/agent/priority_sampled_buffer.rb +2 -3
  252. data/lib/new_relic/agent/range_extensions.rb +0 -1
  253. data/lib/new_relic/agent/rules_engine/replacement_rule.rb +0 -1
  254. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +0 -1
  255. data/lib/new_relic/agent/rules_engine.rb +0 -1
  256. data/lib/new_relic/agent/sampler.rb +0 -1
  257. data/lib/new_relic/agent/sampler_collection.rb +0 -1
  258. data/lib/new_relic/agent/samplers/cpu_sampler.rb +0 -1
  259. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +0 -1
  260. data/lib/new_relic/agent/samplers/memory_sampler.rb +5 -6
  261. data/lib/new_relic/agent/samplers/object_sampler.rb +0 -1
  262. data/lib/new_relic/agent/samplers/vm_sampler.rb +2 -1
  263. data/lib/new_relic/agent/span_event_aggregator.rb +0 -1
  264. data/lib/new_relic/agent/span_event_primitive.rb +0 -2
  265. data/lib/new_relic/agent/sql_sampler.rb +0 -1
  266. data/lib/new_relic/agent/stats.rb +12 -3
  267. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +0 -2
  268. data/lib/new_relic/agent/stats_engine/stats_hash.rb +1 -2
  269. data/lib/new_relic/agent/stats_engine.rb +0 -1
  270. data/lib/new_relic/agent/synthetics_event_aggregator.rb +0 -1
  271. data/lib/new_relic/agent/system_info.rb +1 -2
  272. data/lib/new_relic/agent/threading/agent_thread.rb +2 -3
  273. data/lib/new_relic/agent/threading/backtrace_node.rb +0 -1
  274. data/lib/new_relic/agent/threading/backtrace_service.rb +0 -1
  275. data/lib/new_relic/agent/threading/thread_profile.rb +1 -2
  276. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +0 -1
  277. data/lib/new_relic/agent/tracer.rb +2 -3
  278. data/lib/new_relic/agent/transaction/abstract_segment.rb +2 -3
  279. data/lib/new_relic/agent/transaction/datastore_segment.rb +0 -1
  280. data/lib/new_relic/agent/transaction/distributed_tracer.rb +0 -1
  281. data/lib/new_relic/agent/transaction/distributed_tracing.rb +0 -1
  282. data/lib/new_relic/agent/transaction/external_request_segment.rb +1 -2
  283. data/lib/new_relic/agent/transaction/message_broker_segment.rb +0 -1
  284. data/lib/new_relic/agent/transaction/request_attributes.rb +0 -1
  285. data/lib/new_relic/agent/transaction/segment.rb +0 -1
  286. data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +0 -1
  287. data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +0 -1
  288. data/lib/new_relic/agent/transaction/trace.rb +0 -1
  289. data/lib/new_relic/agent/transaction/trace_builder.rb +0 -1
  290. data/lib/new_relic/agent/transaction/trace_context.rb +0 -1
  291. data/lib/new_relic/agent/transaction/trace_node.rb +2 -3
  292. data/lib/new_relic/agent/transaction/tracing.rb +0 -1
  293. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +0 -2
  294. data/lib/new_relic/agent/transaction.rb +3 -5
  295. data/lib/new_relic/agent/transaction_error_primitive.rb +0 -1
  296. data/lib/new_relic/agent/transaction_event_aggregator.rb +0 -1
  297. data/lib/new_relic/agent/transaction_event_primitive.rb +0 -1
  298. data/lib/new_relic/agent/transaction_event_recorder.rb +1 -2
  299. data/lib/new_relic/agent/transaction_metrics.rb +1 -2
  300. data/lib/new_relic/agent/transaction_sampler.rb +0 -1
  301. data/lib/new_relic/agent/transaction_time_aggregator.rb +1 -2
  302. data/lib/new_relic/agent/utilization/aws.rb +0 -1
  303. data/lib/new_relic/agent/utilization/azure.rb +1 -2
  304. data/lib/new_relic/agent/utilization/gcp.rb +1 -2
  305. data/lib/new_relic/agent/utilization/pcf.rb +1 -2
  306. data/lib/new_relic/agent/utilization/vendor.rb +1 -2
  307. data/lib/new_relic/agent/utilization_data.rb +0 -1
  308. data/lib/new_relic/agent/vm/jruby_vm.rb +0 -1
  309. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +0 -1
  310. data/lib/new_relic/agent/vm/mri_vm.rb +35 -23
  311. data/lib/new_relic/agent/vm/snapshot.rb +1 -2
  312. data/lib/new_relic/agent/vm.rb +0 -1
  313. data/lib/new_relic/agent/worker_loop.rb +0 -1
  314. data/lib/new_relic/agent.rb +13 -16
  315. data/lib/new_relic/cli/command.rb +1 -2
  316. data/lib/new_relic/cli/commands/deployments.rb +72 -21
  317. data/lib/new_relic/cli/commands/install.rb +0 -1
  318. data/lib/new_relic/coerce.rb +0 -1
  319. data/lib/new_relic/collection_helper.rb +1 -2
  320. data/lib/new_relic/constants.rb +0 -1
  321. data/lib/new_relic/control/class_methods.rb +0 -1
  322. data/lib/new_relic/control/frameworks/external.rb +0 -1
  323. data/lib/new_relic/control/frameworks/rails.rb +0 -1
  324. data/lib/new_relic/control/frameworks/rails3.rb +0 -1
  325. data/lib/new_relic/control/frameworks/rails4.rb +0 -1
  326. data/lib/new_relic/control/frameworks/rails_notifications.rb +0 -1
  327. data/lib/new_relic/control/frameworks/ruby.rb +0 -1
  328. data/lib/new_relic/control/frameworks/sinatra.rb +0 -1
  329. data/lib/new_relic/control/frameworks.rb +0 -1
  330. data/lib/new_relic/control/instance_methods.rb +17 -40
  331. data/lib/new_relic/control/instrumentation.rb +0 -1
  332. data/lib/new_relic/control/private_instance_methods.rb +48 -0
  333. data/lib/new_relic/control/server_methods.rb +0 -1
  334. data/lib/new_relic/control.rb +0 -1
  335. data/lib/new_relic/delayed_job_injection.rb +0 -1
  336. data/lib/new_relic/dependency_detection.rb +3 -4
  337. data/lib/new_relic/environment_report.rb +23 -14
  338. data/lib/new_relic/helper.rb +1 -2
  339. data/lib/new_relic/language_support.rb +2 -3
  340. data/lib/new_relic/latest_changes.rb +3 -4
  341. data/lib/new_relic/local_environment.rb +3 -4
  342. data/lib/new_relic/metric_data.rb +27 -22
  343. data/lib/new_relic/metric_spec.rb +0 -1
  344. data/lib/new_relic/noticed_error.rb +3 -6
  345. data/lib/new_relic/rack/agent_hooks.rb +0 -1
  346. data/lib/new_relic/rack/agent_middleware.rb +0 -1
  347. data/lib/new_relic/rack/browser_monitoring.rb +131 -123
  348. data/lib/new_relic/rack.rb +0 -1
  349. data/lib/new_relic/recipes/capistrano3.rb +2 -59
  350. data/lib/new_relic/recipes/capistrano_legacy.rb +1 -2
  351. data/lib/new_relic/recipes/helpers/send_deployment.rb +69 -0
  352. data/lib/new_relic/recipes.rb +0 -1
  353. data/lib/new_relic/supportability_helper.rb +1 -2
  354. data/lib/new_relic/traced_thread.rb +0 -1
  355. data/lib/new_relic/version.rb +2 -3
  356. data/lib/newrelic_rpm.rb +0 -1
  357. data/lib/sequel/extensions/newrelic_instrumentation.rb +2 -3
  358. data/lib/sequel/plugins/newrelic_instrumentation.rb +0 -1
  359. data/lib/tasks/all.rb +0 -1
  360. data/lib/tasks/config.rake +4 -113
  361. data/lib/tasks/coverage_report.rake +14 -19
  362. data/lib/tasks/{config.html.erb → helpers/config.html.erb} +0 -0
  363. data/lib/tasks/{config.text.erb → helpers/config.text.erb} +0 -0
  364. data/lib/tasks/helpers/format.rb +120 -0
  365. data/lib/tasks/helpers/matches.rb +12 -0
  366. data/lib/tasks/helpers/prompt.rb +24 -0
  367. data/lib/tasks/helpers/removers.rb +33 -0
  368. data/lib/tasks/install.rake +0 -1
  369. data/lib/tasks/instrumentation_generator/README.md +1 -1
  370. data/lib/tasks/instrumentation_generator/instrumentation.thor +22 -16
  371. data/lib/tasks/instrumentation_generator/templates/Envfile.tt +0 -1
  372. data/lib/tasks/instrumentation_generator/templates/chain.tt +0 -1
  373. data/lib/tasks/instrumentation_generator/templates/dependency_detection.tt +0 -1
  374. data/lib/tasks/instrumentation_generator/templates/instrumentation.tt +0 -1
  375. data/lib/tasks/instrumentation_generator/templates/prepend.tt +0 -1
  376. data/lib/tasks/instrumentation_generator/templates/test.tt +0 -1
  377. data/lib/tasks/multiverse.rake +0 -1
  378. data/lib/tasks/multiverse.rb +3 -29
  379. data/lib/tasks/newrelic.rb +0 -1
  380. data/lib/tasks/tests.rake +3 -8
  381. data/newrelic.yml +10 -1
  382. data/newrelic_rpm.gemspec +6 -7
  383. data/recipes/newrelic.rb +0 -1
  384. data/test/agent_helper.rb +17 -35
  385. metadata +11 -5
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -108,7 +107,7 @@ module NewRelic
108
107
  end
109
108
 
110
109
  # ObjectSpace is faster on MRI, but disabled by default on JRuby for
111
- # perfomance reasons. We have two implmentations of `thread_by_id`
110
+ # performance reasons. We have two implementations of `thread_by_id`
112
111
  # based on ruby implementation.
113
112
  if RUBY_ENGINE == 'jruby'
114
113
  def thread_by_id(thread_id)
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -10,7 +9,7 @@ module NewRelic
10
9
  vendor_name "azure"
11
10
  endpoint "http://169.254.169.254/metadata/instance/compute?api-version=2017-03-01"
12
11
  headers "Metadata" => "true"
13
- keys ["vmId", "name", "vmSize", "location"]
12
+ keys %w[vmId name vmSize location]
14
13
  key_transforms :to_sym
15
14
  end
16
15
  end
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -12,7 +11,7 @@ module NewRelic
12
11
  vendor_name "gcp"
13
12
  endpoint "http://metadata.google.internal/computeMetadata/v1/instance/?recursive=true"
14
13
  headers "Metadata-Flavor" => "Google"
15
- keys ["id", "machineType", "name", "zone"]
14
+ keys %w[id machineType name zone]
16
15
  key_transforms :to_sym
17
16
 
18
17
  MACH_TYPE = 'machineType'.freeze
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -10,7 +9,7 @@ module NewRelic
10
9
  module Utilization
11
10
  class PCF < Vendor
12
11
  vendor_name "pcf"
13
- keys ["CF_INSTANCE_GUID", "CF_INSTANCE_IP", "MEMORY_LIMIT"]
12
+ keys %w[CF_INSTANCE_GUID CF_INSTANCE_IP MEMORY_LIMIT]
14
13
  key_transforms [:downcase, :to_sym]
15
14
 
16
15
  def detect
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -74,7 +73,7 @@ module NewRelic
74
73
 
75
74
  def request_metadata
76
75
  processed_headers = headers
77
- raise if processed_headers.values.include?(:error)
76
+ raise if processed_headers.value?(:error)
78
77
 
79
78
  Timeout.timeout(1) do
80
79
  response = nil
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -24,24 +23,35 @@ module NewRelic
24
23
  end
25
24
 
26
25
  def gather_gc_stats(snap)
27
- if supports?(:gc_runs)
28
- snap.gc_runs = GC.count
29
- end
26
+ gather_gc_runs(snap) if supports?(:gc_runs)
27
+ gather_derived_stats(snap) if GC.respond_to?(:stat)
28
+ end
29
+
30
+ def gather_gc_runs(snap)
31
+ snap.gc_runs = GC.count
32
+ end
30
33
 
31
- if GC.respond_to?(:stat)
32
- gc_stats = GC.stat
33
- snap.total_allocated_object = gc_stats[:total_allocated_objects] || gc_stats[:total_allocated_object]
34
- snap.major_gc_count = gc_stats[:major_gc_count]
35
- snap.minor_gc_count = gc_stats[:minor_gc_count]
36
- snap.heap_live = gc_stats[:heap_live_slots] || gc_stats[:heap_live_slot] || gc_stats[:heap_live_num]
37
- snap.heap_free = gc_stats[:heap_free_slots] || gc_stats[:heap_free_slot] || gc_stats[:heap_free_num]
34
+ def gather_derived_stats(snap)
35
+ stat = GC.stat
36
+ snap.total_allocated_object = derive_from_gc_stats(%i[total_allocated_objects total_allocated_object], stat)
37
+ snap.major_gc_count = derive_from_gc_stats(:major_gc_count, stat)
38
+ snap.minor_gc_count = derive_from_gc_stats(:minor_gc_count, stat)
39
+ snap.heap_live = derive_from_gc_stats(%i[heap_live_slots heap_live_slot heap_live_num], stat)
40
+ snap.heap_free = derive_from_gc_stats(%i[heap_free_slots heap_free_slot heap_free_num], stat)
41
+ end
42
+
43
+ def derive_from_gc_stats(keys, stat)
44
+ Array(keys).each do |key|
45
+ value = stat[key]
46
+ return value if value
38
47
  end
48
+ nil
39
49
  end
40
50
 
41
51
  def gather_gc_time(snap)
42
- if supports?(:gc_total_time)
43
- snap.gc_total_time = NewRelic::Agent.instance.monotonic_gc_profiler.total_time_s
44
- end
52
+ return unless supports?(:gc_total_time)
53
+
54
+ snap.gc_total_time = NewRelic::Agent.instance.monotonic_gc_profiler.total_time_s
45
55
  end
46
56
 
47
57
  def gather_ruby_vm_stats(snap)
@@ -52,18 +62,18 @@ module NewRelic
52
62
  if supports?(:constant_cache_invalidations)
53
63
  snap.constant_cache_invalidations = gather_constant_cache_invalidations
54
64
  end
65
+
66
+ if supports?(:constant_cache_misses)
67
+ snap.constant_cache_misses = gather_constant_cache_misses
68
+ end
55
69
  end
56
70
 
57
71
  def gather_constant_cache_invalidations
58
- # Ruby >= 3.2 uses :constant_cache
59
- # see: https://github.com/ruby/ruby/pull/5433 and https://bugs.ruby-lang.org/issues/18589
60
- # TODO: now that 3.2+ provides more granual cache invalidation data, should we report it instead of summing?
61
- if RUBY_VERSION >= '3.2.0'
62
- RubyVM.stat[:constant_cache].values.sum
63
- # Ruby < 3.2 uses :global_constant_state
64
- else
65
- RubyVM.stat[:global_constant_state]
66
- end
72
+ RubyVM.stat[RUBY_VERSION >= '3.2.0' ? :constant_cache_invalidations : :global_constant_state]
73
+ end
74
+
75
+ def gather_constant_cache_misses
76
+ RubyVM.stat[:constant_cache_misses]
67
77
  end
68
78
 
69
79
  def gather_thread_stats(snap)
@@ -84,6 +94,8 @@ module NewRelic
84
94
  RUBY_VERSION >= '2.1.0' && RUBY_VERSION < '3.0.0'
85
95
  when :constant_cache_invalidations
86
96
  RUBY_VERSION >= '2.1.0'
97
+ when :constant_cache_misses
98
+ RUBY_VERSION >= '3.2.0'
87
99
  else
88
100
  false
89
101
  end
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -10,7 +9,7 @@ module NewRelic
10
9
  attr_accessor :gc_total_time, :gc_runs, :major_gc_count, :minor_gc_count,
11
10
  :total_allocated_object, :heap_live, :heap_free,
12
11
  :method_cache_invalidations, :constant_cache_invalidations,
13
- :thread_count, :taken_at
12
+ :constant_cache_misses, :thread_count, :taken_at
14
13
 
15
14
  def initialize
16
15
  @taken_at = Process.clock_gettime(Process::CLOCK_REALTIME)
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -30,7 +29,7 @@ module NewRelic
30
29
  require 'new_relic/metric_spec'
31
30
  require 'new_relic/metric_data'
32
31
  require 'new_relic/noticed_error'
33
- require 'new_relic/agent/noticible_error'
32
+ require 'new_relic/agent/noticeable_error'
34
33
  require 'new_relic/supportability_helper'
35
34
 
36
35
  require 'new_relic/agent/encoding_normalizer'
@@ -199,15 +198,9 @@ module NewRelic
199
198
 
200
199
  if value.is_a?(Hash)
201
200
  stats = NewRelic::Agent::Stats.new
202
-
203
- stats.call_count = value[:count] if value[:count]
204
- stats.total_call_time = value[:total] if value[:total]
205
- stats.total_exclusive_time = value[:total] if value[:total]
206
- stats.min_call_time = value[:min] if value[:min]
207
- stats.max_call_time = value[:max] if value[:max]
208
- stats.sum_of_squares = value[:sum_of_squares] if value[:sum_of_squares]
209
- value = stats
201
+ value = stats.hash_merge(value)
210
202
  end
203
+
211
204
  agent.stats_engine.tl_record_unscoped_metrics(metric_name, value)
212
205
  end
213
206
 
@@ -238,7 +231,7 @@ module NewRelic
238
231
  # @!group Recording custom errors
239
232
 
240
233
  # Set a filter to be applied to errors that the Ruby Agent will
241
- # track. The block should evalute to the exception to track
234
+ # track. The block should evaluate to the exception to track
242
235
  # (which could be different from the original exception) or nil to
243
236
  # ignore this exception.
244
237
  #
@@ -290,7 +283,7 @@ module NewRelic
290
283
  record_api_supportability_metric(:notice_error)
291
284
 
292
285
  Transaction.notice_error(exception, options)
293
- nil # don't return a noticed error datastructure. it can only hurt.
286
+ nil # don't return a noticed error data structure. it can only hurt.
294
287
  end
295
288
 
296
289
  # @!endgroup
@@ -586,15 +579,19 @@ module NewRelic
586
579
 
587
580
  segment = ::NewRelic::Agent::Tracer.current_segment
588
581
  if segment
589
- # Make sure not to override existing segment-level custom attributes
590
- segment_custom_keys = segment.attributes.custom_attributes.keys.map(&:to_sym)
591
- segment.add_custom_attributes(params.reject { |k, _v| segment_custom_keys.include?(k.to_sym) })
582
+ add_new_segment_attributes(params, segment)
592
583
  end
593
584
  else
594
585
  ::NewRelic::Agent.logger.warn("Bad argument passed to #add_custom_attributes. Expected Hash but got #{params.class}")
595
586
  end
596
587
  end
597
588
 
589
+ def add_new_segment_attributes(params, segment)
590
+ # Make sure not to override existing segment-level custom attributes
591
+ segment_custom_keys = segment.attributes.custom_attributes.keys.map(&:to_sym)
592
+ segment.add_custom_attributes(params.reject { |k, _v| segment_custom_keys.include?(k.to_sym) })
593
+ end
594
+
598
595
  # Add custom attributes to the span event for the current span. Attributes will be visible on spans in the
599
596
  # New Relic Distributed Tracing UI and on span events in New Relic Insights.
600
597
  #
@@ -673,7 +670,7 @@ module NewRelic
673
670
 
674
671
  # Yield to a block that is run with a database metric name context. This means
675
672
  # the Database instrumentation will use this for the metric name if it does not
676
- # otherwise know about a model. This is re-entrant.
673
+ # otherwise know about a model. This is reentrant.
677
674
  #
678
675
  # @param [String,Class,#to_s] model the DB model class
679
676
  #
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -72,7 +71,7 @@ module NewRelic
72
71
  extra = options.order!
73
72
  command = extra.shift
74
73
  # just make it a little easier on them
75
- command = 'deployments' if command =~ /deploy/
74
+ command = 'deployments' if command.include?('deploy')
76
75
  if command.nil?
77
76
  STDERR.puts options
78
77
  elsif !@command_names.include?(command)
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -41,6 +40,7 @@ class NewRelic::Cli::Deployments < NewRelic::Cli::Command
41
40
  load_yaml_from_env(control.env)
42
41
  @appname ||= NewRelic::Agent.config[:app_name][0] || control.env || 'development'
43
42
  @license_key ||= NewRelic::Agent.config[:license_key]
43
+ @api_key ||= NewRelic::Agent.config[:api_key]
44
44
 
45
45
  setup_logging(control.env)
46
46
  end
@@ -65,29 +65,28 @@ class NewRelic::Cli::Deployments < NewRelic::Cli::Command
65
65
  def run
66
66
  begin
67
67
  @description = nil if @description && @description.strip.empty?
68
- create_params = {}
69
- {
70
- :application_id => @appname,
71
- :host => NewRelic::Agent::Hostname.get,
72
- :description => @description,
73
- :user => @user,
74
- :revision => @revision,
75
- :changelog => @changelog
76
- }.each do |k, v|
77
- create_params["deployment[#{k}]"] = v unless v.nil? || v == ''
78
- end
79
- http = ::NewRelic::Agent::NewRelicService.new(nil, control.api_server).http_connection
80
-
81
- uri = "/deployments.xml"
82
68
 
83
69
  if @license_key.nil? || @license_key.empty?
84
- raise "license_key was not set in newrelic.yml for #{control.env}"
70
+ raise "license_key not set in newrelic.yml for #{control.env}. api_key also required to use New Relic REST API v2"
71
+ end
72
+
73
+ if !api_v1? && (@revision.nil? || @revision.empty?)
74
+ raise "revision required when using New Relic REST API v2 with api_key. Pass in revision using: -r, --revision=REV"
85
75
  end
86
- request = Net::HTTP::Post.new(uri, {'x-license-key' => @license_key})
87
- request.content_type = "application/octet-stream"
88
76
 
89
- request.set_form_data(create_params)
77
+ request = if api_v1?
78
+ uri = "/deployments.xml"
79
+ create_request(uri, {'x-license-key' => @license_key}, "application/octet-stream").tap do |req|
80
+ set_params_v1(req)
81
+ end
82
+ else
83
+ uri = "/v2/applications/#{application_id}/deployments.json"
84
+ create_request(uri, {"Api-Key" => @api_key}, "application/json").tap do |req|
85
+ set_params_v2(req)
86
+ end
87
+ end
90
88
 
89
+ http = ::NewRelic::Agent::NewRelicService.new(nil, control.api_server).http_connection
91
90
  response = http.request(request)
92
91
 
93
92
  if response.is_a?(Net::HTTPSuccess)
@@ -109,14 +108,66 @@ class NewRelic::Cli::Deployments < NewRelic::Cli::Command
109
108
  end
110
109
  end
111
110
 
111
+ def api_v1?
112
+ @api_key.nil? || @api_key.empty?
113
+ end
114
+
112
115
  private
113
116
 
117
+ def create_request(uri, headers, content_type)
118
+ Net::HTTP::Post.new(uri, headers).tap do |req|
119
+ req.content_type = content_type
120
+ end
121
+ end
122
+
123
+ def application_id
124
+ return @application_id if @application_id
125
+
126
+ # Need to connect to collector to acquire application id from the connect response
127
+ # but set monitor_mode false because we don't want to actually report anything
128
+ begin
129
+ NewRelic::Agent.manual_start(monitor_mode: false)
130
+ NewRelic::Agent.agent.connect_to_server
131
+ @application_id = NewRelic::Agent.config[:primary_application_id]
132
+ ensure
133
+ NewRelic::Agent.shutdown
134
+ end
135
+ end
136
+
137
+ def set_params_v1(request)
138
+ params = {
139
+ :application_id => @appname,
140
+ :host => NewRelic::Agent::Hostname.get,
141
+ :description => @description,
142
+ :user => @user,
143
+ :revision => @revision,
144
+ :changelog => @changelog
145
+ }.each_with_object({}) do |(k, v), h|
146
+ h["deployment[#{k}]"] = v unless v.nil? || v == ''
147
+ end
148
+ request.set_form_data(params)
149
+ end
150
+
151
+ def set_params_v2(request)
152
+ request.body = {
153
+ "deployment" => {
154
+ :description => @description,
155
+ :user => @user,
156
+ :revision => @revision,
157
+ :changelog => @changelog
158
+ }
159
+ }.to_json
160
+ end
161
+
114
162
  def options
115
163
  OptionParser.new(%Q(Usage: #{$0} #{self.class.command} [OPTIONS] ["description"] ), 40) do |o|
116
164
  o.separator("OPTIONS:")
117
165
  o.on("-a", "--appname=NAME", String,
118
166
  "Set the application name.",
119
- "Default is app_name setting in newrelic.yml") { |e| @appname = e }
167
+ "Default is app_name setting in newrelic.yml. Available only when using API v1.") { |e| @appname = e }
168
+ o.on("-i", "--appid=ID", String,
169
+ "Set the application ID",
170
+ "If not provided, will connect to the New Relic collector to get it") { |i| @application_id = i }
120
171
  o.on("-e", "--environment=name", String,
121
172
  "Override the (RAILS|RUBY|RACK)_ENV setting",
122
173
  "currently: #{control.env}") { |e| @environment = e }
@@ -124,7 +175,7 @@ class NewRelic::Cli::Deployments < NewRelic::Cli::Command
124
175
  "Specify the user deploying, for information only",
125
176
  "Default: #{@user || '<none>'}") { |u| @user = u }
126
177
  o.on("-r", "--revision=REV", String,
127
- "Specify the revision being deployed") { |r| @revision = r }
178
+ "Specify the revision being deployed. Required when using New Relic REST API v2") { |r| @revision = r }
128
179
  o.on("-l", "--license-key=KEY", String,
129
180
  "Specify the license key of the account for the app being deployed") { |l| @license_key = l }
130
181
  o.on("-c", "--changes",
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -12,7 +11,7 @@ module NewRelic
12
11
  def normalize_params(params)
13
12
  case params
14
13
  when Hash
15
- # optimize for empty hash since that is often what this is called with.
14
+ # Optimize for empty hash since that is often what this is called with.
16
15
  return params if params.empty?
17
16
  new_params = {}
18
17
  params.each do |key, value|
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  # This file is distributed under New Relic's license terms.
3
2
  # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
3
  # frozen_string_literal: true