Hi<br><br>David Lutterkort asked me to send this patch to the list so it could be reviewed.<br><br>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.<br>
<br>Martin<br>
<br>--- orig_libvirt.c    2009-06-18 12:17:47.000000000 +0200<br>+++ mine_libvirt.c    2009-06-18 12:22:25.000000000 +0200<br>@@ -970,6 +970,22 @@<br> }<br> <br> /*<br>+ * Call +virDomainAttachDevice+[<a href="http://www.libvirt.org/html/libvirt-libvirt.html#virDomainAttachDevice" target="_blank">http://www.libvirt.org/html/libvirt-libvirt.html#virDomainAttachDevice</a>]<br>

+ */<br>+VALUE libvirt_dom_attach_device(VALUE s, VALUE xml) {<br>+    gen_call_void(virDomainAttachDevice, conn(s),<br>+                  domain_get(s), StringValueCStr(xml));<br>+}<br>+<br>+/*<br>+ * Call +virDomainDetachDevice+[<a href="http://www.libvirt.org/html/libvirt-libvirt.html#virDomainDetachDevice" target="_blank">http://www.libvirt.org/html/libvirt-libvirt.html#virDomainDetachDevice</a>]<br>

+ */<br>+VALUE libvirt_dom_detach_device(VALUE s, VALUE xml) {<br>+    gen_call_void(virDomainDetachDevice, conn(s),<br>+                  domain_get(s), StringValueCStr(xml));<br>+}<br>+<br>+/*<br>  * Call +virDomainCreateLinux+[<a href="http://www.libvirt.org/html/libvirt-libvirt.html#virDomainCreateLinux" target="_blank">http://www.libvirt.org/html/libvirt-libvirt.html#virDomainCreateLinux</a>]<br>

  */<br> VALUE libvirt_conn_create_linux(int argc, VALUE *argv, VALUE c) {<br>@@ -1921,6 +1937,8 @@<br>     rb_define_method(c_domain, "autostart", libvirt_dom_autostart, 0);<br>     rb_define_method(c_domain, "autostart=", libvirt_dom_autostart_set, 1);<br>

     rb_define_method(c_domain, "free", libvirt_dom_free, 0);<br>+    rb_define_method(c_domain, "attach_device", libvirt_dom_attach_device, 1);<br>+    rb_define_method(c_domain, "detach_device", libvirt_dom_detach_device, 1);<br>

 <br>     /*<br>      * Class Libvirt::Domain::Info<br>