Merge pull request #10126 from briancain/docker-machine-name

Only write box metadata if guest has box object
This commit is contained in:
Brian Cain 2018-08-17 11:22:44 -07:00 committed by GitHub
commit c61f58049c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 10 deletions

View File

@ -10,19 +10,25 @@ module VagrantPlugins
class StoreBoxMetadata class StoreBoxMetadata
def initialize(app, env) def initialize(app, env)
@app = app @app = app
@logger = Log4r::Logger.new("vagrant::up::storeboxmetadata")
end end
def call(env) def call(env)
box = env[:machine].box if env[:machine].box
box_meta = { box = env[:machine].box
name: box.name, box_meta = {
version: box.version, name: box.name,
provider: box.provider, version: box.version,
directory: box.directory.sub(Vagrant.user_data_path.to_s + "/", "") provider: box.provider,
} directory: box.directory.sub(Vagrant.user_data_path.to_s + "/", "")
meta_file = env[:machine].data_dir.join("box_meta") }
File.open(meta_file.to_s, "w+") do |file| meta_file = env[:machine].data_dir.join("box_meta")
file.write(JSON.dump(box_meta)) @logger.debug("Writing box metadata file to #{meta_file}")
File.open(meta_file.to_s, "w+") do |file|
file.write(JSON.dump(box_meta))
end
else
@logger.debug("No box data found for #{env[:machine].name} with provider #{env[:machine].provider_name}")
end end
@app.call(env) @app.call(env)
end end

View File

@ -26,6 +26,21 @@ describe VagrantPlugins::CommandUp::StoreBoxMetadata do
let(:subject) { described_class.new(app, env) } let(:subject) { described_class.new(app, env) }
describe "#call" do describe "#call" do
context "with no box file" do
let(:machine) { double("machine", name: "guest", provider_name: "provider") }
let(:env) { {machine: machine} }
before do
allow(machine).to receive(:box).and_return(nil)
expect(app).to receive(:call).with(env)
end
it "does not write the metadata file" do
expect(File).to_not receive(:open)
subject.call(env)
end
end
let(:meta_file) { double("meta_file") } let(:meta_file) { double("meta_file") }