Matthew Treinish a223e47c27
Install cython with the openstack-health api server
Pandas now has a build dep on cython. So to actually install an api
server now we need to ensure that cython is installed on the machine.
This commit adds that to api.pp manifest.

Change-Id: I55053b4c5d7d6edde191fd0c695d446dc216bcba
2016-10-04 12:13:16 -04:00

181 lines
4.6 KiB
Puppet

# Install and maintain OpenStack Health.
# params:
# source_dir:
# The directory where the application will be running
# serveradmin:
# Used in the Apache virtual host, eg., openstack-health@openstack.org
# vhost_name:
# Used in the Apache virtual host, eg., health.openstack.org
# vhost_port:
# Used in the Apache virtual host, eg., 5000
class openstack_health::api(
$db_uri = undef,
$source_dir = '/opt/openstack-health',
$server_admin = "webmaster@${::fqdn}",
$vhost_name = 'localhost',
$vhost_port = 5000,
$ignored_run_metadata_keys = undef,
$elastic_recheck_dir = '/opt/elastic-recheck',
$elastic_recheck_repo = 'https://git.openstack.org/openstack-infra/elastic-recheck',
$elastic_recheck_revision = 'master',
$cache_expiration = 900,
) {
include ::httpd::mod::wsgi
$default_ignored_run_metadata_keys = ['build_change', 'build_node',
'build_patchset', 'build_ref',
'build_short_uuid', 'build_uuid',
'build_zuul_url', 'filename',
'build_newrev']
if $ignored_run_metadata_keys {
# In case it was defined, ensure the value provided is an array
if is_array($ignored_run_metadata_keys) {
$ignored_keys = $ignored_run_metadata_keys
} else {
fail('$ignored_run_metadata_keys parameter should be an array of strings')
}
} else {
# In case it was not defined, use the default value
$ignored_keys = $default_ignored_run_metadata_keys
}
$api_dir = "${source_dir}/openstack_health"
$virtualenv_dir = "${source_dir}/.venv"
class { '::python':
dev => true,
pip => true,
virtualenv => true,
version => 'system',
}
class { '::memcached':
max_memory => '60%',
listen_ip => '127.0.0.1',
}
vcsrepo { $elastic_recheck_dir :
ensure => latest,
owner => 'openstack_health',
group => 'openstack_health',
provider => git,
revision => $elastic_recheck_revision,
source => $elastic_recheck_repo,
require => Class['::openstack_health::user'],
}
::python::virtualenv { $virtualenv_dir:
ensure => present,
require => Class['::python'],
}
package {'apache2-utils':
ensure => present,
}
case $::osfamily {
'RedHat': {
package {'libffi-dev':
ensure => present,
name => 'libffi-devel',
}
}
default: {
package {'libffi-dev':
ensure => present,
}
}
}
package {'libxml2-dev':
ensure => present,
}
package {'libxslt1-dev':
ensure => present,
}
package {'zlib1g-dev':
ensure => present,
}
package {'libmemcached-dev':
ensure => present,
}
package {'cython':
ensure => present,
}
exec { 'requirements':
command => "${virtualenv_dir}/bin/pip install -U -r ${source_dir}/requirements.txt",
require => [
Python::Virtualenv[$virtualenv_dir],
Package['libmemcached-dev'],
Package['cython'],
],
subscribe => Vcsrepo[$source_dir],
refreshonly => true,
timeout => 1800,
}
exec { 'elastic-recheck-install':
command => "${virtualenv_dir}/bin/pip install -U ${elastic_recheck_dir}",
require => [
Python::Virtualenv[$virtualenv_dir],
Package['libffi-dev'],
],
subscribe => Vcsrepo[$elastic_recheck_dir],
refreshonly => true,
timeout => 1800,
}
exec { 'package-application':
command => "${virtualenv_dir}/bin/pip install -e ${source_dir}",
refreshonly => true,
subscribe => Exec['requirements'],
}
file { '/etc/openstack-health.conf':
ensure => present,
content => template('openstack_health/openstack-health.conf.erb'),
owner => 'openstack_health',
group => 'openstack_health',
mode => '0644',
subscribe => [
Vcsrepo[$source_dir],
Vcsrepo[$elastic_recheck_dir],
],
}
::httpd::vhost { "${vhost_name}-api":
docroot => 'MEANINGLESS ARGUMENT',
port => $vhost_port,
priority => '50',
ssl => false,
template => 'openstack_health/openstack-health-api.vhost.erb',
require => [
File['/etc/openstack-health.conf'],
Exec['package-application'],
],
}
if ! defined(Httpd::Mod['cache']) {
httpd::mod { 'cache':
ensure => present,
}
}
if $::operatingsystem == 'Ubuntu' and $::operatingsystemrelease == '12.04' {
$cache_disk_module = 'disk_cache'
} else {
$cache_disk_module = 'cache_disk'
}
if ! defined(Httpd::Mod[$cache_disk_module]) {
httpd::mod { $cache_disk_module:
ensure => present,
}
}
}