vagrant-multiprovider-snap 0.0.12 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/README.md +5 -0
  4. data/lib/vagrant-multiprovider-snap/command/delete.rb +52 -0
  5. data/lib/vagrant-multiprovider-snap/command/root.rb +5 -0
  6. data/lib/vagrant-multiprovider-snap/plugin.rb +3 -0
  7. data/lib/vagrant-multiprovider-snap/providers/hyperv/action.rb +78 -0
  8. data/lib/vagrant-multiprovider-snap/providers/hyperv/action/has_snapshot.rb +31 -0
  9. data/lib/vagrant-multiprovider-snap/providers/hyperv/action/message_snapshot_not_created.rb +33 -0
  10. data/lib/vagrant-multiprovider-snap/providers/hyperv/action/message_snapshot_not_deleted.rb +27 -0
  11. data/lib/vagrant-multiprovider-snap/providers/hyperv/action/snapshot_delete.rb +31 -0
  12. data/lib/vagrant-multiprovider-snap/providers/hyperv/action/snapshot_rollback.rb +29 -0
  13. data/lib/vagrant-multiprovider-snap/providers/hyperv/action/snapshot_take.rb +28 -0
  14. data/lib/vagrant-multiprovider-snap/providers/hyperv/driver/base.rb +91 -0
  15. data/lib/vagrant-multiprovider-snap/providers/hyperv/driver/scripts/list_snapshots.ps1 +12 -0
  16. data/lib/vagrant-multiprovider-snap/providers/hyperv/driver/scripts/rollback_vm.ps1 +8 -0
  17. data/lib/vagrant-multiprovider-snap/providers/hyperv/driver/scripts/snapshot_delete.ps1 +8 -0
  18. data/lib/vagrant-multiprovider-snap/providers/hyperv/driver/scripts/snapshot_vm.ps1 +8 -0
  19. data/lib/vagrant-multiprovider-snap/providers/virtualbox/action.rb +26 -0
  20. data/lib/vagrant-multiprovider-snap/providers/virtualbox/action/has_snapshot.rb +5 -1
  21. data/lib/vagrant-multiprovider-snap/providers/virtualbox/action/message_snapshot_not_created.rb +7 -1
  22. data/lib/vagrant-multiprovider-snap/providers/virtualbox/action/message_snapshot_not_deleted.rb +29 -0
  23. data/lib/vagrant-multiprovider-snap/providers/virtualbox/action/snapshot_delete.rb +31 -0
  24. data/lib/vagrant-multiprovider-snap/providers/virtualbox/action/snapshot_rollback.rb +10 -2
  25. data/lib/vagrant-multiprovider-snap/providers/virtualbox/action/snapshot_take.rb +8 -1
  26. data/lib/vagrant-multiprovider-snap/providers/virtualbox/driver/base.rb +10 -2
  27. data/lib/vagrant-multiprovider-snap/providers/virtualbox/driver/meta.rb +1 -0
  28. data/lib/vagrant-multiprovider-snap/providers/vmware_fusion/action.rb +26 -0
  29. data/lib/vagrant-multiprovider-snap/providers/vmware_fusion/action/has_snapshot.rb +7 -1
  30. data/lib/vagrant-multiprovider-snap/providers/vmware_fusion/action/message_snapshot_not_created.rb +7 -1
  31. data/lib/vagrant-multiprovider-snap/providers/vmware_fusion/action/message_snapshot_not_deleted.rb +29 -0
  32. data/lib/vagrant-multiprovider-snap/providers/vmware_fusion/action/snapshot_delete.rb +31 -0
  33. data/lib/vagrant-multiprovider-snap/providers/vmware_fusion/action/snapshot_rollback.rb +17 -7
  34. data/lib/vagrant-multiprovider-snap/providers/vmware_fusion/action/snapshot_take.rb +8 -1
  35. data/lib/vagrant-multiprovider-snap/providers/vmware_fusion/driver/base.rb +12 -4
  36. data/lib/vagrant-multiprovider-snap/providers/vmware_workstation/action.rb +20 -0
  37. data/lib/vagrant-multiprovider-snap/providers/vmware_workstation/action/has_snapshot.rb +5 -1
  38. data/lib/vagrant-multiprovider-snap/providers/vmware_workstation/action/message_snapshot_not_created.rb +7 -1
  39. data/lib/vagrant-multiprovider-snap/providers/vmware_workstation/action/message_snapshot_not_deleted.rb +29 -0
  40. data/lib/vagrant-multiprovider-snap/providers/vmware_workstation/action/snapshot_delete.rb +31 -0
  41. data/lib/vagrant-multiprovider-snap/providers/vmware_workstation/action/snapshot_rollback.rb +15 -5
  42. data/lib/vagrant-multiprovider-snap/providers/vmware_workstation/action/snapshot_take.rb +8 -1
  43. data/lib/vagrant-multiprovider-snap/providers/vmware_workstation/driver/base.rb +10 -2
  44. data/lib/vagrant-multiprovider-snap/version.rb +1 -1
  45. data/locales/en.yml +23 -6
  46. metadata +21 -2
@@ -0,0 +1,12 @@
1
+ Param(
2
+ [Parameter(Mandatory=$true)]
3
+ [string]$VmId
4
+ )
5
+
6
+ $VM = Get-VM -Id $VmId -ErrorAction "Stop"
7
+ $Snapshots = @(Get-VMSnapshot $VM | Select-Object Name)
8
+ $result = ConvertTo-json $Snapshots
9
+
10
+ Write-Host "===Begin-Output==="
11
+ Write-Host $result
12
+ Write-Host "===End-Output==="
@@ -0,0 +1,8 @@
1
+ Param(
2
+ [Parameter(Mandatory=$true)]
3
+ [string]$VmId,
4
+ [string]$SnapName
5
+ )
6
+
7
+ $VM = Get-VM -Id $VmId -ErrorAction "Stop"
8
+ Restore-VMSnapshot $VM -Name $SnapName -Confirm:$false
@@ -0,0 +1,8 @@
1
+ Param(
2
+ [Parameter(Mandatory=$true)]
3
+ [string]$VmId,
4
+ [string]$SnapName
5
+ )
6
+
7
+ $VM = Get-VM -Id $VmId -ErrorAction "Stop"
8
+ Remove-VMSnapshot $VM -Name $SnapName
@@ -0,0 +1,8 @@
1
+ Param(
2
+ [Parameter(Mandatory=$true)]
3
+ [string]$VmId,
4
+ [string]$SnapName
5
+ )
6
+
7
+ $VM = Get-VM -Id $VmId -ErrorAction "Stop"
8
+ Checkpoint-VM $VM -SnapshotName $SnapName
@@ -8,8 +8,10 @@ module VagrantPlugins
8
8
 
9
9
  autoload :SnapshotTake, File.expand_path("../action/snapshot_take.rb", __FILE__)
10
10
  autoload :SnapshotRollback, File.expand_path("../action/snapshot_rollback.rb", __FILE__)
11
+ autoload :SnapshotDelete, File.expand_path("../action/snapshot_delete.rb", __FILE__)
11
12
  autoload :HasSnapshot, File.expand_path("../action/has_snapshot.rb", __FILE__)
12
13
  autoload :MessageSnapshotNotCreated, File.expand_path("../action/message_snapshot_not_created.rb", __FILE__)
14
+ autoload :MessageSnapshotNotDeleted, File.expand_path("../action/message_snapshot_not_deleted.rb", __FILE__)
13
15
 
14
16
  def self.action_snapshot_take
15
17
  Vagrant::Action::Builder.new.tap do |b|
@@ -25,6 +27,30 @@ module VagrantPlugins
25
27
  end
26
28
  end
27
29
 
30
+ def self.action_snapshot_delete
31
+ Vagrant::Action::Builder.new.tap do |b|
32
+ b.use CheckVirtualbox
33
+ b.use Call, Created do |env, b2|
34
+ if env[:result]
35
+ b2.use Call, HasSnapshot do |env2, b3|
36
+ if env2[:result]
37
+ b3.use CheckAccessible
38
+ b3.use Call, SnapshotDelete do |env3,b4|
39
+ unless env3[:result]
40
+ b4.use MessageSnapshotNotDeleted
41
+ end
42
+ end
43
+ else
44
+ b3.use MessageSnapshotNotCreated
45
+ end
46
+ end
47
+ else
48
+ b2.use MessageNotCreated
49
+ end
50
+ end
51
+ end
52
+ end
53
+
28
54
  def self.action_snapshot_rollback
29
55
  Vagrant::Action::Builder.new.tap do |b|
30
56
  b.use CheckVirtualbox
@@ -12,7 +12,11 @@ module VagrantPlugins
12
12
 
13
13
  def call(env)
14
14
 
15
- env[:result] = env[:machine].provider.driver.has_snapshot?
15
+ if env[:snap_name].nil?
16
+ env[:snap_name] = env[:machine].provider.driver.snapshot_list.last
17
+ end
18
+
19
+ env[:result] = env[:machine].provider.driver.has_snapshot?(env[:snap_name])
16
20
 
17
21
  @app.call(env)
18
22
 
@@ -12,7 +12,13 @@ module VagrantPlugins
12
12
 
13
13
  def call(env)
14
14
 
15
- env[:ui].info I18n.t("vagrant_snap.actions.vm.snapshot_not_created")
15
+ if env[:snap_name].nil?
16
+ env[:ui].info I18n.t("vagrant_snap.actions.vm.snapshot_not_created.not_created")
17
+ else
18
+ env[:ui].info(I18n.t("vagrant_snap.actions.vm.snapshot_not_created.named_not_exist",
19
+ :snapshot => env[:snap_name]),
20
+ )
21
+ end
16
22
 
17
23
  @app.call(env)
18
24
 
@@ -0,0 +1,29 @@
1
+ module VagrantPlugins
2
+
3
+ module ProviderVirtualBox
4
+
5
+ module Action
6
+
7
+ class MessageSnapshotNotDeleted
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_deleted.not_deleted",
16
+ :snapshot => env[:snap_name]),
17
+ )
18
+
19
+ @app.call(env)
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+
29
+ end
@@ -0,0 +1,31 @@
1
+ module VagrantPlugins
2
+
3
+ module ProviderVirtualBox
4
+
5
+ module Action
6
+
7
+ class SnapshotDelete
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_delete.deleting",
16
+ :snapshot => env[:snap_name]),
17
+ )
18
+
19
+ env[:result] = env[:machine].provider.driver.snapshot_delete(env[:snap_name])
20
+
21
+ @app.call(env)
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+
31
+ end
@@ -12,12 +12,20 @@ module VagrantPlugins
12
12
 
13
13
  def call(env)
14
14
 
15
- env[:ui].info I18n.t("vagrant_snap.actions.vm.snapshot_rollback.rolling_back")
16
-
17
15
  # Snapshot rollback involves powering off and on the VM
18
16
  # so we need to find the gui state
17
+
19
18
  boot_mode = env[:machine].provider_config.gui ? "gui" : "headless"
20
19
 
20
+ if env[:snap_name].nil?
21
+ env[:snap_name] = env[:machine].provider.driver.snapshot_list.last
22
+ env[:ui].info I18n.t("vagrant_snap.actions.vm.snapshot_rollback.rolling_back")
23
+ else
24
+ env[:ui].info(I18n.t("vagrant_snap.actions.vm.snapshot_rollback.rolling_back_named",
25
+ :snapshot => env[:snap_name]),
26
+ )
27
+ end
28
+
21
29
  env[:machine].provider.driver.snapshot_rollback(boot_mode,env[:snap_name])
22
30
 
23
31
  @app.call(env)
@@ -12,7 +12,14 @@ module VagrantPlugins
12
12
 
13
13
  def call(env)
14
14
 
15
- env[:ui].info I18n.t("vagrant_snap.actions.vm.snapshot_take.taking")
15
+ if env[:snap_name].nil?
16
+ env[:ui].info I18n.t("vagrant_snap.actions.vm.snapshot_take.taking")
17
+ else
18
+ env[:ui].info(I18n.t("vagrant_snap.actions.vm.snapshot_take.taking_named",
19
+ :snapshot => env[:snap_name]),
20
+ )
21
+ end
22
+
16
23
  env[:machine].provider.driver.snapshot_take(env[:snap_name])
17
24
 
18
25
  @app.call(env)
@@ -10,6 +10,10 @@ module VagrantPlugins
10
10
  execute("snapshot", @uuid, "take", name || "vagrant-snap-#{Time.now.to_i}", "--pause")
11
11
  end
12
12
 
13
+ def snapshot_delete(name)
14
+ execute("snapshot", @uuid, "delete", name)
15
+ end
16
+
13
17
  def snapshot_rollback(bootmode, name)
14
18
  # don't try to power off if we're already off
15
19
  unless [:poweroff, :aborted].include?(read_state)
@@ -31,8 +35,12 @@ module VagrantPlugins
31
35
  snapshots
32
36
  end
33
37
 
34
- def has_snapshot?
35
- snapshot_list.length > 0
38
+ def has_snapshot?(name)
39
+ if name.nil?
40
+ return true unless snapshot_list.empty?
41
+ else
42
+ return true if snapshot_list.include? "#{name}"
43
+ end
36
44
  end
37
45
 
38
46
  end
@@ -7,6 +7,7 @@ module VagrantPlugins
7
7
  class Meta
8
8
 
9
9
  def_delegators :@driver, :snapshot_take,
10
+ :snapshot_delete,
10
11
  :snapshot_rollback,
11
12
  :snapshot_list,
12
13
  :has_snapshot?
@@ -8,8 +8,10 @@ module HashiCorp
8
8
 
9
9
  autoload :SnapshotTake, File.expand_path("../action/snapshot_take.rb", __FILE__)
10
10
  autoload :SnapshotRollback, File.expand_path("../action/snapshot_rollback.rb", __FILE__)
11
+ autoload :SnapshotDelete, File.expand_path("../action/snapshot_delete.rb", __FILE__)
11
12
  autoload :HasSnapshot, File.expand_path("../action/has_snapshot.rb", __FILE__)
12
13
  autoload :MessageSnapshotNotCreated, File.expand_path("../action/message_snapshot_not_created.rb", __FILE__)
14
+ autoload :MessageSnapshotNotDeleted, File.expand_path("../action/message_snapshot_not_deleted.rb", __FILE__)
13
15
 
14
16
  def self.action_snapshot_take
15
17
  Vagrant::Action::Builder.new.tap do |b|
@@ -24,6 +26,29 @@ module HashiCorp
24
26
  end
25
27
  end
26
28
 
29
+ def self.action_snapshot_delete
30
+ Vagrant::Action::Builder.new.tap do |b|
31
+ b.use CheckVMware
32
+ b.use Call, Created do |env, b2|
33
+ if env[:result]
34
+ b2.use Call, HasSnapshot do |env2, b3|
35
+ if env2[:result]
36
+ b3.use Call, SnapshotDelete do |env3,b4|
37
+ unless env3[:result]
38
+ b4.use MessageSnapshotNotDeleted
39
+ end
40
+ end
41
+ else
42
+ b3.use MessageSnapshotNotCreated
43
+ end
44
+ end
45
+ else
46
+ b2.use MessageNotCreated
47
+ end
48
+ end
49
+ end
50
+ end
51
+
27
52
  def self.action_snapshot_rollback
28
53
  Vagrant::Action::Builder.new.tap do |b|
29
54
  b.use CheckVMware
@@ -43,6 +68,7 @@ module HashiCorp
43
68
  end
44
69
  end
45
70
  end
71
+
46
72
  end
47
73
 
48
74
  end
@@ -12,7 +12,13 @@ module HashiCorp
12
12
 
13
13
  def call(env)
14
14
 
15
- env[:result] = env[:machine].provider.driver.has_snapshot?
15
+ if env[:snap_name].nil?
16
+ snap_name = env[:machine].provider.driver.snapshot_list.last
17
+ else
18
+ snap_name = env[:snap_name]
19
+ end
20
+
21
+ env[:result] = env[:machine].provider.driver.has_snapshot?(snap_name)
16
22
 
17
23
  @app.call(env)
18
24
 
@@ -12,7 +12,13 @@ module HashiCorp
12
12
 
13
13
  def call(env)
14
14
 
15
- env[:ui].info I18n.t("vagrant_snap.actions.vm.snapshot_not_created")
15
+ if env[:snap_name].nil?
16
+ env[:ui].info I18n.t("vagrant_snap.actions.vm.snapshot_not_created.not_created")
17
+ else
18
+ env[:ui].info(I18n.t("vagrant_snap.actions.vm.snapshot_not_created.named_not_exist",
19
+ :snapshot => env[:snap_name]),
20
+ )
21
+ end
16
22
 
17
23
  @app.call(env)
18
24
 
@@ -0,0 +1,29 @@
1
+ module HashiCorp
2
+
3
+ module VagrantVMwarefusion
4
+
5
+ module Action
6
+
7
+ class MessageSnapshotNotDeleted
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_deleted.not_deleted",
16
+ :snapshot => env[:snap_name]),
17
+ )
18
+
19
+ @app.call(env)
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+
29
+ end
@@ -0,0 +1,31 @@
1
+ module HashiCorp
2
+
3
+ module VagrantVMwarefusion
4
+
5
+ module Action
6
+
7
+ class SnapshotDelete
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_delete.deleting",
16
+ :snapshot => env[:snap_name]),
17
+ )
18
+
19
+ env[:result] = env[:machine].provider.driver.snapshot_delete(env[:snap_name])
20
+
21
+ @app.call(env)
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+
31
+ end
@@ -12,13 +12,23 @@ module HashiCorp
12
12
 
13
13
  def call(env)
14
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" : "nogui"
20
-
21
- env[:machine].provider.driver.snapshot_rollback(boot_mode, env[:snap_name])
15
+ # Snapshot rollback involves powering off and on the VM, so we need to find the gui
16
+ # state ... however, the start() method in VagrantVMwarefusion.Driver.Fusion takes a
17
+ # bool, not a string, so setting this to "gui" or "nogui" will therefore always start
18
+ # in gui mode. Setting this to a bool instead
19
+
20
+ boot_mode = env[:machine].provider_config.gui
21
+
22
+ if env[:snap_name].nil?
23
+ env[:snap_name] = env[:machine].provider.driver.snapshot_list.last
24
+ env[:ui].info I18n.t("vagrant_snap.actions.vm.snapshot_rollback.rolling_back")
25
+ else
26
+ env[:ui].info(I18n.t("vagrant_snap.actions.vm.snapshot_rollback.rolling_back_named",
27
+ :snapshot => env[:snap_name]),
28
+ )
29
+ end
30
+
31
+ env[:machine].provider.driver.snapshot_rollback(boot_mode,env[:snap_name])
22
32
 
23
33
  @app.call(env)
24
34
 
@@ -12,7 +12,14 @@ module HashiCorp
12
12
 
13
13
  def call(env)
14
14
 
15
- env[:ui].info I18n.t("vagrant_snap.actions.vm.snapshot_take.taking")
15
+ if env[:snap_name].nil?
16
+ env[:ui].info I18n.t("vagrant_snap.actions.vm.snapshot_take.taking")
17
+ else
18
+ env[:ui].info(I18n.t("vagrant_snap.actions.vm.snapshot_take.taking_named",
19
+ :snapshot => env[:snap_name]),
20
+ )
21
+ end
22
+
16
23
  env[:machine].provider.driver.snapshot_take(env[:snap_name])
17
24
 
18
25
  @app.call(env)