From 0dc40e168095bedc11720cd71a87fd52449b8017 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Thu, 10 Apr 2014 19:09:06 -0700 Subject: [PATCH] core: MachineIndex can have extra data attached to it --- lib/vagrant/machine_index.rb | 8 +++++++ test/unit/vagrant/machine_directory_test.rb | 25 ++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/lib/vagrant/machine_index.rb b/lib/vagrant/machine_index.rb index 128827685..64a26666b 100644 --- a/lib/vagrant/machine_index.rb +++ b/lib/vagrant/machine_index.rb @@ -318,6 +318,12 @@ module Vagrant # @return [DateTime] attr_reader :updated_at + # Extra data to store with the index entry. This can be anything + # and is treated like a general global state bag. + # + # @return [Hash] + attr_accessor :extra_data + # Initializes an entry. # # The parameter given should be nil if this is being created @@ -333,6 +339,7 @@ module Vagrant @vagrantfile_path = Pathname.new(raw["vagrantfile_path"]) # TODO(mitchellh): parse into a proper datetime @updated_at = raw["updated_at"] + @extra_data = raw["extra_data"] || {} end # Converts to the structure used by the JSON @@ -343,6 +350,7 @@ module Vagrant "state" => @state, "vagrantfile_path" => @vagrantfile_path, "updated_at" => @updated_at, + "extra_data" => @extra_data, } end end diff --git a/test/unit/vagrant/machine_directory_test.rb b/test/unit/vagrant/machine_directory_test.rb index bf69f1523..58eed8896 100644 --- a/test/unit/vagrant/machine_directory_test.rb +++ b/test/unit/vagrant/machine_directory_test.rb @@ -79,7 +79,17 @@ describe Vagrant::MachineIndex do "vagrantfile_path" => "/foo/bar/baz", "state" => "running", "updated_at" => "foo", - } + }, + "baz" => { + "name" => "default", + "provider" => "vmware", + "vagrantfile_path" => "/foo/bar/baz", + "state" => "running", + "updated_at" => "foo", + "extra_data" => { + "foo" => "bar", + }, + }, } } @@ -101,6 +111,15 @@ describe Vagrant::MachineIndex do expect(result.vagrantfile_path).to eq(Pathname.new("/foo/bar/baz")) expect(result.state).to eq("running") expect(result.updated_at).to eq("foo") + expect(result.extra_data).to eq({}) + end + + it "returns a valid entry with extra data" do + result = subject.get("baz") + expect(result.id).to eq("baz") + expect(result.extra_data).to eq({ + "foo" => "bar", + }) end it "returns a valid entry by unique prefix" do @@ -191,6 +210,7 @@ describe Vagrant::MachineIndex do expect(result.id).to_not be_empty result.name = "bar" + result.extra_data["foo"] = "bar" nextresult = subject.set(result) expect(nextresult.id).to eq(result.id) @@ -203,6 +223,9 @@ describe Vagrant::MachineIndex do entry = subject.get(result.id) expect(entry).to_not be_nil expect(entry.name).to eq("bar") + expect(entry.extra_data).to eq({ + "foo" => "bar", + }) end end end