python-libvirt domain.destroy() doesn't appear to be working for me

I'm using the python-libvirt library and finding that I cannot get .destroy() or .shutdown() to work. https://github.com/simora/docker-libvirt-flask/blob/cba6041b47bdf4ccb3b9506a... That is the line in my code. .create() works fine and using virsh in the docker container works fine to destroy the domain as well. This is based on ubuntu bionic in a docker container with the libvirt socket and such made available. .create() works, listing works and virsh works so permissions are not the issue. I'm confident I have failed to properly use the function or am missing the appropriate logging. Any assistance would be greatly appreciated.

I clearly did something wrong but now it appears to be operating as expected. Sorry and thank you. On Sat, Aug 22, 2020 at 10:32 AM Jeremy Markle <jeremy.markle@gmail.com> wrote:
I'm using the python-libvirt library and finding that I cannot get .destroy() or .shutdown() to work.
https://github.com/simora/docker-libvirt-flask/blob/cba6041b47bdf4ccb3b9506a...
That is the line in my code. .create() works fine and using virsh in the docker container works fine to destroy the domain as well.
This is based on ubuntu bionic in a docker container with the libvirt socket and such made available. .create() works, listing works and virsh works so permissions are not the issue. I'm confident I have failed to properly use the function or am missing the appropriate logging.
Any assistance would be greatly appreciated.

On Sat, Aug 22, 2020 at 10:32:09AM -0400, Jeremy Markle wrote:
I'm using the python-libvirt library and finding that I cannot get .destroy() or .shutdown() to work.
https://github.com/simora/docker-libvirt-flask/blob/cba6041b47bdf4ccb3b9506a...
Your code has alot of "< 0" checks. This is the C API behaviour to return -1 on error. In python we raise exceptions on error. so you try try/except to catch them Daniel

I was simply following the examples in the python-libvirt repo. If those methods raise exceptions I'll definitely change to try/catch. Thank you. The maintainer of the repo should update the examples and documentation if exceptions are raised by those. On Mon, Aug 24, 2020, 05:31 Daniel P. Berrangé <berrange@redhat.com> wrote:
On Sat, Aug 22, 2020 at 10:32:09AM -0400, Jeremy Markle wrote:
I'm using the python-libvirt library and finding that I cannot get .destroy() or .shutdown() to work.
https://github.com/simora/docker-libvirt-flask/blob/cba6041b47bdf4ccb3b9506a...
Your code has alot of "< 0" checks. This is the C API behaviour to return -1 on error. In python we raise exceptions on error. so you try try/except to catch them
Daniel

On 8/24/20 11:38 AM, Jeremy Markle wrote:
I was simply following the examples in the python-libvirt repo. If those methods raise exceptions I'll definitely change to try/catch. Thank you. The maintainer of the repo should update the examples and documentation if exceptions are raised by those.
Can you be more specific please? A quick git grep shows only a few cases which don't compare APIs rather than some integer variables: libvirt-python.git $ git grep -C 3 -e '< 0' --or -e '== 0' -- examples/ And those try/catch statements - in our basic examples we don't do any rollback and simply just let python abort. Michal

I apologize... the bits I saw the "< 0" testing were in the following link. The examples in the repo don't have either try/catch or the int testing such as in the second link. https://libvirt.org/docs/libvirt-appdev-guide-python/en-US/html/libvirt_appl... https://gitlab.com/libvirt/libvirt-python/-/blob/d8d55b17e227f0ce829e709966f... On Mon, Aug 24, 2020 at 6:09 AM Michal Privoznik <mprivozn@redhat.com> wrote:
On 8/24/20 11:38 AM, Jeremy Markle wrote:
I was simply following the examples in the python-libvirt repo. If those methods raise exceptions I'll definitely change to try/catch. Thank you. The maintainer of the repo should update the examples and documentation if exceptions are raised by those.
Can you be more specific please? A quick git grep shows only a few cases which don't compare APIs rather than some integer variables:
libvirt-python.git $ git grep -C 3 -e '< 0' --or -e '== 0' -- examples/
And those try/catch statements - in our basic examples we don't do any rollback and simply just let python abort.
Michal
participants (3)
-
Daniel P. Berrangé
-
Jeremy Markle
-
Michal Privoznik