XAPI Host Plugins: Difference between revisions
From Xen
Jump to navigationJump to search
Lars.kurth (talk | contribs) No edit summary |
Lars.kurth (talk | contribs) No edit summary |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 3: | Line 3: | ||
"The XenAPI has an extension mechanism that allows one to install a Python script (usually, but it can be any executable) on the host side, and then call that through the XenAPI." - http://wiki.openstack.org/XenAPI |
"The XenAPI has an extension mechanism that allows one to install a Python script (usually, but it can be any executable) on the host side, and then call that through the XenAPI." - http://wiki.openstack.org/XenAPI |
||
Writing a XenAPI plugin in Python is simplified by using the XenAPIPlugin module, which is by default installed in dom0 in XCP. Below is a simple XenAPI plugin which reverses a string passed to it: |
|||
⚫ | |||
⚫ | |||
<pre> |
|||
#!/usr/bin/python |
|||
import XenAPIPlugin |
|||
def main(session, args): |
|||
try: |
|||
data = args["data"] |
|||
return data[::-1] |
|||
except KeyError: |
|||
raise RuntimeError("No argument found with key 'data'.") |
|||
if __name__ == "__main__": |
|||
XenAPIPlugin.dispatch({"main": main}) |
|||
</pre> |
|||
Save this code to /etc/xapi.d/plugins/reverse and make it executable. The plugin can then be run from the CLI like so: |
|||
<pre> |
|||
# xe host-call-plugin host-uuid=<host-uuid> plugin=reverse fn=main args:data="hello, world" |
|||
dlrow ,olleh |
|||
</pre> |
|||
⚫ | |||
⚫ |
Latest revision as of 12:11, 11 July 2013
XAPI Host Plugins
"The XenAPI has an extension mechanism that allows one to install a Python script (usually, but it can be any executable) on the host side, and then call that through the XenAPI." - http://wiki.openstack.org/XenAPI
Writing a XenAPI plugin in Python is simplified by using the XenAPIPlugin module, which is by default installed in dom0 in XCP. Below is a simple XenAPI plugin which reverses a string passed to it:
#!/usr/bin/python import XenAPIPlugin def main(session, args): try: data = args["data"] return data[::-1] except KeyError: raise RuntimeError("No argument found with key 'data'.") if __name__ == "__main__": XenAPIPlugin.dispatch({"main": main})
Save this code to /etc/xapi.d/plugins/reverse and make it executable. The plugin can then be run from the CLI like so:
# xe host-call-plugin host-uuid=<host-uuid> plugin=reverse fn=main args:data="hello, world" dlrow ,olleh