File: elasticsearch_rest_resource.rb

package info (click to toggle)
puppet-module-voxpupuli-elasticsearch 9.0.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,496 kB
  • sloc: ruby: 9,906; sh: 392; makefile: 4
file content (91 lines) | stat: -rw-r--r-- 2,449 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# frozen_string_literal: true

require 'puppet/parameter/boolean'

# Provides common properties and parameters for REST-based Elasticsearch types
module ElasticsearchRESTResource
  def self.extended(extender)
    extender.newparam(:ca_file) do
      desc 'Absolute path to a CA file to authenticate server certs against.'
    end

    extender.newparam(:ca_path) do
      desc 'Absolute path to a directory containing CA files.'
    end

    extender.newparam(:host) do
      desc 'Hostname or address of Elasticsearch instance.'
      defaultto 'localhost'

      validate do |value|
        raise Puppet::Error, 'invalid parameter, expected string' unless value.is_a? String
      end
    end

    extender.newparam(:password) do
      desc 'Optional HTTP basic auth plaintext password for Elasticsearch.'
    end

    extender.newparam(:port) do
      desc 'Port to use for Elasticsearch HTTP API operations.'
      defaultto 9200

      munge do |value|
        case value
        when String
          value.to_i
        when Integer
          value
        else
          raise Puppet::Error, "unknown '#{value}' timeout type #{value.class}"
        end
      end

      validate do |value|
        raise Puppet::Error, "invalid port value '#{value}'" \
          unless value.to_s =~ %r{^([0-9]+)$}
        raise Puppet::Error, "invalid port value '#{value}'" \
          unless Regexp.last_match[0].to_i.positive? \
            && (Regexp.last_match[0].to_i < 65_535)
      end
    end

    extender.newparam(:protocol) do
      desc 'Protocol to use for communication with Elasticsearch.'
      defaultto 'http'
    end

    extender.newparam(:timeout) do
      desc 'HTTP timeout for reading/writing content to Elasticsearch.'
      defaultto 10

      munge do |value|
        case value
        when String
          value.to_i
        when Integer
          value
        else
          raise Puppet::Error, "unknown '#{value}' timeout type #{value.class}"
        end
      end

      validate do |value|
        raise Puppet::Error, 'timeout must be a positive integer' if value.to_s !~ %r{^\d+$}
      end
    end

    extender.newparam(:username) do
      desc 'Optional HTTP basic auth username for Elasticsearch.'
    end

    extender.newparam(
      :validate_tls,
      boolean: true,
      parent: Puppet::Parameter::Boolean
    ) do
      desc 'Whether to verify TLS/SSL certificates.'
      defaultto true
    end
  end
end