[DRE-commits] [vagrant-libvirt] 08/104: pause <-> resume

Antonio Terceiro terceiro at moszumanska.debian.org
Sun Apr 24 13:55:39 UTC 2016


This is an automated email from the git hooks/post-receive script.

terceiro pushed a commit to annotated tag 0.0.11
in repository vagrant-libvirt.

commit 0a66fd2cffdff54563e5f42cafe5a8faae719f2d
Author: dima <pronix.service at gmail.com>
Date:   Sat Mar 30 13:42:59 2013 +0100

    pause <-> resume
---
 lib/vagrant-libvirt/action.rb                           | 17 +++++++++++++++++
 lib/vagrant-libvirt/action/destroy_domain.rb            |  2 +-
 lib/vagrant-libvirt/action/handle_box_image.rb          |  4 ++--
 lib/vagrant-libvirt/action/read_state.rb                |  1 -
 lib/vagrant-libvirt/action/start_domain.rb              |  6 +++++-
 .../action/{start_domain.rb => suspend.rb}              | 16 +++++++---------
 locales/en.yml                                          |  4 ++++
 7 files changed, 36 insertions(+), 14 deletions(-)

diff --git a/lib/vagrant-libvirt/action.rb b/lib/vagrant-libvirt/action.rb
index f1acc48..000f1ce 100644
--- a/lib/vagrant-libvirt/action.rb
+++ b/lib/vagrant-libvirt/action.rb
@@ -13,6 +13,12 @@ module VagrantPlugins
           b.use ConnectLibvirt
           b.use Call, IsCreated do |env, b2|
             if env[:result]
+              b2.use Call, ReadState do |env2,b3|
+                if env2[:machine_state_id] == 'paused'
+                  b3.use StartDomain
+                  return true
+                end
+              end
               b2.use MessageAlreadyCreated
               next
             end
@@ -70,7 +76,18 @@ module VagrantPlugins
         end
       end
 
+      # suspend
+      # save vm to file
+      def self.action_suspend
+        Vagrant::Action::Builder.new.tap do |b|
+          b.use ConfigValidate
+          b.use ConnectLibvirt
+          b.use Suspend
+        end
+      end
+
       action_root = Pathname.new(File.expand_path("../action", __FILE__))
+      autoload :Suspend, action_root.join("suspend")
       autoload :ConnectLibvirt, action_root.join("connect_libvirt")
       autoload :IsCreated, action_root.join("is_created")
       autoload :MessageAlreadyCreated, action_root.join("message_already_created")
diff --git a/lib/vagrant-libvirt/action/destroy_domain.rb b/lib/vagrant-libvirt/action/destroy_domain.rb
index e722d85..87f0396 100644
--- a/lib/vagrant-libvirt/action/destroy_domain.rb
+++ b/lib/vagrant-libvirt/action/destroy_domain.rb
@@ -12,7 +12,7 @@ module VagrantPlugins
 
         def call(env)
 
-          # Destroy the server and remove the tracking ID          
+          # Destroy the server and remove the tracking ID
           env[:ui].info(I18n.t("vagrant_libvirt.destroy_domain"))
 
           domain = env[:libvirt_compute].servers.get(env[:machine].id.to_s)
diff --git a/lib/vagrant-libvirt/action/handle_box_image.rb b/lib/vagrant-libvirt/action/handle_box_image.rb
index a329560..2b621d7 100644
--- a/lib/vagrant-libvirt/action/handle_box_image.rb
+++ b/lib/vagrant-libvirt/action/handle_box_image.rb
@@ -12,7 +12,7 @@ module VagrantPlugins
         def call(env)
 
           # Verify box metadata for mandatory values.
-          # 
+          #
           # Virtual size has to be set for allocating space in storage pool.
           box_virtual_size = env[:machine].box.metadata['virtual_size']
           if box_virtual_size == nil
@@ -103,7 +103,7 @@ module VagrantPlugins
                 sent = stream.send buff
                 progress += sent
                 yield progress
-              end 
+              end
             end
           rescue => e
             raise Errors::ImageUploadError,
diff --git a/lib/vagrant-libvirt/action/read_state.rb b/lib/vagrant-libvirt/action/read_state.rb
index f7543fa..0930205 100644
--- a/lib/vagrant-libvirt/action/read_state.rb
+++ b/lib/vagrant-libvirt/action/read_state.rb
@@ -13,7 +13,6 @@ module VagrantPlugins
 
         def call(env)
           env[:machine_state_id] = read_state(env[:libvirt_compute], env[:machine])
-
           @app.call(env)
         end
 
diff --git a/lib/vagrant-libvirt/action/start_domain.rb b/lib/vagrant-libvirt/action/start_domain.rb
index 5ea9332..1acfd2b 100644
--- a/lib/vagrant-libvirt/action/start_domain.rb
+++ b/lib/vagrant-libvirt/action/start_domain.rb
@@ -16,7 +16,11 @@ module VagrantPlugins
 
           domain = env[:libvirt_compute].servers.get(env[:machine].id.to_s)
           raise Errors::NoDomainError if domain == nil
-          domain.start
+          if domain.state.to_s == 'paused'
+            domain.resume
+          else
+            domain.start
+          end
 
           @app.call(env)
         end
diff --git a/lib/vagrant-libvirt/action/start_domain.rb b/lib/vagrant-libvirt/action/suspend.rb
similarity index 50%
copy from lib/vagrant-libvirt/action/start_domain.rb
copy to lib/vagrant-libvirt/action/suspend.rb
index 5ea9332..4499acf 100644
--- a/lib/vagrant-libvirt/action/start_domain.rb
+++ b/lib/vagrant-libvirt/action/suspend.rb
@@ -4,20 +4,18 @@ module VagrantPlugins
   module Libvirt
     module Action
 
-      # Just start the domain.
-      class StartDomain
+      class Suspend
         def initialize(app, env)
-          @logger = Log4r::Logger.new("vagrant_libvirt::action::start_domain")
+          @logger = Log4r::Logger.new("vagrant_libvirt::action::create_domain")
           @app = app
         end
 
+        # make pause
         def call(env)
-          env[:ui].info(I18n.t("vagrant_libvirt.starting_domain"))
-
-          domain = env[:libvirt_compute].servers.get(env[:machine].id.to_s)
-          raise Errors::NoDomainError if domain == nil
-          domain.start
-
+          vmid = env[:machine].id.to_s.chomp
+          domain = env[:libvirt_compute].servers.get(vmid)
+          domain.suspend
+          @logger.info("Machine #{vmid} is suspended ")
           @app.call(env)
         end
       end
diff --git a/locales/en.yml b/locales/en.yml
index 9e999cd..94636e5 100644
--- a/locales/en.yml
+++ b/locales/en.yml
@@ -91,6 +91,10 @@ en:
         Error while attaching new device to domain. %{error_message}
 
     states:
+      short_paused: |-
+        pause
+      short_shutoff: |-
+        shutoff
       short_not_created: |-
         not created
       long_not_created: |-

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/vagrant-libvirt.git



More information about the Pkg-ruby-extras-commits mailing list