[Libvir] PATCH: 7/10: python auth callback API
Daniel P. Berrange
berrange at redhat.com
Wed Dec 5 19:16:41 UTC 2007
On Tue, Dec 04, 2007 at 10:10:28PM +0100, Jim Meyering wrote:
> "Daniel P. Berrange" <berrange at redhat.com> wrote:
> > This adds a binding for the virConnectOpenAuth() api in the python
> > API. This allows a python function to be used as the callback.
> >
> > This short example code illustrates the use of the API from a
> > python app which wants to support username/password credentials
> > only.
> >
> > from getpass import getpass
> > mydata = "Hello"
> >
> > def getCred(creds, data):
> > print "yes"
> > print str(creds)
> > for cred in creds:
> > print cred[1] + ": ",
> > if cred[0] == libvirt.VIR_CRED_AUTHNAME:
> > data = sys.stdin.readline()
> > data = data[0:len(data)-1]
> > cred[4] = data
> > elif cred[0] == libvirt.VIR_CRED_PASSPHRASE:
> > cred[4] = getpass("")
> > else:
> > return -1
> > return 0
> >
> > uri = "qemu+tcp://localhost/system"
> > conn = libvirt.openAuth(uri,
> > [[libvirt.VIR_CRED_AUTHNAME, libvirt.VIR_CRED_PASSPHRASE],
> > getCred,
> > mydata], 0)
> >
> >
> > print str(conn.listDefinedDomains())
>
> Nice.
> One nit:
>
> > diff -r 8a79678f789f python/libvir.c
> > --- a/python/libvir.c Wed Nov 28 23:01:30 2007 -0500
> > +++ b/python/libvir.c Wed Nov 28 23:29:40 2007 -0500
> ...
> > +static PyObject *
> > +libvirt_virConnectOpenAuth(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
> ...
> > + auth.ncredtype = PyList_Size(pycredtype);
> > + if (auth.ncredtype) {
> > + int i;
> > + auth.credtype = malloc(sizeof(int) * auth.ncredtype);
>
> Check for malloc failure:
>
> if (!auth.credtype)
> return NULL;
Committed with this fix included.
Regards,
Dan.
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules: http://search.cpan.org/~danberr/ -=|
|=- Projects: http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|
More information about the libvir-list
mailing list