vagrant-skytap 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.byebug_history +218 -0
- data/CHANGELOG.md +14 -0
- data/README.md +35 -45
- data/bar +6 -0
- data/eng-10269-cleanup.diff +247 -0
- data/eng-10269-tmp.diff +361 -0
- data/eng-10269.diff +577 -0
- data/eng-10269.diff.1 +455 -0
- data/lib/vagrant-skytap/action/initial_state.rb +20 -0
- data/lib/vagrant-skytap/action/is_parallelized.rb +21 -0
- data/lib/vagrant-skytap/action/message_resuming.rb +16 -0
- data/lib/vagrant-skytap/action/run_environment.rb +9 -3
- data/lib/vagrant-skytap/action/wait_for_communicator.rb +1 -1
- data/lib/vagrant-skytap/action.rb +74 -16
- data/lib/vagrant-skytap/api/environment.rb +4 -0
- data/lib/vagrant-skytap/api/runstate_operations.rb +9 -4
- data/lib/vagrant-skytap/command/start_mixins.rb +47 -0
- data/lib/vagrant-skytap/command/up.rb +126 -0
- data/lib/vagrant-skytap/plugin.rb +6 -1
- data/lib/vagrant-skytap/version.rb +1 -1
- data/locales/en.yml +4 -2
- data/spec/acceptance/provider/up_spec.rb +40 -0
- metadata +43 -31
@@ -20,12 +20,17 @@ module VagrantPlugins
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def poweroff!
|
23
|
-
set_runstate :halted, :stopped
|
23
|
+
set_runstate :halted, completed_runstate: :stopped
|
24
24
|
end
|
25
25
|
|
26
|
-
def set_runstate(new_runstate,
|
27
|
-
completed_runstate
|
28
|
-
|
26
|
+
def set_runstate(new_runstate, opts = {})
|
27
|
+
completed_runstate = opts.delete(:completed_runstate) || new_runstate
|
28
|
+
|
29
|
+
params = {runstate: new_runstate}.tap do |ret|
|
30
|
+
ret[:multiselect] = opts[:vm_ids] if opts[:vm_ids]
|
31
|
+
end
|
32
|
+
update_with_retry(params)
|
33
|
+
|
29
34
|
wait_for_runstate(completed_runstate) unless runstate == completed_runstate
|
30
35
|
end
|
31
36
|
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module Skytap
|
3
|
+
module Command
|
4
|
+
module StartMixins
|
5
|
+
|
6
|
+
# Would be nice to just extend this, then alias #build_start_options
|
7
|
+
# and add default options flag.
|
8
|
+
#include VagrantPlugins::CommandUp::StartMixins
|
9
|
+
|
10
|
+
# This adds the standard `start` command line flags to the given
|
11
|
+
# OptionParser, storing the result in the `options` dictionary.
|
12
|
+
#
|
13
|
+
# @param [OptionParser] parser
|
14
|
+
# @param [Hash] options
|
15
|
+
def build_start_options(parser, options)
|
16
|
+
# Setup the defaults
|
17
|
+
options[:provision_types] = nil
|
18
|
+
|
19
|
+
# Add the options
|
20
|
+
parser.on("--[no-]provision", "Enable or disable provisioning") do |p|
|
21
|
+
options[:provision_enabled] = p
|
22
|
+
options[:provision_ignore_sentinel] = true
|
23
|
+
end
|
24
|
+
|
25
|
+
parser.on("--provision-with x,y,z", Array,
|
26
|
+
"Enable only certain provisioners, by type.") do |list|
|
27
|
+
options[:provision_types] = list.map { |type| type.to_sym }
|
28
|
+
options[:provision_enabled] = true
|
29
|
+
options[:provision_ignore_sentinel] = true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# This validates the provisioner flags and raises an exception
|
34
|
+
# if there are invalid ones.
|
35
|
+
def validate_provisioner_flags!(options)
|
36
|
+
(options[:provision_types] || []).each do |type|
|
37
|
+
klass = Vagrant.plugin("2").manager.provisioners[type]
|
38
|
+
if !klass
|
39
|
+
raise Vagrant::Errors::ProvisionerFlagInvalid,
|
40
|
+
name: type.to_s
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
require "vagrant"
|
4
|
+
|
5
|
+
require_relative 'start_mixins'
|
6
|
+
|
7
|
+
# This is a modified copy of the built-in "up" command, which alters how
|
8
|
+
# parallelization is implemented. Instead of making concurrent requests to run
|
9
|
+
# individual VMs, we make a single REST call to update the runstates of
|
10
|
+
# multiple VMs within the containing Skytap environment.
|
11
|
+
|
12
|
+
module VagrantPlugins
|
13
|
+
module Skytap
|
14
|
+
module Command
|
15
|
+
class Up < Vagrant.plugin("2", :command)
|
16
|
+
include StartMixins
|
17
|
+
|
18
|
+
def self.synopsis
|
19
|
+
"starts and provisions the vagrant environment"
|
20
|
+
end
|
21
|
+
|
22
|
+
def execute
|
23
|
+
options = {}
|
24
|
+
options[:destroy_on_error] = true
|
25
|
+
options[:parallel] = true
|
26
|
+
options[:provision_ignore_sentinel] = false
|
27
|
+
|
28
|
+
opts = OptionParser.new do |o|
|
29
|
+
o.banner = "Usage: vagrant up [options] [name]"
|
30
|
+
o.separator ""
|
31
|
+
o.separator "Options:"
|
32
|
+
o.separator ""
|
33
|
+
|
34
|
+
build_start_options(o, options)
|
35
|
+
|
36
|
+
o.on("--[no-]destroy-on-error",
|
37
|
+
"Destroy machine if any fatal error happens (default to true)") do |destroy|
|
38
|
+
options[:destroy_on_error] = destroy
|
39
|
+
end
|
40
|
+
|
41
|
+
o.on("--[no-]parallel",
|
42
|
+
"Enable or disable parallelism if provider supports it") do |parallel|
|
43
|
+
options[:parallel] = parallel
|
44
|
+
end
|
45
|
+
|
46
|
+
o.on("--provider PROVIDER", String,
|
47
|
+
"Back the machine with a specific provider") do |provider|
|
48
|
+
options[:provider] = provider
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Parse the options
|
53
|
+
argv = parse_options(opts)
|
54
|
+
return if !argv
|
55
|
+
|
56
|
+
# Validate the provisioners
|
57
|
+
validate_provisioner_flags!(options)
|
58
|
+
|
59
|
+
# Go over each VM and bring it up
|
60
|
+
@logger.debug("'Up' each target VM...")
|
61
|
+
|
62
|
+
machines = []
|
63
|
+
names = argv
|
64
|
+
if names.empty?
|
65
|
+
autostart = false
|
66
|
+
@env.vagrantfile.machine_names_and_options.each do |n, o|
|
67
|
+
autostart = true if o.key?(:autostart)
|
68
|
+
o[:autostart] = true if !o.key?(:autostart)
|
69
|
+
names << n.to_s if o[:autostart]
|
70
|
+
end
|
71
|
+
|
72
|
+
# If we have an autostart key but no names, it means that
|
73
|
+
# all machines are autostart: false and we don't start anything.
|
74
|
+
names = nil if autostart && names.empty?
|
75
|
+
end
|
76
|
+
|
77
|
+
if names
|
78
|
+
with_target_vms(names, provider: options[:provider]) do |machine|
|
79
|
+
@env.ui.info(I18n.t(
|
80
|
+
"vagrant.commands.up.upping",
|
81
|
+
name: machine.name,
|
82
|
+
provider: machine.provider_name))
|
83
|
+
|
84
|
+
machines << machine
|
85
|
+
machine.action(:create, options)
|
86
|
+
machine.action(:update_hardware, options)
|
87
|
+
end
|
88
|
+
|
89
|
+
initial_states = machines.inject({}) {|acc, m| acc[m.id] = m.state.id ; acc }
|
90
|
+
|
91
|
+
machines.each_with_index do |machine, i|
|
92
|
+
machine.action(:run_vm, options.merge(
|
93
|
+
first_machine: i == 0,
|
94
|
+
machines: machines,
|
95
|
+
initial_states: initial_states
|
96
|
+
))
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
if machines.empty?
|
101
|
+
@env.ui.info(I18n.t("vagrant.up_no_machines"))
|
102
|
+
return 0
|
103
|
+
end
|
104
|
+
|
105
|
+
# Output the post-up messages that we have, if any
|
106
|
+
machines.each do |m|
|
107
|
+
next if !m.config.vm.post_up_message
|
108
|
+
next if m.config.vm.post_up_message == ""
|
109
|
+
|
110
|
+
# Add a newline to separate things.
|
111
|
+
@env.ui.info("", prefix: false)
|
112
|
+
|
113
|
+
m.ui.success(I18n.t(
|
114
|
+
"vagrant.post_up_message",
|
115
|
+
name: m.name.to_s,
|
116
|
+
message: m.config.vm.post_up_message))
|
117
|
+
end
|
118
|
+
|
119
|
+
# Success, exit status 0
|
120
|
+
0
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
@@ -24,7 +24,7 @@ module VagrantPlugins
|
|
24
24
|
Config
|
25
25
|
end
|
26
26
|
|
27
|
-
provider(:skytap, parallel:
|
27
|
+
provider(:skytap, parallel: true) do
|
28
28
|
# Setup logging and i18n
|
29
29
|
setup_logging
|
30
30
|
setup_i18n
|
@@ -34,6 +34,11 @@ module VagrantPlugins
|
|
34
34
|
Provider
|
35
35
|
end
|
36
36
|
|
37
|
+
command("up", primary: true) do
|
38
|
+
require_relative "command/up"
|
39
|
+
Command::Up
|
40
|
+
end
|
41
|
+
|
37
42
|
# This initializes the internationalization strings.
|
38
43
|
def self.setup_i18n
|
39
44
|
I18n.load_path << File.expand_path("locales/en.yml", Skytap.source_root)
|
data/locales/en.yml
CHANGED
@@ -3,8 +3,8 @@ en:
|
|
3
3
|
already_status: |-
|
4
4
|
The machine is already %{status}.
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
running_environment: |-
|
7
|
+
Starting VMs ...
|
8
8
|
launching_vm: |-
|
9
9
|
Launching a VM with the following settings...
|
10
10
|
not_created: |-
|
@@ -22,6 +22,8 @@ en:
|
|
22
22
|
Stopping the instance...
|
23
23
|
terminating: |-
|
24
24
|
Terminating the instance...
|
25
|
+
resuming: |-
|
26
|
+
Resuming the suspended instance ...
|
25
27
|
waiting_for_ready: |-
|
26
28
|
Waiting for instance to become "ready"...
|
27
29
|
waiting_for_ssh: |-
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# This tests that an instance can be upped correctly
|
2
|
+
shared_examples 'provider/up' do |provider, options|
|
3
|
+
if !options[:box]
|
4
|
+
raise ArgumentError,
|
5
|
+
"box option must be specified for provider: #{provider}"
|
6
|
+
end
|
7
|
+
|
8
|
+
include_context 'acceptance'
|
9
|
+
|
10
|
+
before do
|
11
|
+
environment.skeleton('generic')
|
12
|
+
#assert_execute('vagrant', 'box', 'add', 'basic', options[:box])
|
13
|
+
end
|
14
|
+
|
15
|
+
after do
|
16
|
+
assert_execute('vagrant', 'destroy', '--force')
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should bring up the machine and halt it' do
|
20
|
+
status("Test: machine can be brought up, parallel by default")
|
21
|
+
up_result = execute("vagrant", "up")
|
22
|
+
expect(up_result).to exit_with(0)
|
23
|
+
|
24
|
+
status("Test: machine is running after up")
|
25
|
+
echo_result = execute("vagrant", "ssh", "-c", "echo foo")
|
26
|
+
expect(echo_result).to exit_with(0)
|
27
|
+
expect(echo_result.stdout).to match(/foo\n$/)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should bring up the machine and halt it' do
|
31
|
+
status("Test: machine can be brought up no parallel")
|
32
|
+
up_result = execute("vagrant", "up", "--no-parallel")
|
33
|
+
expect(up_result).to exit_with(0)
|
34
|
+
|
35
|
+
status("Test: machine is running after up")
|
36
|
+
echo_result = execute("vagrant", "ssh", "-c", "echo foo")
|
37
|
+
expect(echo_result).to exit_with(0)
|
38
|
+
expect(echo_result.stdout).to match(/foo\n$/)
|
39
|
+
end
|
40
|
+
end
|
metadata
CHANGED
@@ -1,111 +1,111 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-skytap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Astete
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json_pure
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec-core
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 2.14.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 2.14.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec-expectations
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 2.14.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 2.14.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec-mocks
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 2.14.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 2.14.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: vagrant-spec
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 1.4.0
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ~>
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 1.4.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: webmock
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ~>
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '1.20'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ~>
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '1.20'
|
111
111
|
description: Enables Vagrant to manage Skytap machines.
|
@@ -114,28 +114,26 @@ executables: []
|
|
114
114
|
extensions: []
|
115
115
|
extra_rdoc_files: []
|
116
116
|
files:
|
117
|
-
-
|
118
|
-
- ".hgignore"
|
119
|
-
- ".project"
|
120
|
-
- ".rspec"
|
121
|
-
- CHANGELOG.md
|
122
|
-
- Gemfile
|
123
|
-
- LICENSE
|
124
|
-
- README.md
|
125
|
-
- Rakefile
|
126
|
-
- boxes/README.md
|
117
|
+
- bar
|
127
118
|
- boxes/empty.box
|
128
119
|
- boxes/metadata.json
|
120
|
+
- boxes/README.md
|
121
|
+
- CHANGELOG.md
|
122
|
+
- eng-10269-cleanup.diff
|
123
|
+
- eng-10269-tmp.diff
|
124
|
+
- eng-10269.diff
|
125
|
+
- eng-10269.diff.1
|
129
126
|
- eng-10369.diff
|
130
|
-
-
|
131
|
-
- lib/vagrant-skytap/action.rb
|
127
|
+
- Gemfile
|
132
128
|
- lib/vagrant-skytap/action/add_vm_to_environment.rb
|
133
129
|
- lib/vagrant-skytap/action/create_environment.rb
|
134
130
|
- lib/vagrant-skytap/action/delete_environment.rb
|
135
131
|
- lib/vagrant-skytap/action/delete_vm.rb
|
136
132
|
- lib/vagrant-skytap/action/existence_check.rb
|
137
133
|
- lib/vagrant-skytap/action/fetch_environment.rb
|
134
|
+
- lib/vagrant-skytap/action/initial_state.rb
|
138
135
|
- lib/vagrant-skytap/action/initialize_api_client.rb
|
136
|
+
- lib/vagrant-skytap/action/is_parallelized.rb
|
139
137
|
- lib/vagrant-skytap/action/is_running.rb
|
140
138
|
- lib/vagrant-skytap/action/is_stopped.rb
|
141
139
|
- lib/vagrant-skytap/action/is_suspended.rb
|
@@ -143,6 +141,7 @@ files:
|
|
143
141
|
- lib/vagrant-skytap/action/message_already_running.rb
|
144
142
|
- lib/vagrant-skytap/action/message_environment_url.rb
|
145
143
|
- lib/vagrant-skytap/action/message_not_created.rb
|
144
|
+
- lib/vagrant-skytap/action/message_resuming.rb
|
146
145
|
- lib/vagrant-skytap/action/message_will_not_destroy.rb
|
147
146
|
- lib/vagrant-skytap/action/mixin_machine_index.rb
|
148
147
|
- lib/vagrant-skytap/action/prepare_nfs_settings.rb
|
@@ -161,6 +160,7 @@ files:
|
|
161
160
|
- lib/vagrant-skytap/action/timed_provision.rb
|
162
161
|
- lib/vagrant-skytap/action/update_hardware.rb
|
163
162
|
- lib/vagrant-skytap/action/wait_for_communicator.rb
|
163
|
+
- lib/vagrant-skytap/action.rb
|
164
164
|
- lib/vagrant-skytap/api/busyable.rb
|
165
165
|
- lib/vagrant-skytap/api/client.rb
|
166
166
|
- lib/vagrant-skytap/api/credentials.rb
|
@@ -175,6 +175,8 @@ files:
|
|
175
175
|
- lib/vagrant-skytap/api/vm.rb
|
176
176
|
- lib/vagrant-skytap/api/vpn.rb
|
177
177
|
- lib/vagrant-skytap/api/vpn_attachment.rb
|
178
|
+
- lib/vagrant-skytap/command/start_mixins.rb
|
179
|
+
- lib/vagrant-skytap/command/up.rb
|
178
180
|
- lib/vagrant-skytap/config.rb
|
179
181
|
- lib/vagrant-skytap/core_ext/object/blank.rb
|
180
182
|
- lib/vagrant-skytap/core_ext/object/tap.rb
|
@@ -190,9 +192,14 @@ files:
|
|
190
192
|
- lib/vagrant-skytap/util/timer.rb
|
191
193
|
- lib/vagrant-skytap/version.rb
|
192
194
|
- lib/vagrant-skytap/vm_properties.rb
|
195
|
+
- lib/vagrant-skytap.rb
|
196
|
+
- LICENSE
|
193
197
|
- locales/en.yml
|
198
|
+
- Rakefile
|
199
|
+
- README.md
|
194
200
|
- spec/acceptance/base.rb
|
195
201
|
- spec/acceptance/provider/halt_spec.rb
|
202
|
+
- spec/acceptance/provider/up_spec.rb
|
196
203
|
- spec/acceptance/shared/context_skytap.rb
|
197
204
|
- spec/spec_helper.rb
|
198
205
|
- spec/support/isolated_environment.rb
|
@@ -219,6 +226,11 @@ files:
|
|
219
226
|
- tasks/test.rake
|
220
227
|
- vagrant-skytap.gemspec
|
221
228
|
- vagrant-spec.config.rb
|
229
|
+
- .byebug_history
|
230
|
+
- .gitignore
|
231
|
+
- .hgignore
|
232
|
+
- .project
|
233
|
+
- .rspec
|
222
234
|
homepage: http://www.skytap.com
|
223
235
|
licenses:
|
224
236
|
- MIT
|
@@ -229,17 +241,17 @@ require_paths:
|
|
229
241
|
- lib
|
230
242
|
required_ruby_version: !ruby/object:Gem::Requirement
|
231
243
|
requirements:
|
232
|
-
- -
|
244
|
+
- - '>='
|
233
245
|
- !ruby/object:Gem::Version
|
234
246
|
version: '0'
|
235
247
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
236
248
|
requirements:
|
237
|
-
- -
|
249
|
+
- - '>='
|
238
250
|
- !ruby/object:Gem::Version
|
239
251
|
version: 1.3.6
|
240
252
|
requirements: []
|
241
253
|
rubyforge_project: vagrant-skytap
|
242
|
-
rubygems_version: 2.
|
254
|
+
rubygems_version: 2.0.14
|
243
255
|
signing_key:
|
244
256
|
specification_version: 4
|
245
257
|
summary: Enables Vagrant to manage Skytap machines.
|