summaryrefslogtreecommitdiff
path: root/lib/chef/provider/deploy
diff options
context:
space:
mode:
authordanielsdeleo <dan@opscode.com>2013-06-11 13:31:42 -0700
committerdanielsdeleo <dan@opscode.com>2013-06-12 19:44:17 -0700
commit0d6f062a077dace81b482bd624b5365b963a6d38 (patch)
tree60c92764ba7b88c6f257cc5502b5577979033e40 /lib/chef/provider/deploy
parent83ad7d9aeb3f7c4b752dd92d4ca1f3671a0ab9ac (diff)
downloadchef-0d6f062a077dace81b482bd624b5365b963a6d38.tar.gz
attempt redeploy of failed deployment
`deploy_revision` provider now stores releases in the release history cache only after a successful deploy. As a result, a partially deployed application will be overwritten by a subsequent deploy to the same revision (similar to force_deploy). Fixes CHEF-2741
Diffstat (limited to 'lib/chef/provider/deploy')
-rw-r--r--lib/chef/provider/deploy/revision.rb14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/chef/provider/deploy/revision.rb b/lib/chef/provider/deploy/revision.rb
index 785e422a91..f1eb171cd7 100644
--- a/lib/chef/provider/deploy/revision.rb
+++ b/lib/chef/provider/deploy/revision.rb
@@ -37,6 +37,20 @@ class Chef
super
end
+ def cleanup!
+ super
+
+ known_releases = sorted_releases
+
+ Dir["#{new_resource.deploy_to}/releases/*"].each do |release_dir|
+ unless known_releases.include?(release_dir)
+ converge_by("Remove unknown release in #{release_dir}") do
+ FileUtils.rm_rf(release_dir)
+ end
+ end
+ end
+ end
+
protected
def release_created(release)