[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] C# bindings (Was: First patch)



?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 devatom fr>
*   Jaromír Cervenka <cervajz 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 devatom fr>
Sent: Tuesday, October 19, 2010 9:59 PM
To: "Justin Clift" <jclift redhat com>
Cc: "Libvirt Developers Mailing List" <libvir-list 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 redhat com>
Sent: Tuesday, October 19, 2010 9:46 PM
To: "Arnaud Champion" <arnaud champion devatom fr>
Cc: "Libvirt Developers Mailing List" <libvir-list 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 redhat com
https://www.redhat.com/mailman/listinfo/libvir-list

Attachment: Bindings progress 20101020.xls
Description: MS-Excel spreadsheet


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]