[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Re: [resend] [PATCH] [XS-TEST] Support for Xen-API authenticated session
xen-devel-bounces@xxxxxxxxxxxxxxxxxxx wrote on 12/27/2006 11:09:46 AM: > On Tue, Dec 26, 2006 at 08:41:30AM -0500, Stefan Berger wrote: > > > Ewan Mellor <ewan@xxxxxxxxxxxxx> wrote on 12/23/2006 07:45:04 AM: > > > > > On Thu, Dec 21, 2006 at 03:38:21PM -0500, Stefan Berger wrote: > > > > > > > I am adding a tool 'xapi-setup.py' to the xm-test suite for being able > > > > to setup authentication credentials needed for automatically running > > > > Xen-API - related tests. The username and password information is > > stored > > > > in cleartext in lib/XmTestLib/xapi_auth.py. > > > > In the one test using the Xen-API I add another check for availability > > > > of the python PAM module. The test is skipped if the module is not > > > > available on the system. > > > > > > > > Signed-off-by: Stefan Berger <stefanb@xxxxxxxxxx> > > > > > > Ah, sorry, I'd forgotten about this one. > > > > > > There is now a configuration file for xm (see > > > tools/examples/xm-config.xml) so would it make sense to pull the > > > username and password from there? If you look at xen/xm/main.py, > > > > I had not seen this file, but it seems not to be copied into /etc/xen/ by > > default. > > No, it doesn't go in by default at the moment, because it arrived quite late > in the 3.0.4 run-up, so I decided not to activate it by default. Sorry that > you'd missed it. I'm going to change the Makefile in unstable now so that it > gets put in there by default. On my system I had quite a few problems when I copied the xm-config.xml file to /etc/xen. Probably you should change its contents so it does not use Xen-API by default, yet, since for example Fedora core installs don't come with a pyhton PAM module - at least I could not find it and many others might not have installed the package, either. The patch I sent before was due to me trying to create a VM using the Xen_API and the ramdisk not becoming available. So I think there is a need for testing the raw Xen-API as well. I wrote a basic test case for this and put it into a new directory tests/xapi into the xm-test suite. > > > Would it be ok for now if I adapted the XML format and have > > xapi.py try to get username/password from the xm-config.xml file first and > > if it does not exist read the file created by the tool that I add to the > > xm test suite (xapi-setup.py) ? > > You could if you want to, but you'll have a lot less code to write if you just > import the relevant bits from xm: > > ~ # python > Python 2.4.4 (#2, Oct 19 2006, 23:03:48) > [GCC 4.1.2 20061007 (prerelease) (Debian 4.1.1-16)] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import sys > >>> sys.path.append('/usr/lib/python') > >>> import xen.xm.main > >>> xen.xm.main.serverType > u'Xen-API' > >>> xen.xm.main.serverURI > u'http://localhost:9363/' > >>> xen.xm.main.parseAuthentication() > (u'ewan', u'letmein') > > > Connecting to the server should be a lot easier now too: > > >>> from xen.xm import XenAPI > >>> session = XenAPI.Session(xen.xm.main.serverURI) > >>> session.login_with_password(*xen.xm.main.parseAuthentication()) > >>> session.xenapi.VM.get_all() > ['00000000-0000-0000-0000-000000000000', > '2f8dada9-387c-d981-0e51-6f5e2732d752', > '53a01d42-c8c8-e561-6939-e2bc750454f7'] Thanks. This is helpful for raw xen-api testing. > > > It would be best, I think, if xm-test shares those bits of code with xm. > > It's possible that xm-test doesn't need that code at all, in the long run, > because it ought to be able to drive xm from the outside (that's the whole > point of xm-test after all -- its an end-to-end test). What you seem to be I understand, but functionality of xm will likely not cover the whole xen-api and so I think that separate tests for the raw xen-api can be useful. > writing is tests for the API, but that don't test xm itself. That'sgreat, if > xm itself will never have the bits of functionality under test. The plan is > for xm to move over to using the new API throughout, so for the majority of > the functionality, we ought to be doing the full end-to-end test, and prodding > xm from the outside, rather than using ServerProxy. > > Coverage from both aspects -- the raw API and the xm-sanitised version -- > would be best, of course, but we're already struggling to get enough people > writing tests, so it'd be best to concentrate on the end-to-end tests for now. Agreed. Stefan > > Ewan. > > > > > > Stefan > > > there's code for parsing the config file, and also for using the XenAPI > > > session manager and server proxy -- you ought to be able to import that > > > code now rather than using ServerProxy, and then there will be less for > > > xapi.py to do, because it will be sharing with xm. > > > > > > Cheers, > > > > > > Ewan. > > > > > > > Index: root/xen-unstable.hg/tools/xm-test/lib/XmTestLib/xapi.py > > > > =================================================================== > > > > --- root.orig/xen-unstable.hg/tools/xm-test/lib/XmTestLib/xapi.py > > > > +++ root/xen-unstable.hg/tools/xm-test/lib/XmTestLib/xapi.py > > > > @@ -24,9 +24,6 @@ from xen.util.xmlrpclib2 import ServerPr > > > > from types import DictType > > > > > > > > > > > > -XAPI_DEFAULT_LOGIN = " " > > > > -XAPI_DEFAULT_PASSWORD = " " > > > > - > > > > class XenAPIError(Exception): > > > > pass > > > > > > > > @@ -58,8 +55,12 @@ def _connect(*args): > > > > global _server, _session, _initialised > > > > if not _initialised: > > > > _server = ServerProxy('httpu:///var/run/xend/xen-api.sock') > > > > - login = XAPI_DEFAULT_LOGIN > > > > - password = XAPI_DEFAULT_PASSWORD > > > > + try: > > > > + from XmTestLib import xapi_auth > > > > + except: > > > > + FAIL("Missing Xen-API credentials. Run xapi-setup.py!") > > > > + login = xapi_auth.XAPI_DEFAULT_LOGIN > > > > + password = xapi_auth.XAPI_DEFAULT_PASSWORD > > > > creds = (login, password) > > > > _session = execute(_server.session.login_with_password, > > *creds) > > > > _initialised = True > > > > Index: root/xen-unstable.hg/tools/xm-test/tests/vtpm/09_vtpm-xapi.py > > > > =================================================================== > > > > --- root.orig/xen-unstable.hg/tools/xm-test/tests/vtpm/09_vtpm-xapi.py > > > > +++ root/xen-unstable.hg/tools/xm-test/tests/vtpm/09_vtpm-xapi.py > > > > @@ -68,6 +68,10 @@ def do_test(): > > > > domain.destroy() > > > > > > > > > > > > +try: > > > > + import PAM > > > > +except ImportError: > > > > + SKIP("Skipping test. Python-PAM module not found.") > > > > > > > > try: > > > > do_test() > > > > Index: root/xen-unstable.hg/tools/xm-test/xapi-setup.py > > > > =================================================================== > > > > --- /dev/null > > > > +++ root/xen-unstable.hg/tools/xm-test/xapi-setup.py > > > > @@ -0,0 +1,41 @@ > > > > +#!/usr/bin/python > > > > +import sys as sys > > > > +import getpass as getpass > > > > + > > > > +XAPI_AUTH_FILE = "xapi_auth.py" > > > > +XAPI_AUTH_PATH = "./lib/XmTestLib/" > > > > +XAPI_FILE = XAPI_AUTH_PATH + XAPI_AUTH_FILE > > > > + > > > > +def usage(): > > > > + print "Usage: xapi-setup.py [<username>] [<password>]\n\n" \ > > > > + "Tool to setup the xm-test suite for being able to use > > > the Xen-API\n" \ > > > > + "with authenticated sessions. Username and password are > > > stored in\n" \ > > > > + "cleartext in %s.\n" % XAPI_FILE > > > > + > > > > +def main(): > > > > + if (len(sys.argv) >= 2) and sys.argv[1] == "-?": > > > > + usage() > > > > + sys.exit(0) > > > > + print "Enter username and password for usage with Xen-API:\n" > > > > + if (len(sys.argv) >=2 ): > > > > + username = sys.argv[1] > > > > + print "Login: %s" % username > > > > + else: > > > > + username = rawinput("Login: ") > > > > + if (len(sys.argv) >= 3 ): > > > > + password = sys.argv[2] > > > > + print "Password: <given>" > > > > + else: > > > > + password = getpass.getpass() > > > > + f = open(XAPI_FILE, "w") > > > > + if f: > > > > + f.write("# File was created by xapi-setup.py.\n" > > > > + "XAPI_DEFAULT_LOGIN = \"%s\"\n" > > > > + "XAPI_DEFAULT_PASSWORD = \"%s\"\n" > > > > + % (username, password)) > > > > + f.close() > > > > + else: > > > > + print("Could not open file %s for writing." % XAPI_FILE) > > > > + > > > > +if __name__ == "__main__": > > > > + sys.exit(main()) > > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |