[one-users] OCCI: multipart POST request with java-client
    Strutz, Marco 
    marco.strutz at fokus.fraunhofer.de
       
    Mon Aug 23 04:28:47 PDT 2010
    
    
  
After further investigation I could not trace back the error with the
OCCI interface.
Has anybody successfully uploaded a multipart-POST file to the OCCI
interface with an http-client (except the ruby-client)? That would
really help me.
Thanks
Marco
-----Original Message-----
From: users-bounces at lists.opennebula.org
[mailto:users-bounces at lists.opennebula.org] On Behalf Of Strutz, Marco
Sent: Wednesday, August 11, 2010 3:20 PM
To: users at lists.opennebula.org
Subject: [one-users] OCCI: multipart POST request with java-client
Hi everyone.
 
I want to use the opennebula occi interface (.../storage) to upload
images to the repository (/srv/cloud/images).
But instead of using the ruby-occi-client (occi-storage create xmlfile)
I want to do test it with a  java client.
 
The multipart-upload seems to work but as response I get the following
error message (short version, long version please find attached
[occiUploadErrorMessage.html]):
 
"RuntimeError at /storage
Hash is not a valid input stream. It must walk like either a String, an
IO, or a Source.
    * file: source.rb
    * location: create_from
    * line: 21"
 
 
Seems to be a parsing problem with the xml configuration of the request?
But if I use the same xml-configuration with "occi-storage create
xmlfile" then all works fine.
 
Any suggestions? Would be really appreciate it.
 
 
 
Thanks
Marco
 
 
 
-----------------------
 
the config:
- OpenNebula v1.4
- as java html client I'm using "apache.commons.httpclient" (v3.1).
- occiserver endpoint: http://occi.opennebula.cloud:4567/storage
 
 
the java html multipart occi client
(...)
//prepare xml configuration
file = new File("/tmp/ttyLinux");
xmlConfiguration = "<DISK>      <NAME>testfile_ttyLinux</NAME>
<URL>file:////tmp/ttyLinux.img</URL></DISK>";
image = new FilePart("file", file);
configurationPart = new StringPart("occixml", xmlConfiguration);
 
//create multiparts
Part[] parts =     { image, configurationPart };
filePost = new PostMethod("http://occi.opennebula.cloud:4567/storage";
filePost.setRequestEntity(new MultipartRequestEntity(multiParts,
filePost.getParams()));
 
//load client
client = new HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000)
;
 
//set credentials
client.getParams().setAuthenticationPreemptive(true); //enable
Preemptive Authentication
Credentials defaultcreds = new UsernamePasswordCredentials(authUserName,
authPassword);
AuthScope authScope = new AuthScope(uri.getHost(), uri.getPort(),
AuthScope.ANY_REALM);
client.getState().setCredentials(authScope, defaultcreds);
 
//do post request
client.executeMethod(filePost);
response = filePost.getResponseBodyAsString();
(...)
    
    
More information about the Users
mailing list