module Dokken::Helpers

def create_data_image

def create_data_image
  return if ::Docker::Image.exist?(data_image)
  tmpdir = Dir.tmpdir
  FileUtils.mkdir_p "#{tmpdir}/dokken"
  File.write("#{tmpdir}/dokken/Dockerfile", data_dockerfile)
  File.write("#{tmpdir}/dokken/authorized_keys", insecure_ssh_public_key)
  i = ::Docker::Image.build_from_dir(
    "#{tmpdir}/dokken",
    'nocache' => true,
    'rm' => true
  )
  i.tag('repo' => repo(data_image), 'tag' => tag(data_image), 'force' => true)
end

def data_dockerfile

def data_dockerfile
  <<-EOF
 centos:7
TAINER Sean OMeara \"sean@sean.io\"
LANG en_US.UTF-8
yum -y install tar rsync openssh-server passwd git
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
mkdir -p /root/.ssh/
 authorized_keys /root/.ssh/authorized_keys
SE 22
[ "/usr/sbin/sshd", "-D", "-p", "22", "-o", "UseDNS=no", "-o", "UsePrivilegeSeparation=no", "-o", "MaxAuthTries=60" ]
ME /opt/kitchen
ME /opt/verifier
end

def default_docker_host

def default_docker_host
  if ENV['DOCKER_HOST']
    ENV['DOCKER_HOST']
  elsif File.exist?('/var/run/docker.sock')
    'unix:///var/run/docker.sock'
  # TODO: Docker for Windows also operates over a named pipe at
  # //./pipe/docker_engine that can be used if named pipe support is
  # added to the docker-api gem.
  else
    'tcp://127.0.0.1:2375'
  end
end

def dokken_create_sandbox

def dokken_create_sandbox
  info("Creating local sandbox at #{dokken_sandbox_path}")
  FileUtils.mkdir_p(dokken_sandbox_path)
  File.chmod(0755, dokken_sandbox_path)
end

def dokken_delete_sandbox

def dokken_delete_sandbox
  info("Deleting local sandbox at #{dokken_sandbox_path}")
  begin
    FileUtils.rm_r(dokken_sandbox_path)
  rescue Errno::ENOENT
    debug("Cannot delete #{dokken_sandbox_path}. Does not exist")
  end
end

def dokken_sandbox_path

def dokken_sandbox_path
  "#{Dir.home}/.dokken/sandbox/#{instance_name}"
end

def insecure_ssh_private_key

def insecure_ssh_private_key
  <<-EOF
-BEGIN RSA PRIVATE KEY-----
pAIBAAKCAQEAqCcMlu6jYcPjU7jowuPkVaREpfiQV3m18weyasUYCgG8pqug
xAIjceTcx5FnEJjskDYRaShUgLn3oHF0UuHLUtS3BJRKF3vW6wwKihAUpJp1
zDSBtBJ8OPuVv62cRxQgJbFEgB2LWGRLPtwoGyFrh4WfeQvFAupxi1hzWTo3
Ra5xXztKoNHp3tsPCyocao+V9DEUnQiJ9SMMsSG5eTTQ+WJNR8fCSrCbU4jU
IjIJjOW7022EFEn/KWxq0SN9FUCgYEPP1JInWW2k3781l2KcHA1BEUm8xGAr
U3pmSL+roaT8apH45eihDjppf4hqqrjxKwIDAQABAoIBAEj7Cb/IOykHd/ay
rVZuQU03oI4WyR19zbYBbPmK33IHM1JdUmqP8wpPpnMHbJALj0DX9p6JXoOw
uGTwkuqUYAqgwbeHjDPfugNKD2uRjmwztXw3ncOl8jxZFRloJFfFKF6znWNt
7naN3upHiv/6wsgqj4tAbZ9oRC1crO6bsNr3P6YooiG5RRNpHepiyXphyhN6
5ZOQ/pUSE0Ca4wTlUhJHTUPMz7VFs/8CH0loRIsGPBROarPkoLVF+/UNyX8e
hoUtQH2XvjEzWUl5jKJOnvKRIV+0j/upWXsPQKF5glVPmPrTVUAxThfu6rAa
veECgYEA0Pz3Hl0SlPR79r2qofh1ZNa8zvQDL+iLopULwDiil5qlUxJ+DgOl
Lhjdg/NfoTBHvBjdJu274YJgaGQOfCy5747YDVsakKOm4bI9+Jr2agshPyE6
mGL8K8fNtpGq4G14o+pSQOPNrEfcFKgm3sosZWJAWaA64hmtiXcCgYEAzfp6
fUypAV5Zd6PCO2eJMjLdvGaNuH/Umo80WNV7XZ6iJ6MUeQe+YwxFJigjC3ii
j3kL7+wu7sEtkzS3zNd34KfhQ5fLADttfFgjjfm7IxlDD4ABaUgjwZM2gfXi
hwwNgilF6qABJ1CLt8JSqKubkqvO1P1gQu0CgYEA0GA6AcNpYK344Eey1/bF
HKN+fglPGReldM7Dh4gBabgZid2nP+N5XtQaIpPKeQyLqgfckhEecTau68dA
cs6pq394GFmkbotrcPMJ2SgpySlXi1fCWrvvlbON8IiDqWxdiop74wmArFOm
mzBYXeo+IV869vAFcPcCgYBrvvyh5OuMIc++YYZXaRgvTueblLQc22CDBItI
mxqfTF3ycgJBlWVoFoENhq1eUMplctrx+hXeeSPLzM10VX1X79ZLdEYHv513
Dk7684mKwKotr34NfqkFl2ZJ8T+f8pVwmUNvtPtX0j8IO7/6bfIjPTFyNeFJ
uQKBgQC/LE05M4eeWXihZ7c7fyWHLyddcPdH48LRF9UH9yjKF84jXRT91uMv
2Qt4MLHABySsk653LDw/jTIGV26c068nZryq5OUPxk67Xgod54jKgOwjgjZS
N9ZNnORJqK374yGj1jWUU66mQhPvn49QpG8P2HEoh2RQjNvyHA==
-END RSA PRIVATE KEY-----
end

def insecure_ssh_public_key

def insecure_ssh_public_key
  <<-EOF
rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoJwyW7qNhw+NTuOjC4+RVpESl+JBXebXzB7JqxRgKAbymq6B39azEAiNx5NzHkWcQmOyQNhFpKFSAufegcXRS4ctS1LcElEoXe9brDAqKEBSkmnXYfZXMNIG0Enw4+5W/rZxHFCAlsUSAHYtYZEs+3CgbIWuHhZ95C8UC6nGLWHNZOjcbsYZFrnFfO0qg0ene2w8LKhxqj5X0MRSdCIn1IwyxIbl5NND5Yk1Hx8JKsJtTiNTdxssiMgmM5bvTbYQUSf8pbGrRI30VQKBgQ8/UkidZbaTfvzWXYpwcDUERSbzEYCvkUytTemZIv6uhpPxqkfjl6KEOOml/iGqquPEr test-kitchen-rsa
end

def instance_name

def instance_name
  prefix = (Digest::SHA2.hexdigest FileUtils.pwd)[0, 10]
  "#{prefix}-#{instance.name}"
end