Skip to content

Commit 88c1780

Browse files
author
Nick Groenen
committed
Allow virtualenv definitions to share the same requirements file
1 parent 451b215 commit 88c1780

2 files changed

Lines changed: 23 additions & 16 deletions

File tree

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: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,18 @@
7676
}
7777

7878
if $requirements {
79-
exec { "python_requirements_initial_install_${requirements}":
79+
exec { "python_requirements_initial_install_${requirements}_${venv_dir}":
8080
command => "${venv_dir}/bin/pip install ${proxy_flag} --requirement ${requirements}",
8181
refreshonly => true,
8282
timeout => 1800,
8383
subscribe => Exec["python_virtualenv_${venv_dir}"],
8484
}
8585

86-
python::requirements { $requirements:
87-
virtualenv => $venv_dir,
88-
proxy => $proxy,
89-
require => Exec["python_virtualenv_${venv_dir}"],
86+
python::requirements { "${requirements}_${venv_dir}":
87+
requirements => $requirements,
88+
virtualenv => $venv_dir,
89+
proxy => $proxy,
90+
require => Exec["python_virtualenv_${venv_dir}"],
9091
}
9192
}
9293

0 commit comments

Comments
 (0)