[libvirt] C# bindings (Was: First patch)
arnaud.champion at devatom.fr
arnaud.champion at devatom.fr
Wed Oct 20 12:05:11 UTC 2010
?Hi Justin,
I have written a little simple sample of using of C# bindings. In fact it is
a sample project which connect to a clear TCP libvirt/qemu via
virConnectOpen the list the storage pools. Here's the code :
/*
* Copyright (C)
* Arnaud Champion <arnaud.champion at devatom.fr>
* Jaromír Cervenka <cervajz at cervajz.com>
*
* See COPYING.LIB for the License of this software
*
* Sample code for :
* Function :
* virConnectOpen
* virConnectNumOfStoragePools
* virConnectListStoragePools
*/
using System;
using System.Windows.Forms;
using LibvirtBindings;
namespace virConnectOpen
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnConnect_Click(object sender, EventArgs e)
{
IntPtr conn = virConnect.Open(tbURI.Text);
if (conn != IntPtr.Zero)
{
int numOfStoragePools = virConnect.NumOfStoragePools(conn);
if (numOfStoragePools == -1)
ShowError("Unable to get the number of storage pools");
string[] storagePoolsNames = new string[numOfStoragePools];
int listStoragePools = virConnect.ListStoragePools(conn, ref
storagePoolsNames, numOfStoragePools);
if (listStoragePools == -1)
ShowError("Unable to list storage pools");
foreach (string storagePoolName in storagePoolsNames)
lbStoragePool.Items.Add(storagePoolName);
}
else
{
ShowError("Unable to connect");
}
}
private void ShowError(string message)
{
MessageBox.Show(message, "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
Also, the xls has some little change, you'll find the update joined to this
email.
Regards,
Arnaud
--------------------------------------------------
From: <arnaud.champion at devatom.fr>
Sent: Tuesday, October 19, 2010 9:59 PM
To: "Justin Clift" <jclift at redhat.com>
Cc: "Libvirt Developers Mailing List" <libvir-list at redhat.com>
Subject: Re: [libvirt] C# bindings (Was: First patch)
> ?Well, I can make a little sample, with virConnectOpen instead of
> virConnectOpenAuth, because virConnectOpenAuth cannot work without
> callback handling, that's why it's larger. But I will be tomorrow ;) it's
> time to sleep for me.
>
> --------------------------------------------------
> From: "Justin Clift" <jclift at redhat.com>
> Sent: Tuesday, October 19, 2010 9:46 PM
> To: "Arnaud Champion" <arnaud.champion at devatom.fr>
> Cc: "Libvirt Developers Mailing List" <libvir-list at redhat.com>
> Subject: Re: [libvirt] C# bindings (Was: First patch)
>
>> On 10/20/2010 05:08 AM, Justin Clift wrote:
>>> On 10/20/2010 04:57 AM, Eric Blake wrote:
>>> <snip>
>>>>> Ok, how's this?
>>>>>
>>>>> http://justinclift.fedorapeople.org/csharp/csharp.html
>>>>
>>>> Can we also include a sample program using the bindings, as is done in
>>>> http://justinclift.fedorapeople.org/csharp/python.html and
>>>> http://justinclift.fedorapeople.org/csharp/java.html?
>>>
>>> Good idea. Just added a space for one in the layout.
>>>
>>> Arnaud, would I be able to get an example program from you, for adding
>>> there? Is "virConnectOpenAuth" the correct kind of thing?
>>
>> Looked at the virConnectOpenAuth example (from Arnauds patches waiting
>> for review). It doesn't seem like a suitable example for the web page,
>> as the example code is a lot longer/larger than we'd like for this.
>>
>> Arnaud, do you have time to create an extremely simple example?
>>
>> Something that shows the very minimum needed. Sort of like this:
>> (I do not know C# at all though :>)
>>
>> using System;
>> using LibvirtBindings;
>>
>> // Fill a virConnectAuth structure
>> virConnectAuth auth = new virConnectAuth
>> {
>> cbdata = authData, // The authData structure
>> cb = AuthCallback, // the method called by callbacks
>> CredTypes = new[]
>> {
>> // The list of credentials types
>> virConnectCredentialType.VIR_CRED_AUTHNAME,
>> virConnectCredentialType.VIR_CRED_PASSPHRASE
>> }
>> };
>>
>> // Request the connection
>> IntPtr conn = libVirt.virConnectOpenAuth(tbURI.Text, ref auth, 0);
>>
>> // Get the pointer to the domain
>> string domainName = new string "MyGuest";
>> IntPtr domainPtr = libVirt.virDomainLookupByName(conn, domainName);
>>
>> // Start the domain
>> Int something = libVirt.virDomainCreate(domainPtr);
>>
>> // Close the connection
>> libVirt.virConnectClose(conn);
>>
>> ?
>>
>> Regards and best wishes,
>>
>> Justin Clift
>>
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Bindings progress 20101020.xls
Type: application/vnd.ms-excel
Size: 55808 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20101020/c0b7a46a/attachment-0001.xls>
More information about the libvir-list
mailing list