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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ceceed9ec84e4a2e257efda672066914f42565b6
4
- data.tar.gz: 8e6d45f0509e3c3e20869a13c94f3911b17badf3
3
+ metadata.gz: 47c85dd2458a8d1d42b2286b41114b294508ec3e
4
+ data.tar.gz: 1303ac73f297dfe5806c6e334f4d77b09e3129f5
5
5
  SHA512:
6
- metadata.gz: 78b09574cd57c6f4db5f4a1ce3fcb2e387835e46b2144fa155ec2a32579b077dd16be073c9200ae343fb3a89d183281721c0e2f148726e0ed4b4ccb407f3d992
7
- data.tar.gz: 63eadbcf913068240b787bc8e787ae8877650f99627ad56beff65de94a1de06010ba205a70b707107eccfe41a98fd3d9dc31a6704bdda648e24d8f75881cb742
6
+ metadata.gz: d8204bab0a119675849462559d68652343ec493fa65122d3e71000a48c8be119990add1f6944ffb23ca5bdf23e6234eceb328372d8f154216845cb60e96f5282
7
+ data.tar.gz: cbb06929b9b391836d74038d74356be45b0dad9ae0ebc10ad8690be532aa05ea8dab268b21bebca1376d76f45b27c5fe1d58ab75a73d7d2724daddd5c60e2282
data/.byebug_history ADDED
@@ -0,0 +1,218 @@
1
+ exit
2
+ Vagrant::source_rootc
3
+ Vagrant::source_root
4
+ q
5
+ c
6
+ up
7
+ config.env
8
+ up
9
+ env
10
+ c
11
+ @env
12
+ up
13
+ down
14
+ args
15
+ up
16
+ options
17
+ up
18
+ args
19
+ down
20
+ up
21
+ args.count
22
+ args
23
+ up
24
+ options
25
+ c
26
+ fff5~5~5~5~
27
+ $1
28
+ up_result.stderr =~ /multiselect.*\[(.*)\]/
29
+ $1
30
+ $0
31
+ up_result.stderr =~ /multiselect(.*)\}/
32
+ up_result.stderr =~ /multiselect(.*\)}/
33
+ up_result.stderr
34
+ up_result.stderr =~ /multiselect/
35
+ up_result.stderr =~ "multiselect"
36
+ puts up_result.stdout
37
+ up_result.stdout
38
+ c
39
+ up
40
+ options
41
+ args
42
+ finish
43
+ s
44
+ n
45
+ args
46
+ s
47
+ n
48
+ c
49
+ up
50
+ down
51
+ up
52
+ @options[:env]
53
+ @options[:env]["VAGRANT_LOG"] = "info"
54
+ @options[:env]
55
+ @options
56
+ process.environment
57
+ n
58
+ notify
59
+ n
60
+ finish
61
+ down
62
+ up
63
+ @command << "VAGRANT_LOG=info"
64
+ @command
65
+ n
66
+ args
67
+ s
68
+ n
69
+ Which
70
+ options
71
+ args
72
+ command
73
+ finish
74
+ s
75
+ name
76
+ s
77
+ n
78
+ log
79
+ s
80
+ n
81
+ s
82
+ puts execute("vagrant", "help", "VAGRANT_LOG=info").stdout
83
+ puts _
84
+ execute("vagrant", "help", "VAGRANT_LOG=info")
85
+ c
86
+ puts up_result.stdout
87
+ up_result.stdout
88
+ c
89
+ b 24
90
+ up
91
+ finish
92
+ n
93
+ q
94
+ [1,2,3,4].partition{|n| n < 3}
95
+ machines.reject{|m| m.state.id == :running}
96
+ machines.first.state.id
97
+ machines.first.state
98
+ machines.first.status
99
+ machines.first
100
+ c
101
+ @env.environment
102
+ @env.env
103
+ @env[:foo]
104
+ @env
105
+ env
106
+ q
107
+ @env.config
108
+ @env.vagrantfile.config
109
+ @env.vagrantfile.machine_config(:vm1, :skytap, [])
110
+ @env.vagrantfile.machine_config(:vm1)
111
+ @env.vagrantfile.machine_config(:vm1, :skytap, [])
112
+ @env.vagrantfile.machine_config(:vm1, :skytap, 'skytap/empty')
113
+ @env.vagrantfile.machine_config(:vm1, 'skytap', 'skytap/empty')
114
+ @env.vagrantfile.machine_config('vm1', 'skytap', 'skytap/empty')
115
+ @env.vagrantfile.machine_config('vm1')
116
+ @env.vagrantfile
117
+ c
118
+ machines.count
119
+ c
120
+ env[:machine].provider_config
121
+ env[:machine].env.vagrantfile.config[:vpn_url]
122
+ env[:machine].env.vagrantfile.config.vpn_url.value
123
+ env[:machine].env.vagrantfile.config.vpn_url.to_s
124
+ env[:machine].env.vagrantfile.config.vpn_url
125
+ env[:machine].env.vagrantfile.config
126
+ env[:machine].env.vagrantfile.config.usernamf
127
+ env[:machine].env.vagrantfile.config.username.to_s
128
+ env[:machine].env.vagrantfile.config.username
129
+ env[:machine].env.vagrantfile.config.api_token
130
+ env[:machine].env.vagrantfile.config
131
+ env[:machine].env.vagrantfile
132
+ c
133
+ env[:machine]
134
+ c
135
+ l
136
+ p env
137
+ pp env
138
+ ap env
139
+ env[:host]
140
+ env[:local_data_path]
141
+ env.local_data_path
142
+ env[:root_path]
143
+ env[:home_path]
144
+ env.keys
145
+ env.class
146
+ env
147
+ c
148
+ path
149
+ n
150
+ s
151
+ c
152
+ @env.local_data_path
153
+ c
154
+ @env.local_data_path
155
+ c
156
+ up
157
+ @env
158
+ env.local_data_path
159
+ env
160
+ env[:machines].first
161
+ s
162
+ c
163
+ env
164
+ c
165
+ display env
166
+ c
167
+ env[:machines]
168
+ c
169
+ @env
170
+ @env.environment
171
+ c
172
+ env[:machines]
173
+ c
174
+ env[:machines]
175
+ c
176
+ machines.first.provider_config
177
+ machines.first.env.provider_config
178
+ machines.first.env
179
+ machines.first
180
+ @env.environment
181
+ c
182
+ env[:machine]
183
+ env[:machines]
184
+ env[:environment]
185
+ environment
186
+ q
187
+ env[:machines].collect(&:id)
188
+ env[:machines]
189
+ n
190
+ c
191
+ n
192
+ options
193
+ n
194
+ b
195
+ c 83
196
+ c
197
+ n
198
+ finish
199
+ n
200
+ machines
201
+ $!
202
+ finish
203
+ $!
204
+ n
205
+ options
206
+ n
207
+ c
208
+ finish
209
+ n
210
+ s
211
+ c
212
+ Vagrant::Errors::VMBootTimeout
213
+ Vagrant::Errors::VagrantError::VMBootTimeout
214
+ VagrantError::VMBootTimeout
215
+ Errors::VMBootTimeout
216
+ c
217
+ options
218
+ c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+
2
+ # 0.1.7 (November 30, 2015)
3
+
4
+ * Added parallelization support with a custom "up" command. VMs are
5
+ created and customized separately, and then all are run with a single
6
+ REST call.
7
+
8
+ # 0.1.6 (November 13, 2015)
9
+
10
+ * Add `vpn_url` setting to specify the method for connecting to the
11
+ Skytap VM. If not present, the user will select the VPN interactively.
12
+ * Handle "network unreachable" errors while waiting for machines to boot.
13
+ * Add more validation logic prior to creating VMs.
14
+
1
15
  # 0.1.5 (November 6, 2015)
2
16
 
3
17
  * Initial beta release.
data/README.md CHANGED
@@ -24,7 +24,7 @@ Before you begin, make sure you have:
24
24
  * A Skytap username and API token from the "My Account" page
25
25
  * A Skytap VPN in the region where you'll be creating environments; a NAT-enabled VPN is recommended.
26
26
 
27
- To check if a VPN is available, navigate to a Skytap environment in the region and open the network settings. If the **VPN** section is visible in the network settings, a VPN is available. If you do not have a Skytap VPN, work with your Skytap administrator to create one. For instructions, see [Creating a VPN Connection to an External Network](Vpns.html).
27
+ To check if a VPN is available, navigate to a Skytap environment in the region and open the network settings. If the **VPN** section is visible in the network settings, a VPN is available. If you do not have a Skytap VPN, work with your Skytap administrator to create one. For instructions, see [Creating a VPN Connection to an External Network](http://help.skytap.com/#Vpns.html).
28
28
 
29
29
  ## Installing the Skytap Provider and Starting Your First Environment
30
30
 
@@ -61,7 +61,30 @@ Before you begin, make sure you have:
61
61
  1. Choose "skytap" as the user login for the VM.
62
62
  1. Wait for `vagrant up` to complete, then do `vagrant ssh` to verify that you can access the new VM.
63
63
 
64
+ ## Multi-machine Example
65
+ The following defines two VMs in a single environment. Both are based on the same Ubuntu template as above, but have different hardware settings. Since the source VM in the public library template is connected to a network, both of the VMs in the new environment will be connected to a single network.
64
66
 
67
+ ```ruby
68
+ config.vm.define "web" do |server|
69
+ server.vm.provider :skytap do |box|
70
+ box.vm_url = "https://cloud.skytap.com/vms/3157858"
71
+ box.cpus = 2
72
+ box.cpuspersocket = 1
73
+ box.ram = 1024
74
+ end
75
+ server.vm.synced_folder "~/web_files", "/synced", type: :nfs
76
+ end
77
+
78
+ config.vm.define "db" do |server|
79
+ server.vm.provider :skytap do |box|
80
+ box.vm_url = "https://cloud.skytap.com/vms/3157858"
81
+ box.cpus = 8
82
+ box.cpuspersocket = 4
83
+ box.ram = 8192
84
+ end
85
+ server.vm.synced_folder "~/db_files", "/synced", type: :nfs
86
+ end
87
+ ```
65
88
 
66
89
  ## Supported Commands
67
90
 
@@ -83,6 +106,7 @@ For the most part these behave identically to the builtin Vagrant commands.
83
106
  | `vagrant up [<vm_name>, <vm_name>]` | Run an environment or VM(s), creating them from settings in the Vagrantfile if they do not already exist.|
84
107
 
85
108
  Notes:
109
+
86
110
  * When the first VM is created, a Skytap environment will be created; when all VMs are deleted, the containing environment will also be deleted.
87
111
  * The timeout for graceful shutdown is currently set to 5 minutes.
88
112
  * Changes to hardware settings of an existing VM will take effect when the VM is being powered on; that is, when doing `vagrant reload`, or `vagrant up` when the machine is halted.
@@ -90,21 +114,6 @@ Notes:
90
114
 
91
115
  ## Additional Supported Actions
92
116
 
93
- ### Edit the VM Settings
94
-
95
- 1. Edit the VM definitions in the Vagrantfile.
96
- 2. Use `vagrant up` (if the VMs are halted) or `vagrant reload` to apply updates.
97
-
98
- ### Add VM(s) to an Environment
99
-
100
- 1. Add new definitions for the VMs to the Vagrantfile.
101
- 2. Use `vagrant up` to create the new VMs
102
-
103
- ### Remove VM(s) from an Environment
104
-
105
- 1. Use `vagrant destroy` to delete the Skytap VM.
106
- 2. Remove the VM definition from the Vagrantfile. See [Creating a Vagrantfile](Vagrantfile.html).
107
-
108
117
  ### Sync Local Folders with the VM's Folders using NFS
109
118
 
110
119
  The Skytap Vagrant provider supports Vagrant's built-in NFS sharing facility. In the following example, a local directory `~/web_files` will be visible on the VM at the path `/synced`.
@@ -119,32 +128,7 @@ config.vm.define "web" do |server|
119
128
  end
120
129
  ```
121
130
 
122
- For more information, see Vagrant's documentation at [https://docs.vagrantup.com/v2/synced-folders/index.html](https://docs.vagrantup.com/v2/synced-folders/index.html).
123
-
124
- ## Multi-machine Example
125
- The following defines two VMs in a single environment. Both are based on the same Ubuntu template as above, but have different hardware settings. Since the source VM in the public library template is connected to a network, both of the VMs in the new environment will be connected to a single network.
126
-
127
- ```ruby
128
- config.vm.define "web" do |server|
129
- server.vm.provider :skytap do |box|
130
- box.vm_url = "https://cloud.skytap.com/vms/3157858"
131
- box.cpus = 2
132
- box.cpuspersocket = 1
133
- box.ram = 1024
134
- end
135
- server.vm.synced_folder "~/web_files", "/synced", type: :nfs
136
- end
137
-
138
- config.vm.define "db" do |server|
139
- server.vm.provider :skytap do |box|
140
- box.vm_url = "https://cloud.skytap.com/vms/3157858"
141
- box.cpus = 8
142
- box.cpuspersocket = 4
143
- box.ram = 8192
144
- end
145
- server.vm.synced_folder "~/db_files", "/synced", type: :nfs
146
- end
147
- ```
131
+ For more information, see [https://docs.vagrantup.com/v2/synced-folders](https://docs.vagrantup.com/v2/synced-folders).
148
132
 
149
133
  ## Skytap-specific Vagrantfile Settings
150
134
 
@@ -155,12 +139,16 @@ end
155
139
  |cpuspersocket | no | Number of virtual cores per processor.|
156
140
  |ram | no | RAM (megabytes).|
157
141
  |guestos | no | The VMware guest OS for the virtual machine.|
142
+ |vpn_url | no | The URL of the Skytap VPN to use when connecting to the VM.|
158
143
 
159
144
  Notes:
145
+
160
146
  * Source VMs must come from a template, not an environment, and they must be saved in the powered off state.
161
147
  * Multi-machine environments may use source VMs from multiple templates, from your customer account and/or the public template library, as long as all are in the same region. Your user account must have permissions to see the templates containing the source VMs.
162
- * `cpus` must be evenly divisible by `cpuspersocket`. Two quad-core processors have a total of 8 virtual cores, so the `cpus` value would be 8. (Most VMs in the public template library are single-core.)
163
- * The `guestos` setting is distinct from from Vagrant's `config.vm.guest` setting.
148
+ * `cpus` must be evenly divisible by `cpuspersocket`. E.g., two quad-core processors have a total of 8 virtual cores, so the `cpus` value would be 8. (Most VMs in the public template library are single-core.)
149
+ * The `guestos` setting is distinct from from Vagrant's `config.vm.guest` setting.
150
+ * If you do not know the URL for the VPN you wish to use, contact your Skytap administrator.
151
+
164
152
 
165
153
  ## Login Credentials
166
154
  In addition to setting username and password in the Vagrantfile with `config.ssh.username` and `config.ssh.password`, the Skytap Vagrant provider also supports [VM Credentials](http://help.skytap.com/#VM_Settings_Credentials.html) stored with the Skytap VM. Credentials are a free-form field; if formatted as "username / password", the Skytap provider will parse the credentials and present them to the user when the VM is first created.
@@ -178,5 +166,7 @@ To enable logging while troubleshooting, see [https://docs.vagrantup.com/v2/othe
178
166
  * At this time, WinRM credentials stored in Skytap VMs will be ignored. The username and password for WinRM connections must be stored in the Vagrantfile (`config.winrm.username` and `config.winrm.password`).
179
167
  * Running, reloading, or destroying a Skytap VM can result in "stale NFS file handle" errors on other providers' VMs. This is a known issue when using multiple providers on the same host machine. The workaround is to use `vagrant reload` on the affected VM to refresh that VM's NFS mount(s).
180
168
  * At this time, `vagrant share` is not supported.
181
- * Private networks are currently unsupported.
169
+ * High-level networking features (including port forwarding and private networks) are currently unsupported.
182
170
  * Although several Skytap public library VMs include credentials for the `root` login, its use is not recommended.
171
+ * Once a VM has been created, it is not possible to change its connection method (i.e., connect using a different VPN). This is the
172
+ case whether the VPN is specified in the Vagrantfile with the `vpn_url` setting, or selected interactively.
data/bar ADDED
@@ -0,0 +1,6 @@
1
+ 2015-11-09T18:14:57.1402+00:00 tuk1m1wfe20 wfe 5546 - - [wfe.4119d810693b013377e6005056ae425d.5546.143] perf_stat_counters.rb:109 Perf: 118||DB: 0.0ms|V: 0.0ms|GET /ibm_marketplace/subscribe html||Chrome 46.0.2490.80|406
2
+ 2015-11-09T18:14:57.1391+00:00 tuk1m1wfe20 wfe 5546 - - [wfe.4119d810693b013377e6005056ae425d.5546.143] log_subscriber.rb:105 Completed 406 Not Acceptable in 16.5ms (ActiveRecord: 0.0ms)
3
+ 2015-11-09T18:14:57.1385+00:00 tuk1m1wfe20 wfe 5546 - - [wfe.4119d810693b013377e6005056ae425d.5546.143] log_subscriber.rb:105 Filter chain halted as :verify_oauth_signature rendered or redirected
4
+ 2015-11-09T18:14:57.1375+00:00 tuk1m1wfe20 wfe 5546 - - [wfe.4119d810693b013377e6005056ae425d.5546.143] ibm_marketplace_controller.rb:636 Request did not include an OAuth consumer key.
5
+ 2015-11-09T18:14:57.1220+00:00 tuk1m1wfe20 wfe 5546 - - [wfe.4119d810693b013377e6005056ae425d.5546.143] log_subscriber.rb:105 Processing by IbmMarketplaceController#subscribe as HTML
6
+ 2015-11-09T18:14:57.0192+00:00 tuk1m1wfe20 wfe 5546 - - [wfe.4119d810693b013377e6005056ae425d.5546.143] logger.rb:31 Started GET "/ibm_marketplace/subscribe" for 66.193.98.66 at 2015-11-09 18:14:57 +0000
@@ -0,0 +1,247 @@
1
+ # HG changeset patch
2
+ # Parent 315fe5d07c6435fdb931fb73df1aef34a8205916
3
+ ENG-10269 the last mandatory bit of cleanup: how we capture provide vm state
4
+
5
+ diff -r 315fe5d07c64 lib/vagrant-skytap/action.rb
6
+ --- a/lib/vagrant-skytap/action.rb Fri Nov 20 12:31:47 2015 -0800
7
+ +++ b/lib/vagrant-skytap/action.rb Fri Nov 20 19:19:54 2015 -0800
8
+ @@ -168,11 +168,11 @@
9
+ end
10
+ end
11
+
12
+ - # Some middlewares perform further actions after the succeeding
13
+ - # middleware returns. Provision and SyncedFolders, specifically,
14
+ - # both require the machine to be booted on the way back. This
15
+ - # requirement can be satisfied by putting the WaitForCommunicator
16
+ - # middleware later in the sequence.
17
+ + # Note: Provision and SyncedFolders perform actions before and after
18
+ + # calling the next middleware in the sequence. Both require that
19
+ + # the machine be booted before those calls return. This requirement
20
+ + # can be satisfied by putting the WaitForCommunicator middleware
21
+ + # later in the sequence.
22
+ def self.action_prepare_boot
23
+ Vagrant::Action::Builder.new.tap do |b|
24
+ b.use PrepareNFSSettings
25
+ @@ -185,19 +185,27 @@
26
+
27
+ def self.action_resume
28
+ Vagrant::Action::Builder.new.tap do |b|
29
+ - b.use action_up
30
+ + Vagrant::Action::Builder.new.tap do |b|
31
+ + b.use InitializeAPIClient
32
+ + b.use FetchEnvironment
33
+ + b.use Call, IsSuspended do |env, b1|
34
+ + if env[:result]
35
+ + b1.use MessageResuming
36
+ + b1.use RunVm
37
+ + b1.use WaitForCommunicator
38
+ + end
39
+ + end
40
+ + end
41
+ end
42
+ end
43
+
44
+ - # This action is called to bring the box up from nothing.
45
+ - def self.action_up
46
+ - Vagrant::Action::Builder.new.tap do |b|
47
+ - b.use action_create
48
+ - b.use action_run_vm
49
+ - end
50
+ - end
51
+ + # The Skytap provider has a modified "vagrant up" command which
52
+ + # takes advantage of parallel runstate operations on Skytap
53
+ + # environments. The create and update_hardware actions are
54
+ + # separated from the run_vm action, so we can pass in the ids
55
+ + # and initial states for all machines to be run, potentially
56
+ + # with a single REST call.
57
+
58
+ - # This action is called by our modified "up" command.
59
+ def self.action_create
60
+ Vagrant::Action::Builder.new.tap do |b|
61
+ b.use HandleBox
62
+ @@ -217,6 +225,13 @@
63
+ b1.use StoreExtraData
64
+ b1.use SetUpVm
65
+ end
66
+ + end
67
+ + end
68
+ +
69
+ + def self.action_update_hardware
70
+ + Vagrant::Action::Builder.new.tap do |b|
71
+ + b.use InitializeAPIClient
72
+ + b.use FetchEnvironment
73
+ b.use Call, IsStopped do |env, b1|
74
+ if env[:result]
75
+ b1.use UpdateHardware
76
+ @@ -226,28 +241,25 @@
77
+ end
78
+ end
79
+
80
+ - # This action is called by our modified "up" command after
81
+ - # all the VMs have been created. The action is called once
82
+ - # for each machine, but by default, the RunEnvironment
83
+ - # middleware will run all the machines in parallel; after
84
+ - # the first invocation, RunEnvironment is a no-op.
85
+ def self.action_run_vm
86
+ Vagrant::Action::Builder.new.tap do |b|
87
+ b.use InitializeAPIClient
88
+ b.use FetchEnvironment
89
+ +
90
+ b.use Call, InitialState do |env, b1|
91
+ case env[:result]
92
+ when :running
93
+ b1.use MessageAlreadyRunning
94
+ next
95
+ when :suspended
96
+ - b1.use Message, "The machine will be resumed"
97
+ - when :stopped
98
+ + b1.use MessageResuming
99
+ + else
100
+ b1.use action_prepare_boot
101
+ end
102
+ -
103
+ b1.use Call, IsParallelized do |env2, b2|
104
+ if env2[:result]
105
+ + # Note: RunEnvironment is a no-op after
106
+ + # the first invocation.
107
+ b2.use RunEnvironment
108
+ else
109
+ b2.use RunVm
110
+ @@ -263,13 +275,17 @@
111
+ b.use ConfigValidate
112
+ b.use InitializeAPIClient
113
+ b.use FetchEnvironment
114
+ - b.use Call, ExistenceCheck do |env, b2|
115
+ + b.use Call, ExistenceCheck do |env, b1|
116
+ case env[:result]
117
+ when :missing_environment, :missing_vm, :no_vms
118
+ - b2.use MessageNotCreated
119
+ + b1.use MessageNotCreated
120
+ else
121
+ - b2.use action_halt
122
+ - b2.use action_up
123
+ + b1.use action_halt
124
+ + b1.use action_update_hardware
125
+ + # We don't need to store the initial states
126
+ + # before calling run_vm, because the default
127
+ + # behavior is to treat the VMs as powered off.
128
+ + b1.use action_run_vm
129
+ end
130
+ end
131
+ end
132
+ @@ -294,6 +310,7 @@
133
+ autoload :MessageAlreadyRunning, action_root.join("message_already_running")
134
+ autoload :MessageNotCreated, action_root.join("message_not_created")
135
+ autoload :MessageEnvironmentUrl, action_root.join("message_environment_url")
136
+ + autoload :MessageResuming, action_root.join("message_resuming")
137
+ autoload :MessageWillNotDestroy, action_root.join("message_will_not_destroy")
138
+ autoload :PrepareNFSSettings, action_root.join("prepare_nfs_settings")
139
+ autoload :PrepareNFSValidIds, action_root.join("prepare_nfs_valid_ids")
140
+ diff -r 315fe5d07c64 lib/vagrant-skytap/action/initial_state.rb
141
+ --- a/lib/vagrant-skytap/action/initial_state.rb Fri Nov 20 12:31:47 2015 -0800
142
+ +++ b/lib/vagrant-skytap/action/initial_state.rb Fri Nov 20 19:19:54 2015 -0800
143
+ @@ -1,9 +1,8 @@
144
+ module VagrantPlugins
145
+ module Skytap
146
+ module Action
147
+ - # This is specifically for the "up" action. When we run in parallel, we have
148
+ - # to know which machines were initially powered off so we can set up operations
149
+ - # which will happen after the machine is ready
150
+ + # Our modified "up" command captures the VM states in the initial_states hash
151
+ + # before running them, potentially in parallel.
152
+ class InitialState
153
+ def initialize(app, env)
154
+ @app = app
155
+ @@ -11,7 +10,8 @@
156
+ end
157
+
158
+ def call(env)
159
+ - env[:result] = env[:initial_states][env[:machine].id]
160
+ + # if initial_states is absent, result is nil
161
+ + env[:result] = env[:initial_states].try(:[], env[:machine].id)
162
+ @app.call(env)
163
+ end
164
+ end
165
+ diff -r 315fe5d07c64 lib/vagrant-skytap/action/message_resuming.rb
166
+ --- /dev/null Thu Jan 01 00:00:00 1970 +0000
167
+ +++ b/lib/vagrant-skytap/action/message_resuming.rb Fri Nov 20 19:19:54 2015 -0800
168
+ @@ -0,0 +1,16 @@
169
+ +module VagrantPlugins
170
+ + module Skytap
171
+ + module Action
172
+ + class MessageResuming
173
+ + def initialize(app, env)
174
+ + @app = app
175
+ + end
176
+ +
177
+ + def call(env)
178
+ + env[:ui].info(I18n.t("vagrant_skytap.resuming"))
179
+ + @app.call(env)
180
+ + end
181
+ + end
182
+ + end
183
+ + end
184
+ +end
185
+ diff -r 315fe5d07c64 lib/vagrant-skytap/action/run_environment.rb
186
+ --- a/lib/vagrant-skytap/action/run_environment.rb Fri Nov 20 12:31:47 2015 -0800
187
+ +++ b/lib/vagrant-skytap/action/run_environment.rb Fri Nov 20 19:19:54 2015 -0800
188
+ @@ -3,8 +3,9 @@
189
+ module VagrantPlugins
190
+ module Skytap
191
+ module Action
192
+ - # Runs multiple VMs in parallel. The :first_machine flag is used to prevent
193
+ - # redundant REST calls on subsequent invocations.
194
+ + # Runs multiple VMs in parallel. This middleware will be invoked for
195
+ + # each machine, so we set the :first_machine flag to prevent redundant
196
+ + # REST calls.
197
+ class RunEnvironment
198
+ include Vagrant::Util::Retryable
199
+
200
+ diff -r 315fe5d07c64 lib/vagrant-skytap/command/up.rb
201
+ --- a/lib/vagrant-skytap/command/up.rb Fri Nov 20 12:31:47 2015 -0800
202
+ +++ b/lib/vagrant-skytap/command/up.rb Fri Nov 20 19:19:54 2015 -0800
203
+ @@ -60,7 +60,6 @@
204
+ # Go over each VM and bring it up
205
+ @logger.debug("'Up' each target VM...")
206
+
207
+ - # Create the VMs, then pass all the machines to the run action
208
+ machines = []
209
+ names = argv
210
+ if names.empty?
211
+ @@ -85,15 +84,9 @@
212
+
213
+ machines << machine
214
+ machine.action(:create, options)
215
+ + machine.action(:update_hardware, options)
216
+ end
217
+
218
+ - # Capture states before the parallel runstate operation.
219
+ - # Checking state is relatively expensive. we should be smarter
220
+ - # about what information to capture. For example, we can
221
+ - # determine which machines were newly created, and put them in
222
+ - # the :stopped collection. Or call them :created? No, that
223
+ - # would likely be confusing
224
+ - #require_boot = machines.select{|m| m.state.id == :stopped}
225
+ initial_states = machines.inject({}) do |acc, m|
226
+ acc[m.id] = m.state.id
227
+ acc
228
+ @@ -103,7 +96,6 @@
229
+ machine.action(:run_vm, options.merge(
230
+ first_machine: i == 0,
231
+ machines: machines,
232
+ - #require_boot: require_boot,
233
+ initial_states: initial_states
234
+ ))
235
+ end
236
+ diff -r 315fe5d07c64 locales/en.yml
237
+ --- a/locales/en.yml Fri Nov 20 12:31:47 2015 -0800
238
+ +++ b/locales/en.yml Fri Nov 20 19:19:54 2015 -0800
239
+ @@ -22,6 +22,8 @@
240
+ Stopping the instance...
241
+ terminating: |-
242
+ Terminating the instance...
243
+ + resuming: |-
244
+ + Resuming the suspended instance ...
245
+ waiting_for_ready: |-
246
+ Waiting for instance to become "ready"...
247
+ waiting_for_ssh: |-