Class: Puppet::Indirector::Face

Inherits:
Face
  • Object
show all
Defined in:
lib/puppet/indirector/face.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#fromObject



118
119
120
# File 'lib/puppet/indirector/face.rb', line 118

def from
  @from
end

Class Method Details

.indirectionsObject



32
33
34
# File 'lib/puppet/indirector/face.rb', line 32

def self.indirections
  Puppet::Indirector::Indirection.instances.collect { |t| t.to_s }.sort
end

.terminus_classes(indirection) ⇒ Object



36
37
38
# File 'lib/puppet/indirector/face.rb', line 36

def self.terminus_classes(indirection)
  Puppet::Indirector::Terminus.terminus_classes(indirection.to_sym).collect { |t| t.to_s }.sort
end

Instance Method Details

#call_indirection_method(method, key, options) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
# File 'lib/puppet/indirector/face.rb', line 40

def call_indirection_method(method, key, options)
  begin
    result = indirection.__send__(method, key, options)
  rescue => detail
    message = "Could not call '#{method}' on '#{indirection_name}': #{detail}"
    Puppet.log_exception(detail, message)
    raise RuntimeError, message, detail.backtrace
  end

  return result
end

#indirectionObject

Return an indirection associated with a face, if one exists; One usually does.



132
133
134
135
136
137
138
# File 'lib/puppet/indirector/face.rb', line 132

def indirection
  unless @indirection
    @indirection = Puppet::Indirector::Indirection.instance(indirection_name)
    @indirection or raise "Could not find terminus for #{indirection_name}"
  end
  @indirection
end

#indirection_nameObject



120
121
122
# File 'lib/puppet/indirector/face.rb', line 120

def indirection_name
  @indirection_name || name.to_sym
end

#set_indirection_name(name) ⇒ Object

Here’s your opportunity to override the indirection name. By default it will be the same name as the face.



126
127
128
# File 'lib/puppet/indirector/face.rb', line 126

def set_indirection_name(name)
  @indirection_name = name
end

#set_terminus(from) ⇒ Object



140
141
142
143
144
145
146
147
# File 'lib/puppet/indirector/face.rb', line 140

def set_terminus(from)
  begin
    indirection.terminus_class = from
  rescue => detail
    msg = "Could not set '#{indirection.name}' terminus to '#{from}' (#{detail}); valid terminus types are #{self.class.terminus_classes(indirection.name).join(", ") }"
    raise detail, msg, detail.backtrace
  end
end