Difference between revisions of "XAPI Host Plugins"
From Xen
ToddDeshane (talk | contribs) (add initial page) |
Lars.kurth (talk | contribs) |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
"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> |
||
+ | |||
+ | [[Category:XAPI Devel]] |
||
+ | [[Category:OpenStack]] |
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