| Version: | 1.1 |
|---|---|
| Author: | Ivan R. Judson <judson@mcs.anl.gov> |
| Status: | Draft |
This document proposes design modifications to the existing Core Toolkit Design to make it easier to support on the existing platforms, and port to new platforms. These changes involve identifying the use of platform specific interfaces, and encapsulating all uses in a platform specific module.
In order to create a simple platform strategy, a few things need to be done. Most of the work is in refactoring, abstracting, creating facades, and structuring modules in a coherent way. The specific tasks involved are enumerated here, by module (all of these contain platform specific or platform tailored code):
NetUtilities.py, NetUtilitiesLinux.py, NetUtilitiesWin32.py
Platform.py
ProcessManager.py, ProcessManagerUnix.py, ProcessManagerWin32.py
PersonalNode.py, PersonalNodePipes.py, PersonalNodeWin32.py
CertificateManager.py
- This is only in the cert_locations stuff, which should be abstracted?
DataStoreClient.py
- the function/method pageFile is platform specific, so should be moved.
VenueClientUIClasses.py
- wx bug
- path handling
- Network Init (should be moved, or fixed with initialization stuff)
RoleAuthorization.py
- tree list control hacks for platform bugs, sigh
Utilities.py
- auto bug reporter
The model would generally be to have a single file for each platform, named by platform, in the AccessGrid.Platform directory. The __init__.py file would do the appropriate direction on a per-execution basis. This would mean that all AccessGrid.Platform.*.py files would be installed on all platforms. There is no special handling necessary.
First we would refactor the code to combine theses files:
Linux.py
- parts of Platform.py
- ProcessManagerUnix.py
- PersonalNodePipes.py
- the network initialization parts of VenueClientUIClasses.py
- NetUtilitiesLinux.py
Win32.py
- parts of Platform.py
- ProcessManagerWin32.py
- PersonalNodeWin32.py
- the network initialization parts of VenueClientUIClasses.py
- NetUtilitiesWin32.py
Resulting use of these interfaces should be cleaned up in the files identified above, with the exception of the CertificateManager.py file, which will be updated as part of the general core refactoring in support of using the latest pyGlobus and GT 2.4.3.
None, this set of modifications should in no way affect the security of the system.
The refactoring in this proposal should not affect the interoperability of the client with servers and services. This is an internal refactoring.
This document is Copyright 2003, The University of Chicago/Argonne National Laboratory.