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

Returns the value of attribute from


123
124
125
# File 'lib/puppet/indirector/face.rb', line 123

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
51
52
53
54
55
# File 'lib/puppet/indirector/face.rb', line 40

def call_indirection_method(method, key, options)
  begin
    if method == :save
      # key is really the instance to save
      result = indirection.__send__(method, key, nil, options)
    else
      result = indirection.__send__(method, key, options)
    end
  rescue => detail
    message = _("Could not call '%{method}' on '%{indirection}': %{detail}") % { method: method, indirection: indirection_name, detail: 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.


137
138
139
140
141
142
143
# File 'lib/puppet/indirector/face.rb', line 137

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

#indirection_nameObject


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

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.


131
132
133
# File 'lib/puppet/indirector/face.rb', line 131

def set_indirection_name(name)
  @indirection_name = name
end

#set_terminus(from) ⇒ Object


145
146
147
148
149
150
151
152
# File 'lib/puppet/indirector/face.rb', line 145

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