Class: Puppet::HTTP::Service Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/http/service.rb

Overview

This class is abstract.

Subclass and implement methods for the service’s REST APIs.

Represents an abstract Puppet web service.

Direct Known Subclasses

Ca, Compiler, FileServer, Puppetserver, Report

Defined Under Namespace

Classes: Ca, Compiler, FileServer, Puppetserver, Report

Constant Summary collapse

SERVICE_NAMES =

Returns available services.

[:ca, :fileserver, :puppet, :puppetserver, :report].freeze
EXCLUDED_FORMATS =

Returns format types that are unsupported.

[:yaml, :b64_zlib_yaml, :dot].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client, session, url) ⇒ Service

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Create a new service. Services should be created by calling ‘Puppet::HTTP::Session#route_to`.



69
70
71
72
73
# File 'lib/puppet/http/service.rb', line 69

def initialize(client, session, url)
  @client = client
  @session = session
  @url = url
end

Instance Attribute Details

#urlURI (readonly)

Returns the url associated with this service.



9
10
11
# File 'lib/puppet/http/service.rb', line 9

def url
  @url
end

Class Method Details

.create_service(client, session, name, server = nil, port = nil) ⇒ Puppet::HTTP::Service

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Create a new web service, which contains the URL used to connect to the service. The four services implemented are ‘:ca`, `:fileserver`, `:puppet`, and `:report`.

The ‘:ca` and `:report` services handle certs and reports, respectively. The `:fileserver` service handles puppet file metadata and content requests. And the default service, `:puppet`, handles nodes, facts, and catalogs.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/puppet/http/service.rb', line 34

def self.create_service(client, session, name, server = nil, port = nil)
  case name
  when :ca
    Puppet::HTTP::Service::Ca.new(client, session, server, port)
  when :fileserver
    Puppet::HTTP::Service::FileServer.new(client, session, server, port)
  when :puppet
    ::Puppet::HTTP::Service::Compiler.new(client, session, server, port)
  when :puppetserver
    ::Puppet::HTTP::Service::Puppetserver.new(client, session, server, port)
  when :report
    Puppet::HTTP::Service::Report.new(client, session, server, port)
  else
    raise ArgumentError, "Unknown service #{name}"
  end
end

.valid_name?(name) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Check if the service named is included in the list of available services.



58
59
60
# File 'lib/puppet/http/service.rb', line 58

def self.valid_name?(name)
  SERVICE_NAMES.include?(name)
end

Instance Method Details

#connect(ssl_context: nil) ⇒ void

This method returns an undefined value.

Open a connection using the given ssl context.



94
95
96
# File 'lib/puppet/http/service.rb', line 94

def connect(ssl_context: nil)
  @client.connect(@url, options: { ssl_context: ssl_context })
end

#with_base_url(path) ⇒ URI

Return the url with the given path encoded and appended



82
83
84
85
86
# File 'lib/puppet/http/service.rb', line 82

def with_base_url(path)
  u = @url.dup
  u.path += Puppet::Util.uri_encode(path)
  u
end