[one-users] OCCI Interface - HTTP commands
João Soares
joaosoares at ua.pt
Tue Mar 22 04:39:48 PDT 2011
Both the OCCI client and curl seem to work fine...
<COMPUTE_COLLECTION>
<COMPUTE href='http://ccmanager.dyndns-work.com:4567/compute/129'
name='MyCompute'/>
</COMPUTE_COLLECTION>
And in fact the problem must or should be of authentication, or at least,
there should be, since I am not trying to get the information from the
"user" that created the VM. How is the authentication performed in the HTTP
commands?
-----Original Message-----
From: Daniel Molina [mailto:dmolina at opennebula.org]
Sent: terça-feira, 22 de Março de 2011 11:21
To: João Soares
Cc: users at lists.opennebula.org
Subject: Re: [one-users] OCCI Interface - HTTP commands
I think the problem is the authentication. Would you mind to try using
the OCCI client provided with OpenNebula or curl?
$ occi-compute --url http://localhost:4567 --username <user>
--password <pass> list
or
$ curl -u <user>:<sha1_pass> http://localhost:4567/compute
You can get the sha1_pass using oneuser list.
2011/3/22 João Soares <joaosoares at ua.pt>:
> Hi Daniel,
>
> The output of the log file is the following:
>
> NoMethodError - private method `split' called for nil:NilClass:
> /var/lib/gems/1.8/gems/rack-1.2.2/lib/rack/auth/abstract/request.rb:14:in
> `parts'
> /var/lib/gems/1.8/gems/rack-1.2.2/lib/rack/auth/abstract/request.rb:22:in
> `params'
> /var/lib/gems/1.8/gems/rack-1.2.2/lib/rack/auth/basic.rb:48:in
> `credentials'
> /usr/lib/one/ruby/cloud/occi/OCCIServer.rb:66:in `get_client'
> /usr/lib/one/ruby/cloud/occi/OCCIServer.rb:92:in `get_computes'
> /usr/lib/one/ruby/cloud/occi/occi-server.rb:101:in `GET /compute'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:1125:in `call'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:1125:in
`compile!'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:709:in
> `instance_eval'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:709:in
> `route_eval'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:693:in `route!'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:741:in
> `process_route'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:738:in `catch'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:738:in
> `process_route'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:692:in `route!'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:691:in `each'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:691:in `route!'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:826:in
`dispatch!'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:619:in `call!'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:791:in
> `instance_eval'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:791:in `invoke'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:791:in `catch'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:791:in `invoke'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:619:in `call!'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:604:in `call'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/showexceptions.rb:21:in
> `call'
> /var/lib/gems/1.8/gems/rack-1.2.2/lib/rack/methodoverride.rb:24:in `call'
> /var/lib/gems/1.8/gems/rack-1.2.2/lib/rack/commonlogger.rb:18:in `call'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:1237:in `call'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:1263:in
> `synchronize'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:1237:in `call'
> /var/lib/gems/1.8/gems/rack-1.2.2/lib/rack/content_length.rb:13:in `call'
> /var/lib/gems/1.8/gems/rack-1.2.2/lib/rack/chunked.rb:15:in `call'
> /var/lib/gems/1.8/gems/thin-1.2.8/lib/thin/connection.rb:84:in
> `pre_process'
> /var/lib/gems/1.8/gems/thin-1.2.8/lib/thin/connection.rb:82:in `catch'
> /var/lib/gems/1.8/gems/thin-1.2.8/lib/thin/connection.rb:82:in
> `pre_process'
> /var/lib/gems/1.8/gems/thin-1.2.8/lib/thin/connection.rb:57:in `process'
> /var/lib/gems/1.8/gems/thin-1.2.8/lib/thin/connection.rb:42:in
> `receive_data'
> /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in
> `run_machine'
> /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in
> `run'
> /var/lib/gems/1.8/gems/thin-1.2.8/lib/thin/backends/base.rb:61:in `start'
> /var/lib/gems/1.8/gems/thin-1.2.8/lib/thin/server.rb:159:in `start'
> /var/lib/gems/1.8/gems/rack-1.2.2/lib/rack/handler/thin.rb:14:in `run'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/base.rb:1208:in `run!'
> /var/lib/gems/1.8/gems/sinatra-1.2.0/lib/sinatra/main.rb:25
> /usr/lib/one/ruby/cloud/occi/occi-server.rb:159
> 127.0.0.1 - - [22/Mar/2011 10:46:24] "GET /compute HTTP/1.1" 500 122391
> 0.1457
>
>
___________________________________________________________________________
>
> Regarding my VM, this is the output...
>
> <VM>
> <ID>
> 129
> </ID>
> <UID>
> 5
> </UID>
> <NAME>
> MyCompute
> </NAME>
> <LAST_POLL>
> 1300790571
> </LAST_POLL>
> <STATE>
> 3
> </STATE>
> <LCM_STATE>
> 3
> </LCM_STATE>
> <STIME>
> 1300717277
> </STIME>
> <ETIME>
> 0
> </ETIME>
> <DEPLOY_ID>
> one-129
> </DEPLOY_ID>
> <MEMORY>
> 65536
> </MEMORY>
> <CPU>
> 1
> </CPU>
> <NET_TX>
> 0
> </NET_TX>
> <NET_RX>
> 7
> </NET_RX>
> <LAST_SEQ>
> 0
> </LAST_SEQ>
> <TEMPLATE>
> <CONTEXT>
> <DATA>
> <![CDATA[DATA1]]>
> </DATA>
> <HOSTNAME>
> <![CDATA[MAINHOST]]>
> </HOSTNAME>
> <TARGET>
> <![CDATA[hdb]]>
> </TARGET>
> </CONTEXT>
> <CPU>
> <![CDATA[0.5]]>
> </CPU>
> <DISK>
> <CLONE>
> <![CDATA[YES]]>
> </CLONE>
> <DISK_ID>
> <![CDATA[0]]>
> </DISK_ID>
> <IMAGE>
> <![CDATA[FEDORA DESKTOP]]>
> </IMAGE>
> <IMAGE_ID>
> <![CDATA[2]]>
> </IMAGE_ID>
> <READONLY>
> <![CDATA[NO]]>
> </READONLY>
> <SAVE>
> <![CDATA[NO]]>
> </SAVE>
> <SOURCE>
>
> <![CDATA[/var/lib/one//images/68a84d5700b0dfe79e90717a9de49a926f405a30]]>
> </SOURCE>
> <TARGET>
> <![CDATA[hda]]>
> </TARGET>
> <TYPE>
> <![CDATA[DISK]]>
> </TYPE>
> </DISK>
> <INSTANCE_TYPE>
> <![CDATA[small]]>
> </INSTANCE_TYPE>
> <MEMORY>
> <![CDATA[64]]>
> </MEMORY>
> <NAME>
> <![CDATA[MyCompute]]>
> </NAME>
> <NIC>
> <BRIDGE>
> <![CDATA[eth0]]>
> </BRIDGE>
> <IP>
> <![CDATA[192.168.1.12]]>
> </IP>
> <MAC>
> <![CDATA[02:00:c0:a8:01:0c]]>
> </MAC>
> <NETWORK>
> <![CDATA[MyServiceNetwork]]>
> </NETWORK>
> <NETWORK_ID>
> <![CDATA[5]]>
> </NETWORK_ID>
> </NIC>
> <OS>
> <INITRD>
> <![CDATA[/boot/initrd.img-2.6.24-28-xen]]>
> </INITRD>
> <KERNEL>
> <![CDATA[/boot/vmlinuz-2.6.24-28-xen]]>
> </KERNEL>
> </OS>
> <VMID>
> <![CDATA[129]]>
> </VMID>
> </TEMPLATE>
> <HISTORY>
> <SEQ>
> 0
> </SEQ>
> <HOSTNAME>
> cluster01.dyndns-work.com
> </HOSTNAME>
> <HID>
> 32
> </HID>
> <STIME>
> 1300717278
> </STIME>
> <ETIME>
> 0
> </ETIME>
> <PSTIME>
> 1300717278
> </PSTIME>
> <PETIME>
> 1300717280
> </PETIME>
> <RSTIME>
> 1300717280
> </RSTIME>
> <RETIME>
> 0
> </RETIME>
> <ESTIME>
> 0
> </ESTIME>
> <EETIME>
> 0
> </EETIME>
> <REASON>
> 0
> </REASON>
> </HISTORY>
> </VM>
>
>
> _____________________________________________________________________
>
> If I do "GET /compute" I get the same output as "GET /compute/".
>
> Thanks,
>
> João
>
> -----Original Message-----
> From: Daniel Molina [mailto:dmolina at opennebula.org]
> Sent: terça-feira, 22 de Março de 2011 10:17
> To: João Soares
> Cc: users at lists.opennebula.org
> Subject: Re: [one-users] OCCI Interface - HTTP commands
>
> Hi,
>
> Comments inline,
>
> 2011/3/21 João Soares <joaosoares at ua.pt>:
>> Hi,
>>
>>
>>
>> I am trying to use the OCCI interface, I am able to launch VMs through
the
>> occi-compute command, but I am having some issues when trying to use
for
>> example the GET request:
>>
>> I create a VM by using the occi-compute which returns me the ID 129.
Then:
>>
>>
>>
>> telnet localhost 4567
>>
>>
>>
>> GET /compute/129 HTTP/1.1
>>
>>
>>
>> Trying ::1...
>> Trying 127.0.0.1...
>> Connected to localhost.
>> Escape character is '^]'.
>> GET /compute/129 HTTP/1.1
>>
>> HTTP/1.1 500 Internal Server Error
>> Content-Type: text/html
>> Content-Length: 122449
>> Connection: keep-alive
>> Server: thin 1.2.8 codename Black Keys
>>
>> <!DOCTYPE html>
>> <html>
>> <head>
>> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
>> <title>NoMethodError at /compute/129</title>
>>
>> <script type="text/javascript">
>> //<!--
>> function toggle(id) {
>> var pre = document.getElementById("pre-" + id);
>> var post = document.getElementById("post-" + id);
>> var context = document.getElementById("context-" + id);
>>
>> if (pre.style.display == 'block') {
>> pre.style.display = 'none';
>> post.style.display = 'none';
>> context.style.background = "none";
>> } else {
>> pre.style.display = 'block';
>> post.style.display = 'block';
>> context.style.background = "#fffed9";
>> }
>> }
>>
>> function toggleBacktrace(){
>>
>> ................................................... (continues)
>>
>> <td>rack.version</td>
>> <td class="code"><div>[1, 0]</div></td>
>> </tr>
>>
>> <tr>
>> <td>sinatra.error</td>
>> <td class="code"><div>#<NoMethodError: private method
>> `split' called for nil:NilClass></div></td>
>> </tr>
>>
>> </table>
>> <div class="clear"></div>
>> </div> <!-- /RACK ENV -->
>>
>> <p id="explanation">You're seeing this error because you have
>> enabled the <code>show_exceptions</code> setting.</p>
>> </div> <!-- /WRAP -->
>> </body>
>> </html>
>>
>
> Would you mind to send the $ONE_LOCATION/var/occi-server.log file and
> the output of the following command, `onevm show 129 -x`? What
> OpenNebula version are you using?
>
>>
>> On the other hand, if I try:
>>
>>
>> GET /compute/ HTTP/1.1
>>
>> HTTP/1.1 404 Not Found
>> X-Cascade: pass
>> Content-Type: text/html;charset=utf-8
>> Content-Length: 417
>> Connection: keep-alive
>> Server: thin 1.2.8 codename Black Keys
>>
>> <!DOCTYPE html>
>> <html>
>> <head>
>> <style type="text/css">
>> body { text-align:center;font-family:helvetica,arial;font-size:22px;
>> color:#888;margin:20px}
>> #c {margin:0 auto;width:500px;text-align:left}
>> </style>
>> </head>
>> <body>
>> <h2>Sinatra doesn't know this ditty.</h2>
>> <img src='/__sinatra__/404.png'>
>> <div id="c">
>> Try this:
>> <pre>get '/compute/' do
>> "Hello World"
>> end</pre>
>> </div>
>> </body>
>> </html>
>>
>>
>
> Try sending the following request "GET /compute" instead of "GET
/compute/"?
>
>>
>> I am not fully aware how the interface works so I might be making a silly
>> mistake
any help?
>>
>>
>>
>> Thanks in advanced,
>>
>>
>>
>> João
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opennebula.org
>> http://lists.opennebula.org/listinfo.cgi/users-opennebula.org
>>
>>
>
> Regards
>
> --
> Daniel Molina, Cloud Technology Engineer/Researcher
> Major Contributor
> OpenNebula - The Open Source Toolkit for Cloud Computing
> www.OpenNebula.org | dmolina at opennebula.org
>
>
--
Daniel Molina, Cloud Technology Engineer/Researcher
Major Contributor
OpenNebula - The Open Source Toolkit for Cloud Computing
www.OpenNebula.org | dmolina at opennebula.org
More information about the Users
mailing list