Hi
David Lutterkort asked me to send this patch to the list so it could be reviewed.
What this small patch does is, it adds two functions to call "virDomainAttachDevice" & "virDomainDetachDevice" which allow devices to be attached & detached at run-time. The Ruby methods are called "attach_device" & "detach_device" and belong to the Domain class.
Martin
--- orig_libvirt.c 2009-06-18 12:17:47.000000000 +0200
+++ mine_libvirt.c 2009-06-18 12:22:25.000000000 +0200
@@ -970,6 +970,22 @@
}
/*
+ * Call +virDomainAttachDevice+[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainAttachDevice]
+ */
+VALUE libvirt_dom_attach_device(VALUE s, VALUE xml) {
+ gen_call_void(virDomainAttachDevice, conn(s),
+ domain_get(s), StringValueCStr(xml));
+}
+
+/*
+ * Call +virDomainDetachDevice+[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainDetachDevice]
+ */
+VALUE libvirt_dom_detach_device(VALUE s, VALUE xml) {
+ gen_call_void(virDomainDetachDevice, conn(s),
+ domain_get(s), StringValueCStr(xml));
+}
+
+/*
* Call +virDomainCreateLinux+[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainCreateLinux]
*/
VALUE libvirt_conn_create_linux(int argc, VALUE *argv, VALUE c) {
@@ -1921,6 +1937,8 @@
rb_define_method(c_domain, "autostart", libvirt_dom_autostart, 0);
rb_define_method(c_domain, "autostart=", libvirt_dom_autostart_set, 1);
rb_define_method(c_domain, "free", libvirt_dom_free, 0);
+ rb_define_method(c_domain, "attach_device", libvirt_dom_attach_device, 1);
+ rb_define_method(c_domain, "detach_device", libvirt_dom_detach_device, 1);
/*
* Class Libvirt::Domain::Info