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/09/25 11:21:20 UTC
[PATCH] Fix Openstack 'stop' behaviour - wasn't setting state correctly
From: marios <ma...@redhat.com>
thanks to Jan Provaznik
Signed-off-by: marios <ma...@redhat.com>
---
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
end
end
--
1.7.11.4
Re: [PATCH] Fix Openstack 'stop' behaviour - wasn't setting state
correctly
Posted by "marios@redhat.com" <ma...@redhat.com>.
On 25/09/12 19:21, David Lutterkort wrote:
> On Tue, 2012-09-25 at 12:21 +0300, marios@redhat.com wrote:
>> From: marios <ma...@redhat.com>
>>
>> thanks to Jan Provaznik
>>
>> Signed-off-by: marios <ma...@redhat.com>
>> ---
>> 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
>
>
Re: [PATCH] Fix Openstack 'stop' behaviour - wasn't setting state
correctly
Posted by David Lutterkort <lu...@redhat.com>.
On Tue, 2012-09-25 at 12:21 +0300, marios@redhat.com wrote:
> From: marios <ma...@redhat.com>
>
> thanks to Jan Provaznik
>
> Signed-off-by: marios <ma...@redhat.com>
> ---
> 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.
David
Re: [PATCH] Fix Openstack 'stop' behaviour - wasn't setting state correctly
Posted by Michal Fojtik <mf...@redhat.com>.
On Sep 25, 2012, at 11:21 AM, marios@redhat.com wrote:
ACK.
> From: marios <ma...@redhat.com>
>
> thanks to Jan Provaznik
>
> Signed-off-by: marios <ma...@redhat.com>
> ---
> 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
> end
> end
>
> --
> 1.7.11.4
>
Michal Fojtik
http://deltacloud.org
mfojtik@redhat.com