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