module XRay::Plugins
Public Class Methods
do_request(request)
click to toggle source
# File lib/aws-xray-sdk/plugins/ec2.rb, line 69 def self.do_request(request) begin response = Net::HTTP.start(request.uri.hostname, read_timeout: 1) { |http| http.request(request) } if response.code == '200' return response.body else raise(StandardError.new('Unsuccessful response::' + response.code + '::' + response.message)) end rescue StandardError => e # Two attempts in total to complete the request successfully @retries ||= 0 if @retries < 1 @retries += 1 retry else Logging.logger.warn %(Failed to complete request due to: #{e.message}.) raise e end end end
get_metadata(token)
click to toggle source
# File lib/aws-xray-sdk/plugins/ec2.rb, line 41 def self.get_metadata(token) metadata_uri = URI(METADATA_BASE_URL + '/dynamic/instance-identity/document') req = Net::HTTP::Get.new(metadata_uri) if token != '' req['X-aws-ec2-metadata-token'] = token end begin metadata_json = do_request(req) return parse_metadata(metadata_json) rescue StandardError => e Logging.logger.warn %(cannot get the ec2 instance metadata due to: #{e.message}.) {} end end
parse_metadata(json_str)
click to toggle source
# File lib/aws-xray-sdk/plugins/ec2.rb, line 58 def self.parse_metadata(json_str) metadata = {} data = JSON(json_str) metadata['instance_id'] = data['instanceId'] metadata['availability_zone'] = data['availabilityZone'] metadata['instance_type'] = data['instanceType'] metadata['ami_id'] = data['imageId'] metadata end