From aee5f1b6aa2b80873a34de67727c40ad43cccca7 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Fri, 18 Jan 2008 19:32:54 +0000 Subject: More bindings autogenerated, more coverage of storage API. --- libvirt/generator.pl | 57 ++++++++- libvirt/libvirt_c.c | 277 +++++++++++++++++++++++++++++++++++++++----- libvirt/libvirt_c_oneoffs.c | 64 ---------- 3 files changed, 298 insertions(+), 100 deletions(-) (limited to 'libvirt') diff --git a/libvirt/generator.pl b/libvirt/generator.pl index a54bd94..fa7f5bc 100755 --- a/libvirt/generator.pl +++ b/libvirt/generator.pl @@ -51,6 +51,8 @@ my @functions = ( sig => "conn, int : string array", weak => 1 }, { name => "virConnectGetCapabilities", sig => "conn : string" }, + { name => "virDomainLookupByName", sig => "conn, string : dom" }, + { name => "virDomainLookupByUUIDString", sig => "conn, string : dom" }, { name => "virDomainGetName", sig => "dom : static string" }, { name => "virDomainGetOSType", sig => "dom : string" }, { name => "virDomainGetXMLDesc", sig => "dom, 0 : string" }, @@ -61,12 +63,18 @@ my @functions = ( { name => "virDomainUndefine", sig => "dom : unit" }, { name => "virDomainCreate", sig => "dom : unit" }, + { name => "virNetworkLookupByName", sig => "conn, string : net" }, + { name => "virNetworkLookupByUUIDString", sig => "conn, string : net" }, { name => "virNetworkGetName", sig => "net : static string" }, { name => "virNetworkGetXMLDesc", sig => "net, 0 : string" }, { name => "virNetworkGetBridgeName", sig => "net : string" }, { name => "virNetworkUndefine", sig => "net : unit" }, { name => "virNetworkCreate", sig => "net : unit" }, + { name => "virStoragePoolLookupByName", + sig => "conn, string : pool", weak => 1 }, + { name => "virStoragePoolLookupByUUIDString", + sig => "conn, string : pool", weak => 1 }, { name => "virStoragePoolGetName", sig => "pool : static string", weak => 1 }, { name => "virStoragePoolGetXMLDesc", @@ -80,6 +88,12 @@ my @functions = ( { name => "virStoragePoolRefresh", sig => "pool, 0 : string", weak => 1 }, + { name => "virStorageVolLookupByName", + sig => "conn, string : vol", weak => 1 }, + { name => "virStorageVolLookupByKey", + sig => "conn, string : vol", weak => 1 }, + { name => "virStorageVolLookupByPath", + sig => "conn, string : vol", weak => 1 }, { name => "virStorageVolGetXMLDesc", sig => "pool, 0 : string", weak => 1 }, { name => "virStorageVolGetPath", @@ -112,17 +126,12 @@ my @unimplemented = ( "ocaml_libvirt_storage_pool_destroy", "ocaml_libvirt_storage_pool_define_xml", "ocaml_libvirt_storage_pool_create_xml", - "ocaml_libvirt_storage_pool_lookup_by_uuid_string", "ocaml_libvirt_storage_pool_lookup_by_uuid", - "ocaml_libvirt_storage_pool_lookup_by_name", "ocaml_libvirt_storage_vol_free", "ocaml_libvirt_storage_vol_destroy", "ocaml_libvirt_storage_vol_create_xml", "ocaml_libvirt_storage_vol_get_info", "ocaml_libvirt_pool_of_volume", - "ocaml_libvirt_storage_vol_lookup_by_path", - "ocaml_libvirt_storage_vol_lookup_by_key", - "ocaml_libvirt_storage_vol_lookup_by_name", "ocaml_libvirt_job_cancel", "ocaml_libvirt_job_get_network", "ocaml_libvirt_job_get_domain", @@ -193,7 +202,7 @@ sub camel_case_to_underscores { my $name = shift; - $name =~ s/([A-Z][a-z]+|XML|URI|OS)/$1,/g; + $name =~ s/([A-Z][a-z]+|XML|URI|OS|UUID)/$1,/g; my @subs = split (/,/, $name); @subs = map { lc($_) } @subs; join "_", @subs @@ -242,6 +251,10 @@ sub gen_c_signature } elsif ($sig =~ /^(\w+) : unit$/) { my $c_type = short_name_to_c_type ($1); "int $c_name ($c_type $1 dom)" + } elsif ($sig =~ /^(\w+), string : (\w+)$/) { + my $c_type = short_name_to_c_type ($1); + my $c_ret_type = short_name_to_c_type ($2); + "$c_ret_type $c_name ($c_type $1 dom)" } else { die "unknown signature $sig" } @@ -267,6 +280,8 @@ sub gen_arg_names ( "$1v" ) } elsif ($sig =~ /^(\w+) : unit$/) { ( "$1v" ) + } elsif ($sig =~ /^(\w+), string : (\w+)$/) { + ( "$1v", "strv" ) } else { die "unknown signature $sig" } @@ -295,6 +310,21 @@ sub gen_unpack_args } } +sub gen_pack_result +{ + local $_ = shift; + + if ($_ eq "dom") { + "rv = Val_domain (r, connv);" + } elsif ($_ eq "net") { + "rv = Val_network (r, connv);" + } elsif ($_ eq "pool") { + "rv = Val_pool (r, connv);" + } elsif ($_ eq "vol") { + "rv = Val_volume (r, connv);" + } +} + sub gen_c_code { my $sig = shift; @@ -403,6 +433,21 @@ sub gen_c_code CHECK_ERROR (r == -1, conn, \"$c_name\"); CAMLreturn (Val_unit); +" + } elsif ($sig =~ /^(\w+), string : (\w+)$/) { + my $c_ret_type = short_name_to_c_type ($2); + "\ + CAMLlocal1 (rv); + " . gen_unpack_args ($1) . " + char *str = String_val (strv); + $c_ret_type r; + + NONBLOCKING (r = $c_name ($1, str)); + CHECK_ERROR (!r, conn, \"$c_name\"); + + " . gen_pack_result ($2) . " + + CAMLreturn (rv); " } else { die "unknown signature $sig" diff --git a/libvirt/libvirt_c.c b/libvirt/libvirt_c.c index 27aa4c0..0bb9442 100644 --- a/libvirt/libvirt_c.c +++ b/libvirt/libvirt_c.c @@ -437,6 +437,42 @@ ocaml_libvirt_connect_get_capabilities (value connv) CAMLreturn (rv); } +CAMLprim value +ocaml_libvirt_domain_lookup_by_name (value connv, value strv) +{ + CAMLparam2 (connv, strv); + + CAMLlocal1 (rv); + virConnectPtr conn = Connect_val (connv); + char *str = String_val (strv); + virDomainPtr r; + + NONBLOCKING (r = virDomainLookupByName (conn, str)); + CHECK_ERROR (!r, conn, "virDomainLookupByName"); + + rv = Val_domain (r, connv); + + CAMLreturn (rv); +} + +CAMLprim value +ocaml_libvirt_domain_lookup_by_uuid_string (value connv, value strv) +{ + CAMLparam2 (connv, strv); + + CAMLlocal1 (rv); + virConnectPtr conn = Connect_val (connv); + char *str = String_val (strv); + virDomainPtr r; + + NONBLOCKING (r = virDomainLookupByUUIDString (conn, str)); + CHECK_ERROR (!r, conn, "virDomainLookupByUUIDString"); + + rv = Val_domain (r, connv); + + CAMLreturn (rv); +} + CAMLprim value ocaml_libvirt_domain_get_name (value domv) { @@ -580,6 +616,42 @@ ocaml_libvirt_domain_create (value domv) CAMLreturn (Val_unit); } +CAMLprim value +ocaml_libvirt_network_lookup_by_name (value connv, value strv) +{ + CAMLparam2 (connv, strv); + + CAMLlocal1 (rv); + virConnectPtr conn = Connect_val (connv); + char *str = String_val (strv); + virNetworkPtr r; + + NONBLOCKING (r = virNetworkLookupByName (conn, str)); + CHECK_ERROR (!r, conn, "virNetworkLookupByName"); + + rv = Val_network (r, connv); + + CAMLreturn (rv); +} + +CAMLprim value +ocaml_libvirt_network_lookup_by_uuid_string (value connv, value strv) +{ + CAMLparam2 (connv, strv); + + CAMLlocal1 (rv); + virConnectPtr conn = Connect_val (connv); + char *str = String_val (strv); + virNetworkPtr r; + + NONBLOCKING (r = virNetworkLookupByUUIDString (conn, str)); + CHECK_ERROR (!r, conn, "virNetworkLookupByUUIDString"); + + rv = Val_network (r, connv); + + CAMLreturn (rv); +} + CAMLprim value ocaml_libvirt_network_get_name (value netv) { @@ -663,6 +735,76 @@ ocaml_libvirt_network_create (value netv) CAMLreturn (Val_unit); } +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRSTORAGEPOOLLOOKUPBYNAME +extern virStoragePoolPtr virStoragePoolLookupByName (virConnectPtr conn dom) __attribute__((weak)); +#endif +#endif + +CAMLprim value +ocaml_libvirt_storage_pool_lookup_by_name (value connv, value strv) +{ + CAMLparam2 (connv, strv); +#ifndef HAVE_VIRSTORAGEPOOLLOOKUPBYNAME + /* Symbol virStoragePoolLookupByName not found at compile time. */ + not_supported ("virStoragePoolLookupByName"); + /* Suppresses a compiler warning. */ + (void) caml__frame; +#else + /* Check that the symbol virStoragePoolLookupByName + * is in runtime version of libvirt. + */ + WEAK_SYMBOL_CHECK (virStoragePoolLookupByName); + + CAMLlocal1 (rv); + virConnectPtr conn = Connect_val (connv); + char *str = String_val (strv); + virStoragePoolPtr r; + + NONBLOCKING (r = virStoragePoolLookupByName (conn, str)); + CHECK_ERROR (!r, conn, "virStoragePoolLookupByName"); + + rv = Val_pool (r, connv); + + CAMLreturn (rv); +#endif +} + +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRSTORAGEPOOLLOOKUPBYUUIDSTRING +extern virStoragePoolPtr virStoragePoolLookupByUUIDString (virConnectPtr conn dom) __attribute__((weak)); +#endif +#endif + +CAMLprim value +ocaml_libvirt_storage_pool_lookup_by_uuid_string (value connv, value strv) +{ + CAMLparam2 (connv, strv); +#ifndef HAVE_VIRSTORAGEPOOLLOOKUPBYUUIDSTRING + /* Symbol virStoragePoolLookupByUUIDString not found at compile time. */ + not_supported ("virStoragePoolLookupByUUIDString"); + /* Suppresses a compiler warning. */ + (void) caml__frame; +#else + /* Check that the symbol virStoragePoolLookupByUUIDString + * is in runtime version of libvirt. + */ + WEAK_SYMBOL_CHECK (virStoragePoolLookupByUUIDString); + + CAMLlocal1 (rv); + virConnectPtr conn = Connect_val (connv); + char *str = String_val (strv); + virStoragePoolPtr r; + + NONBLOCKING (r = virStoragePoolLookupByUUIDString (conn, str)); + CHECK_ERROR (!r, conn, "virStoragePoolLookupByUUIDString"); + + rv = Val_pool (r, connv); + + CAMLreturn (rv); +#endif +} + #ifdef HAVE_WEAK_SYMBOLS #ifdef HAVE_VIRSTORAGEPOOLGETNAME extern const char *virStoragePoolGetName (virStoragePoolPtr pool) __attribute__((weak)); @@ -872,6 +1014,111 @@ ocaml_libvirt_storage_pool_refresh (value poolv) #endif } +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRSTORAGEVOLLOOKUPBYNAME +extern virStorageVolPtr virStorageVolLookupByName (virConnectPtr conn dom) __attribute__((weak)); +#endif +#endif + +CAMLprim value +ocaml_libvirt_storage_vol_lookup_by_name (value connv, value strv) +{ + CAMLparam2 (connv, strv); +#ifndef HAVE_VIRSTORAGEVOLLOOKUPBYNAME + /* Symbol virStorageVolLookupByName not found at compile time. */ + not_supported ("virStorageVolLookupByName"); + /* Suppresses a compiler warning. */ + (void) caml__frame; +#else + /* Check that the symbol virStorageVolLookupByName + * is in runtime version of libvirt. + */ + WEAK_SYMBOL_CHECK (virStorageVolLookupByName); + + CAMLlocal1 (rv); + virConnectPtr conn = Connect_val (connv); + char *str = String_val (strv); + virStorageVolPtr r; + + NONBLOCKING (r = virStorageVolLookupByName (conn, str)); + CHECK_ERROR (!r, conn, "virStorageVolLookupByName"); + + rv = Val_volume (r, connv); + + CAMLreturn (rv); +#endif +} + +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRSTORAGEVOLLOOKUPBYKEY +extern virStorageVolPtr virStorageVolLookupByKey (virConnectPtr conn dom) __attribute__((weak)); +#endif +#endif + +CAMLprim value +ocaml_libvirt_storage_vol_lookup_by_key (value connv, value strv) +{ + CAMLparam2 (connv, strv); +#ifndef HAVE_VIRSTORAGEVOLLOOKUPBYKEY + /* Symbol virStorageVolLookupByKey not found at compile time. */ + not_supported ("virStorageVolLookupByKey"); + /* Suppresses a compiler warning. */ + (void) caml__frame; +#else + /* Check that the symbol virStorageVolLookupByKey + * is in runtime version of libvirt. + */ + WEAK_SYMBOL_CHECK (virStorageVolLookupByKey); + + CAMLlocal1 (rv); + virConnectPtr conn = Connect_val (connv); + char *str = String_val (strv); + virStorageVolPtr r; + + NONBLOCKING (r = virStorageVolLookupByKey (conn, str)); + CHECK_ERROR (!r, conn, "virStorageVolLookupByKey"); + + rv = Val_volume (r, connv); + + CAMLreturn (rv); +#endif +} + +#ifdef HAVE_WEAK_SYMBOLS +#ifdef HAVE_VIRSTORAGEVOLLOOKUPBYPATH +extern virStorageVolPtr virStorageVolLookupByPath (virConnectPtr conn dom) __attribute__((weak)); +#endif +#endif + +CAMLprim value +ocaml_libvirt_storage_vol_lookup_by_path (value connv, value strv) +{ + CAMLparam2 (connv, strv); +#ifndef HAVE_VIRSTORAGEVOLLOOKUPBYPATH + /* Symbol virStorageVolLookupByPath not found at compile time. */ + not_supported ("virStorageVolLookupByPath"); + /* Suppresses a compiler warning. */ + (void) caml__frame; +#else + /* Check that the symbol virStorageVolLookupByPath + * is in runtime version of libvirt. + */ + WEAK_SYMBOL_CHECK (virStorageVolLookupByPath); + + CAMLlocal1 (rv); + virConnectPtr conn = Connect_val (connv); + char *str = String_val (strv); + virStorageVolPtr r; + + NONBLOCKING (r = virStorageVolLookupByPath (conn, str)); + CHECK_ERROR (!r, conn, "virStorageVolLookupByPath"); + + rv = Val_volume (r, connv); + + CAMLreturn (rv); +#endif +} + #ifdef HAVE_WEAK_SYMBOLS #ifdef HAVE_VIRSTORAGEVOLGETXMLDESC extern char *virStorageVolGetXMLDesc (virStoragePoolPtr pool, int flags) __attribute__((weak)); @@ -1106,24 +1353,12 @@ ocaml_libvirt_storage_pool_create_xml () failwith ("ocaml_libvirt_storage_pool_create_xml is unimplemented"); } -CAMLprim value -ocaml_libvirt_storage_pool_lookup_by_uuid_string () -{ - failwith ("ocaml_libvirt_storage_pool_lookup_by_uuid_string is unimplemented"); -} - CAMLprim value ocaml_libvirt_storage_pool_lookup_by_uuid () { failwith ("ocaml_libvirt_storage_pool_lookup_by_uuid is unimplemented"); } -CAMLprim value -ocaml_libvirt_storage_pool_lookup_by_name () -{ - failwith ("ocaml_libvirt_storage_pool_lookup_by_name is unimplemented"); -} - CAMLprim value ocaml_libvirt_storage_vol_free () { @@ -1154,24 +1389,6 @@ ocaml_libvirt_pool_of_volume () failwith ("ocaml_libvirt_pool_of_volume is unimplemented"); } -CAMLprim value -ocaml_libvirt_storage_vol_lookup_by_path () -{ - failwith ("ocaml_libvirt_storage_vol_lookup_by_path is unimplemented"); -} - -CAMLprim value -ocaml_libvirt_storage_vol_lookup_by_key () -{ - failwith ("ocaml_libvirt_storage_vol_lookup_by_key is unimplemented"); -} - -CAMLprim value -ocaml_libvirt_storage_vol_lookup_by_name () -{ - failwith ("ocaml_libvirt_storage_vol_lookup_by_name is unimplemented"); -} - CAMLprim value ocaml_libvirt_job_cancel () { diff --git a/libvirt/libvirt_c_oneoffs.c b/libvirt/libvirt_c_oneoffs.c index 6387b52..a9ed5b7 100644 --- a/libvirt/libvirt_c_oneoffs.c +++ b/libvirt/libvirt_c_oneoffs.c @@ -292,38 +292,6 @@ ocaml_libvirt_domain_lookup_by_uuid (value connv, value uuidv) CAMLreturn (rv); } -CAMLprim value -ocaml_libvirt_domain_lookup_by_uuid_string (value connv, value uuidv) -{ - CAMLparam2 (connv, uuidv); - CAMLlocal1 (rv); - virConnectPtr conn = Connect_val (connv); - char *uuid = String_val (uuidv); - virDomainPtr r; - - NONBLOCKING (r = virDomainLookupByUUIDString (conn, uuid)); - CHECK_ERROR (!r, conn, "virDomainLookupByUUIDString"); - - rv = Val_domain (r, connv); - CAMLreturn (rv); -} - -CAMLprim value -ocaml_libvirt_domain_lookup_by_name (value connv, value namev) -{ - CAMLparam2 (connv, namev); - CAMLlocal1 (rv); - virConnectPtr conn = Connect_val (connv); - char *name = String_val (namev); - virDomainPtr r; - - NONBLOCKING (r = virDomainLookupByName (conn, name)); - CHECK_ERROR (!r, conn, "virDomainLookupByName"); - - rv = Val_domain (r, connv); - CAMLreturn (rv); -} - CAMLprim value ocaml_libvirt_domain_destroy (value domv) { @@ -935,22 +903,6 @@ ocaml_libvirt_domain_interface_stats (value domv, value pathv) #endif } -CAMLprim value -ocaml_libvirt_network_lookup_by_name (value connv, value namev) -{ - CAMLparam2 (connv, namev); - CAMLlocal1 (rv); - virConnectPtr conn = Connect_val (connv); - char *name = String_val (namev); - virNetworkPtr r; - - NONBLOCKING (r = virNetworkLookupByName (conn, name)); - CHECK_ERROR (!r, conn, "virNetworkLookupByName"); - - rv = Val_network (r, connv); - CAMLreturn (rv); -} - CAMLprim value ocaml_libvirt_network_lookup_by_uuid (value connv, value uuidv) { @@ -967,22 +919,6 @@ ocaml_libvirt_network_lookup_by_uuid (value connv, value uuidv) CAMLreturn (rv); } -CAMLprim value -ocaml_libvirt_network_lookup_by_uuid_string (value connv, value uuidv) -{ - CAMLparam2 (connv, uuidv); - CAMLlocal1 (rv); - virConnectPtr conn = Connect_val (connv); - char *uuid = String_val (uuidv); - virNetworkPtr r; - - NONBLOCKING (r = virNetworkLookupByUUIDString (conn, uuid)); - CHECK_ERROR (!r, conn, "virNetworkLookupByUUIDString"); - - rv = Val_network (r, connv); - CAMLreturn (rv); -} - CAMLprim value ocaml_libvirt_network_create_xml (value connv, value xmlv) { -- cgit