vagrant-skytap 0.1.1a

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.hgignore +22 -0
  4. data/.project +11 -0
  5. data/.rspec +1 -0
  6. data/CHANGELOG.md +85 -0
  7. data/Gemfile +29 -0
  8. data/LICENSE +8 -0
  9. data/README.md +292 -0
  10. data/Rakefile +31 -0
  11. data/Vagrantfile.orig +34 -0
  12. data/bar/checksums.yaml +7 -0
  13. data/bar/data.tar +0 -0
  14. data/bar/metadata +242 -0
  15. data/dummy.box +0 -0
  16. data/example_box/README.md +13 -0
  17. data/example_box/metadata.json +3 -0
  18. data/lib/vagrant-skytap/action/add_vm_to_environment.rb +35 -0
  19. data/lib/vagrant-skytap/action/create_environment.rb +44 -0
  20. data/lib/vagrant-skytap/action/delete_environment.rb +26 -0
  21. data/lib/vagrant-skytap/action/delete_vm.rb +27 -0
  22. data/lib/vagrant-skytap/action/existence_check.rb +35 -0
  23. data/lib/vagrant-skytap/action/fetch_environment.rb +32 -0
  24. data/lib/vagrant-skytap/action/initialize_api_client.rb +28 -0
  25. data/lib/vagrant-skytap/action/is_running.rb +19 -0
  26. data/lib/vagrant-skytap/action/is_stopped.rb +19 -0
  27. data/lib/vagrant-skytap/action/is_suspended.rb +19 -0
  28. data/lib/vagrant-skytap/action/message_already_created.rb +16 -0
  29. data/lib/vagrant-skytap/action/message_already_running.rb +16 -0
  30. data/lib/vagrant-skytap/action/message_environment_url.rb +16 -0
  31. data/lib/vagrant-skytap/action/message_not_created.rb +16 -0
  32. data/lib/vagrant-skytap/action/message_will_not_destroy.rb +16 -0
  33. data/lib/vagrant-skytap/action/mixin_machine_index.rb +22 -0
  34. data/lib/vagrant-skytap/action/prepare_nfs_settings.rb +46 -0
  35. data/lib/vagrant-skytap/action/prepare_nfs_valid_ids.rb +28 -0
  36. data/lib/vagrant-skytap/action/read_ssh_info.rb +23 -0
  37. data/lib/vagrant-skytap/action/read_state.rb +42 -0
  38. data/lib/vagrant-skytap/action/run_environment.rb +53 -0
  39. data/lib/vagrant-skytap/action/run_vm.rb +51 -0
  40. data/lib/vagrant-skytap/action/set_hostname.rb +31 -0
  41. data/lib/vagrant-skytap/action/set_up_vm.rb +21 -0
  42. data/lib/vagrant-skytap/action/stop_environment.rb +43 -0
  43. data/lib/vagrant-skytap/action/stop_vm.rb +43 -0
  44. data/lib/vagrant-skytap/action/store_extra_data.rb +35 -0
  45. data/lib/vagrant-skytap/action/suspend_environment.rb +32 -0
  46. data/lib/vagrant-skytap/action/suspend_vm.rb +32 -0
  47. data/lib/vagrant-skytap/action/timed_provision.rb +21 -0
  48. data/lib/vagrant-skytap/action/update_hardware.rb +37 -0
  49. data/lib/vagrant-skytap/action.rb +272 -0
  50. data/lib/vagrant-skytap/api/busyable.rb +37 -0
  51. data/lib/vagrant-skytap/api/client.rb +127 -0
  52. data/lib/vagrant-skytap/api/credentials.rb +41 -0
  53. data/lib/vagrant-skytap/api/environment.rb +99 -0
  54. data/lib/vagrant-skytap/api/interface.rb +123 -0
  55. data/lib/vagrant-skytap/api/network.rb +40 -0
  56. data/lib/vagrant-skytap/api/public_ip.rb +103 -0
  57. data/lib/vagrant-skytap/api/published_service.rb +90 -0
  58. data/lib/vagrant-skytap/api/resource.rb +44 -0
  59. data/lib/vagrant-skytap/api/runstate_operations.rb +63 -0
  60. data/lib/vagrant-skytap/api/specified_attributes.rb +27 -0
  61. data/lib/vagrant-skytap/api/vm.rb +88 -0
  62. data/lib/vagrant-skytap/api/vpn.rb +146 -0
  63. data/lib/vagrant-skytap/api/vpn_attachment.rb +57 -0
  64. data/lib/vagrant-skytap/config.rb +106 -0
  65. data/lib/vagrant-skytap/core_ext/object/blank.rb +82 -0
  66. data/lib/vagrant-skytap/core_ext/object/tap.rb +8 -0
  67. data/lib/vagrant-skytap/core_ext/try.rb +42 -0
  68. data/lib/vagrant-skytap/environment_properties.rb +11 -0
  69. data/lib/vagrant-skytap/errors.rb +59 -0
  70. data/lib/vagrant-skytap/plugin.rb +73 -0
  71. data/lib/vagrant-skytap/properties.rb +42 -0
  72. data/lib/vagrant-skytap/provider.rb +50 -0
  73. data/lib/vagrant-skytap/setup_helper.rb +193 -0
  74. data/lib/vagrant-skytap/util/ip_address.rb +69 -0
  75. data/lib/vagrant-skytap/util/subnet.rb +97 -0
  76. data/lib/vagrant-skytap/util/timer.rb +17 -0
  77. data/lib/vagrant-skytap/version.rb +5 -0
  78. data/lib/vagrant-skytap/version.rb.orig +5 -0
  79. data/lib/vagrant-skytap/vm_properties.rb +22 -0
  80. data/lib/vagrant-skytap.rb +23 -0
  81. data/locales/en.yml +127 -0
  82. data/skytap-dummy.box +0 -0
  83. data/spec/acceptance/base.rb +2 -0
  84. data/spec/acceptance/provider/halt_spec.rb +3 -0
  85. data/spec/acceptance/shared/context_skytap.rb +3 -0
  86. data/spec/spec_helper.rb +1 -0
  87. data/spec/support/isolated_environment.rb +45 -0
  88. data/spec/unit/base.rb +57 -0
  89. data/spec/unit/config_spec.rb +73 -0
  90. data/spec/unit/environment_spec.rb +144 -0
  91. data/spec/unit/skeletons/empty_environment.json +19 -0
  92. data/spec/unit/skeletons/network1.json +36 -0
  93. data/spec/unit/skeletons/vm1.json +85 -0
  94. data/spec/unit/support/dummy_communicator.rb +83 -0
  95. data/spec/unit/support/dummy_provider.rb +41 -0
  96. data/spec/unit/support/isolated_environment.rb +217 -0
  97. data/spec/unit/support/shared/action_synced_folders_context.rb +15 -0
  98. data/spec/unit/support/shared/base_context.rb +116 -0
  99. data/spec/unit/support/shared/capability_helpers_context.rb +29 -0
  100. data/spec/unit/support/shared/plugin_command_context.rb +12 -0
  101. data/spec/unit/support/shared/skytap_context.rb +3 -0
  102. data/spec/unit/vm_spec.rb +118 -0
  103. data/tasks/acceptance.rake +22 -0
  104. data/tasks/bundler.rake +3 -0
  105. data/tasks/test.rake +14 -0
  106. data/vagrant-skytap.gemspec +62 -0
  107. data/vagrant-spec.config.rb +10 -0
  108. metadata +247 -0
@@ -0,0 +1,116 @@
1
+ require "tempfile"
2
+ require "tmpdir"
3
+
4
+ require "unit/support/isolated_environment"
5
+
6
+ shared_context "unit" do
7
+ before(:each) do
8
+ # State to store the list of registered plugins that we have to
9
+ # unregister later.
10
+ @_plugins = []
11
+
12
+ # Create a thing to store our temporary files so that they aren't
13
+ # unlinked right away.
14
+ @_temp_files = []
15
+ end
16
+
17
+ after(:each) do
18
+ # Unregister each of the plugins we have may have temporarily
19
+ # registered for the duration of this test.
20
+ @_plugins.each do |plugin|
21
+ Vagrant.plugin("1").manager.unregister(plugin)
22
+ Vagrant.plugin("2").manager.unregister(plugin)
23
+ end
24
+ end
25
+
26
+ # This creates an isolated environment so that Vagrant doesn't
27
+ # muck around with your real system during unit tests.
28
+ #
29
+ # The returned isolated environment has a variety of helper
30
+ # methods on it to easily create files, Vagrantfiles, boxes,
31
+ # etc.
32
+ def isolated_environment
33
+ env = Unit::IsolatedEnvironment.new
34
+ yield env if block_given?
35
+ env
36
+ end
37
+
38
+ # This registers a Vagrant plugin for the duration of a single test.
39
+ # This will yield a new plugin class that you can then call the
40
+ # public plugin methods on.
41
+ #
42
+ # @yield [plugin] Yields the plugin class for you to call the public
43
+ # API that you need to.
44
+ def register_plugin(version=nil)
45
+ version ||= Vagrant::Config::CURRENT_VERSION
46
+ plugin = Class.new(Vagrant.plugin(version))
47
+ plugin.name("Test Plugin #{plugin.inspect}")
48
+ yield plugin if block_given?
49
+ @_plugins << plugin
50
+ plugin
51
+ end
52
+
53
+ # This helper creates a temporary file and returns a Pathname
54
+ # object pointed to it.
55
+ #
56
+ # @return [Pathname]
57
+ def temporary_file(contents=nil)
58
+ f = Tempfile.new("vagrant-unit")
59
+
60
+ if contents
61
+ f.write(contents)
62
+ f.flush
63
+ end
64
+
65
+ # Store the tempfile in an instance variable so that it is not
66
+ # garbage collected, so that the tempfile is not unlinked.
67
+ @_temp_files << f
68
+
69
+ return Pathname.new(f.path)
70
+ end
71
+
72
+ # This creates a temporary directory and returns a {Pathname}
73
+ # pointing to it.
74
+ #
75
+ # @return [Pathname]
76
+ def temporary_dir
77
+ # Create a temporary directory and append it to the instance
78
+ # variabe so that it isn't garbage collected and deleted
79
+ d = Dir.mktmpdir("vagrant")
80
+ @_temp_files << d
81
+
82
+ # Return the pathname
83
+ return Pathname.new(d)
84
+ end
85
+
86
+ # Stub the given environment in ENV, without actually touching ENV. Keys and
87
+ # values are converted to strings because that's how the real ENV works.
88
+ def stub_env(hash)
89
+ allow(ENV).to receive(:[]).and_call_original
90
+
91
+ hash.each do |key, value|
92
+ allow(ENV).to receive(:[])
93
+ .with(key.to_s)
94
+ .and_return(value.to_s)
95
+ end
96
+ end
97
+
98
+ # This helper provides temporary environmental variable changes.
99
+ def with_temp_env(environment)
100
+ # Build up the new environment, preserving the old values so we
101
+ # can replace them back in later.
102
+ old_env = {}
103
+ environment.each do |key, value|
104
+ old_env[key] = ENV[key]
105
+ ENV[key] = value
106
+ end
107
+
108
+ # Call the block, returning its return value
109
+ return yield
110
+ ensure
111
+ # Reset the environment no matter what
112
+ old_env.each do |key, value|
113
+ ENV[key] = value
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,29 @@
1
+ shared_context "capability_helpers" do
2
+ def detect_class(result)
3
+ Class.new do
4
+ define_method(:detect?) do |*args|
5
+ result
6
+ end
7
+ end
8
+ end
9
+
10
+ def provider_usable_class(result)
11
+ Class.new do
12
+ define_singleton_method(:usable?) do |*args|
13
+ result
14
+ end
15
+ end
16
+ end
17
+
18
+ def cap_instance(name, options=nil)
19
+ options ||= {}
20
+
21
+ Class.new do
22
+ if !options[:corrupt]
23
+ define_method(name) do |*args|
24
+ raise "cap: #{name} #{args.inspect}"
25
+ end
26
+ end
27
+ end.new
28
+ end
29
+ end
@@ -0,0 +1,12 @@
1
+ shared_context "command plugin helpers" do
2
+ def command_lambda(name, result, **opts)
3
+ lambda do
4
+ Class.new(Vagrant.plugin("2", "command")) do
5
+ define_method(:execute) do
6
+ raise opts[:exception] if opts[:exception]
7
+ result
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ shared_context "skytap" do
2
+ include_context "unit"
3
+ end
@@ -0,0 +1,118 @@
1
+ require_relative 'base'
2
+ require "vagrant-skytap/api/vm"
3
+
4
+ describe VagrantPlugins::Skytap::API::Vm do
5
+ include_context "unit"
6
+
7
+ let(:vm1_attrs) { JSON.load(File.read(File.join(File.expand_path('..', __FILE__), 'skeletons', 'vm1.json'))) }
8
+ let(:vm2_attrs) { vm1_attrs.merge("id" => "6981851", "name" => "VM2") }
9
+ let(:network1_attrs) { JSON.load(File.read(File.join(File.expand_path('..', __FILE__), 'skeletons', 'network1.json'))) }
10
+ let(:empty_environment_attrs) { JSON.load(File.read(File.join(File.expand_path('..', __FILE__), 'skeletons', 'empty_environment.json')))}
11
+
12
+ let(:iso_env) do
13
+ # We have to create a Vagrantfile so there is a root path
14
+ env = isolated_environment
15
+ env.vagrantfile("")
16
+ env.create_vagrant_env
17
+ end
18
+ let(:machine) { iso_env.machine(iso_env.machine_names[0], :dummy) }
19
+ let(:env) {{ machine: machine, api_client: api_client }}
20
+
21
+ let(:environment) do
22
+ env_attrs = empty_environment_attrs
23
+ VagrantPlugins::Skytap::API::Environment.new(env_attrs, env)
24
+ end
25
+
26
+ let(:attrs) { vm1_attrs }
27
+ let(:instance) { described_class.new(attrs, environment, env) }
28
+
29
+ let(:api_client) do
30
+ # By default, all GET requests will return VM1
31
+ double('api_client',
32
+ get: double('resp', body: JSON.dump(attrs))
33
+ )
34
+ end
35
+
36
+ # Ensure tests are not affected by Skytap credential environment variables
37
+ before :each do
38
+ ENV.stub(:[] => nil)
39
+ end
40
+
41
+ describe "reload" do
42
+ subject do
43
+ new_attrs = attrs.merge('name' => 'VM1, renamed')
44
+ client = double('api_client',
45
+ get: double('resp', body: JSON.dump(new_attrs))
46
+ )
47
+ myenv = env.merge(api_client: client)
48
+ described_class.new(attrs, environment, myenv)
49
+ end
50
+
51
+ it "updates the attrs" do
52
+ expect(subject.get_api_attribute('name')).to eq 'VM1'
53
+ subject.reload
54
+ expect(subject.get_api_attribute('name')).to eq 'VM1, renamed'
55
+ end
56
+ end
57
+
58
+ describe "url" do
59
+ subject do
60
+ instance
61
+ end
62
+ its("url") { should == '/vms/6981850'}
63
+ end
64
+
65
+ describe "busy?" do
66
+ subject do
67
+ instance
68
+ end
69
+
70
+ it "returns false when stopped" do
71
+ allow(subject).to receive(:runstate).and_return('stopped')
72
+ expect(subject.busy?).to eq false
73
+ allow(subject).to receive(:runstate).and_call_original
74
+ end
75
+
76
+ it "returns false when running" do
77
+ allow(subject).to receive(:runstate).and_return('running')
78
+ expect(subject.busy?).to eq false
79
+ allow(subject).to receive(:runstate).and_call_original
80
+ end
81
+
82
+ it "returns true when runstate is busy" do
83
+ allow(subject).to receive(:runstate).and_return('busy')
84
+ expect(subject.busy?).to eq true
85
+ allow(subject).to receive(:runstate).and_call_original
86
+ end
87
+ end
88
+
89
+ describe "running?" do
90
+ subject do
91
+ instance
92
+ end
93
+
94
+ it "returns false when stopped" do
95
+ allow(subject).to receive(:runstate).and_return('stopped')
96
+ expect(subject.running?).to eq false
97
+ allow(subject).to receive(:runstate).and_call_original
98
+ end
99
+
100
+ it "returns false when suspended" do
101
+ allow(subject).to receive(:runstate).and_return('suspended')
102
+ expect(subject.running?).to eq false
103
+ allow(subject).to receive(:runstate).and_call_original
104
+ end
105
+
106
+ it "returns false when runstate is busy" do
107
+ allow(subject).to receive(:runstate).and_return('busy')
108
+ expect(subject.running?).to eq false
109
+ allow(subject).to receive(:runstate).and_call_original
110
+ end
111
+
112
+ it "returns true when running" do
113
+ allow(subject).to receive(:runstate).and_return('running')
114
+ expect(subject.running?).to eq true
115
+ allow(subject).to receive(:runstate).and_call_original
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,22 @@
1
+ namespace :acceptance do
2
+ desc "shows components that can be tested"
3
+ task :components do
4
+ exec("vagrant-spec components --config=vagrant-spec.config.rb")
5
+ end
6
+
7
+ desc "runs acceptance tests"
8
+ task :run do
9
+ args = [
10
+ "--config=vagrant-spec.config.rb",
11
+ ]
12
+
13
+ if ENV["COMPONENTS"]
14
+ args << "--components=\"#{ENV["COMPONENTS"]}\""
15
+ end
16
+
17
+ command = "vagrant-spec test #{args.join(" ")}"
18
+ puts command
19
+ puts
20
+ exec(command)
21
+ end
22
+ end
@@ -0,0 +1,3 @@
1
+ # This installs the tasks that help with gem creation and
2
+ # publishing.
3
+ Bundler::GemHelper.install_tasks
data/tasks/test.rake ADDED
@@ -0,0 +1,14 @@
1
+ require 'rake/testtask'
2
+ require 'rspec/core/rake_task'
3
+
4
+ namespace :test do
5
+ RSpec::Core::RakeTask.new(:unit) do |t|
6
+ t.pattern = "test/unit/**/*_test.rb"
7
+ end
8
+
9
+ Rake::TestTask.new do |t|
10
+ t.name = "unit_old"
11
+ t.libs << "test/unit_legacy"
12
+ t.pattern = "test/unit_legacy/**/*_test.rb"
13
+ end
14
+ end
@@ -0,0 +1,62 @@
1
+ $:.unshift File.expand_path("../lib", __FILE__)
2
+ require "vagrant-skytap/version"
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "vagrant-skytap"
6
+ s.version = VagrantPlugins::Skytap::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.license = "MIT"
9
+ s.authors = "Nick Astete"
10
+ s.email = "nastete@skytap.com"
11
+ s.homepage = "http://www.skytap.com"
12
+ s.summary = "Enables Vagrant to manage Skytap machines."
13
+ s.description = "Enables Vagrant to manage Skytap machines."
14
+
15
+ s.required_rubygems_version = ">= 1.3.6"
16
+ s.rubyforge_project = "vagrant-skytap"
17
+
18
+ s.add_runtime_dependency "json"
19
+
20
+ s.add_development_dependency "rake"
21
+ s.add_development_dependency "rspec-core", "~> 2.14.0"
22
+ s.add_development_dependency "rspec-expectations", "~> 2.14.0"
23
+ s.add_development_dependency "rspec-mocks", "~> 2.14.0"
24
+ s.add_development_dependency "vagrant-spec", "~> 1.4.0"
25
+ s.add_development_dependency "webmock", "~> 1.20"
26
+
27
+ # The following block of code determines the files that should be included
28
+ # in the gem. It does this by reading all the files in the directory where
29
+ # this gemspec is, and parsing out the ignored files from the gitignore.
30
+ # Note that the entire gitignore(5) syntax is not supported, specifically
31
+ # the "!" syntax, but it should mostly work correctly.
32
+ root_path = File.dirname(__FILE__)
33
+ all_files = Dir.chdir(root_path) { Dir.glob("**/{*,.*}") }
34
+ all_files.reject! { |file| [".", ".."].include?(File.basename(file)) }
35
+ #TODO:NLA:
36
+ gitignore_path = File.join(root_path, ".gitignore")
37
+ gitignore = File.readlines(gitignore_path)
38
+ gitignore.map! { |line| line.chomp.strip }
39
+ gitignore.reject! { |line| line.empty? || line =~ /^(#|!)/ }
40
+
41
+ unignored_files = all_files.reject do |file|
42
+ # Ignore any directories, the gemspec only cares about files
43
+ next true if File.directory?(file)
44
+
45
+ # Ignore any paths that match anything in the gitignore. We do
46
+ # two tests here:
47
+ #
48
+ # - First, test to see if the entire path matches the gitignore.
49
+ # - Second, match if the basename does, this makes it so that things
50
+ # like '.DS_Store' will match sub-directories too (same behavior
51
+ # as git).
52
+ #
53
+ gitignore.any? do |ignore|
54
+ File.fnmatch(ignore, file, File::FNM_PATHNAME) ||
55
+ File.fnmatch(ignore, File.basename(file), File::FNM_PATHNAME)
56
+ end
57
+ end
58
+
59
+ s.files = unignored_files
60
+ s.executables = unignored_files.map { |f| f[/^bin\/(.*)/, 1] }.compact
61
+ s.require_path = 'lib'
62
+ end
@@ -0,0 +1,10 @@
1
+ require_relative "spec/acceptance/base"
2
+
3
+ Vagrant::Spec::Acceptance.configure do |c|
4
+ c.component_paths << File.expand_path("../spec/acceptance", __FILE__)
5
+ c.skeleton_paths << File.expand_path("../spec/acceptance/skeletons", __FILE__)
6
+
7
+ c.provider "skytap",
8
+ box: File.expand_path("../skytap-dummy.box", __FILE__),
9
+ contexts: ["provider-context/skytap"]
10
+ end
metadata ADDED
@@ -0,0 +1,247 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vagrant-skytap
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1a
5
+ platform: ruby
6
+ authors:
7
+ - Nick Astete
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-10-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec-core
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 2.14.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 2.14.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-expectations
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 2.14.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 2.14.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-mocks
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 2.14.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 2.14.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: vagrant-spec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.4.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.4.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.20'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.20'
111
+ description: Enables Vagrant to manage Skytap machines.
112
+ email: nastete@skytap.com
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - ".gitignore"
118
+ - ".hgignore"
119
+ - ".project"
120
+ - ".rspec"
121
+ - CHANGELOG.md
122
+ - Gemfile
123
+ - LICENSE
124
+ - README.md
125
+ - Rakefile
126
+ - Vagrantfile.orig
127
+ - bar/checksums.yaml
128
+ - bar/data.tar
129
+ - bar/metadata
130
+ - dummy.box
131
+ - example_box/README.md
132
+ - example_box/metadata.json
133
+ - lib/vagrant-skytap.rb
134
+ - lib/vagrant-skytap/action.rb
135
+ - lib/vagrant-skytap/action/add_vm_to_environment.rb
136
+ - lib/vagrant-skytap/action/create_environment.rb
137
+ - lib/vagrant-skytap/action/delete_environment.rb
138
+ - lib/vagrant-skytap/action/delete_vm.rb
139
+ - lib/vagrant-skytap/action/existence_check.rb
140
+ - lib/vagrant-skytap/action/fetch_environment.rb
141
+ - lib/vagrant-skytap/action/initialize_api_client.rb
142
+ - lib/vagrant-skytap/action/is_running.rb
143
+ - lib/vagrant-skytap/action/is_stopped.rb
144
+ - lib/vagrant-skytap/action/is_suspended.rb
145
+ - lib/vagrant-skytap/action/message_already_created.rb
146
+ - lib/vagrant-skytap/action/message_already_running.rb
147
+ - lib/vagrant-skytap/action/message_environment_url.rb
148
+ - lib/vagrant-skytap/action/message_not_created.rb
149
+ - lib/vagrant-skytap/action/message_will_not_destroy.rb
150
+ - lib/vagrant-skytap/action/mixin_machine_index.rb
151
+ - lib/vagrant-skytap/action/prepare_nfs_settings.rb
152
+ - lib/vagrant-skytap/action/prepare_nfs_valid_ids.rb
153
+ - lib/vagrant-skytap/action/read_ssh_info.rb
154
+ - lib/vagrant-skytap/action/read_state.rb
155
+ - lib/vagrant-skytap/action/run_environment.rb
156
+ - lib/vagrant-skytap/action/run_vm.rb
157
+ - lib/vagrant-skytap/action/set_hostname.rb
158
+ - lib/vagrant-skytap/action/set_up_vm.rb
159
+ - lib/vagrant-skytap/action/stop_environment.rb
160
+ - lib/vagrant-skytap/action/stop_vm.rb
161
+ - lib/vagrant-skytap/action/store_extra_data.rb
162
+ - lib/vagrant-skytap/action/suspend_environment.rb
163
+ - lib/vagrant-skytap/action/suspend_vm.rb
164
+ - lib/vagrant-skytap/action/timed_provision.rb
165
+ - lib/vagrant-skytap/action/update_hardware.rb
166
+ - lib/vagrant-skytap/api/busyable.rb
167
+ - lib/vagrant-skytap/api/client.rb
168
+ - lib/vagrant-skytap/api/credentials.rb
169
+ - lib/vagrant-skytap/api/environment.rb
170
+ - lib/vagrant-skytap/api/interface.rb
171
+ - lib/vagrant-skytap/api/network.rb
172
+ - lib/vagrant-skytap/api/public_ip.rb
173
+ - lib/vagrant-skytap/api/published_service.rb
174
+ - lib/vagrant-skytap/api/resource.rb
175
+ - lib/vagrant-skytap/api/runstate_operations.rb
176
+ - lib/vagrant-skytap/api/specified_attributes.rb
177
+ - lib/vagrant-skytap/api/vm.rb
178
+ - lib/vagrant-skytap/api/vpn.rb
179
+ - lib/vagrant-skytap/api/vpn_attachment.rb
180
+ - lib/vagrant-skytap/config.rb
181
+ - lib/vagrant-skytap/core_ext/object/blank.rb
182
+ - lib/vagrant-skytap/core_ext/object/tap.rb
183
+ - lib/vagrant-skytap/core_ext/try.rb
184
+ - lib/vagrant-skytap/environment_properties.rb
185
+ - lib/vagrant-skytap/errors.rb
186
+ - lib/vagrant-skytap/plugin.rb
187
+ - lib/vagrant-skytap/properties.rb
188
+ - lib/vagrant-skytap/provider.rb
189
+ - lib/vagrant-skytap/setup_helper.rb
190
+ - lib/vagrant-skytap/util/ip_address.rb
191
+ - lib/vagrant-skytap/util/subnet.rb
192
+ - lib/vagrant-skytap/util/timer.rb
193
+ - lib/vagrant-skytap/version.rb
194
+ - lib/vagrant-skytap/version.rb.orig
195
+ - lib/vagrant-skytap/vm_properties.rb
196
+ - locales/en.yml
197
+ - skytap-dummy.box
198
+ - spec/acceptance/base.rb
199
+ - spec/acceptance/provider/halt_spec.rb
200
+ - spec/acceptance/shared/context_skytap.rb
201
+ - spec/spec_helper.rb
202
+ - spec/support/isolated_environment.rb
203
+ - spec/unit/base.rb
204
+ - spec/unit/config_spec.rb
205
+ - spec/unit/environment_spec.rb
206
+ - spec/unit/skeletons/empty_environment.json
207
+ - spec/unit/skeletons/network1.json
208
+ - spec/unit/skeletons/vm1.json
209
+ - spec/unit/support/dummy_communicator.rb
210
+ - spec/unit/support/dummy_provider.rb
211
+ - spec/unit/support/isolated_environment.rb
212
+ - spec/unit/support/shared/action_synced_folders_context.rb
213
+ - spec/unit/support/shared/base_context.rb
214
+ - spec/unit/support/shared/capability_helpers_context.rb
215
+ - spec/unit/support/shared/plugin_command_context.rb
216
+ - spec/unit/support/shared/skytap_context.rb
217
+ - spec/unit/vm_spec.rb
218
+ - tasks/acceptance.rake
219
+ - tasks/bundler.rake
220
+ - tasks/test.rake
221
+ - vagrant-skytap.gemspec
222
+ - vagrant-spec.config.rb
223
+ homepage: http://www.skytap.com
224
+ licenses:
225
+ - MIT
226
+ metadata: {}
227
+ post_install_message:
228
+ rdoc_options: []
229
+ require_paths:
230
+ - lib
231
+ required_ruby_version: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: '0'
236
+ required_rubygems_version: !ruby/object:Gem::Requirement
237
+ requirements:
238
+ - - ">="
239
+ - !ruby/object:Gem::Version
240
+ version: 1.3.6
241
+ requirements: []
242
+ rubyforge_project: vagrant-skytap
243
+ rubygems_version: 2.4.5
244
+ signing_key:
245
+ specification_version: 4
246
+ summary: Enables Vagrant to manage Skytap machines.
247
+ test_files: []