require 'puppet/indirector/code'
require 'puppet/ssl/certificate_request'

class Puppet::SSL::CertificateRequest::DisabledCa < Puppet::Indirector::Code
  desc "Manage SSL certificate requests on disk, but reject any remote access
to the SSL data store. Used when a master has an explicitly disabled CA to
prevent clients getting confusing 'success' behaviour."

  def initialize
    @file = Puppet::SSL::CertificateRequest.indirection.terminus(:file)
  end

  [:find, :head, :search, :save, :destroy].each do |name|
    define_method(name) do |request|
      if request.remote?
        raise Puppet::Error, _("this master is not a CA")
      else
        @file.send(name, request)
      end
    end
  end
end
