You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by ma...@redhat.com on 2012/12/19 18:27:13 UTC

[PATCH] Adds error state to state machine model (+openstack)

From: marios <ma...@redhat.com>


Signed-off-by: marios <ma...@redhat.com>
---
 server/lib/deltacloud/drivers/base_driver.rb                | 2 +-
 server/lib/deltacloud/drivers/openstack/openstack_driver.rb | 3 ++-
 server/lib/deltacloud/models/state_machine.rb               | 8 ++++++++
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/server/lib/deltacloud/drivers/base_driver.rb b/server/lib/deltacloud/drivers/base_driver.rb
index c63f94f..96a1b6c 100644
--- a/server/lib/deltacloud/drivers/base_driver.rb
+++ b/server/lib/deltacloud/drivers/base_driver.rb
@@ -26,7 +26,7 @@ module Deltacloud
     include Exceptions
 
     STATE_MACHINE_OPTS = {
-      :all_states => [:start, :pending, :running, :stopping, :stopped, :finish],
+      :all_states => [:start, :pending, :running, :stopping, :stopped, :finish, :error],
       :all_actions => [:create, :reboot, :stop, :start, :destroy]
     } unless defined?(STATE_MACHINE_OPTS)
 
diff --git a/server/lib/deltacloud/drivers/openstack/openstack_driver.rb b/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
index ee9957a..6d0ae9c 100644
--- a/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
+++ b/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
@@ -40,6 +40,7 @@ module Deltacloud
           running.to( :stopping )       .on( :stop )
           stopping.to( :stopped )       .automatically
           stopped.to( :finish )         .automatically
+          error.from(:running, :pending, :stopping)
         end
 
         define_hardware_profile('default')
@@ -541,7 +542,7 @@ private
             when /build.*$/
               "PENDING"
             when /error.*/
-              "STOPPED"
+              "ERROR"
             when /active/
               "RUNNING"
             else
diff --git a/server/lib/deltacloud/models/state_machine.rb b/server/lib/deltacloud/models/state_machine.rb
index cbdaf4a..c03b6a4 100644
--- a/server/lib/deltacloud/models/state_machine.rb
+++ b/server/lib/deltacloud/models/state_machine.rb
@@ -81,6 +81,14 @@ module Deltacloud
         transition
       end
 
+      def from(*states)
+        states.each do |s|
+          initial = @machine.state(s)
+          trans = initial.to self.name
+          trans.automatically
+        end
+      end
+
     end
 
     class Transition
-- 
1.7.11.7