From 83d02f276803a10a62f2b5c52f3ba7813139c814 Mon Sep 17 00:00:00 2001 From: Sam Marshall Date: Thu, 13 Jul 2017 13:30:24 +1000 Subject: [PATCH 1/2] Replace file copying with a single recursive copy. --- .../plugins/codedeploy/install_instruction.rb | 2 +- .../plugins/codedeploy/installer.rb | 31 ++----------------- 2 files changed, 4 insertions(+), 29 deletions(-) diff --git a/lib/instance_agent/plugins/codedeploy/install_instruction.rb b/lib/instance_agent/plugins/codedeploy/install_instruction.rb index b33cc81c..d49f5711 100644 --- a/lib/instance_agent/plugins/codedeploy/install_instruction.rb +++ b/lib/instance_agent/plugins/codedeploy/install_instruction.rb @@ -234,7 +234,7 @@ def execute(cleanup_file) if File.symlink?(@source) FileUtils.symlink(File.readlink(@source), @destination) else - FileUtils.copy(@source, @destination, :preserve => true) + FileUtils.cp_r(@source, @destination, :preserve => true) end end diff --git a/lib/instance_agent/plugins/codedeploy/installer.rb b/lib/instance_agent/plugins/codedeploy/installer.rb index 0ed61073..eb160461 100644 --- a/lib/instance_agent/plugins/codedeploy/installer.rb +++ b/lib/instance_agent/plugins/codedeploy/installer.rb @@ -64,14 +64,8 @@ def generate_instructions(application_specification) fi.source) log(:debug, "generating instructions for copying #{fi.source} to #{fi.destination}") - if File.directory?(absolute_source_path) - fill_in_missing_ancestors(i, fi.destination) - generate_directory_copy(i, absolute_source_path, fi.destination) - else - file_destination = File.join(fi.destination, File.basename(absolute_source_path)) - fill_in_missing_ancestors(i, file_destination) - generate_normal_copy(i, absolute_source_path, file_destination) - end + fill_in_missing_ancestors(i, fi.destination) + generate_copy(i, absolute_source_path, fi.destination) end (application_specification.permissions || []).each do |permission| @@ -98,26 +92,7 @@ def generate_instructions(application_specification) end private - def generate_directory_copy(i, absolute_source_path, destination) - unless File.directory?(destination) - i.mkdir(destination) - end - - (Dir.entries(absolute_source_path) - [".", ".."]).each do |entry| - entry = entry.force_encoding("UTF-8"); - absolute_source_path = absolute_source_path.force_encoding("UTF-8"); - absolute_entry_path = File.join(absolute_source_path, entry) - entry_destination = File.join(destination, entry) - if File.directory?(absolute_entry_path) - generate_directory_copy(i, absolute_entry_path, entry_destination) - else - generate_normal_copy(i, absolute_entry_path, entry_destination) - end - end - end - - private - def generate_normal_copy(i, absolute_source_path, destination) + def generate_copy(i, absolute_source_path, destination) if File.exists?(destination) case @file_exists_behavior when "DISALLOW" From 275f31baf6d3fcb99a55b0cf0e0d8de98bf51f35 Mon Sep 17 00:00:00 2001 From: Sam Marshall Date: Mon, 24 Jul 2017 10:54:46 +1000 Subject: [PATCH 2/2] Changed permission block to support new deployment method. --- .../plugins/codedeploy/installer.rb | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/lib/instance_agent/plugins/codedeploy/installer.rb b/lib/instance_agent/plugins/codedeploy/installer.rb index eb160461..c52b7569 100644 --- a/lib/instance_agent/plugins/codedeploy/installer.rb +++ b/lib/instance_agent/plugins/codedeploy/installer.rb @@ -72,20 +72,10 @@ def generate_instructions(application_specification) object = permission.object log(:debug, "generating instructions for setting permissions on object #{object}") - log(:debug, "it is an existing directory - #{File.directory?(object)}") - if i.copying_file?(object) - if permission.type.include?("file") - log(:debug, "found matching file #{object} to set permissions on") - permission.validate_file_permission - permission.validate_file_acl(object) - i.set_permissions(object, permission) - end - elsif (i.making_directory?(object) || File.directory?(object)) - log(:debug, "found matching directory #{object} to search for objects to set permissions on") - i.find_matches(permission).each do|match| - log(:debug, "found matching object #{match} to set permissions on") - i.set_permissions(match, permission) - end + log(:debug, "found matching directory #{object} to search for objects to set permissions on") + i.find_matches(permission).each do|match| + log(:debug, "found matching object #{match} to set permissions on") + i.set_permissions(match, permission) end end end