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.

API:

  • public

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.

Returns:

  • available services

API:

  • public

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

Returns format types that are unsupported.

Returns:

  • format types that are unsupported

API:

  • public

[: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`.

Parameters:

  • The url to connect to

API:

  • private



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.

Returns:

  • the url associated with this service

API:

  • public



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.

Parameters:

  • the owner of the session

  • the owner of the service

  • the type of service to create

  • (defaults to: nil)

    optional, the server to connect to

  • (defaults to: nil)

    optional, the port to connect to

Returns:

  • an instance of the service type requested

API:

  • private



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.

Parameters:

Returns:

API:

  • private



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.

Parameters:

  • (defaults to: nil)

    An optional ssl context to connect with

API:

  • public



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

Parameters:

  • the string to append to the base url

Returns:

  • the URI object containing the encoded path

API:

  • public



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