[ovirt-users] Creating templates in a blocking fashion from Python SDK

Nir Soffer nsoffer at redhat.com
Sun Apr 10 10:32:44 UTC 2016


On Sun, Apr 10, 2016 at 1:16 PM, Yaniv Kaul <ykaul at redhat.com> wrote:
>
>
> On Sun, Apr 10, 2016 at 11:02 AM, Yedidyah Bar David <didi at redhat.com>
> wrote:
>>
>> On Sun, Apr 10, 2016 at 10:43 AM, Barak Korren <bkorren at redhat.com> wrote:
>> > Hi there, I use the following Python SDK snippet to create a template
>> > from an existing VM:
>> >
>> >     templ = ovirt.templates.add(
>> >         ovirtsdk.xml.Template(vm=vm, name=vm.name)
>> >     )
>> >
>> > This seems to launch a template creation task in a non-blocking
>> > manner, which makes the next command I run, which tries to delete the
>> > VM, fail because the VM is still locked by the template creation task.
>> >
>> > Is there a way to block on the template creation task and not return
>> > to the code until it finishes?
>>
>> I don't think so, but you can loop waiting, see e.g.:
>>
>> http://www.ovirt.org/develop/api/pythonapi/#create-a-template-from-vm
>
>
> I wish we could have an extra parameters on the Python SDK that would do
> this exact loop for us, since essentially most use cases require this.
> I'm not sure it is relevant only for template creation, btw.
> What is also more annoying, is that this loop (IIRC) will never break, if
> something bad happens and the template ends up in a state != down (such as
> locked).
> (Same issue I've just had with host installation - Iv'e waited endlessly for
> it to be in 'up' state, only to find out it ended in 'installed_failed'
> state).

What we need is way to wait for events. For example, perform a request that
never completes, sending events as json/xml fragments and chunked encoding.

Here is an example:
https://dev.twitter.com/streaming/overview

Nir



More information about the Users mailing list