sam_common_pylib: The common python library for SAM, introduced at the V5_1_1 db schema change. v8_4_3: - Built with omniORB v4_1_2 and python v2_4_5 v8_4_2: - The SamDataFile type was being converted to the wrong Corba struct type (to a DataFileAttributesStruct instead of a SamDataFileStruct). They have the same definition, and apparently omniORB doesn't check the type. Apart from concerns of type safety, this made SamDataFile objects uncopyable. - Added SamFile.SamMetadataImports module, which imports all the classes needed to declare metadata in one place. - Change SamStructDocumenter to skip documenting files which don't define a class with the sam name as the file v8_4_1: - Improve client side exception handling: add retries for bad db connections and improve the exception messages. v8_4_0: - Added new request states: finished, hold-partial, hold-pending - Cleanup: remove various 'exec' statements from the code. v8_3_0: - Rebuilt with v8_3 of sam_idl_pylib. v8_2_0: - New feature added to reconstruction request handlers for D0 reprocessing. (idl change) - Fix yet another dubious type check, this time in SamUtility/DictFormatter.py v8_1_0: - Reduce the memory consumption of some of the file struct objects by moving some variables from instance to class members. - Improve the thread safety of the servant proxy objects. Now the proxy manager will give each thread its own proxies which are safe to use simultaneously. - Change constructor of SamStruct.Params to make it behave consistently when initialized with a dictionary - Add SamStruct.DataFilePhysicalAttributesSummary class - Fix SamIdlStructWrapperBase to work as a new style class - Rebuild with python 2.4.4, omniORB v4_1_0. v8_0_0: - Rebuilt to use python 2.4.2. v7_7_1: - Modified GarbageCollector to (1) stop it from running under debug mode, (2) allow it to run at its default timing unless setCollectRate() is greater then 1, (3) fixed its singleton nature to be a proper threaded singleton with approiate locks. v7_7_0: - Make RawEventInfo convert trigger masks passed as numbers into a hex string, and validate string inputs to check that they are convertable to hex. - Rewrite ExecProcess (the old version was producing some strange errors when many processes were run simultaneously from separate threads. - Add a function to CommonUtility to calculate a file CRC value without needing ecrc - Fix adding and subtracting months in SamTime with python 2.4 - Rebuilt with v7_7 of sam_idl_pylib. v7_6_0: - Improved method for getting sampy version number from clients (old way didn't work when frozen release was used with external python interpreter) - Changed dbglog methods to do test if in DEBUG mode before the statment is executed. omniORB has added __repr__ methods to its generated classes causing str() to take forever on large structures. - Rebuilt with v7_6 of sam_idl_pylib. v7_5_0: - Change ExecSubprocess to use poll() instead of select(), and catch errors when reading from file descriptors to try and ensure that the child process is always waited on and doesn't become a zombie - SamUserIdentifier.getUserProxy() now retrieves user subject with -identity flag, since previous implementation caused problems with new globus delegated proxies. - Modify to work with omniORB v4_0_7. (The base class of CORBA structs changed, and SAMToSamStructCodeGenerator relies on this undocumented behaviour in omniORB. Please note that this is a workaround, not a fix: it is still relying on undocumented behaviour and may break again in the future.) - Fix doc generator to produce command name in correct case (so samadmin not samAdmin) - Remove some of the assumptions that all class instances have instance type. (No longer necessarily true in python 2.4, may not be true at all in future versions. There's still plenty of this sort of thing in the code) - If CLI output is an empty string supress printing it (to avoid printing an empty line) - Added SamSystemData to obtain system current process/user data once. Added its use to DbServantConnectionIdentifier. (IT-1629) - Rebuilt with v7_5 of sam_idl_pylib. v7_4_5: - Modify CommandInterface to work with newer python versions - Removed the singleton nature of the class DictFormatter.py as it was not thread safe, caused sparse log files and didn't need to be a singleton. - Remove some of the complications in SamUpsMgr (made possible because new versions of sampy can read code from std input). Also fix it so it updates the environment properly, which allows the environment propogation hack in ExecSubprocess to be removed v7_4_0: - rebuilt to use v7_4_0 of sam_idl_pylib v7_3_3: - Fixes for checkGridProxy in SamUserIdentifier v7_3_2: - modify SamSize to accept exponential format floats (in fact, anything that can be converted to a float) as string inputs. This is useful when the number gets large enough (~1e12) that the string conversion goes to exponential form. v7_3_1: - add public method getCommandInterface to BlessedCommandInterfacePlaceholder to get the actual (instantiated) interface. - SamStruct/DbServantConnectionIdentifier: if sys.argv[0] is blank (as it is when somebody is running an interactive sampy session), use sys.executable to get the name of the image being run, so that the dbserver info on the remote end says "sampy_va_b_c" rather than "_va_b_c" without any application name. v7_3_0: - build against sam_idl_pylib v7_3_0 for access to new methods v7_2_5: - fix bug that showed up while cleaning up build scripts for sam as a frozen package: the code blesser must write out the import of "DataType" as part of the header. v7_2_4: - add __repr__ methods for all SamStruct/*.py, SamDimensionStruct/*.py struct wrappers so that the stringified representation can be used to create a new object (useful for the information service and for web service). Add tests of recreation from repr() to all selftests. NOTE, the client code will need to import the appropriate underlying classes used in recreating the object!!! For example, if the stringified representation looks like the following: x = DerivedDetectorFile({ 'fileName' : 'sample_derived_detector_file', 'fileId' : 0L, 'fileType' : 'derivedDetector', 'fileFormat' : 'dspack', 'fileSize' : SamSize('336.06MB'), 'crc' : CRC('743552779L', 'adler 32 crc type'), 'fileContentStatus' : 'unknown', 'eventCount' : 1974L, 'dataTier' : 'reconstructed', 'firstEvent' : 36556768L, 'lastEvent' : 36614389L, 'processId' : 3028031L, 'group' : 'dzero', 'parents' : NameOrIdList(['all_0000188743_044.raw']), 'datastream' : 'zero_bias', 'startTime' : SamTime(1123011654.09), 'runDescriptorList' : RunDescriptorList([RunDescriptor(runType='physics data taking', runNumber=14380)]), }) then the client code must import all of the classes referenced in this stringified definition before an object can be recreated: from SamFile.SamDataFile import DerivedDetectorFile from SamStruct.DerivedDetectorFile import DerivedDetectorFile from SamStruct.SamSize import SamSize from SamStruct.CRC import CRC from SamStruct.NameOrIdList import NameOrIdList from SamStruct.SamTime import SamTime from SamStruct.RunDescriptorList import RunDescriptorList from SamStruct.RunDescriptor import RunDescriptor exec "myRealFileObject = %s" % repr(x) v7_2_3: - change the retry timing algorithm from a static N retries at M-second intervals to a more sophisticated scheme: --retryInterval = base retry --retryJitter = randomizer retryWaitTime = (retryCount*baseRetry) +/- random(retryJitter) - use the DbServantConnectionIdentifier.appArgs field to pass the sam version information ($__SAMPY_VERSION, set during the process of cutting a sam release). - fix time format for import_classes.v6_repr so that start/end time formats agree with sam_manager time formats (aka, use SAM.SamTimeFormat_DbDateTimeFormat). - fix bug in SamFile/SamDataFile where setPhysicalDatastream had the wrong signature. v7_2_1: - fix bug in CommandDocumenter that caused "Environment Defaults" to include environmental flags twice. - fix bug in ExceptionToUnixExitStatusConverter documentation so that no "Exceptions of interest" is listed unless there actually are exceptions of interest. v7_2_0: - add global command line environmental flag "-c" (using $SAM_PYAPI_AUTO_CLOSE_SERVANTS environmental variable) which will automatically close client servants after each method call if set to a boolean True value. - allow $SAM_DISABLE_CLOSE_SERVANT environmental variable to be set to a boolean value; if true, then any call to "proxy.closeServant" is a no-op. - recognize new ServantAlreadyClosed exception, raised by the dbserver when a client tries to re-use a servant that has been closed by by sam_db_srv but not yet deleted by CORBA. - add CORBA.UNKNOWN to the list of retriable exceptions; sometimes this happens for no real reason, and the next attempt will work just fine. - add data structures and proxies for ConvertExistingRequests requirements - bug fix in CommandDocumenter.py: do not document mutually exclusive options when there is only one cli option in the list (the others are api-only). This removes things such as Mutually Exclusive Options: --descriptionFile= OR where there are no other CLI options for the OR statement. - teach CommandSuiteDocumentationGenerator.py how to add named anchors for the documentation categories that it generates, so that others may use URLs such as http://d0db.fnal.gov/sam_pyapi/sam_CLI.html#samTransfer (the #samTransfer portion is the new part); then reference these named anchors in the index documents per category. v7_1_8: - Teach SamStructDocumenter how to add version information; modify GNUmakefiles so that the version being built/distributed shows in the documentation. - add setReturnWrappedData() method to the SamCorba proxies; by default we always unmarshal the return data structure, but this allows us to turn it off when desired (such as when we want to simulate a station restart). - bug fix in SamLegacy/TimeInterval.py __str__ method when timeInterval is less than 1 second. v7_1_7: - GnuPlot.py: make GnuPlotException a subclass of SamBaseException. v7_1_6: - Fix SamIdlStructWrapperBase.py marshal/unmarshal so that if the object is a SAM object already, and we are trying to marshal it, we just use the SAM object as is. Speedup bigtime for long lists! v7_1_5: - GnuPlot.py: raise an exception if plots cannot be generated - ExecSubprocess: set and export the environment for all commands. v7_1_4: - more fixes to SamUpsMgr, required because frozen sam no longer sets up python. Hence, we may not even have a functional python in our path, which is required for the ups v4_7_2 python setup module. Our SamUpsMgr no longer uses the ups.py from ups v4_7_2, it uses a modified copy that is smart enough to setup python if none is in the environment. v7_1_3: - fix bug in DictFormatter with global _DEPTH, causing massive amounts of whitespace in the CDF dbserver logs. - make sure that SamUpsMgr sets os.environ['PYTHONPATH'] so that ups.setup does not barf (frozen sam may not have any PYTHONPATH elements) v7_1_2: - add SamUtility/SamUpsMgr so that (e.g.,) GnuPlot can "setup gnuplot", "setup ximagetools" inside the python code if the commands "gnuplot" or "convert" are not in our path. v7_1_1: - add global "-t" option to all SamCommands - implement SamTimer, and SamTimer checkpoint calls at informative locations in the RetryHandler code. v7_1_0: - implement new DbServantConnectionInfoStruct_v2, DbServantConnectionInfoListStruct_v2 data structure wrappers (requires sam_idl_pylib v7_1_0) v7_0_2: - update CommandInterface tools to include environmental flags; teach SamCommandInterface about the global envFlag 's' = $SAM_PYAPI_RETRY_SILENTLY; teach SamCorba retry handlers to retry silently in the presence of "-s" or a boolean-true value of $SAM_PYAPI_RETRY_SILENTLY. v7_0_1: - update CommandSuiteDocumentationGenerator.py so that we can include the specific version when we generate the package documentation at build time. v7_0_0: - rebuild for freezing purposes. v6_8_0: - implement ORBoutConScanPeriod so that idle client-initiated connections are closed after a reasonable amount of time, freeing up valuable file descriptors. - default output format for SamTime instances is now set to UTC format - Add documentation (minimal, but automatically generated) for all SamStruct, SamStationStruct, SamDimensionStruct, and SamLegacyStruct objects. SamCommand.CommandDocumenter knows how to reference the documentation for these DataTypes. - MAJOR PERFORMANCE IMPROVEMENT FOR ALL SAM_COMMANDs: SamCommand/ rewrite to introduce the concept of a Blessed CommandDefinition. - NEW INTERFACE: RequestInterface. Add new proxy structures, also new Request-related wrappers. - NEW INTERFACE: RoleIdentifierInterface to the dbserver. Add new proxy structures. - INTERFACE CHANGE: move the deprecated Dimension-related data structures to the SamLegacyStruct directory (Dimension.py, DimensionValue.py, DimensionList.py, Constraint.py). - INTERFACE CHANGE: add SamDimensionStruct/DimensionDescription_v2.py, DimensionDescriptionList_v2.py per IDL change. - INTERFACE CHANGE: add all of the data structs for Requests, RequestHandlers, per v6_8 request interface. - bug fix: add SAM.MaxServantsExceeded (need this as well as the unmarshalled SamExceptions.MaxServantsExceeded) to RETRYABLE_EXCEPTIONS. - bug fix: GNUmakefile now really does work against either a checked-out release OR an installed release, and "does the right thing". v6_7_0_4: - fix typo in StationGroupAdminProxy, symptom "NameError: global name 'StationGroupAdmin' is not defined" v6_7_0_3: - fix: include ProjectNotFound in _RETRY_OVERRIDE_MAP_ for closeServant. v6_7_0_2: - SamCorba.StationProxy: fix the ConsumerProcessProxy, which had been untested until this point. - SamCorba.SamServerProxyRetryHandler: direct the notifications to stderr rather than stdout - SamCorba.StationProxy: add ProjectNotFound, ConsumerProcessNotFound, to list of override exceptions for closeServant so that we do not retry (and see excess messages) as we exit sam. - SamCorba.SamServerProxyManager: convert args to strings before using string.join to build internal dictionary (failed when we started using consumerProcessId which is not a string) - SamCommand.CommandDocumenter: sort options that take NO value before options that require a value for better readability. - SamCommand.CommandDefinition: do not learn options that are listed *only* as a requiredTypeOption, requiredValueOption, or synonymousOption (that is, they must also be listed separately as an allowed/required/env option). This allows developers to set up a great big synonym or dataType dict valid for the whole suite, but only documented for those commands which actually use the particular synonym/option. - SamUtility.SamHTMLgen.py: change SAM_MAIL_TO from sam-admin@fnal.gov to sam-design@fnal.gov. - INTERFACE CHANGE in sam_idl_pylib v6_8_0_0: SAM.None -> SAM.SamNone Prepare for it here by handling both cases. v6_7_0_1: (llc) - add set/getCorbaCallTimeout to proxies, for those cases when we know we want a short timeout (such as ping or dump). - add CORBA.COMM_FAILURE, CORBA.TRANSIENT to retry override map for DbServer proxies and all station-derived proxies - documentation: options that do not take a value (flags, etc.) are data type boolean, not the default 'string'. v6_7_0_0: (llc, Feb2005): - implement GLOBAL command line options for all SAM-derived commands (anything derived from SamCommand/SamCommandInterface, which is all of sam_user_pyapi, sam_admin_pyapi, and sam_mis_pyapi): 'd' is for debug 'v' is for verbose 'retryMaxCount' is for the CORBA retry handler 'retryInterval' is for the CORBA retry handler These are handled in the base class and do not need to be handled in each individual commandInterface instance. - LOTS of cleanup in the SamCorba/XXXProxy code, to a) teach the station-based interfaces about the retries that have been implemented for python-based clients b) implement and/or improve, for all clients: i) retry while getting initial servant (has been there for a long time) ii) retry *actual call* (but only marshal/unmarshal the args one time) (new) iii) use the *same* retry code (possibly with different configs) for handling createServant and useServant (see SamServerProxyRetryHandler.py) (is also new, duh) c) treat the servantFactory as just another servant when using it d) teach the SamServerProxyRetryHandler about cases when we *do* expect an otherwise retriable exception, and do NOT want to retry. (Example: in general, a CORBA.TRANSIENT exception is retriable. However, a successful call to the project interface shutdown will *also* generate a CORBA.TRANSIENT exception. We do NOT want to retry the shutdown when it worked successfully the first time). This is implemented via the SamServerProxy._RETRY_OVERRIDE_MAP_ dictionary. - add StagerProxy to SamCorba/StationProxy.py so that we can implement a "ping stager" interface (requested by Robert Illingworth). - remove the DEPRECATION_CHECK in the SamCommand utilities, which was there for the migration of sam_admin (and other sam utilities) to v6, which is now accomplished. (It was needed in the interim so that command interfaces that appended command line options externally could be used until the implementations migrated to using the now-supported "update" feature). - implement DefinitionDetailsList.py struct, new in sam_idl_pylib v6_7_0_0, for the listDefinition implementation. - add __cmp__ to SamStruct.SamSize.py for size comparisons. (Duh!) - rebuild against sam_idl_pylib v6_7_0_0 v6_6_1_0: (llc) - change default timeouts in proxy retries to go for 10 minutes (rather than just one minute) - build against sam_idl_pylib v6_6_1_0 (built against patched omniORB v4_0_5 release) v6_6_0_3: (llc) - fix typo in SamUtility/SamUserIdentifier.py code to check the time available on a gridProxy (code provided by Rod Walker) - add __long__ method to SamStruct/SnapshotVersion.py (fixes bug when using a specific snapshot version, rather than 'last' or 'new', as reported by Liz Buckley-Geer). v6_6_0_2: (llc) - fix SamCorba.SAMCorbaClient so that getOrb loops until an orb is actually returned. - minor format changes to some debugLog messages. v6_6_0_1: (llc) - minor changes to DimensionValue printing format, for use in debugging problems in sam_dimension_server_prototype v6_6_0_0: (llc) - rebuild against sam_idl_pylib v6_0_0_0 for new interfaces. v6_5_0_1: (llc) - change in the internals of SamUtility/MetadataRequirementHandler to add a DbAwareMetadataRequirementHandler, used by the sam_db_srv software when it creates file objects to return to the user. - cludgy fix in SamTime which will deal with creating SamTime objects with a format string including '(%Z)' on a non-solaris platform, but only in a VERY limited sense, specifically for systems in CST/CDT. (This fix is specifically to allow the "sammis netstat" command to work on non-Solaris nodes; it is only intended to be run at the on-site nodes, which are in CST/CDT; D0 runs its webservers on Solaris, but CDF does not, hence the fix for them; but it is cludgy...) v6_5_0_0: - INTERFACE change in getDbServantConnectionInfo, handled in SamStruct.DbServantConnectionInfo.py wrapper. - smarter garbage collection module for debugging - import_classes: add a v6_repr() method to the SamBaseFile class (which is THE base class for import_classes), so that we can construct a SamDataFile (v6 format) from the old descriptor files without users having to modify anything on their end. - MARSHALLING: Python longs can exceed the maximum of CORBA longs. If int(pythonLongValue) gives an overflow error, then CORBA will yield BAD_PARAM_python_value_out_of_range. Hence, fix marshalling of Any structures so that python longs that are too large actually marshal as CORBA unsigned long longs (SamCorba/SamIdlStructWrapperBase). - GnuPlot.py: do not make the thumbnails have a grey background, keep it white like the others. v6_4_0_2: - Major release number change due to IDL change - Changed selftests to reflect that workgroup is now always a required metadata parameter - add SamFile/testSamFile.py to auto-tested suite; hence, test against a sam_db_srv (for validating metadata) rather than a generic sam_server_pylib (which cannot validate the metadata) - SamUtility.GarbageCollector returns a string (rather than printing it) - minor bug fixes in proxy instantiation v6_4_0_1: - fix bug when CORBA.BAD_PARAM was raised when marshalling arguments in SamCorba.SamClientArgMarshaller - add knowledge of sam_pnfs_srv package to SamCorba.SamIdlStructWrapperBase, SamUtility/SamUnitTestRunner, SamServerProxyManager. - add SamUtility/GarbageCollector.py module to examine garbage in memory. v6_4_0_0 (sv): - major release number changed due to idl change v6_3_0_1 (sv): - changed exception wrapper generation to allow customized wrappers v6_3_0_0 (llc): - MAJOR reorganization: remove circular dependencies by adding a sam_server_pylib package; sam_common_pylib now uses the generic sam_server_pylib for 'gmake test' - add local default metadataAttributeDescriptor so that dbServer does not have to be available to create SamDataFile objects - clean up a lot of the metadataAttributeDescriptor logic, which was extremely messy - fix up more of the ProxyRetryHandler logic. b6_2_0_2 (llc): minor bug fix upgrade with major impact -- lots of cleanup in the code where server connections are closed. - do not allow SamCommandInterface._cleanupProxies to raise exceptions, except for SystemExit and/or KeyboardInterrupt. - add RetryHandler logic to SamServerProxy. - BAD_UNIX_STATUS: change from the default of 1 to 127. It is just impossible to know, within the Command parsing tools, whether a status that you have is supposed to be a python status or a unix status; and 1 is the python GOOD status, but was the default unix BAD status; and passing status values up the stack through nested calls would just simply get confused. Hence, do not overload the meaning of 1: when we set a default bad unix exit status (such as when we cliDispatch a command and the implementation raises an unhandled exception), set the status to something that is "unique" and cannot be misinterpreted as a good python status. - fix SamLongList to accept input string of form '1,2,3,4,5' (for commandline parsing) b6_2_0_1 (llc): - add tests for unixExitStatus to SamCommand/testCommandInterface.py. - move handleException() method from SamCommandInterface to base class CommandInterface (bug fix) - add pollFrequencyInSeconds to ProcessMemoryMonitor.py, return cached info between polling; pass in a pid at initialization so that we always monitor the same (master) pid - bug fix: export GOOD_PYTHON_STATUS, BAD_PYTHON_STATUS from SamCommandInterface - bug fix: fix setting self.debug in CommandInterface so that traceback shows up again when debug flag is set. - bug fix: manually unmarshal SAM.MaxServantsExceeded, SAM.InternalException if raised by createServant call in SamServerProxy when calling the factory. b6_2_0_0 (llc): - add SamUtility/ProcessMemoryMonitor.py, containing a class which can be called to print out the current virtual memory usage (help find leaks) - add getWorkGroup methods to DataFileAttributes - add defaultValue of None (but ability to override) to "get" method of DataFilePhysicalAttributes (and hence all derived classes) - add __cmp__ method to NameOrId so that you can compare with strings, ints, etc. - add ExceptionToUnixExitStatusConverter.py, implement appropriate calls in the SamCommand dispatch suites and in the SamException handling, so that we have the capability of adding exception -> unix exit status maps to various interactive sam commands. (Say "thank you", Stefan). - update SamLegacyStruct/TimeInterval.py to allow units of 's', 'm', 'h', 'd', 'w', 'y' - add AutoDest structures for new AutoDest implementation. - add __init__.py file to SamStationStruct directory, so that modules from here can be imported (symptom was broken mapping in SAMToSamStruct for SAMStation.Status) - bug fix for time.strptime/time.mktime inconsistency with DST flag (see internal code for details); also add ability to format in UTC or GMT time (new gmtime method) and intelligence to notice if the self.formatString looks like a GMT/UTC format string so that we can force the use of gmtime. b6_1_1_3 (llc, sv): sv: no notes, emergency release for CDF, something about setting an environmental variable to determine the username? llc: The MAJOR new feature in this release is that developers can check out sam_common_pylib (and necessary requirements), build it, and test it, from ONE WINDOW, using "gmake test". - move SAMStation.Status wrapper from SamStruct to SamStationStruct/SamStationStatus, to avoid namespace collisions with the SAM.Status (in SamLegacyStruct). - add SamStationStruct directory to test suite, SAMToSamStructCodeGenerator, etc. - fix all selftests so that they actually exit with the appropriate status - add SamUnitTestRunner.py, called from top-level makefile, to automatically start a dbserver against which the tests are run (no more two window testing!) - include all non-CVS files in the tarball distribution (code stolen shamelessly from upd source) - fix bug in SamLegacyStruct/Status.py initialization code - SamSize.py: allow for input format of "NoneKB" (etc.), so that queries from the database where the fileSize is None (or the sum of file sizes, whatever) do not cause total barfing. b6_1_1_2 (llc): - bug in SamTime: when time is NULL, the byFormat method was busted. Now fixed. b6_1_1_1 (llc): - print startTime, endTime in long format for ProjectInfo. b6_1_1_0 (llc): - rebuild against the b6_1_1_0 interfaces (where sam_dimension_server interfaces changed a tad) - SamTime(None) now sets the self.secondsAsString to "NULL" rather than the previous default of today. Station can use this to determine if the db endTime for a particular column was not set. - AutodestMap.py now prints correctly. b6_1_0_0 (llc): - rebuild against the b6_1_0_0 interfaces. b6_0_1_2 (llc): - change default cliProcessResults (SamCommand.CommandInterface) so that status values of 0/1 are not printed if that's the only result there is. b6_0_1_1 (llc): - add SamProjectDefinitionDimension[List] structures for SqlBuilder breakoff. b6_0_1_0: (llc) - add __getitem__ method to SamStruct.SamList so that we always pull out the pyRepr() of the underlying object, not its "Any" representation. This should fix the problems of conversions between Any and the actual string/int underneath. - add __setitem__ method to SamStruct.SamList to make sure that inserting into the list performs the correct conversion - add __hash__ and __nonzero__ methods for class SamStruct.Any. This may not be enough to fix the problem, which is that the underlying object in an unmarshalled SamList is an Any, not the "string" or "int" underneath. But we can hope... - use SAM.SamCorba_MaxMessageSize constant when obtaining the orb; requires sam_idl_pylib b6_0_1_0 or greater, hence the change in release sequence to b6_0_1_x for sam_common_pylib. - add DimensionsTestInterface to SamCorba/DbServerProxy known proxies - add ValueError, TypeError to KeyError when summing values in GnuPlot.py (SamUtility), so that if "None" is passed we don't barf. b6_0_0_14: (llc) - fix bug in SamCommand/CommandInterface: station proxies have no closeServant method - performance improvements in list creation, existing instance creation; general code cleanup in SamCorba/SamIdlStructWrapperBase.py b6_0_0_13: (llc) - lots of cleanup of catch-all "except:" clauses, which interfere with CTRL/C and other things - GnuPlot: add timestamp to logMsg; log only if verbose b6_0_0_12: (llc) - SamCorba/SamIdlStructWrapperBase: minor bug fix when catching SamExceptions.ArgumentError b6_0_0_11: (llc) - SamCorba/SAMCorbaClient: add OMNI-SPECIFIC maxMsgSize arguments so that we can receive messages that are as big as the DbServer can send. - clean up some of the generic "except:" catch-all handling in SamIdlStructWrapperBase. b6_0_0_10: (llc) - new ExecSubprocess, contributed and tested by Robert Illingworth. - all previous ExecSubprocess incarnations (and there have been many) are subject to problems when stdout or stderr buffers get too large -- process hangs. Robert has fixed this problem with the current implementation (tested via the analyzeMasterLog.py script from sam_maintenance_tools, which was hanging due to this problem). b6_0_0_9: (llc): - add general dispatch methods to SamCommand objects so that they can all dispatch appropriately b6_0_0_8: (llc) - fix syntax for volume, offset info in ReplicaLocationFullPathOrId; other bug fixes and typos corrected b6_0_0_7: (llc) - fix exit status bug reported by Robert Illingworth for invalid commands. b6_0_0_6: (llc) - stupid typing error. b6_0_0_5: (llc) - fix bug in SamLegacyStruct/TimeInterval which was not correctly parsing the input args as passed by sam run project (aka sam submit). b6_0_0_4: (llc) - add PhysicalFileMetadata structs, bug fixes. b6_0_0_3: (llc) - add implementationModuleList to kwargs allowed for SamCommand/CommandInterfaceSuite initialization. b6_0_0_2: (llc) - fix SamStruct/LumBlockRange (unsigned long long) b6_0_0_1: (llc) - fix GNUmakefile to include www directory and corresponding documentation - add this file b6_0_0_0: (llc) initial release.