From: marios <[email protected]>
Signed-off-by: marios <[email protected]> --- 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
