mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[rackspace] wrapping test blocks around test helpers to prevent unexpected shindo exceptions
This commit is contained in:
parent
709e5ecd5f
commit
68113cb3ee
1 changed files with 31 additions and 25 deletions
|
@ -42,24 +42,28 @@ module Shindo
|
|||
|
||||
def wait_for_server_deletion(server)
|
||||
return if Fog.mocking?
|
||||
begin
|
||||
@instance.wait_for { state = 'DELETED' }
|
||||
rescue Fog::Compute::RackspaceV2::NotFound => e
|
||||
# do nothing
|
||||
tests('wait_for_server_deletion') do
|
||||
begin
|
||||
server.wait_for { state = 'DELETED' }
|
||||
rescue Fog::Compute::RackspaceV2::NotFound => e
|
||||
# do nothing
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def wait_for_server_state(service, server_id, state, error_states=nil)
|
||||
current_state = nil
|
||||
until current_state == state
|
||||
current_state = service.get_server(server_id).body['server']['status']
|
||||
if error_states
|
||||
error_states = Array(error_states)
|
||||
raise "ERROR! Server should have transitioned to '#{state}' not '#{current_state}'" if error_states.include?(current_state)
|
||||
tests("wait_for_server_state('#{state}')") do
|
||||
current_state = nil
|
||||
until current_state == state
|
||||
current_state = service.get_server(server_id).body['server']['status']
|
||||
if error_states
|
||||
error_states = Array(error_states)
|
||||
raise "ERROR! Server should have transitioned to '#{state}' not '#{current_state}'" if error_states.include?(current_state)
|
||||
end
|
||||
sleep 10 unless Fog.mocking?
|
||||
end
|
||||
sleep 10 unless Fog.mocking?
|
||||
sleep 30 unless Fog.mocking?
|
||||
end
|
||||
sleep 30 unless Fog.mocking?
|
||||
end
|
||||
|
||||
def rackspace_test_image_id(service)
|
||||
|
@ -74,21 +78,23 @@ module Shindo
|
|||
# After a server has been successfully deleted they are still being reported as attached to a cloud network
|
||||
# causing delete calls to fail. This method attempts to address that.
|
||||
def delete_test_network(network)
|
||||
return false if Fog.mocking? || network.nil?
|
||||
attempt = 0
|
||||
begin
|
||||
network.destroy
|
||||
rescue Fog::Compute::RackspaceV2::ServiceError => e
|
||||
if attempt == 3
|
||||
Fog::Logger.warning "Unable to delete #{network.label}"
|
||||
return false
|
||||
tests('delete_test_network') do
|
||||
return false if Fog.mocking? || network.nil?
|
||||
attempt = 0
|
||||
begin
|
||||
network.destroy
|
||||
rescue Fog::Compute::RackspaceV2::ServiceError => e
|
||||
if attempt == 3
|
||||
Fog::Logger.warning "Unable to delete #{network.label}"
|
||||
return false
|
||||
end
|
||||
Fog::Logger.warning "Network #{network.label} Delete Fail Attempt #{attempt}- #{e.inspect}"
|
||||
attempt += 1
|
||||
sleep 60
|
||||
retry
|
||||
end
|
||||
Fog::Logger.warning "Network #{network.label} Delete Fail Attempt #{attempt}- #{e.inspect}"
|
||||
attempt += 1
|
||||
sleep 60
|
||||
retry
|
||||
return true
|
||||
end
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Reference in a new issue