<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Thu, Sep 14, 2017 at 5:45 PM Matthias Leopold &lt;<a href="mailto:matthias.leopold@meduniwien.ac.at">matthias.leopold@meduniwien.ac.at</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Daniel and other friendly contributors,<br>
<br>
finally i sorted out how to set provisioned_size/initial_size correctly<br>
in upload_disk.py and my error is gone. It wasn&#39;t so easy, but maybe i<br>
took an awkard route when starting with a preallocated qcow2 image. In<br>
this special case you have to set provisioned_size to st_size, whereas<br>
with sparse images provisioned_size is &quot;virtual size&quot; from &quot;qemu-img<br>
info&quot;. This may seem obvious to others, i took the hard route.<br></blockquote><div><br></div><div>Just to make this more clear - when you create a disk, you want to use the</div><div>virtual size for the disk size - this is the size that the guest will see.</div><div><br></div><div>For example:</div><div><br></div><div><div>$ qemu-img create -f qcow2 test.qcow2 20g</div><div>Formatting &#39;test.qcow2&#39;, fmt=qcow2 size=21474836480 encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16</div><div><br></div><div>$ ls -lh test.qcow2 </div><div>-rw-r--r--. 1 nsoffer nsoffer 193K Sep 15 18:15 test.qcow2</div></div><div><br></div><div>The disk size should be exactly 20g.</div><div><br></div><div>The initial size of the disk depends on the actual file size, in this example,</div><div>anything bigger than 193k will be fine.</div><div><br></div><div>When using raw format, the disk size is always the file size.</div><div><br></div><div>When using preallocation, the actual file size may be more than the</div><div>virtual size, since the qcow file format needs extra space for image</div><div>metadata.</div><div><br></div><div><div>$ qemu-img create -f qcow2 test.qcow2 -o preallocation=full 1g</div><div>Formatting &#39;test.qcow2&#39;, fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 preallocation=full lazy_refcounts=off refcount_bits=16</div><div><br></div><div>$ ls -lht test.qcow2 </div><div>-rw-r--r--. 1 nsoffer nsoffer 1.1G Sep 15 18:20 test.qcow2</div></div><div><br></div><div><div>$ python -c &#39;import os; print os.path.getsize(&quot;test.qcow2&quot;)&#39;</div><div>1074135040</div></div><div><br></div><div>In this case the initial size must be 1074135040. </div><div><br></div><div>I guess the example upload code should be improved so it works</div><div>out of the box for preallocated images.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
My approach stems from my desire to repeat the exact example in<br>
upload_disk.py (which uses a qcow image) and my actual use case, which<br>
is uploading a rather large image converted from vmdk (i only tested<br>
this with raw format yet), so i wanted to have some &quot;real large&quot; data to<br>
upload.<br></blockquote><div><br></div><div>I don&#39;t know any good reason to do full or falloc preallocation since this</div><div>means preallocating the entire image - in this case you should use raw</div><div>image and get better performance.</div><div><br></div><div>To simulate upload of a real image you can upload some dvd iso, or </div><div>create raw disk with some data and convert the disk to qcow2:</div><div><br></div><div>$ time dd if=/dev/zero bs=8M count=128 | tr &quot;\0&quot; &quot;\1&quot; &gt; test.raw<br></div><div><br></div><div>$ qemu-img convert -f raw -O qcow2 test.raw test.qcow2</div><div><br></div><div>$ qemu-img info test.qcow2 </div><div>image: test.qcow2</div><div>file format: qcow2</div><div>virtual size: 1.0G (1073741824 bytes)</div><div>disk size: 1.0G</div><div>cluster_size: 65536</div><div>Format specific information:</div><div>    compat: 1.1</div><div>    lazy refcounts: false</div><div>    refcount bits: 16</div><div>    corrupt: false</div><div><br></div><div>Nir</div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
@nsoffer:<br>
I&#39;ll open a bug for better ovirt-imageio-daemon as soon as i can.<br>
<br>
thanks a lot for help<br>
matthias<br>
<br>
Am 2017-09-13 um 16:49 schrieb Daniel Erez:<br>
&gt; Hi Matthias,<br>
&gt;<br>
&gt; The 403 response from the daemon means the ticket can&#39;t be authenticated<br>
&gt; (for some reason). I assume that the issue here is the initial size of<br>
&gt; the disk.<br>
&gt; When uploading/downloading a qcow image, you should specify the apparent<br>
&gt; size of the file (see &#39;st_size&#39; in [1]). You can get it simply by &#39;ls<br>
&gt; -l&#39; [2] (which is<br>
&gt; a different value from &#39;disk size&#39; of qemu-img info [3]).<br>
&gt; btw, why are you creating a preallocated qcow disk? For what use-case?<br>
&gt;<br>
&gt; [1] <a href="https://linux.die.net/man/2/stat" rel="noreferrer" target="_blank">https://linux.die.net/man/2/stat</a><br>
&gt;<br>
&gt; [2] $ ls -l test.qcow2<br>
&gt; -rw-r--r--. 1 user user 1074135040 Sep 13 16:50 test.qcow2<br>
&gt;<br>
&gt; [3]<br>
&gt; $ qemu-img create -f qcow2 -o preallocation=full test.qcow2 1g<br>
&gt; $ qemu-img info test.qcow2<br>
&gt; image: test.qcow2<br>
&gt; file format: qcow2<br>
&gt; virtual size: 1.0G (1073741824 bytes)<br>
&gt; disk size: 1.0G<br>
&gt; cluster_size: 65536<br>
&gt; Format specific information:<br>
&gt;      compat: 1.1<br>
&gt;      lazy refcounts: false<br>
&gt;      refcount bits: 16<br>
&gt;      corrupt: false<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Wed, Sep 13, 2017 at 5:03 PM Matthias Leopold<br>
&gt; &lt;<a href="mailto:matthias.leopold@meduniwien.ac.at" target="_blank">matthias.leopold@meduniwien.ac.at</a><br>
&gt; &lt;mailto:<a href="mailto:matthias.leopold@meduniwien.ac.at" target="_blank">matthias.leopold@meduniwien.ac.at</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt;     i tried it again twice:<br>
&gt;<br>
&gt;     when using upload_disk.py from the ovirt engine host itself the disk<br>
&gt;     upload succeeds (despite an &quot;503 Service Unavailable Completed 100%&quot; in<br>
&gt;     script output in the end)<br>
&gt;<br>
&gt;     another try was from an ovirt-sdk installation on my ubuntu desktop<br>
&gt;     itself (yesterday i tried it from a centos VM on my desktop machine).<br>
&gt;     this failed again, this time with &quot;socket.error: [Errno 32] Broken pipe&quot;<br>
&gt;     after reaching &quot;200 OK Completed 100%&quot;. in imageio-proxy log i have<br>
&gt;     again the 403 error in this moment<br>
&gt;<br>
&gt;     what&#39;s the difference between accessing the API from the engine host and<br>
&gt;     from &quot;outside&quot; in this case?<br>
&gt;<br>
&gt;     thx<br>
&gt;     matthias<br>
&gt;<br>
&gt;     Am 2017-09-12 um 16:42 schrieb Matthias Leopold:<br>
&gt;      &gt; Thanks, i tried this script and it _almost_ worked ;-)<br>
&gt;      &gt;<br>
&gt;      &gt; i uploaded two images i created with<br>
&gt;      &gt; qemu-img create -f qcow2 -o preallocation=full<br>
&gt;      &gt; and<br>
&gt;      &gt; qemu-img create -f qcow2 -o preallocation=falloc<br>
&gt;      &gt;<br>
&gt;      &gt; for initial_size and provisioned_size i took the value reported by<br>
&gt;      &gt; &quot;qemu-img info&quot; in &quot;virtual size&quot; (same as &quot;disk size&quot; in this case)<br>
&gt;      &gt;<br>
&gt;      &gt; the upload goes to 100% and then fails with<br>
&gt;      &gt;<br>
&gt;      &gt; 200 OK Completed 100%<br>
&gt;      &gt; Traceback (most recent call last):<br>
&gt;      &gt;    File &quot;./upload_disk.py&quot;, line 157, in &lt;module&gt;<br>
&gt;      &gt;      headers=upload_headers,<br>
&gt;      &gt;    File &quot;/usr/lib64/python2.7/httplib.py&quot;, line 1017, in request<br>
&gt;      &gt;      self._send_request(method, url, body, headers)<br>
&gt;      &gt;    File &quot;/usr/lib64/python2.7/httplib.py&quot;, line 1051, in<br>
&gt;     _send_request<br>
&gt;      &gt;      self.endheaders(body)<br>
&gt;      &gt;    File &quot;/usr/lib64/python2.7/httplib.py&quot;, line 1013, in endheaders<br>
&gt;      &gt;      self._send_output(message_body)<br>
&gt;      &gt;    File &quot;/usr/lib64/python2.7/httplib.py&quot;, line 864, in _send_output<br>
&gt;      &gt;      self.send(msg)<br>
&gt;      &gt;    File &quot;/usr/lib64/python2.7/httplib.py&quot;, line 840, in send<br>
&gt;      &gt;      self.sock.sendall(data)<br>
&gt;      &gt;    File &quot;/usr/lib64/python2.7/ssl.py&quot;, line 746, in sendall<br>
&gt;      &gt;      v = self.send(data[count:])<br>
&gt;      &gt;    File &quot;/usr/lib64/python2.7/ssl.py&quot;, line 712, in send<br>
&gt;      &gt;      v = self._sslobj.write(data)<br>
&gt;      &gt; socket.error: [Errno 104] Connection reset by peer<br>
&gt;      &gt;<br>
&gt;      &gt; in web GUI the disk stays in Status: &quot;Transferring via API&quot;<br>
&gt;      &gt; it can only be removed when manually unlocking it (unlock_entity.sh)<br>
&gt;      &gt;<br>
&gt;      &gt; engine.log tells nothing interesting<br>
&gt;      &gt;<br>
&gt;      &gt; i attached the last lines of ovirt-imageio-proxy/image-proxy.log and<br>
&gt;      &gt; ovirt-imageio-daemon/daemon.log (from the executing node)<br>
&gt;      &gt;<br>
&gt;      &gt; the HTTP status 403 in ovirt-imageio-daemon/daemon.log doesn&#39;t<br>
&gt;     look too<br>
&gt;      &gt; nice to me<br>
&gt;      &gt;<br>
&gt;      &gt; can you explain what happens?<br>
&gt;      &gt;<br>
&gt;      &gt; ovirt engine is 4.1.5<br>
&gt;      &gt; ovirt node is 4.1.3 (is that a problem?)<br>
&gt;      &gt;<br>
&gt;      &gt; thx<br>
&gt;      &gt; matthias<br>
&gt;      &gt;<br>
&gt;      &gt;<br>
&gt;      &gt;<br>
&gt;      &gt; Am 2017-09-12 um 13:15 schrieb Fred Rolland:<br>
&gt;      &gt;&gt; Hi,<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt; You can check this example:<br>
&gt;      &gt;&gt;<br>
&gt;     <a href="https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/examples/upload_disk.py" rel="noreferrer" target="_blank">https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/examples/upload_disk.py</a><br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt; Regards,<br>
&gt;      &gt;&gt; Fred<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt; On Tue, Sep 12, 2017 at 11:49 AM, Matthias Leopold<br>
&gt;      &gt;&gt; &lt;<a href="mailto:matthias.leopold@meduniwien.ac.at" target="_blank">matthias.leopold@meduniwien.ac.at</a><br>
&gt;     &lt;mailto:<a href="mailto:matthias.leopold@meduniwien.ac.at" target="_blank">matthias.leopold@meduniwien.ac.at</a>&gt;<br>
&gt;      &gt;&gt; &lt;mailto:<a href="mailto:matthias.leopold@meduniwien.ac.at" target="_blank">matthias.leopold@meduniwien.ac.at</a><br>
&gt;     &lt;mailto:<a href="mailto:matthias.leopold@meduniwien.ac.at" target="_blank">matthias.leopold@meduniwien.ac.at</a>&gt;&gt;&gt; wrote:<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     Hi,<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     is there a way to upload disk images (not OVF files, not ISO<br>
&gt;     files)<br>
&gt;      &gt;&gt;     to oVirt storage domains via CLI? I need to upload a 800GB<br>
&gt;     file and<br>
&gt;      &gt;&gt;     this is not really comfortable via browser. I looked at<br>
&gt;     ovirt-shell<br>
&gt;      &gt;&gt;     and<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;     <a href="https://www.ovirt.org/develop/release-management/features/storage/image-upload/" rel="noreferrer" target="_blank">https://www.ovirt.org/develop/release-management/features/storage/image-upload/</a><br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;     &lt;<a href="https://www.ovirt.org/develop/release-management/features/storage/image-upload/" rel="noreferrer" target="_blank">https://www.ovirt.org/develop/release-management/features/storage/image-upload/</a>&gt;,<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     but i didn&#39;t find an option in either of them.<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     thx<br>
&gt;      &gt;&gt;     matthias<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;     _______________________________________________<br>
&gt;      &gt;&gt;     Users mailing list<br>
&gt;      &gt;&gt; <a href="mailto:Users@ovirt.org" target="_blank">Users@ovirt.org</a> &lt;mailto:<a href="mailto:Users@ovirt.org" target="_blank">Users@ovirt.org</a>&gt; &lt;mailto:<a href="mailto:Users@ovirt.org" target="_blank">Users@ovirt.org</a><br>
&gt;     &lt;mailto:<a href="mailto:Users@ovirt.org" target="_blank">Users@ovirt.org</a>&gt;&gt;<br>
&gt;      &gt;&gt; <a href="http://lists.ovirt.org/mailman/listinfo/users" rel="noreferrer" target="_blank">http://lists.ovirt.org/mailman/listinfo/users</a><br>
&gt;      &gt;&gt;     &lt;<a href="http://lists.ovirt.org/mailman/listinfo/users" rel="noreferrer" target="_blank">http://lists.ovirt.org/mailman/listinfo/users</a>&gt;<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;&gt;<br>
&gt;      &gt;<br>
&gt;<br>
&gt;     --<br>
&gt;     Matthias Leopold<br>
&gt;     IT Systems &amp; Communications<br>
&gt;     Medizinische Universität Wien<br>
&gt;     Spitalgasse 23 / BT 88 /Ebene 00<br>
&gt;     A-1090 Wien<br>
&gt;     Tel: <a href="tel:+43%201%204016021241" value="+4314016021241" target="_blank">+43 1 40160-21241</a> &lt;tel:+43%201%204016021241&gt;<br>
&gt;     Fax: <a href="tel:+43%201%2040160921200" value="+43140160921200" target="_blank">+43 1 40160-921200</a> &lt;tel:+43%201%2040160921200&gt;<br>
&gt;     _______________________________________________<br>
&gt;     Users mailing list<br>
&gt;     <a href="mailto:Users@ovirt.org" target="_blank">Users@ovirt.org</a> &lt;mailto:<a href="mailto:Users@ovirt.org" target="_blank">Users@ovirt.org</a>&gt;<br>
&gt;     <a href="http://lists.ovirt.org/mailman/listinfo/users" rel="noreferrer" target="_blank">http://lists.ovirt.org/mailman/listinfo/users</a><br>
&gt;<br>
<br>
--<br>
Matthias Leopold<br>
IT Systems &amp; Communications<br>
Medizinische Universität Wien<br>
Spitalgasse 23 / BT 88 /Ebene 00<br>
A-1090 Wien<br>
Tel: <a href="tel:+43%201%204016021241" value="+4314016021241" target="_blank">+43 1 40160-21241</a><br>
Fax: <a href="tel:+43%201%2040160921200" value="+43140160921200" target="_blank">+43 1 40160-921200</a><br>
</blockquote></div></div>