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 > >
