core: Machine#reload
This commit is contained in:
parent
8fb3971f18
commit
7f5f720e0a
|
@ -115,10 +115,7 @@ module Vagrant
|
|||
if base
|
||||
@id = name
|
||||
else
|
||||
# Read the id file from the data directory if it exists as the
|
||||
# ID for the pre-existing physical representation of this machine.
|
||||
id_file = @data_dir.join("id")
|
||||
@id = id_file.read.chomp if id_file.file?
|
||||
reload
|
||||
end
|
||||
|
||||
# Keep track of where our UUID should be placed
|
||||
|
@ -340,6 +337,18 @@ module Vagrant
|
|||
"#<#{self.class}: #{@name} (#{@provider.class})>"
|
||||
end
|
||||
|
||||
# This reloads the ID of the underlying machine.
|
||||
def reload
|
||||
@id = nil
|
||||
|
||||
if @data_dir
|
||||
# Read the id file from the data directory if it exists as the
|
||||
# ID for the pre-existing physical representation of this machine.
|
||||
id_file = @data_dir.join("id")
|
||||
@id = id_file.read.chomp if id_file.file?
|
||||
end
|
||||
end
|
||||
|
||||
# This returns the SSH info for accessing this machine. This SSH info
|
||||
# is queried from the underlying provider. This method returns `nil` if
|
||||
# the machine is not ready for SSH communication.
|
||||
|
|
|
@ -448,6 +448,28 @@ describe Vagrant::Machine do
|
|||
end
|
||||
end
|
||||
|
||||
describe "#reload" do
|
||||
before do
|
||||
allow(provider).to receive(:machine_id_changed)
|
||||
|
||||
subject.id = "foo"
|
||||
end
|
||||
|
||||
it "should read the ID" do
|
||||
subject.reload
|
||||
|
||||
expect(subject.id).to eq("foo")
|
||||
end
|
||||
|
||||
it "should read the updated ID" do
|
||||
new_instance.id = "bar"
|
||||
|
||||
subject.reload
|
||||
|
||||
expect(subject.id).to eq("bar")
|
||||
end
|
||||
end
|
||||
|
||||
describe "ssh info" do
|
||||
describe "with the provider returning nil" do
|
||||
it "should return nil if the provider returns nil" do
|
||||
|
|
Loading…
Reference in New Issue