vagrant-multiprovider-snap 0.0.9 → 0.0.10

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: e7d8719cab535721021bfd45b102aeea63f55826
4
- data.tar.gz: da9edd7455831ed3698cec530a4194de95228c22
3
+ metadata.gz: 4d5a319df594314a1caed509fb42dbf244bf88b1
4
+ data.tar.gz: 930c0e291f896503bf3c8bb1dadfdb05f5332b1d
5
5
  SHA512:
6
- metadata.gz: 42f706c6cf27eb57899f3d22dddad80c04b0de360556566d07fcb52198993e17fc9d35427fbaf21362b51b0b65c08978a736e87d79e6f405a3168a895f0154e8
7
- data.tar.gz: d8b7b03dfdb15eb725ee2e2ef69d6337c145a8fbe3c1dcf9b798f9aa0bfa921867b04cb7e8376d94050c7a79f097547a93cdb7ba14b8bb1805703d0b57717ce9
6
+ metadata.gz: a3355d1f4e185d0181c3090594fa92e66d7e8d37b1174da0e223376b4919370f2cacf5c7356bbdf8954528fc0e9e53aedb6bead8ccc7c290b1f35a357fa2fbc0
7
+ data.tar.gz: 4634830d07fde3105cf4db55387836a95ef3bba9526478feb85ddc3406f897f1e260d36115bde62601fcd772ac11645a437383e1fb56975fad9b166821b135f7
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 0.0.10 (April 6, 2014)
2
+
3
+ - Force autoloading of VMWare module before overriding its methods
4
+ - Ensure our override class has same superclass as the one we're adding methods to
5
+ - Ensure Virtualbox boxes are ready after snapshot rollback
6
+
1
7
  ## 0.0.9 (March 11, 2014)
2
8
 
3
9
  - Made plugin compatable with Vagrant 1.5 bundler approach
data/README.md CHANGED
@@ -9,6 +9,7 @@ running Vagrant boxes. It currently supports the following providers:
9
9
 
10
10
  * VirtualBox
11
11
  * VMWare Fusion (via the commercial VMWare plugin)
12
+ * VMWare Workstation (via the commercial VMWare plugin)
12
13
 
13
14
 
14
15
  Installation
@@ -11,21 +11,37 @@ module VagrantSnap
11
11
 
12
12
  begin
13
13
 
14
- # Make sure the fusion plugin is installed, then
15
- # include the fusion providers.
14
+ # Make sure the fusion plugin is installed (explicitly
15
+ # requiring the classes we're going to extend otherwise
16
+ # they don't get autloaded in time for us to do so)
17
+
18
+ require "vagrant-vmware-fusion/action"
19
+ require "vagrant-vmware-fusion/driver"
20
+
21
+ # ...then include our overrides
16
22
 
17
- require "vagrant-vmware-fusion"
18
23
  require_relative "providers/vmware_fusion/action"
19
24
  require_relative "providers/vmware_fusion/driver/base"
20
25
 
21
26
  rescue LoadError => e
22
-
23
27
  # If we can't load the fusion plugin, quietly ignore it
24
- # I'd like to log an info level message here, but I don't
25
- # think I can get at a ui object in this scope.
28
+ end
29
+
30
+ begin
26
31
 
32
+ # Same again but for the workstation plugin
33
+
34
+ require "vagrant-vmware-workstation/action"
35
+ require "vagrant-vmware-workstation/driver"
36
+
37
+ require_relative "providers/vmware_workstation/action"
38
+ require_relative "providers/vmware_workstation/driver/base"
39
+
40
+ rescue LoadError => e
41
+ # If we can't load the workstation plugin, quietly ignore it
27
42
  end
28
43
 
44
+
29
45
  name "snap command"
30
46
 
31
47
  description <<-DESC
@@ -34,6 +34,7 @@ module VagrantPlugins
34
34
  if env2[:result]
35
35
  b3.use CheckAccessible
36
36
  b3.use SnapshotRollback
37
+ b3.use WaitForCommunicator, [:restoring, :running]
37
38
  else
38
39
  b3.use MessageSnapshotNotCreated
39
40
  end
@@ -0,0 +1,51 @@
1
+ require "vagrant/action/builder"
2
+
3
+ module HashiCorp
4
+
5
+ module VagrantVMwareworkstation
6
+
7
+ module Action
8
+
9
+ autoload :SnapshotTake, File.expand_path("../action/snapshot_take.rb", __FILE__)
10
+ autoload :SnapshotRollback, File.expand_path("../action/snapshot_rollback.rb", __FILE__)
11
+ autoload :HasSnapshot, File.expand_path("../action/has_snapshot.rb", __FILE__)
12
+ autoload :MessageSnapshotNotCreated, File.expand_path("../action/message_snapshot_not_created.rb", __FILE__)
13
+
14
+ def self.action_snapshot_take
15
+ Vagrant::Action::Builder.new.tap do |b|
16
+ b.use CheckVMware
17
+ b.use Call, Created do |env, b2|
18
+ if env[:result]
19
+ b2.use SnapshotTake
20
+ else
21
+ b2.use MessageNotCreated
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ def self.action_snapshot_rollback
28
+ Vagrant::Action::Builder.new.tap do |b|
29
+ b.use CheckVMware
30
+ b.use Call, Created do |env, b2|
31
+ if env[:result]
32
+ b2.use Call, HasSnapshot do |env2, b3|
33
+ if env2[:result]
34
+ b3.use SnapshotRollback
35
+ else
36
+ b3.use MessageSnapshotNotCreated
37
+ end
38
+ end
39
+ else
40
+ b2.use MessageNotCreated
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ end
48
+
49
+ end
50
+
51
+
@@ -0,0 +1,27 @@
1
+ module HashiCorp
2
+
3
+ module VagrantVMwareworkstation
4
+
5
+ module Action
6
+
7
+ class HasSnapshot
8
+
9
+ def initialize(app, env)
10
+ @app = app
11
+ end
12
+
13
+ def call(env)
14
+
15
+ env[:result] = env[:machine].provider.driver.has_snapshot?
16
+
17
+ @app.call(env)
18
+
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,27 @@
1
+ module HashiCorp
2
+
3
+ module VagrantVMwareworkstation
4
+
5
+ module Action
6
+
7
+ class MessageSnapshotNotCreated
8
+
9
+ def initialize(app, env)
10
+ @app = app
11
+ end
12
+
13
+ def call(env)
14
+
15
+ env[:ui].info I18n.t("vagrant_snap.actions.vm.snapshot_not_created")
16
+
17
+ @app.call(env)
18
+
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,33 @@
1
+ module HashiCorp
2
+
3
+ module VagrantVMwareworkstation
4
+
5
+ module Action
6
+
7
+ class SnapshotRollback
8
+
9
+ def initialize(app, env)
10
+ @app = app
11
+ end
12
+
13
+ def call(env)
14
+
15
+ env[:ui].info I18n.t("vagrant_snap.actions.vm.snapshot_rollback.rolling_back")
16
+
17
+ # Snapshot rollback involves powering off and on the VM
18
+ # so we need to find the gui state
19
+ boot_mode = env[:machine].provider_config.gui ? "gui" : "headless"
20
+
21
+ env[:machine].provider.driver.snapshot_rollback(boot_mode)
22
+
23
+ @app.call(env)
24
+
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -0,0 +1,28 @@
1
+ module HashiCorp
2
+
3
+ module VagrantVMwareworkstation
4
+
5
+ module Action
6
+
7
+ class SnapshotTake
8
+
9
+ def initialize(app, env)
10
+ @app = app
11
+ end
12
+
13
+ def call(env)
14
+
15
+ env[:ui].info I18n.t("vagrant_snap.actions.vm.snapshot_take.taking")
16
+ env[:machine].provider.driver.snapshot_take
17
+
18
+ @app.call(env)
19
+
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,38 @@
1
+ module HashiCorp
2
+
3
+ module VagrantVMwareworkstation
4
+
5
+ module Driver
6
+
7
+ class Base
8
+
9
+ def snapshot_take
10
+ vmrun("snapshot", "#{vmx_path}", "vagrant-snap-#{Time.now.to_i}")
11
+ end
12
+
13
+ def snapshot_rollback(bootmode)
14
+ vmrun("revertToSnapshot", "#{vmx_path}", snapshot_list.last)
15
+ start
16
+ end
17
+
18
+ def snapshot_list
19
+ snapshots = []
20
+ vmrun("listSnapshots", "#{vmx_path}").stdout.split("\n").each do |line|
21
+ if line =~ /^vagrant-snap-/
22
+ snapshots << line
23
+ end
24
+ end
25
+ snapshots.sort
26
+ end
27
+
28
+ def has_snapshot?
29
+ snapshot_list.length > 0
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+
38
+ end
@@ -1,5 +1,5 @@
1
1
  module Vagrant
2
2
  module Snap
3
- VERSION = "0.0.9"
3
+ VERSION = "0.0.10"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-multiprovider-snap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Topper
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-11 00:00:00.000000000 Z
11
+ date: 2014-04-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Multi-provider snapshots for Vagrant
14
14
  email:
@@ -39,6 +39,12 @@ files:
39
39
  - lib/vagrant-multiprovider-snap/providers/vmware_fusion/action/snapshot_rollback.rb
40
40
  - lib/vagrant-multiprovider-snap/providers/vmware_fusion/action/snapshot_take.rb
41
41
  - lib/vagrant-multiprovider-snap/providers/vmware_fusion/driver/base.rb
42
+ - lib/vagrant-multiprovider-snap/providers/vmware_workstation/action.rb
43
+ - lib/vagrant-multiprovider-snap/providers/vmware_workstation/action/has_snapshot.rb
44
+ - lib/vagrant-multiprovider-snap/providers/vmware_workstation/action/message_snapshot_not_created.rb
45
+ - lib/vagrant-multiprovider-snap/providers/vmware_workstation/action/snapshot_rollback.rb
46
+ - lib/vagrant-multiprovider-snap/providers/vmware_workstation/action/snapshot_take.rb
47
+ - lib/vagrant-multiprovider-snap/providers/vmware_workstation/driver/base.rb
42
48
  - lib/vagrant-multiprovider-snap/version.rb
43
49
  - locales/en.yml
44
50
  - vagrant-multiprovider-snap.gemspec