Puppet Class: heat::api

Inherits:
heat::params
Defined in:
manifests/api.pp

Overview

Class: heat::api

Installs & configure the heat API service

Parameters

package_ensure

(Optional) Ensure state for package. Defaults to ‘present’

enabled

(optional) Should the service be enabled. Defaults to ‘true’.

manage_service

(optional) Whether the service should be managed by Puppet. Defaults to ‘true’.

bind_host

(Optional) Address to bind the server. Useful when selecting a particular network interface. Defaults to $::os_service_default.

bind_port

(Optional) The port on which the server will listen. Defaults to $::os_service_default.

workers

(Optional) The number of workers to spawn. Defaults to $::os_service_default.

use_ssl

(Optional) Whether to use ssl or not. Defaults to ‘false’.

cert_file

(Optional) Location of the SSL certificate file to use for SSL mode. Required when $use_ssl is set to ‘true’. Defaults to $::os_service_default.

key_file

(Optional) Location of the SSL key file to use for enabling SSL mode. Required when $use_ssl is set to ‘true’. Defaults to $::os_service_default.

service_name

(optional) Name of the service that will be providing the server functionality of heat-api. If the value is ‘httpd’, this means heat-api will be a web service, and you must use another class to configure that web service. For example, use class { ‘heat::wsgi::apache_api’…} to make heat-api be a web app using apache mod_wsgi. Defaults to ‘$::heat::params::api_service_name’

Deprecated Parameters

No Deprecated Parameters.

Parameters:

  • package_ensure (Any) (defaults to: 'present')
  • manage_service (Any) (defaults to: true)
  • enabled (Any) (defaults to: true)
  • bind_host (Any) (defaults to: $::os_service_default)
  • bind_port (Any) (defaults to: $::os_service_default)
  • workers (Any) (defaults to: $::os_service_default)
  • use_ssl (Any) (defaults to: false)
  • cert_file (Any) (defaults to: $::os_service_default)
  • key_file (Any) (defaults to: $::os_service_default)
  • service_name (Any) (defaults to: $::heat::params::api_service_name)


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
92
93
94
95
96
97
98
99
100
101
102
103
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
# File 'manifests/api.pp', line 58

class heat::api (
  $package_ensure    = 'present',
  $manage_service    = true,
  $enabled           = true,
  $bind_host         = $::os_service_default,
  $bind_port         = $::os_service_default,
  $workers           = $::os_service_default,
  $use_ssl           = false,
  $cert_file         = $::os_service_default,
  $key_file          = $::os_service_default,
  $service_name      = $::heat::params::api_service_name,
) inherits heat::params {

  include heat
  include heat::deps
  include heat::params
  include heat::policy

  if $use_ssl {
    if is_service_default($cert_file) {
      fail('The cert_file parameter is required when use_ssl is set to true')
    }
    if is_service_default($key_file) {
      fail('The key_file parameter is required when use_ssl is set to true')
    }
  }

  package { 'heat-api':
    ensure => $package_ensure,
    name   => $::heat::params::api_package_name,
    tag    => ['openstack', 'heat-package'],
  }

  if $manage_service {
    if $enabled {
      $service_ensure = 'running'
    } else {
      $service_ensure = 'stopped'
    }
  }

  if $service_name == $::heat::params::api_service_name {
    service { 'heat-api':
      ensure     => $service_ensure,
      name       => $::heat::params::api_service_name,
      enable     => $enabled,
      hasstatus  => true,
      hasrestart => true,
      tag        => 'heat-service',
    }
  } elsif $service_name == 'httpd' {
    include apache::params
    service { 'heat-api':
      ensure => 'stopped',
      name   => $::heat::params::api_service_name,
      enable => false,
      tag    => ['heat-service'],
    }
    Service <| title == 'httpd' |> { tag +> 'heat-service' }

    # we need to make sure heat-api/eventlet is stopped before trying to start apache
    Service['heat-api'] -> Service[$service_name]
  } else {
    fail("Invalid service_name. Either heat-api/openstack-heat-api for \
running as a standalone service, or httpd for being run by a httpd server")
  }

  heat_config {
    'heat_api/bind_host': value => $bind_host;
    'heat_api/bind_port': value => $bind_port;
    'heat_api/workers':   value => $workers;
  }

  if $use_ssl {
    heat_config {
      'heat_api/cert_file': value => $cert_file;
      'heat_api/key_file':  value => $key_file;
    }
  }
}