[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[Libvir] [PATCH]: Add virNodeGetInfo to ruby bindings
- From: Chris Lalancette <clalance redhat com>
- To: libvir-list redhat com
- Subject: [Libvir] [PATCH]: Add virNodeGetInfo to ruby bindings
- Date: Mon, 19 Nov 2007 16:18:44 -0500
All,
Attached is a patch to add the virNodeGetInfo() call to the Libvirt Ruby
bindings. Although it is not technically a virConn* function, it acts like one
since it uses the virConnectPtr structure, so I put it with those functions.
Let me know if I am doing anything completely crazy in here; this is my first
stab at Ruby binding code.
It works like so:
require 'libvirt'
conn = Libvirt::open("qemu:///system")
ni = c.nodeGetInfo
print ni
Signed-off-by: Chris Lalancette <clalance redhat com>
diff -r 2ce533de9e27 ext/libvirt/_libvirt.c
--- a/ext/libvirt/_libvirt.c Mon Nov 12 15:09:56 2007 -0800
+++ b/ext/libvirt/_libvirt.c Mon Nov 19 16:16:52 2007 -0500
@@ -29,6 +29,7 @@ static VALUE c_domain_info;
static VALUE c_domain_info;
static VALUE c_network;
static VALUE c_libvirt_version;
+static VALUE c_node_info;
/*
* Internal helpers
@@ -318,6 +319,33 @@ VALUE libvirt_conn_max_vcpus(VALUE s, VA
}
/*
+ * Call +virNodeInfo+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetInfo]
+ */
+VALUE libvirt_conn_node_get_info(VALUE s){
+ int r;
+ virConnectPtr conn = connect_get(s);
+ virNodeInfo nodeinfo;
+ VALUE result;
+ VALUE modelstr;
+
+ r = virNodeGetInfo(conn, &nodeinfo);
+ _E(r == -1, conn, "virNodeGetInfo");
+
+ modelstr = rb_str_new2(nodeinfo.model);
+
+ result = rb_class_new_instance(0, NULL, c_node_info);
+ rb_iv_set(result, "@model", modelstr);
+ rb_iv_set(result, "@memory", ULONG2NUM(nodeinfo.memory));
+ rb_iv_set(result, "@cpus", UINT2NUM(nodeinfo.cpus));
+ rb_iv_set(result, "@mhz", UINT2NUM(nodeinfo.mhz));
+ rb_iv_set(result, "@nodes", UINT2NUM(nodeinfo.nodes));
+ rb_iv_set(result, "@sockets", UINT2NUM(nodeinfo.sockets));
+ rb_iv_set(result, "@cores", UINT2NUM(nodeinfo.cores));
+ rb_iv_set(result, "@threads", UINT2NUM(nodeinfo.threads));
+ return result;
+}
+
+/*
* Call +virConnectGetCapabilities+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetCapabilities]
*/
VALUE libvirt_conn_capabilities(VALUE s) {
@@ -1054,7 +1082,7 @@ void Init__libvirt() {
rb_define_method(c_connect, "hostname", libvirt_conn_hostname, 0);
rb_define_method(c_connect, "uri", libvirt_conn_uri, 0);
rb_define_method(c_connect, "maxVcpus", libvirt_conn_max_vcpus, 1);
- // TODO: virNodeGetInfo
+ rb_define_method(c_connect, "nodeGetInfo", libvirt_conn_node_get_info, 0);
rb_define_method(c_connect, "capabilities", libvirt_conn_capabilities, 0);
rb_define_method(c_connect, "numOfDomains", libvirt_conn_num_of_domains, 0);
rb_define_method(c_connect, "listDomains", libvirt_conn_list_domains, 0);
@@ -1090,6 +1118,19 @@ void Init__libvirt() {
rb_define_method(c_connect, "defineNetworkXML",
libvirt_conn_define_network_xml, 1);
+ /*
+ * Class Libvirt::Connect::Nodeinfo
+ */
+ c_node_info = rb_define_class_under(c_connect, "Nodeinfo", rb_cObject);
+ rb_define_attr(c_node_info, "model", 1, 0);
+ rb_define_attr(c_node_info, "memory", 1, 0);
+ rb_define_attr(c_node_info, "cpus", 1, 0);
+ rb_define_attr(c_node_info, "mhz", 1, 0);
+ rb_define_attr(c_node_info, "nodes", 1, 0);
+ rb_define_attr(c_node_info, "sockets", 1, 0);
+ rb_define_attr(c_node_info, "cores", 1, 0);
+ rb_define_attr(c_node_info, "threads", 1, 0);
+
/*
* Class Libvirt::Domain
*/
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]