On 25/09/12 19:21, David Lutterkort wrote:
> On Tue, 2012-09-25 at 12:21 +0300, [email protected] wrote:
>> From: marios <[email protected]>
>>
>> thanks to Jan Provaznik
>>
>> Signed-off-by: marios <[email protected]>
>> ---
>>  server/lib/deltacloud/drivers/openstack/openstack_driver.rb | 8 ++++++--
>>  1 file changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/server/lib/deltacloud/drivers/openstack/openstack_driver.rb 
>> b/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
>> index 7e11258..1d5b712 100644
>> --- a/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
>> +++ b/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
>> @@ -192,8 +192,12 @@ module Deltacloud
>>            os = new_client(credentials)
>>            safely do
>>              server = os.get_server(instance_id)
>> -            server.delete!
>> -            convert_from_server(server, os.connection.authuser)
>> +            deleted = server.delete!
>> +            instance = convert_from_server(server, os.connection.authuser)
>> +            if deleted
>> +              instance.state = "STOPPED"
>> +            end
>> +            instance
> 
> What happens when I get that instance again ? Will it mysteriously
> revert to RUNNING ? If so, NAK; we need a stable way to report the state
> from Openstack.

good point and in answer to your question - we don't know - it depends
how fast the provider 'deletes' - so, slightly safer version is at
tracker.deltacloud.org/set/76 - annotated here:


191         def destroy_instance(credentials, instance_id)$
192           os = new_client(credentials)$
193           server = instance = nil$
194           safely do$
195             server = os.get_server(instance_id)$
196             server.delete!$
197           end$
198           begin$
199             server.populate$

^^^refresh the server. this *might* throw a 404 if the provider is
*really* quick with the delete/network latency issues etc.

200             instance = convert_from_server(server,
os.connection.authuser)$

^^^if no exception, then 'best effort' - i.e. we refreshed and just try
to convert_from_server where we will grab the status as-is - it might be
STOPPED or still RUNNING

201           rescue OpenStack::Exception::ItemNotFound$
202           ensure$

^^^if we got exception, we know the server is gone...

203             instance = convert_from_server(server,
os.connection.authuser)$
204             instance.state = "STOPPED"$
205           end$
206           instance$
207         end$



marios







> 
> David
> 
> 

Reply via email to