Sha256: e938f83fb76b990f47ae82b4a91ed3d4d196d9ca5551a8e9eb27e6ba24b43b9f
Contents?: true
Size: 1.93 KB
Versions: 1
Compression:
Stored size: 1.93 KB
Contents
require "tempfile" require "open3" module Vagrant module DockerLoad class Command < Vagrant.plugin(2, :command) def self.synopsis "loads a host docker image into vagrant machines" end def execute opts = OptionParser.new do |o| o.banner = "Usage: vagrant docker-load src-img dst-img" o.separator "" end src_img, dst_img = parse_options(opts) return if dst_img.nil? src = Tempfile.new("vagrant-docker_load") run("docker save -o #{src.path} #{src_img}") with_target_vms(nil) do |machine| ssh_info = machine.ssh_info raise Vagrant::Errors::SSHNotReady if ssh_info.nil? log_level = ssh_info[:log_level] || "FATAL" args = [ "-p", ssh_info[:port].to_s, "-o", "LogLevel=#{log_level}"] if ssh_info[:verify_host_key] == :never || !ssh_info[:verify_host_key] args += [ "-o", "StrictHostKeyChecking=no", "-o", "UserKnownHostsFile=/dev/null"] end if ssh_info[:proxy_command] args += ["-o", "ProxyCommand=#{ssh_info[:proxy_command]}"] end if ssh_info[:private_key_path] ssh_info[:private_key_path].each do |path| args += ["-i", path] end end args += ["#{ssh_info[:username]}@#{ssh_info[:host]}"] ssh_command = ["ssh", args] load_command = ssh_command + ["sudo", "docker", "load"] Open3.pipeline(load_command.join(" "), :in => src.path) tag_command = ssh_command + ["sudo", "docker", "tag", src_img, dst_img] system(tag_command.join(" ")) end end def run(command) stdout, stderr, status = Open3.capture3(command) unless status.success? @env.ui.error(stderr) raise Vagrant::Errors::SSHNotReady end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
vagrant-docker_load-0.1.0 | lib/vagrant/docker_load/command.rb |