# Copyright 2013 Thierry Carrez
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# Class: releasestatus
#
class releasestatus (
  $releasestatus_gerrit_ssh_key  = undef,
  $releasestatus_prvkey_contents = undef,
  $releasestatus_pubkey_contents = undef,
) {
  if ! defined(Package['python-launchpadlib']) {
    package { 'python-launchpadlib':
      ensure => present,
    }
  }

  if ! defined(Package['python-jinja2']) {
    package { 'python-jinja2':
      ensure => present,
    }
  }

  if ! defined(Package['python-yaml']) {
    package { 'python-yaml':
      ensure => present,
    }
  }

  group { 'releasestatus':
    ensure => present,
  }

  user { 'releasestatus':
    ensure     => present,
    home       => '/var/lib/releasestatus',
    shell      => '/bin/bash',
    gid        => 'releasestatus',
    managehome => true,
    require    => Group['releasestatus'],
  }

  file { '/var/lib/releasestatus':
    ensure  => directory,
    owner   => 'releasestatus',
    group   => 'releasestatus',
    mode    => '0755',
    require => User['releasestatus'],
  }

  file { '/var/lib/releasestatus/.ssh/':
    ensure  => directory,
    owner   => 'releasestatus',
    group   => 'releasestatus',
    mode    => '0700',
    require => File['/var/lib/releasestatus'],
  }

  if $releasestatus_prvkey_contents != undef {
    file { '/var/lib/releasestatus/.ssh/id_rsa':
      owner   => 'releasestatus',
      group   => 'releasestatus',
      mode    => '0600',
      content => $releasestatus_prvkey_contents,
      replace => true,
      require => File['/var/lib/releasestatus/.ssh/']
    }
  }

  if $releasestatus_pubkey_contents != undef {
    file { '/var/lib/releasestatus/.ssh/id_rsa.pub':
      owner   => 'releasestatus',
      group   => 'releasestatus',
      mode    => '0600',
      content => $releasestatus_pubkey_contents,
      replace => true,
      require => File['/var/lib/releasestatus/.ssh/']
    }
  }

  if $releasestatus_gerrit_ssh_key != undef {
    file { '/var/lib/releasestatus/.ssh/known_hosts':
      owner   => 'releasestatus',
      group   => 'releasestatus',
      mode    => '0600',
      content => "review.openstack.org ${releasestatus_gerrit_ssh_key}",
      replace => true,
      require => File['/var/lib/releasestatus/.ssh/']
    }
  }

  file { '/var/lib/releasestatus/.ssh/config':
    owner   => 'releasestatus',
    group   => 'releasestatus',
    mode    => '0600',
    source  => 'puppet:///modules/releasestatus/ssh_config',
    replace => true,
    require => File['/var/lib/releasestatus/.ssh/']
  }

  vcsrepo { '/var/lib/releasestatus/releasestatus':
    ensure   => latest,
    provider => git,
    source   => 'https://git.openstack.org/openstack-infra/releasestatus',
    revision => 'master',
    require  => File['/var/lib/releasestatus'],
  }
}

# vim:sw=2:ts=2:expandtab:textwidth=79