Puppet Class: designate::api

Inherits:
designate
Defined in:
manifests/api.pp

Overview

Class designate::api

Configure designate API service

Parameters

package_ensure

(optional) The state of the package Defaults to ‘present’

api_package_name

(optional) Name of the package containing api resources Defaults to $::designate::params::api_package_name

enabled

(optional) Whether to enable services. Defaults to true

manage_service

(Optional) Whether the designate api service will be managed. Defaults to true

auth_strategy

(optional) Authentication strategy to use, can be either “noauth” or “keystone”. Defaults to $facts

enable_api_v2

(optional) Enable Designate API Version 2. Defaults to $facts

enable_api_admin

(optional) Enable Designate Admin API. Defaults to $facts

api_base_uri

Set the base URI of the Designate API service.

listen

(optional) API host:port pairs to listen on. Defaults to $facts

workers

(optional) Number of api worker processes to spawn. Defaults to $facts

threads

(optional) Number of api greenthreads to spawn. Defaults to $facts

enable_host_header

(optional) Enable host request headers. Defaults to $facts

max_header_line

(optional) Maximum line size of message headers to be accepted. Defaults to $facts

default_limit_admin

(optional) Default per-page limit for the Admin API. Defaults to $facts

max_limit_admin

(optional) Max page size in the Admin API. Defaults to $facts

default_limit_v2

(optional) Default per-page limit for the V2 API. Defaults to $facts

max_limit_v2

(optional) Max page size in the V2 API. Defaults to $facts

pecan_debug

(optional) Show the pecan HTML based debug interface (v2 only). Defaults to $facts

enabled_extensions_v2

(optional) API Version 2 extensions. Defaults to $facts

enabled_extensions_admin

(optional) Admin API extensions. Defaults to $facts

quotas_verify_project_id

(Optional) Verify that the requested Project ID for quota target is a valid project in Keystone. Defaults to $facts.

enable_proxy_headers_parsing

(Optional) Enable paste middleware to handle SSL requests through HTTPProxyToWSGI middleware. Defaults to $facts.

service_name

(Optional) Name of the service that will be providing the server functionality of the designate API. If the value is ‘httpd’, designate will be run as web service and configuration of the web server will be required (e.g designate::wsgi::apache) Defaults to $::designate::params::api_service_name

Parameters:

  • package_ensure (Any) (defaults to: present)
  • api_package_name (Any) (defaults to: $::designate::params::api_package_name)
  • enabled (Any) (defaults to: true)
  • manage_service (Any) (defaults to: true)
  • auth_strategy (Any) (defaults to: $facts['os_service_default'])
  • enable_api_v2 (Any) (defaults to: $facts['os_service_default'])
  • enable_api_admin (Any) (defaults to: $facts['os_service_default'])
  • api_base_uri (Any) (defaults to: $facts['os_service_default'])
  • listen (Any) (defaults to: $facts['os_service_default'])
  • workers (Any) (defaults to: $facts['os_workers'])
  • threads (Any) (defaults to: $facts['os_service_default'])
  • enable_host_header (Any) (defaults to: $facts['os_service_default'])
  • max_header_line (Any) (defaults to: $facts['os_service_default'])
  • default_limit_admin (Any) (defaults to: $facts['os_service_default'])
  • max_limit_admin (Any) (defaults to: $facts['os_service_default'])
  • default_limit_v2 (Any) (defaults to: $facts['os_service_default'])
  • max_limit_v2 (Any) (defaults to: $facts['os_service_default'])
  • pecan_debug (Any) (defaults to: $facts['os_service_default'])
  • enabled_extensions_v2 (Any) (defaults to: $facts['os_service_default'])
  • enabled_extensions_admin (Any) (defaults to: $facts['os_service_default'])
  • quotas_verify_project_id (Any) (defaults to: $facts['os_service_default'])
  • enable_proxy_headers_parsing (Any) (defaults to: $facts['os_service_default'])
  • service_name (Any) (defaults to: $::designate::params::api_service_name)


104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
# File 'manifests/api.pp', line 104

class designate::api (
  $package_ensure               = present,
  $api_package_name             = $::designate::params::api_package_name,
  $enabled                      = true,
  $manage_service               = true,
  $auth_strategy                = $facts['os_service_default'],
  $enable_api_v2                = $facts['os_service_default'],
  $enable_api_admin             = $facts['os_service_default'],
  $api_base_uri                 = $facts['os_service_default'],
  $listen                       = $facts['os_service_default'],
  $workers                      = $facts['os_workers'],
  $threads                      = $facts['os_service_default'],
  $enable_host_header           = $facts['os_service_default'],
  $max_header_line              = $facts['os_service_default'],
  $default_limit_admin          = $facts['os_service_default'],
  $max_limit_admin              = $facts['os_service_default'],
  $default_limit_v2             = $facts['os_service_default'],
  $max_limit_v2                 = $facts['os_service_default'],
  $pecan_debug                  = $facts['os_service_default'],
  $enabled_extensions_v2        = $facts['os_service_default'],
  $enabled_extensions_admin     = $facts['os_service_default'],
  $quotas_verify_project_id     = $facts['os_service_default'],
  $enable_proxy_headers_parsing = $facts['os_service_default'],
  $service_name                 = $::designate::params::api_service_name,
) inherits designate {

  include designate::deps
  include designate::policy

  validate_legacy(Boolean, 'validate_bool', $manage_service)
  validate_legacy(Boolean, 'validate_bool', $enabled)

  # API Service
  designate_config {
    'service:api/listen'                    : value => $listen;
    'service:api/auth_strategy'             : value => $auth_strategy;
    'service:api/enable_api_v2'             : value => $enable_api_v2;
    'service:api/enable_api_admin'          : value => $enable_api_admin;
    'service:api/api_base_uri'              : value => $api_base_uri;
    'service:api/workers'                   : value => $workers;
    'service:api/threads'                   : value => $threads;
    'service:api/enable_host_header'        : value => $enable_host_header;
    'DEFAULT/max_header_line'               : value => $max_header_line;
    'service:api/default_limit_admin'       : value => $default_limit_admin;
    'service:api/max_limit_admin'           : value => $max_limit_admin;
    'service:api/default_limit_v2'          : value => $default_limit_v2;
    'service:api/max_limit_v2'              : value => $max_limit_v2;
    'service:api/pecan_debug'               : value => $pecan_debug;
    'service:api/enabled_extensions_v2'     : value => join(any2array($enabled_extensions_v2), ',');
    'service:api/enabled_extensions_admin'  : value => join(any2array($enabled_extensions_admin), ',');
    'service:api/quotas_verify_project_id'  : value => $quotas_verify_project_id;
  }

  if $auth_strategy == 'keystone' {
    include designate::keystone::authtoken
  }

  oslo::middleware { 'designate_config':
    enable_proxy_headers_parsing => $enable_proxy_headers_parsing
  }

  if $manage_service {
    if $service_name == 'httpd' {
      service { 'designate-api':
        ensure => 'stopped',
        name   => $::designate::params::api_service_name,
        enable => false,
        tag    => ['designate-service'],
      }
      Service['designate-api'] -> Service[$service_name]
      $service_name_real = false
      Service <| title == 'httpd' |> { tag +> 'designate-service' }
    } else {
      $service_name_real = $service_name
    }
  } else {
    $service_name_real = $service_name
  }

  designate::generic_service { 'api':
    enabled        => $enabled,
    manage_service => $manage_service,
    package_ensure => $package_ensure,
    package_name   => $api_package_name,
    service_name   => $service_name_real,
  }
}