From aeae57e2d939306590a461dc76be592e02f41f7f Mon Sep 17 00:00:00 2001 From: vgolubev Date: Mon, 20 Apr 2015 14:44:57 +0200 Subject: [PATCH 1/4] Allow to configure releases and shared folder names Add 'current' and shared folder to previous version exclude filter for the cases, when versioned folder are stored in the same parent folder, as the shared one --- providers/deploy.rb | 12 +++++++----- providers/file.rb | 1 + resources/deploy.rb | 4 +++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/providers/deploy.rb b/providers/deploy.rb index 6ec1217..94cc1aa 100644 --- a/providers/deploy.rb +++ b/providers/deploy.rb @@ -336,7 +336,7 @@ def delete_current_if_forcing! level :info end - directory ::File.join(new_resource.deploy_to, 'releases', artifact_version) do + directory ::File.join(new_resource.deploy_to, new_resource.releases_name, artifact_version) do recursive true action :delete end @@ -370,7 +370,7 @@ def delete_previous_versions! action :delete end - directory ::File.join(new_resource.deploy_to, 'releases', version.basename) do + directory ::File.join(new_resource.deploy_to, new_resource.releases_name, version.basename) do recursive true action :delete end @@ -503,7 +503,7 @@ def is_current_using_symlinks? # # @return [String] the artifacts release path def get_release_path - ::File.join(new_resource.deploy_to, "releases", artifact_version) + ::File.join(new_resource.deploy_to, new_resource.releases_name, artifact_version) end # Searches the releases directory and returns an Array of version folders. After @@ -512,11 +512,13 @@ def get_release_path # # @return [Array] the mtime sorted array of currently installed versions def get_previous_version_paths - versions = Dir[::File.join(new_resource.deploy_to, "releases", '**')].collect do |v| + versions = Dir[::File.join(new_resource.deploy_to, new_resource.releases_name, '**')].collect do |v| Pathname.new(v) end - versions.reject! { |v| v.basename.to_s == get_current_release_version } + exclude_filter = [get_current_release_version, 'current', new_resource.shared_name] + + versions.reject! { |v| exclude_filter.include?(v.basename.to_s) } versions.sort_by(&:mtime) end diff --git a/providers/file.rb b/providers/file.rb index c6b3265..9f1fadf 100644 --- a/providers/file.rb +++ b/providers/file.rb @@ -78,6 +78,7 @@ def load_current_resource end else remote_file_resource.run_action(:create) + run_proc :after_download if @remote_file_resource.updated_by_last_action? end raise Chef::Artifact::ArtifactChecksumError unless checksum_valid? write_checksum if Chef::Artifact.from_nexus?(file_location) || Chef::Artifact.from_s3?(file_location) diff --git a/resources/deploy.rb b/resources/deploy.rb index 42edc57..4f04f52 100644 --- a/resources/deploy.rb +++ b/resources/deploy.rb @@ -29,6 +29,8 @@ attribute :artifact_location, :kind_of => String attribute :artifact_checksum, :kind_of => String attribute :deploy_to, :kind_of => String, :required => true +attribute :shared_name, :kind_of => String, :default => 'shared' +attribute :releases_name, :kind_of => String, :default => 'releases' attribute :download_retries, :kind_of => Integer, :default => 1 attribute :version, :kind_of => String, :required => true attribute :owner, :kind_of => String, :required => true, :regex => Chef::Config[:user_valid_regex] @@ -72,5 +74,5 @@ def current_path end def shared_path - ::File.join(self.deploy_to, "shared") + ::File.join(self.deploy_to, self.shared_name) end From 72a6f99bffdc2900478c676f274058c446925429 Mon Sep 17 00:00:00 2001 From: vgolubev Date: Fri, 12 Jun 2015 12:07:06 +0200 Subject: [PATCH 2/4] Allow notifications to be --- providers/package.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/providers/package.rb b/providers/package.rb index 0a5e429..82c34d2 100644 --- a/providers/package.rb +++ b/providers/package.rb @@ -19,6 +19,8 @@ # limitations under the License. # +use_inline_resources + attr_reader :nexus_configuration_object attr_reader :extension attr_reader :file_name From b0353bedea0cc50d8c6bbb5fd8a251847e612e29 Mon Sep 17 00:00:00 2001 From: vgolubev Date: Fri, 12 Jun 2015 12:07:59 +0200 Subject: [PATCH 3/4] Allow notifications to be used for LWRP --- providers/deploy.rb | 2 ++ providers/file.rb | 2 ++ providers/package.rb | 4 ++-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/providers/deploy.rb b/providers/deploy.rb index 94cc1aa..0b92145 100644 --- a/providers/deploy.rb +++ b/providers/deploy.rb @@ -38,6 +38,8 @@ include Chef::Artifact::Helpers +use_inline_resources + def load_current_resource if Chef::Artifact.latest?(@new_resource.version) && Chef::Artifact.from_http?(@new_resource.artifact_location) Chef::Application.fatal! "You cannot specify the latest version for an artifact when attempting to download an artifact using http(s)!" diff --git a/providers/file.rb b/providers/file.rb index 9f1fadf..e8bd6ac 100644 --- a/providers/file.rb +++ b/providers/file.rb @@ -27,6 +27,8 @@ include Chef::Artifact::Helpers include Chef::Mixin::CreatePath +use_inline_resources + def load_current_resource create_cache_path if Chef::Artifact.from_nexus?(new_resource.location) diff --git a/providers/package.rb b/providers/package.rb index 82c34d2..01c8f08 100644 --- a/providers/package.rb +++ b/providers/package.rb @@ -19,12 +19,12 @@ # limitations under the License. # -use_inline_resources - attr_reader :nexus_configuration_object attr_reader :extension attr_reader :file_name +use_inline_resources + def load_current_resource if Chef::Artifact.from_nexus?(new_resource.location) chef_gem "nexus_cli" do From ec0f261d7429e398ad8ca2e51f9882bb503b4a60 Mon Sep 17 00:00:00 2001 From: vgolubev Date: Wed, 22 Jul 2015 15:52:12 +0200 Subject: [PATCH 4/4] Skip files when cleaning up old releases --- providers/deploy.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/providers/deploy.rb b/providers/deploy.rb index 0b92145..e1d21f9 100644 --- a/providers/deploy.rb +++ b/providers/deploy.rb @@ -520,7 +520,7 @@ def get_previous_version_paths exclude_filter = [get_current_release_version, 'current', new_resource.shared_name] - versions.reject! { |v| exclude_filter.include?(v.basename.to_s) } + versions.reject! { |v| exclude_filter.include?(v.basename.to_s) || v.file? } versions.sort_by(&:mtime) end