providers/docker: synced folder usable? raises error, tests
/cc @fgrehm
This commit is contained in:
parent
2e13feb130
commit
ab2cae2379
|
@ -1,12 +1,21 @@
|
||||||
module VagrantPlugins
|
module VagrantPlugins
|
||||||
module DockerProvider
|
module DockerProvider
|
||||||
module Errors
|
module Errors
|
||||||
class ImageNotConfiguredError < Vagrant::Errors::VagrantError
|
class DockerError < Vagrant::Errors::VagrantError
|
||||||
|
error_namespace("docker_provider.errors")
|
||||||
|
end
|
||||||
|
|
||||||
|
class ImageNotConfiguredError < DockerError
|
||||||
error_key(:docker_provider_image_not_configured)
|
error_key(:docker_provider_image_not_configured)
|
||||||
end
|
end
|
||||||
class NfsWithoutPrivilegedError < Vagrant::Errors::VagrantError
|
|
||||||
|
class NfsWithoutPrivilegedError < DockerError
|
||||||
error_key(:docker_provider_nfs_without_privileged)
|
error_key(:docker_provider_nfs_without_privileged)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class SyncedFolderNonDocker < DockerError
|
||||||
|
error_key(:synced_folder_non_docker)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,9 +1,18 @@
|
||||||
module VagrantPlugins
|
module VagrantPlugins
|
||||||
module DockerProvider
|
module DockerProvider
|
||||||
class SyncedFolder < Vagrant.plugin("2", :synced_folder)
|
class SyncedFolder < Vagrant.plugin("2", :synced_folder)
|
||||||
def usable?(machine)
|
def usable?(machine, raise_error=false)
|
||||||
# These synced folders only work if the provider is Docker
|
# These synced folders only work if the provider is Docker
|
||||||
machine.provider_name == :docker
|
if machine.provider_name != :docker
|
||||||
|
if raise_error
|
||||||
|
raise Errors::SyncedFolderNonDocker,
|
||||||
|
provider: machine.provider_name.to_s
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
def prepare(machine, folders, _opts)
|
def prepare(machine, folders, _opts)
|
||||||
|
|
|
@ -18,14 +18,14 @@ en:
|
||||||
config:
|
config:
|
||||||
cmd_not_set: |-
|
cmd_not_set: |-
|
||||||
The Docker command has not been set!
|
The Docker command has not been set!
|
||||||
|
|
||||||
vagrant:
|
|
||||||
errors:
|
|
||||||
docker_provider_nfs_without_privileged: |-
|
docker_provider_nfs_without_privileged: |-
|
||||||
You've configured a NFS synced folder but didn't enable privileged
|
You've configured a NFS synced folder but didn't enable privileged
|
||||||
mode for the container. Please set the `privileged` option to true
|
mode for the container. Please set the `privileged` option to true
|
||||||
on the provider block from your Vagrantfile, recreate the container
|
on the provider block from your Vagrantfile, recreate the container
|
||||||
and try again.
|
and try again.
|
||||||
|
|
||||||
docker_provider_image_not_configured: |-
|
docker_provider_image_not_configured: |-
|
||||||
The base Docker image has not been set for the '%{name}' VM!
|
The base Docker image has not been set for the '%{name}' VM!
|
||||||
|
synced_folder_non_docker: |-
|
||||||
|
The "docker" synced folder type can't be used because the provider
|
||||||
|
in use is not Docker. This synced folder type only works with the
|
||||||
|
Docker provider. The provider this machine is using is: %{provider}
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
require_relative "../../../base"
|
||||||
|
|
||||||
|
require Vagrant.source_root.join("plugins/providers/docker/synced_folder")
|
||||||
|
|
||||||
|
describe VagrantPlugins::DockerProvider::SyncedFolder do
|
||||||
|
subject { described_class.new }
|
||||||
|
|
||||||
|
describe "#usable?" do
|
||||||
|
let(:machine) { double("machine") }
|
||||||
|
|
||||||
|
before do
|
||||||
|
machine.stub(provider_name: :docker)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "is usable" do
|
||||||
|
expect(subject).to be_usable(machine)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "is not usable if provider isn't docker" do
|
||||||
|
machine.stub(provider_name: :virtualbox)
|
||||||
|
expect(subject).to_not be_usable(machine)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "raises an error if bad provider if specified" do
|
||||||
|
machine.stub(provider_name: :virtualbox)
|
||||||
|
expect { subject.usable?(machine, true) }.
|
||||||
|
to raise_error(VagrantPlugins::DockerProvider::Errors::SyncedFolderNonDocker)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue