module Bottompad1

Constants

VERSION

Public Class Methods

set_sftrace_config(current_path, env) click to toggle source
# File lib/bottompad1.rb, line 9
def self.set_sftrace_config(current_path, env)

  sftrace_config_file = current_path + "/sftrace-" + env + "-config.yaml"

  if (File.exist?(sftrace_config_file))
    sftrace_array = YAML.load_file(sftrace_config_file)
  else
    puts "[SFTRACE] Please provide a sftrace config.yaml file."
    return
  end

  if ((sftrace_array["key"] != nil) && 
      (sftrace_array["tags"] != nil) && 
      (sftrace_array["tags"]["serviceName"] != nil) && 
      (sftrace_array["tags"]["appName"] != nil) && 
      (sftrace_array["tags"]["projectName"] != nil)
  )

    decoded_key = Base64.decode64("U25hcHB5RmxvdzEyMzQ1Ng==")
    decoded_profile_key = Base64.decode64(sftrace_array["key"])

    decipher = OpenSSL::Cipher::AES.new(128, :CBC)
    decipher.decrypt
    decipher.key = decoded_key
    decipher.iv = decoded_profile_key[0, 16]
    plain = decipher.update(decoded_profile_key[16..-1]) + decipher.final
    plain_json = JSON.parse(plain)

    global_labels = "_tag_projectName=" + sftrace_array["tags"]["projectName"] + 
                    ",_tag_appName=" + sftrace_array["tags"]["appName"] + 
                    ",_tag_profileId=" + plain_json["profile_id"]

    ENV['ELASTIC_APM_VERIFY_SERVER_CERT'] = "false"
    ENV['ELASTIC_APM_CENTRAL_CONFIG'] = "false"
    ENV['ELASTIC_APM_SPAN_FRAMES_MIN_DURATION'] = "1s"
    ENV['ELASTIC_APM_STACK_TRACE_LIMIT'] = "2"

    ENV['ELASTIC_APM_SERVICE_NAME'] = sftrace_array["tags"]["serviceName"]
    ENV['ELASTIC_APM_SERVER_URL'] = plain_json["trace_server_url"]
    ENV['ELASTIC_APM_GLOBAL_LABELS'] = global_labels

    puts "[SFTRACE] SERVICE_NAME : " + ENV['ELASTIC_APM_SERVICE_NAME']
    puts "[SFTRACE] SERVER_URL : " + ENV['ELASTIC_APM_SERVER_URL']
    puts "[SFTRACE] GLOBAL_LABELS : " + ENV['ELASTIC_APM_GLOBAL_LABELS']

  else
    puts "[SFTRACE] Add all the required details in sftrace config.yaml file."
  end

end