# == Class: openstack_project::wiki
#
class openstack_project::wiki (
  $site_hostname,
  $bup_user = undef,
  $serveradmin = undef,
  $ssl_cert_file_contents = undef,
  $ssl_key_file_contents = undef,
  $ssl_chain_file_contents = undef,
  $wg_dbserver = undef,
  $wg_dbname = undef,
  $wg_dbuser = undef,
  $wg_dbpassword = undef,
  $wg_secretkey = undef,
  $wg_upgradekey = undef,
  $wg_recaptchasitekey = undef,
  $wg_recaptchasecretkey = undef,
  $wg_googleanalyticsaccount = undef,
  $disallow_robots = undef,
) {

  package { ['openssl', 'ssl-cert', 'subversion']:
    ensure => present;
  }

  class { 'openstack_project::server': }

  class { 'mediawiki':
    role                       => 'all',
    mediawiki_location         => '/srv/mediawiki/w',
    mediawiki_images_location  => '/srv/mediawiki/images',
    serveradmin                => $serveradmin,
    site_hostname              => $site_hostname,
    ssl_cert_file_contents     => $ssl_cert_file_contents,
    ssl_key_file_contents      => $ssl_key_file_contents,
    ssl_chain_file_contents    => $ssl_chain_file_contents,
    wg_dbserver                => $wg_dbserver,
    wg_dbname                  => $wg_dbname,
    wg_dbuser                  => $wg_dbuser,
    wg_dbpassword              => $wg_dbpassword,
    wg_secretkey               => $wg_secretkey,
    wg_upgradekey              => $wg_upgradekey,
    wg_recaptchasitekey        => $wg_recaptchasitekey,
    wg_recaptchasecretkey      => $wg_recaptchasecretkey,
    wg_googleanalyticsaccount  => $wg_googleanalyticsaccount,
    wg_sitename                => 'OpenStack',
    wg_logo                    => "https://${site_hostname}/w/images/thumb/c/c4/OpenStack_Logo_-_notext.png/30px-OpenStack_Logo_-_notext.png",
    favicon_path               => '/srv/mediawiki/favicon.ico',
    disallow_robots            => $disallow_robots,
  }
  class { 'memcached':
    max_memory => 2048,
    listen_ip  => '127.0.0.1',
    tcp_port   => 11000,
    udp_port   => 11000,
  }

  mysql_backup::backup_remote { 'wiki':
    database_host     => $wg_dbserver,
    database_user     => $wg_dbuser,
    database_password => $wg_dbpassword,
  }
  file { '/root/.my.cnf':
    ensure  => link,
    target  => '/root/.wiki_db.cnf',
    require => Mysql_backup::Backup_remote['wiki'],
  }

  file { '/srv/mediawiki/favicon.ico':
    ensure  => present,
    owner   => 'root',
    group   => 'root',
    mode    => '0644',
    source  => 'puppet:///modules/openstack_project/status/favicon.ico',
    require => File['/srv/mediawiki'],
  }

  if $bup_user != undef {
    include bup
    bup::site { 'ord.rax':
      backup_user   => $bup_user,
      backup_server => 'backup01.ord.rax.ci.openstack.org',
    }
  }

  class { '::elasticsearch':
    es_template_config => {
      'bootstrap.mlockall'               => true,
      'discovery.zen.ping.unicast.hosts' => ['localhost'],
    },
    version            => '1.3.2',
    heap_size          => '1g',
  }

}