
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