# Copyright 2013  OpenStack Foundation
#
# 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.
#
# Install a python mirror building slave.

class openstack_project::mirror_slave (
  $jenkins_ssh_public_key,
  $jenkins_ssh_private_key,
  $python3=false,
) {

  class { 'openstack_project::slave':
    ssh_key => $jenkins_ssh_public_key,
    python3 => $python3,
  }

  file { '/home/jenkins/.ssh/id_rsa':
    owner   => 'jenkins',
    group   => 'jenkins',
    mode    => '0400',
    require => File['/home/jenkins/.ssh'],
    content => $jenkins_ssh_private_key,
  }

  file { '/home/jenkins/pypimirror':
    ensure  => directory,
    mode    => '0755',
    owner   => 'jenkins',
    group   => 'jenkins',
    require => User['jenkins'],
  }

  file { '/home/jenkins/pypimirror/etc':
    ensure  => directory,
    mode    => '0755',
    owner   => 'jenkins',
    group   => 'jenkins',
    require => File['/home/jenkins/pypimirror'],
  }

  file { '/home/jenkins/pypimirror/cache':
    ensure  => directory,
    mode    => '0755',
    owner   => 'jenkins',
    group   => 'jenkins',
    require => File['/home/jenkins/pypimirror'],
  }

  file { '/home/jenkins/pypimirror/mirror':
    ensure  => directory,
    mode    => '0755',
    owner   => 'jenkins',
    group   => 'jenkins',
    require => File['/home/jenkins/pypimirror'],
  }

  file { '/home/jenkins/pypimirror/etc/pypi-mirror.yaml':
    ensure  => present,
    source  => 'puppet:///modules/openstack_project/jenkins-pypi-mirror.yaml',
    require => File['/home/jenkins/pypimirror/etc'],
  }

  file { '/opt/jeepyb':
    ensure => absent,
  }

  vcsrepo { '/opt/pypi-mirror':
    ensure   => latest,
    provider => git,
    revision => 'master',
    source   => 'https://git.openstack.org/openstack-infra/pypi-mirror',
  }

  exec { 'install_pypi_mirror' :
    command     => 'pip install .',
    cwd         => '/opt/pypi-mirror',
    path        => '/usr/local/bin:/bin:/usr/bin',
    refreshonly => true,
    subscribe   => Vcsrepo['/opt/pypi-mirror'],
  }

}