module Kitchen::Docker::Helpers::CliHelper
Public Instance Methods
build_copy_command(local_file, remote_file, opts = {})
click to toggle source
# File lib/kitchen/docker/helpers/cli_helper.rb, line 89 def build_copy_command(local_file, remote_file, opts = {}) cmd = 'cp' cmd << ' -a' if opts[:archive] cmd << " #{local_file} #{remote_file}" cmd end
build_env_variable_args(vars)
click to toggle source
# File lib/kitchen/docker/helpers/cli_helper.rb, line 103 def build_env_variable_args(vars) raise ActionFailed, 'Environment variables are not of a Hash type' unless vars.is_a?(Hash) args = '' vars.each do |k, v| args << " -e #{k.to_s.strip}=\"#{v.to_s.strip}\"" end args end
build_exec_command(state, command)
click to toggle source
# File lib/kitchen/docker/helpers/cli_helper.rb, line 74 def build_exec_command(state, command) cmd = 'exec' cmd << ' -d' if config[:detach] cmd << build_env_variable_args(config[:env_variables]) if config[:env_variables] cmd << ' --privileged' if config[:privileged] cmd << ' -t' if config[:tty] cmd << ' -i' if config[:interactive] cmd << " -u #{config[:username]}" if config[:username] cmd << " -w #{config[:working_dir]}" if config[:working_dir] cmd << " #{state[:container_id]}" cmd << " #{command}" logger.debug("build_exec_command: #{cmd}") cmd end
build_powershell_command(args)
click to toggle source
# File lib/kitchen/docker/helpers/cli_helper.rb, line 96 def build_powershell_command(args) cmd = 'powershell -ExecutionPolicy Bypass -NoLogo ' cmd << args logger.debug("build_powershell_command: #{cmd}") cmd end
build_run_command(image_id, transport_port = nil)
click to toggle source
# File lib/kitchen/docker/helpers/cli_helper.rb, line 39 def build_run_command(image_id, transport_port = nil) cmd = 'run -d' cmd << ' -i' if config[:interactive] cmd << ' -t' if config[:tty] cmd << build_env_variable_args(config[:env_variables]) if config[:env_variables] cmd << " -p #{transport_port}" unless transport_port.nil? Array(config[:forward]).each { |port| cmd << " -p #{port}" } Array(config[:dns]).each { |dns| cmd << " --dns #{dns}" } Array(config[:add_host]).each { |host, ip| cmd << " --add-host=#{host}:#{ip}" } Array(config[:volume]).each { |volume| cmd << " -v #{volume}" } Array(config[:volumes_from]).each { |container| cmd << " --volumes-from #{container}" } Array(config[:links]).each { |link| cmd << " --link #{link}" } Array(config[:devices]).each { |device| cmd << " --device #{device}" } Array(config[:mount]).each {|mount| cmd << " --mount #{mount}"} Array(config[:tmpfs]).each {|tmpfs| cmd << " --tmpfs #{tmpfs}"} cmd << " --name #{config[:instance_name]}" if config[:instance_name] cmd << ' -P' if config[:publish_all] cmd << " -h #{config[:hostname]}" if config[:hostname] cmd << " -m #{config[:memory]}" if config[:memory] cmd << " -c #{config[:cpu]}" if config[:cpu] cmd << " --gpus #{config[:gpus]}" if config[:gpus] cmd << " -e http_proxy=#{config[:http_proxy]}" if config[:http_proxy] cmd << " -e https_proxy=#{config[:https_proxy]}" if config[:https_proxy] cmd << ' --privileged' if config[:privileged] cmd << " --isolation #{config[:isolation]}" if config[:isolation] Array(config[:cap_add]).each { |cap| cmd << " --cap-add=#{cap}"} if config[:cap_add] Array(config[:cap_drop]).each { |cap| cmd << " --cap-drop=#{cap}"} if config[:cap_drop] Array(config[:security_opt]).each { |opt| cmd << " --security-opt=#{opt}"} if config[:security_opt] extra_run_options = config_to_options(config[:run_options]) cmd << " #{extra_run_options}" unless extra_run_options.empty? cmd << " #{image_id} #{config[:run_command]}" logger.debug("build_run_command: #{cmd}") cmd end
config_to_options(config)
click to toggle source
Convert the config input for `:build_options` or `:run_options` in to a command line string for use with Docker
.
@since 2.5.0 @param config [nil, String, Array, Hash] Config data to convert. @return [String]
# File lib/kitchen/docker/helpers/cli_helper.rb, line 136 def config_to_options(config) case config when nil '' when String config when Array config.map { |c| config_to_options(c) }.join(' ') when Hash config.map { |k, v| Array(v).map { |c| "--#{k}=#{Shellwords.escape(c)}" }.join(' ') }.join(' ') end end
dev_null()
click to toggle source
# File lib/kitchen/docker/helpers/cli_helper.rb, line 114 def dev_null case RbConfig::CONFIG['host_os'] when /mswin|msys|mingw|cygwin|bccwin|wince|emc/ 'NUL' else '/dev/null' end end
docker_command(cmd, options={})
click to toggle source
# File lib/kitchen/docker/helpers/cli_helper.rb, line 27 def docker_command(cmd, options={}) docker = config[:binary].dup docker << " -H #{config[:socket]}" if config[:socket] docker << ' --tls' if config[:tls] docker << ' --tlsverify' if config[:tls_verify] docker << " --tlscacert=#{config[:tls_cacert]}" if config[:tls_cacert] docker << " --tlscert=#{config[:tls_cert]}" if config[:tls_cert] docker << " --tlskey=#{config[:tls_key]}" if config[:tls_key] logger.debug("docker_command: #{docker} #{cmd} shell_opts: #{docker_shell_opts(options)}") run_command("#{docker} #{cmd}", docker_shell_opts(options)) end
docker_shell_opts(options = {})
click to toggle source
# File lib/kitchen/docker/helpers/cli_helper.rb, line 123 def docker_shell_opts(options = {}) options[:live_stream] = nil if options[:suppress_output] options.delete(:suppress_output) options end