# File lib/puppet/indirector/facts/puppetdb.rb, line 19
  def save(request)
    profile("facts#save", [:puppetdb, :facts, :save, request.key]) do
      payload = profile("Encode facts command submission payload",
                        [:puppetdb, :facts, :encode]) do
        facts = request.instance.dup
        facts.values = facts.strip_internal.dup

        if ! Puppet::Util::Puppetdb.puppet3compat? || Puppet[:trusted_node_data]
          facts.values[:trusted] = get_trusted_info(request.node)
        end
        {
          "name" => facts.name,
          "values" => facts.values,
          # PDB-453: we call to_s to avoid a 'stack level too deep' error
          # when we attempt to use ActiveSupport 2.3.16 on RHEL 5 with
          # legacy storeconfigs.
          "environment" => request.options[:environment] || request.environment.to_s,
          "producer-timestamp" => request.options[:producer_timestamp] || Time.now.iso8601,
        }
      end

      submit_command(request.key, payload, CommandReplaceFacts, 3)
    end
  end