Make storyboard idempotent

Previously the curl command was itself idempotent but this
was transparent to Puppet, meaning the node reported as
always changed. I have, somewhat akwardly, taught Puppet how to
check for changed files on the remote server. It pulls only HTTP
headers to save time/bandwidth.

Change-Id: I539e67f0c82ad91450dd3720512b92518e70c122
This commit is contained in:
Spencer Krum 2014-04-14 20:12:43 -07:00
parent 546fb9eecd
commit 8dc420f311

View File

@ -142,11 +142,12 @@ class storyboard (
group => 'storyboard', group => 'storyboard',
} }
# Using -z here to only download when the tarball has changed. # Checking last modified time versus mtime on the file
exec { 'get-webclient': exec { 'get-webclient':
command => "curl ${storyboard_webclient_url} -z ./${tarball} -o ${tarball}", command => "curl ${storyboard_webclient_url} -z ./${tarball} -o ${tarball}",
path => '/bin:/usr/bin', path => '/bin:/usr/bin',
cwd => '/var/lib/storyboard', cwd => '/var/lib/storyboard',
onlyif => "curl -I ${storyboard_webclient_url} -z ./${tarball} | grep '200 OK'",
require => [ require => [
File['/var/lib/storyboard'], File['/var/lib/storyboard'],
Package['curl'], Package['curl'],
@ -154,10 +155,11 @@ class storyboard (
} }
exec { 'unpack-webclient': exec { 'unpack-webclient':
command => "tar -xzf ${tarball}", command => "tar -xzf ${tarball}",
path => '/bin:/usr/bin', path => '/bin:/usr/bin',
cwd => '/var/lib/storyboard', cwd => '/var/lib/storyboard',
require => Exec['get-webclient'], refreshonly => true,
subscribe => Exec['get-webclient'],
} }
file { '/var/lib/storyboard/www': file { '/var/lib/storyboard/www':