<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.E-MailFormatvorlage17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-US>Hi everyone.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I want to use the opennebula occi interface (.../storage) to upload images to the repository (/srv/cloud/images).<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>But instead of using the ruby-occi-client (occi-storage create xmlfile) I want to do test it with a  java client.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>The multipart-upload seems to work but as response I get the following error message (short version, long version please find attached [occiUploadErrorMessage.html]):<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>"RuntimeError at /storage<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Hash is not a valid input stream. It must walk like either a String, an IO, or a Source.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    * file: source.rb<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    * location: create_from<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    * line: 21"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Seems to be a parsing problem with the xml configuration of the request?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>But if I use the same xml-configuration with "occi-storage create xmlfile" then all works fine.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Any suggestions? Would be really appreciate it.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Thanks<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Marco<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>-----------------------<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>the config:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>- OpenNebula v1.4<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>- as java html client I'm using "apache.commons.httpclient" (v3.1).<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>- occiserver endpoint: http://occi.opennebula.cloud:4567/storage<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>the java html multipart occi client<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>(...)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>//prepare xml configuration<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>file = new File("/tmp/ttyLinux");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>xmlConfiguration = "<DISK>      <NAME>testfile_ttyLinux</NAME>        <URL>file:////tmp/ttyLinux.img</URL></DISK>";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>image = new FilePart("file", file);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>configurationPart = new StringPart("occixml", xmlConfiguration);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>//create multiparts<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Part[] parts =     { image, configurationPart };<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>filePost = new PostMethod(“http://occi.opennebula.cloud:4567/storage”;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>filePost.setRequestEntity(new MultipartRequestEntity(multiParts, filePost.getParams()));<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>//load client<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>client = new HttpClient();<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>//set credentials<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>client.getParams().setAuthenticationPreemptive(true); //enable Preemptive Authentication<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Credentials defaultcreds = new UsernamePasswordCredentials(authUserName, authPassword);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>AuthScope authScope = new AuthScope(uri.getHost(), uri.getPort(), AuthScope.ANY_REALM);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>client.getState().setCredentials(authScope, defaultcreds);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>//do post request<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>client.executeMethod(filePost);<o:p></o:p></span></p><p class=MsoNormal>response = filePost.getResponseBodyAsString();<o:p></o:p></p><p class=MsoNormal>(...)<o:p></o:p></p></div></body></html>