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

[Xen-devel] Re: [resend] [PATCH] [XS-TEST] Support for Xen-API authenticated session



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,
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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.