pyGridWare : System Administrator's Guide

Introduction

This guide contains advanced configuration information for system administrators working with pyGridWare, the python WS-Core. It provides references to information on procedures typically performed by system administrators, including installation, configuring, deploying, and testing the installation.

Dependencies

Building and installing

Untar tarball or grab cvs source, run pyGridWare distutils setup script, optionally regenerate all bindings.
  1. Untar tarball or grab cvs source
    1. %tar zxf pyGridWare-1.04b.tar.gz

    2. %cvs -d :pserver:anonymous@portnoy.lbl.gov:/home/portnoy/u5/repository co login
      %cvs -d :pserver:anonymous@portnoy.lbl.gov:/home/portnoy/u5/repository co pyGridWare

  2. Change directory
    %cd pyGridWare

  3. Run distutils
    %python setup.py --regenerate install

If you want Message Level Security build the gt2 libraries with a threaded flavor. You can install any gt3 all source installer bundles. Directions for installing gt3.2 can be found here.

To build pyGlobus:
  1. Set the environment variables:
    GLOBUS_LOCATION and GPT_LOCATION to the installation of the globus installation.

  2. Run the pyGlobus distutils setup script
    %python setup.py install

Configuring

There are two configuration files.

  1. pyGridWare/config.txt
  2. Read by the distutils setup script when "regenerate" is specified. This is where all service WSDLs are specified, when setup is run bindings will be created automatically.

    [WSDL]
    CounterService = share/schema/core/samples/counter/counter_service.wsdl

  3. pyGridWare/bin/config.txt
  4. Configuration parameters for logging, security, container location, and service paths. This file needs to be in the directory you're executing the client and/or server from.

Deploying

Run container script

  1. Change to bin directory
    %cd bin

  2. edit server-config.tac: add or remove resources

  3. def GetResource(contextFactory=None):
        root = Resource()
        root.putChild('wsrf', Resource())

        resource = Resource()
        root.getStaticEntity('wsrf').putChild('services', resource)

        resource.putChild('CounterService', Counter(post='/wsrf/services/CounterService'))

  4. Run start container script
    %./start-container.sh

Testing

Security considerations

Individual services can be configured with or without message security, but transport security is a characteristic of the entire container (either use ssl or plain tcp). Authentication and authorization of clients is performed using a callback mechanism.

  1. Transport Security
  2. Simply edit the "config.txt" where the executable is being run and turn-on ssl. By default pyGridWare will look in the user's home directory for the ".globus/usercert.pem" and ".globus/userkey.pem" files. To use the grid proxy generated by "grid-proxy-init" just specify the "/tmp/x509***" as the certfile and keyfile.

    Example pyGridWare/bin/config.txt
    [security]
    ssl = 1
    certfile =
    keyfile =

Troubleshooting

  1. Make sure all dependencies are met.

  2. building and installing problems
    1. python-2.3 problems
      Recently discovered a problem running the distutils --regenerate that is caused by a bug in "urllib.basejoin". This is fixed in python2.4. ZSI needs to be patched to fix this problem in python-2.3.