class InstanceAgent::Plugins::CodeDeployPlugin::CommandBuilder
Attributes
command_array[R]
Public Class Methods
new()
click to toggle source
# File lib/instance_agent/plugins/codedeploy/install_instruction.rb, line 75 def initialize() @command_array = [] @copy_targets = Hash.new @mkdir_targets = Set.new @permission_targets = Set.new end
Public Instance Methods
cleanup()
click to toggle source
Clean up explicitly since these can grow to tens of MBs if the deployment archive is large.
# File lib/instance_agent/plugins/codedeploy/install_instruction.rb, line 173 def cleanup() @command_array.clear @command_array = nil @copy_targets.clear @copy_targets = nil @mkdir_targets.clear @mkdir_targets = nil @permission_targets.clear @permission_targets = nil end
copy(source, destination)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/install_instruction.rb, line 82 def copy(source, destination) destination = sanitize_dir_path(destination) log(:debug, "Copying #{source} to #{destination}") raise "Duplicate copy instruction to #{destination} from #{source} and #{@copy_targets[destination]}" if @copy_targets.has_key?(destination) raise "Duplicate copy instruction to #{destination} from #{source} which is already being installed as a directory" if @mkdir_targets.include?(destination) @command_array << CopyCommand.new(source, destination) @copy_targets[destination] = source end
copying_file?(file)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/install_instruction.rb, line 126 def copying_file?(file) file = sanitize_dir_path(file) log(:debug, "Checking for #{file} in #{@copy_targets.keys.inspect}") @copy_targets.has_key?(file) end
each(&block)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/install_instruction.rb, line 168 def each(&block) @command_array.each(&block) end
find_matches(permission)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/install_instruction.rb, line 138 def find_matches(permission) log(:debug, "Finding matches for #{permission.object}") matches = [] if permission.type.include?("file") @copy_targets.keys.each do |object| log(:debug, "Checking #{object}") if (permission.matches_pattern?(object) && !permission.matches_except?(object)) log(:debug, "Found match #{object}") permission.validate_file_acl(object) matches << object end end end if permission.type.include?("directory") @mkdir_targets.each do |object| log(:debug, "Checking #{object}") if (permission.matches_pattern?(object) && !permission.matches_except?(object)) log(:debug, "Found match #{object}") matches << object end end end matches end
making_directory?(dir)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/install_instruction.rb, line 132 def making_directory?(dir) dir = sanitize_dir_path(dir) log(:debug, "Checking for #{dir} in #{@mkdir_targets.inspect}") @mkdir_targets.include?(dir) end
mkdir(destination)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/install_instruction.rb, line 91 def mkdir(destination) destination = sanitize_dir_path(destination) log(:debug, "Making directory #{destination}") raise "Duplicate mkdir instruction for #{destination} which is already being copied from #{@copy_targets[destination]}" if @copy_targets.has_key?(destination) @command_array << MakeDirectoryCommand.new(destination) unless @mkdir_targets.include?(destination) @mkdir_targets.add(destination) end
set_permissions(object, permission)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/install_instruction.rb, line 99 def set_permissions(object, permission) object = sanitize_dir_path(object) log(:debug, "Setting permissions on #{object}") raise "Duplicate permission setting instructions for #{object}" if @permission_targets.include?(object) @permission_targets.add(object) if !permission.mode.nil? log(:debug, "Setting mode on #{object}") @command_array << ChangeModeCommand.new(object, permission.mode.mode) end if !permission.acls.nil? log(:debug, "Setting acl on #{object}") @command_array << ChangeAclCommand.new(object, permission.acls) end if !permission.context.nil? log(:debug, "Setting context on #{object}") @command_array << ChangeContextCommand.new(object, permission.context) end if !permission.owner.nil? || !permission.group.nil? log(:debug, "Setting ownership of #{object}") @command_array << ChangeOwnerCommand.new(object, permission.owner, permission.group) end end
to_json()
click to toggle source
# File lib/instance_agent/plugins/codedeploy/install_instruction.rb, line 163 def to_json command_json = @command_array.map(&:to_h) {:instructions => command_json}.to_json end
Private Instance Methods
description()
click to toggle source
# File lib/instance_agent/plugins/codedeploy/install_instruction.rb, line 190 def description self.class.to_s end
log(severity, message)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/install_instruction.rb, line 195 def log(severity, message) raise ArgumentError, "Unknown severity #{severity.inspect}" unless InstanceAgent::Log::SEVERITIES.include?(severity.to_s) InstanceAgent::Log.send(severity.to_sym, "#{description}: #{message}") end
sanitize_dir_path(path)
click to toggle source
# File lib/instance_agent/plugins/codedeploy/install_instruction.rb, line 185 def sanitize_dir_path(path) File.expand_path(path) end