
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
181 lines
4.6 KiB
Puppet
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,
|
|
}
|
|
}
|
|
}
|