OK, so the hooking module is included in the vdsm package itself. Please make sure you have /usr/share/vdsm/hooking.py on the host.

The manual run fails, because it is not running in the vdsm context, and so the modules imported are the python site-packages and not the submodules under vdsm. 

To make a hook work, you need to place it on the host, make it accessible to vdsm:kvm, and maybe define a custom property, if you don't want the hook to just run on every started VM. 

On Tue, Jan 12, 2016 at 10:35 AM, Jean-Pierre Ribeauville <jpribeauville@axway.com> wrote:

Hi,

 

1°  It’s a full RHEL7 OS.

vdsm-python-zombiereaper-4.16.27-0.el7.centos.noarch

vdsm-python-4.16.27-0.el7.centos.noarch

vdsm-yajsonrpc-4.16.27-0.el7.centos.noarch

vdsm-xmlrpc-4.16.27-0.el7.centos.noarch

vdsm-cli-4.16.27-0.el7.centos.noarch

vdsm-jsonrpc-java-1.0.15-1.el7.noarch

vdsm-jsonrpc-4.16.27-0.el7.centos.noarch

vdsm-4.16.27-0.el7.centos.x86_64

        3°

#!/usr/bin/python

1)       

2)      import os

3)      import sys

4)      import grp

5)      import pwd

6)      import traceback

7)       

8)      import hooking

9)       

10)   def createChannelElement(domxml):

11)       '''

12)       <channel type='unix'>

13)         <source mode='bind' path='//var/lib/libvirt/qemu/VM_RHEL7-1_omnivision_1.agent'/>

14)         <target type='virtio' name='omnivision_1.agent'/>

15)       </channel>

16)       '''

17)    

18)       channel = domxml.createElement('channel')

19)       disk.setAttribute('type', 'unix')

20)    

21)       source = domxml.createElement('source')

22)       source.setAttribute('mode', 'bind')

23)    

24)       # find  domain name

25)       domainame = domxml.getElementsByTagName('name')

26)    

27)       source.setAttribute('path', '//var/lib/libvirt/qemu/' + domainame + '_omnivision_1.agent')

28)       disk.appendChild(source)

29)    

30)       target = domxml.createElement('target')

31)       target.setAttribute('type', 'virtio')

32)       target.setAttribute('name', 'omnivision_1.agent')

33)       disk.appendChild(target)

34)    

35)       return channel

36)    

37)   try:

38)      domxml = hooking.read_domxml()

39)      devices = domxml.getElementsByTagName('devices')[0]

40)      channeldev = createChannelElement(domxml)

41)      sys.stderr.write('createChannel: adding xml: %s\n' % channeldev.toxml())

42)      devices.appendChild(channeldev)

43)    

44)      hooking.write_domxml(domxml)

45)   except:

46)      sys.stderr.write('createChannel: [unexpected error]: %s\n' %

47)      traceback.format_exc())

48)      sys.exit(2)

 

 

 

Thx for help.

 

Regards,

 

J.P.

 

 

De : Dan Yasny [mailto:dyasny@gmail.com]
Envoyé : mardi 12 janvier 2016 16:23
À : Jean-Pierre Ribeauville
Cc : users@ovirt.org
Objet : Re: [ovirt-users] vdsm hook issues

 

1. Are you using a full OS or a node?

2. rpm -qa |grep vdsm

3. if possible, post the hook code

 

Thanks

 

On Tue, Jan 12, 2016 at 10:17 AM, Jean-Pierre Ribeauville <jpribeauville@axway.com> wrote:

 

Hi,

 

1)  is it enough to add a hook.py in  /usr/libexec/vdsm/hooks/before_vm_start directory , and then shut down and reboot a guest to

    see this hook.py invoked ?

 

2) when running manually my hook.py, I got following error :

     ImportError: No module named hooking

 

    Do I have to install anything to solve this issue ?

 

Thanks for help.

 

 

Regards,

 

 

 

J.P. Ribeauville

 

P: +33.(0).1.47.17.20.49

.

Puteaux 3 Etage 5  Bureau 4

 

jpribeauville@axway.com
http://www.axway.com

 

 

P Pensez à l’environnement avant d’imprimer.

 

 


_______________________________________________
Users mailing list
Users@ovirt.org
http://lists.ovirt.org/mailman/listinfo/users