It is done using the HTTP Basic Auth http://www.opennebula.org/documentation:rel2.2:occidd#authentication_authorization
2011/3/22 João Soares <[email protected]>: > 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:[email protected]] > Sent: terça-feira, 22 de Março de 2011 11:21 > To: João Soares > Cc: [email protected] > 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 <[email protected]>: >> 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:[email protected]] >> Sent: terça-feira, 22 de Março de 2011 10:17 >> To: João Soares >> Cc: [email protected] >> Subject: Re: [one-users] OCCI Interface - HTTP commands >> >> Hi, >> >> Comments inline, >> >> 2011/3/21 João Soares <[email protected]>: >>> 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 >>> [email protected] >>> 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 | [email protected] >> >> > > > > -- > Daniel Molina, Cloud Technology Engineer/Researcher > Major Contributor > OpenNebula - The Open Source Toolkit for Cloud Computing > www.OpenNebula.org | [email protected] > > -- Daniel Molina, Cloud Technology Engineer/Researcher Major Contributor OpenNebula - The Open Source Toolkit for Cloud Computing www.OpenNebula.org | [email protected] _______________________________________________ Users mailing list [email protected] http://lists.opennebula.org/listinfo.cgi/users-opennebula.org
