[
https://issues.apache.org/jira/browse/DTACLOUD-306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13440379#comment-13440379
]
Marios Andreou edited comment on DTACLOUD-306 at 8/24/12 3:36 AM:
------------------------------------------------------------------
Christian: thanks very much for your input! I was confused at first by your
explanation, because I know that the openstack rubygem we are using (and to
which deltacloud core developers are the main contributors) actually does
something like:
[in openstack-1.0.1/lib/compute/server.rb ]:
49 def populate(data=nil)$
50 path = "/servers/#{URI.encode(@id.to_s)}"$
51 if data.nil? then$
52 response = @compute.connection.req("GET", path)$
53 OpenStack::Exception.raise_exception(response) unless
response.code.match(/^20.$/)$
54 data = JSON.parse(response.body)["server"]$
55 end$
[...]
as you can see in line 50 above, the id passed from deltacloud is already
turned into a string. But you are right that the problem is in the 'to_i' from
the deltacloud driver... since for example the instance id
"2a308316-ee76-4df7-b050-c7de0d18b569" is converted to the integer 2 (the to_i
parses the string and extracts whatever leading numbers it can, and returns
just 0 if there are none). So the result was that the openstack rubygem was
making the call with an instance id of "2".
I'll remove the extraneous 'to_i' from the deltacloud driver and run the
openstack tests to make sure all is in order before sending the patch here.
I'm a little confused that Leander was able to get at specific images though if
the same applies to those.
[EDIT - its because the 'images' method in the deltacloud openstack driver
wasn't invoking 'to_i' for the image ID, but passing it 'as-is' as a string]
Thanks again for your input, marios
was (Author: marios):
Christian: thanks very much for your input! I was confused at first by your
explanation, because I know that the openstack rubygem we are using (and to
which deltacloud core developers are the main contributors) actually does
something like:
[in openstack-1.0.1/lib/compute/server.rb ]:
49 def populate(data=nil)$
50 path = "/servers/#{URI.encode(@id.to_s)}"$
51 if data.nil? then$
52 response = @compute.connection.req("GET", path)$
53 OpenStack::Exception.raise_exception(response) unless
response.code.match(/^20.$/)$
54 data = JSON.parse(response.body)["server"]$
55 end$
[...]
as you can see in line 50 above, the id passed from deltacloud is already
turned into a string. But you are right that the problem is in the 'to_i' from
the deltacloud driver... since for example the instance id
"2a308316-ee76-4df7-b050-c7de0d18b569" is converted to the integer 2 (the to_i
parses the string and extracts whatever leading numbers it can, and returns
just 0 if there are none). So the result was that the openstack rubygem was
making the call with an instance id of "2".
I'll remove the extraneous 'to_i' from the deltacloud driver and run the
openstack tests to make sure all is in order before sending the patch here.
I'm a little confused that Leander was able to get at specific images though if
the same applies to those.
Thanks again for your input, marios
> can't retrieve instance details with openstack driver
> -----------------------------------------------------
>
> Key: DTACLOUD-306
> URL: https://issues.apache.org/jira/browse/DTACLOUD-306
> Project: DeltaCloud
> Issue Type: Bug
> Reporter: Marios Andreou
> Assignee: Marios Andreou
> Attachments:
> 0001-Fix-for-DTACLOUD_306-Openstack-server-ID-should-be-p.patch
>
>
> NOTE: AS REPORTED BY Leander Bessa Beernaert to [email protected]
> mailing list:
> I've been tasked to look at Deltacloud, in particular the OpenStack driver.
> I have a small OpenStack setup running with OpenStack Essex on Ubuntu
> 12.04. Each time i try to see an instance in detail i get the following
> error:
> OpenStack::Exception::ItemNotFound:The resource could not be found.
> /var/lib/gems/1.9.1/gems/openstack-1.0.1/lib/openstack/connection.rb:436:in
> `raise_exception'
> /var/lib/gems/1.9.1/gems/openstack-1.0.1/lib/openstack/connection.rb:189:in
> `req'
> /var/lib/gems/1.9.1/gems/openstack-1.0.1/lib/openstack/compute/server.rb:52:in
> `populate'
> /var/lib/gems/1.9.1/gems/openstack-1.0.1/lib/openstack/compute/server.rb:37:in
> `initialize'
> /var/lib/gems/1.9.1/gems/openstack-1.0.1/lib/openstack/compute/connection.rb:28:in
> `new'
> /var/lib/gems/1.9.1/gems/openstack-1.0.1/lib/openstack/compute/connection.rb:28:in
> `get_server'
> /var/lib/gems/1.9.1/gems/deltacloud-core-1.0.1/lib/deltacloud/drivers/openstack/openstack_driver.rb:122:in
> `block in instances'
> /var/lib/gems/1.9.1/gems/deltacloud-core-1.0.1/lib/deltacloud/drivers/exceptions.rb:181:in
> `call'
> /var/lib/gems/1.9.1/gems/deltacloud-core-1.0.1/lib/deltacloud/drivers/exceptions.rb:181:in
> `safely'
> /var/lib/gems/1.9.1/gems/deltacloud-core-1.0.1/lib/deltacloud/drivers/openstack/openstack_driver.rb:120:in
> `instances'
> /var/lib/gems/1.9.1/gems/deltacloud-core-1.0.1/lib/deltacloud/drivers/base_driver.rb:217:in
> `instance'
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira