Skip to content

Commit 34f562a

Browse files
committed
Merge pull request voxpupuli#6 from zoni/sharedrequirements
Allow virtualenv definitions to share the same requirements file
2 parents 8fb868d + 88c1780 commit 34f562a

3 files changed

Lines changed: 28 additions & 17 deletions

File tree

manifests/config.pp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
Class['python::install'] -> Python::Virtualenv <| |>
66

77
Python::Virtualenv <| |> -> Python::Pip <| |>
8-
Python::Virtualenv <| |> -> Python::Requirements <| |>
98

109
if $python::gunicorn {
1110
Class['python::install'] -> Python::Gunicorn <| |>

manifests/requirements.pp

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
#
55
# === Parameters
66
#
7+
# [*requirements*]
8+
# Path to the requirements file. Defaults to the resource name
9+
#
710
# [*virtualenv*]
811
# virtualenv to run pip in. Default: system-wide
912
#
@@ -23,12 +26,11 @@
2326
# Ashley Penney
2427
#
2528
define python::requirements (
26-
$virtualenv = 'system',
27-
$proxy = false
29+
$requirements = $name,
30+
$virtualenv = 'system',
31+
$proxy = false
2832
) {
2933

30-
$requirements = $name
31-
3234
$pip_env = $virtualenv ? {
3335
'system' => '`which pip`',
3436
default => "${virtualenv}/bin/pip",
@@ -41,13 +43,17 @@
4143

4244
$req_crc = "${requirements}.sha1"
4345

44-
file { $requirements:
45-
ensure => present,
46-
mode => '0644',
47-
owner => 'root',
48-
group => 'root',
49-
replace => false,
50-
content => '# Puppet will install and/or update pip packages listed here',
46+
# This will ensure multiple python::virtualenv definitions can share the
47+
# the same requirements file.
48+
if !defined(File[$requirements]) {
49+
file { $requirements:
50+
ensure => present,
51+
mode => '0644',
52+
owner => 'root',
53+
group => 'root',
54+
replace => false,
55+
content => '# Puppet will install and/or update pip packages listed here',
56+
}
5157
}
5258

5359
# SHA1 checksum to detect changes

manifests/virtualenv.pp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,18 @@
7676
}
7777

7878
if $requirements {
79-
Exec["python_virtualenv_${venv_dir}"]
80-
-> Python::Requirements[$requirements]
79+
exec { "python_requirements_initial_install_${requirements}_${venv_dir}":
80+
command => "${venv_dir}/bin/pip install ${proxy_flag} --requirement ${requirements}",
81+
refreshonly => true,
82+
timeout => 1800,
83+
subscribe => Exec["python_virtualenv_${venv_dir}"],
84+
}
8185

82-
python::requirements { $requirements:
83-
virtualenv => $venv_dir,
84-
proxy => $proxy,
86+
python::requirements { "${requirements}_${venv_dir}":
87+
requirements => $requirements,
88+
virtualenv => $venv_dir,
89+
proxy => $proxy,
90+
require => Exec["python_virtualenv_${venv_dir}"],
8591
}
8692
}
8793

0 commit comments

Comments
 (0)