[ovirt-users] Disk image upload via CLI?

Matthias Leopold matthias.leopold at meduniwien.ac.at
Thu Sep 14 14:45:24 UTC 2017


Hi Daniel and other friendly contributors,

finally i sorted out how to set provisioned_size/initial_size correctly 
in upload_disk.py and my error is gone. It wasn't so easy, but maybe i 
took an awkard route when starting with a preallocated qcow2 image. In 
this special case you have to set provisioned_size to st_size, whereas 
with sparse images provisioned_size is "virtual size" from "qemu-img 
info". This may seem obvious to others, i took the hard route.

My approach stems from my desire to repeat the exact example in 
upload_disk.py (which uses a qcow image) and my actual use case, which 
is uploading a rather large image converted from vmdk (i only tested 
this with raw format yet), so i wanted to have some "real large" data to 
upload.

@nsoffer:
I'll open a bug for better ovirt-imageio-daemon as soon as i can.

thanks a lot for help
matthias

Am 2017-09-13 um 16:49 schrieb Daniel Erez:
> Hi Matthias,
> 
> The 403 response from the daemon means the ticket can't be authenticated
> (for some reason). I assume that the issue here is the initial size of 
> the disk.
> When uploading/downloading a qcow image, you should specify the apparent
> size of the file (see 'st_size' in [1]). You can get it simply by 'ls 
> -l' [2] (which is
> a different value from 'disk size' of qemu-img info [3]).
> btw, why are you creating a preallocated qcow disk? For what use-case?
> 
> [1] https://linux.die.net/man/2/stat
> 
> [2] $ ls -l test.qcow2
> -rw-r--r--. 1 user user 1074135040 Sep 13 16:50 test.qcow2
> 
> [3]
> $ qemu-img create -f qcow2 -o preallocation=full test.qcow2 1g
> $ qemu-img info test.qcow2
> image: test.qcow2
> file format: qcow2
> virtual size: 1.0G (1073741824 bytes)
> disk size: 1.0G
> cluster_size: 65536
> Format specific information:
>      compat: 1.1
>      lazy refcounts: false
>      refcount bits: 16
>      corrupt: false
> 
> 
> 
> On Wed, Sep 13, 2017 at 5:03 PM Matthias Leopold 
> <matthias.leopold at meduniwien.ac.at 
> <mailto:matthias.leopold at meduniwien.ac.at>> wrote:
> 
>     i tried it again twice:
> 
>     when using upload_disk.py from the ovirt engine host itself the disk
>     upload succeeds (despite an "503 Service Unavailable Completed 100%" in
>     script output in the end)
> 
>     another try was from an ovirt-sdk installation on my ubuntu desktop
>     itself (yesterday i tried it from a centos VM on my desktop machine).
>     this failed again, this time with "socket.error: [Errno 32] Broken pipe"
>     after reaching "200 OK Completed 100%". in imageio-proxy log i have
>     again the 403 error in this moment
> 
>     what's the difference between accessing the API from the engine host and
>     from "outside" in this case?
> 
>     thx
>     matthias
> 
>     Am 2017-09-12 um 16:42 schrieb Matthias Leopold:
>      > Thanks, i tried this script and it _almost_ worked ;-)
>      >
>      > i uploaded two images i created with
>      > qemu-img create -f qcow2 -o preallocation=full
>      > and
>      > qemu-img create -f qcow2 -o preallocation=falloc
>      >
>      > for initial_size and provisioned_size i took the value reported by
>      > "qemu-img info" in "virtual size" (same as "disk size" in this case)
>      >
>      > the upload goes to 100% and then fails with
>      >
>      > 200 OK Completed 100%
>      > Traceback (most recent call last):
>      >    File "./upload_disk.py", line 157, in <module>
>      >      headers=upload_headers,
>      >    File "/usr/lib64/python2.7/httplib.py", line 1017, in request
>      >      self._send_request(method, url, body, headers)
>      >    File "/usr/lib64/python2.7/httplib.py", line 1051, in
>     _send_request
>      >      self.endheaders(body)
>      >    File "/usr/lib64/python2.7/httplib.py", line 1013, in endheaders
>      >      self._send_output(message_body)
>      >    File "/usr/lib64/python2.7/httplib.py", line 864, in _send_output
>      >      self.send(msg)
>      >    File "/usr/lib64/python2.7/httplib.py", line 840, in send
>      >      self.sock.sendall(data)
>      >    File "/usr/lib64/python2.7/ssl.py", line 746, in sendall
>      >      v = self.send(data[count:])
>      >    File "/usr/lib64/python2.7/ssl.py", line 712, in send
>      >      v = self._sslobj.write(data)
>      > socket.error: [Errno 104] Connection reset by peer
>      >
>      > in web GUI the disk stays in Status: "Transferring via API"
>      > it can only be removed when manually unlocking it (unlock_entity.sh)
>      >
>      > engine.log tells nothing interesting
>      >
>      > i attached the last lines of ovirt-imageio-proxy/image-proxy.log and
>      > ovirt-imageio-daemon/daemon.log (from the executing node)
>      >
>      > the HTTP status 403 in ovirt-imageio-daemon/daemon.log doesn't
>     look too
>      > nice to me
>      >
>      > can you explain what happens?
>      >
>      > ovirt engine is 4.1.5
>      > ovirt node is 4.1.3 (is that a problem?)
>      >
>      > thx
>      > matthias
>      >
>      >
>      >
>      > Am 2017-09-12 um 13:15 schrieb Fred Rolland:
>      >> Hi,
>      >>
>      >> You can check this example:
>      >>
>     https://github.com/oVirt/ovirt-engine-sdk/blob/master/sdk/examples/upload_disk.py
>      >>
>      >>
>      >> Regards,
>      >> Fred
>      >>
>      >> On Tue, Sep 12, 2017 at 11:49 AM, Matthias Leopold
>      >> <matthias.leopold at meduniwien.ac.at
>     <mailto:matthias.leopold at meduniwien.ac.at>
>      >> <mailto:matthias.leopold at meduniwien.ac.at
>     <mailto:matthias.leopold at meduniwien.ac.at>>> wrote:
>      >>
>      >>     Hi,
>      >>
>      >>     is there a way to upload disk images (not OVF files, not ISO
>     files)
>      >>     to oVirt storage domains via CLI? I need to upload a 800GB
>     file and
>      >>     this is not really comfortable via browser. I looked at
>     ovirt-shell
>      >>     and
>      >>
>      >>
>     https://www.ovirt.org/develop/release-management/features/storage/image-upload/
>      >>
>      >>
>      >>
>     <https://www.ovirt.org/develop/release-management/features/storage/image-upload/>,
>      >>
>      >>     but i didn't find an option in either of them.
>      >>
>      >>     thx
>      >>     matthias
>      >>
>      >>     _______________________________________________
>      >>     Users mailing list
>      >> Users at ovirt.org <mailto:Users at ovirt.org> <mailto:Users at ovirt.org
>     <mailto:Users at ovirt.org>>
>      >> http://lists.ovirt.org/mailman/listinfo/users
>      >>     <http://lists.ovirt.org/mailman/listinfo/users>
>      >>
>      >>
>      >
> 
>     --
>     Matthias Leopold
>     IT Systems & Communications
>     Medizinische Universität Wien
>     Spitalgasse 23 / BT 88 /Ebene 00
>     A-1090 Wien
>     Tel: +43 1 40160-21241 <tel:+43%201%204016021241>
>     Fax: +43 1 40160-921200 <tel:+43%201%2040160921200>
>     _______________________________________________
>     Users mailing list
>     Users at ovirt.org <mailto:Users at ovirt.org>
>     http://lists.ovirt.org/mailman/listinfo/users
> 

-- 
Matthias Leopold
IT Systems & Communications
Medizinische Universität Wien
Spitalgasse 23 / BT 88 /Ebene 00
A-1090 Wien
Tel: +43 1 40160-21241
Fax: +43 1 40160-921200


More information about the Users mailing list