pyARS - from python to ARS ########################## Changes in 1.8.2 (2015-03-08) ############################# - pyars.ars: Fixed a bug in all versions of ARSetActiveLink (thanks to an anonymous bug reporter) - pyars.cars: fixed a bug in the 1.8.1 distribution that contained all asserts for version 8.0 and 8.1. On linux, the asserts would fail and break pyars. This bug was reported by a couple of people. Changes in 1.8.1 (2014-07-18) ############################# - pyars.ars: Beginning support for 8.0.0 and 8.1.0 - pyars.erars: Beginning support for 8.0.0 and 8.1.0 - pyars.ars: It seems that ARGetListImage (when used with a 8.1.0 lib) gives an error. I need to look into this... Changes in 1.8.0 (2012-12-10) ############################# - pyars.cars: experimental support for 64bit (for 7.5 and higher). It works under Solaris and Windows, but crashes under Linux. I also had to change the way how the code detects 64bit mode (for Windows 64/32bit systems). - pyars.ars: changed the signature of ARMergeEntry by removing the last (optional) argument entryId. - pyars.erars: changed the signature of MergeEntry by removing the last (optional) argument entry. - pyars.erars: cleaned up the code and refactored all conversions of ARQualifierStruct into a new method conv2QualifierStruct (affecting GetEntryStatistics, GetListEntry, GetListEntryWithFields, GetListEntryBlocks - pyars.erars: ServiceEntry has received automatic conversion of pythonic arguments to C structures. - pyars.erars: GetOneEntryWithFields has received automatic conversion of pythonic arguments to C structures. - pyars.erars: introduced new conversion method convObjectChangeTimestampList2List. The method GetObjectChangeTimes now returns a pythonic list instead of the C structure. - pyars.erars: enhanced the conversion routines (conv2AR...): if they receive already a C structure of this type, they just return it again. This makes it simpler to write the calling functions - they don't have to check for the appropriate type. All conversion routines have appropriate tests as well. - pyars.erars: GetFieldTable will raise ARError in case of failures. - pyars.erars: GetAllFieldNames will raise ARError in case of failures. - pyars.tests: adapted all data structure tests for 64bit Changes in 1.7.2 (2012-06-21) ############################# - pyars.erars: changed convValueStruct2Value to cope with VIEW fields as well. In addition, if it hits an unknown value type, it will no longer simply return None, but raise an exception. - pyars.erars: changed the exception ARError so that it can take an optional parameter message text and message type; if they are set, they will be used for this exception, instead of the API status list. - pyars.erars: changed more methods to raise ARError exceptions instead of signalling errors just in errnr: GetListEntry and GetListEntryWithFields will raise ARError exceptions if the qualification cannot be built, the sort list or getlistfields could not be constructed or the search raised an error. - pyars.erars: GetEntryBlock and GetListEntryBlocks raise ARError exceptions. - pyars.erars: CreateEntry, GetEntry, GetMultipleEntries, MergeEntry, SetEntry, SetGetEntry raise ARError exceptions. - pyars.erars: GetListImage raises ARError exceptions. - pyars.erars: GetMultipleCharMenus now supports that you hand over a pythonic list of names of schemas to be retrieved. - pyars.erars: GetMultipleContainers now supports that you hand over a pythonic list of names of containers to be retrieved. - pyars.erars: GetMultipleEscalations now supports that you hand over a pythonic list of names of escalations to be retrieved (patch supplied by Bruno Piaui). - pyars.erars: GetMultipleFilters now supports that you hand over a pythonic list of names of filters to be retrieved (patch supplied by Bruno Piaui). - pyars.erars: GetMultipleImages now supports that you hand over a pythonic list of names of schemas to be retrieved. - pyars.erars: GetMultipleSchemas now supports that you hand over a pythonic list of names of schemas to be retrieved. - pyars.cars: enhanced the ars_const dictionary to resolve many more constants in 7.6.3 and 7.6.4. - pyars.ars_test: fixed a bug where a test would report a false positive under cygwin. Changes in 1.7.1 (2012-03-30) ############################# - pyars.erars: fixed a bug in GetMultipleActiveLinks which would not run with servers V7.5 or higher. I also changed the documentation of the default parameters so that they show False as their default setting. By changing to named parameters, it should be more resilient against future parameter changes. - pyars.erars: fixed a similar bug in GetMultipleSchemas which would not run with servers V7.6.03 or higher. By changing to named parameters, it should be more resilient against future parameter changes. - pars.erars: fixed GetMultipleEscalations to allow for more parameters (similarly to GetMultipleFilters -- thanx to a hint from Bruno Piaui). - erars_test: enhanced the tests to catch both bugs mentioned above - pyars.ars: I believe that redefinition of ARFilterStruct and ARFilterList for version 7.6.03 of the API was redundant; I have now commented it out, if no problems occur, I will remove it with the next release. Changes in 1.7.0 (2012-02-17) ############################# - pyars.cars: support cygwin (based on a patch supplied by Yves Jaeger). As on ordinary Windows systems, you can define the search path for the BMC libraries (the normal windows dlls) using the PATH environment variable; if pyARS should also search for the installation directory of user or admin tool (path information stored in the Windows registry), you need the `additional module cygwinreg `_ - pyars.cars: support later linux versions where sys.platform is now 'linux3'. - pyars.erars: made ARError more robust in case that the status list is empty. - pyars.erars: implemented remaining methods from 7.6: CreateActiveLink, CreateCharMenu, CreateEscalation, CreateField, CreateFilter, Export, GetMultipleFields, including undocumented Task functions. - pyars.erars.SetServerInfo: made this function more pythonic, based on a patch supplied by Sergey Klevtsov: Added a method named 'conv2ServerInfoList' which converts a pythonic dict/list/tuple into a cars ARServerInfoList struct. Modified erars.erARS.SetServerInfo to call this method before passing the argument on to ars. It is now possible to use it like this:: ars.SetServerInfo({cars.AR_SERVER_INFO_DEBUG_MODE: 2, cars.AR_SERVER_INFO_FILTER_LOG_FILE: '/opt/ar/remedy/db/filter.log'}) - ars.ARGetListImage: does not require a schemaList any more; it will then retrieve a list of all image names - erars.GetListImage: has been improved to be more pythonic version: you can now hand over lists, and will receive a list. - ars.ARGetImage: fixed a bug that made retrieving images impossible - pyars.ars: fixed a bug when printing out the path for non-windows OSes. - pyars._cars*.py: moved all of the asserts into their own test files in preparation supporting 64bit. The side effect is that startup of your normal python scripts is faster. - ars_test.py: fixed a crash when using 7.0 libs - ars_test.py: improved the test coverage - ars_test.py: fixed a test to make sure it will run on completely new installs as well. - ars_test.py: fixed a couple of places to make sure that it runs with Remedy 5.1 still. - pyars.ars: fixed a bug in ARGetSchema to run with Remedy 5.1. - pyars.cars: first steps for supporting 64bit libs (only started, does not work yet) - pyars.setup: cleaned up the setup file so that the docs and tests are now part of the package. They are now properly distributed in the source distribution (.zip file), but somehow fail to install properly. - documentation: Finally I have managed to complete the transition to the rst format and sphinx as the documentation generation tool. Also the template now matches my preferences. Changes in 1.6.0 (2011-12-05) ############################# - pyars.ars: Beginning support for 7.6.4 - pyars.erars: now supports python context managers (starting with Python 2.5); you can now write:: from pyars.erars import erARS with erARS('server:port', 'user', 'password') as ars: schemas=ars.GetListSchema() and it will make sure that at the end of the context manager, an ars.Logoff() will be executed. - pyars.erars: improved the exception handling of own exceptions. If you now raise ARError with a session object as a parameter, the exception will retrieve the error information from the session status list (similar to what ars.statusText() gives you). The limitation is that the exception will take info only from the first entry in this status list. - pyars.ars: changed the exception from NotImplemented to pyARSNotImplemented as NotImplemented is a reserved type. - pyars.cars: Following up on the change in naming conventions with AR7.6, I had to change the way, how pyars tries to load the shared libs. This time, the solution should be flexible enough for future ideas from BMC... - pyars.erars: GetMultipleActiveLinks now allows for a python list/tuple as parameter for nameList. - pyars.erars: GetEntry now returns a tuple (name, origSize, compSize) for attachment fields (if there is an attachment); the name will be returned as unicode if you are logged in with charSet='utf-8'. In addition, for coordinates, it now returns a list of (x, y) pairs. Basically the function convValueStruct2Value does this now properly. Changes in 1.5.0 (2010-12-24) ############################# - pyars.cmdb: following the documentation of changes in 7.5, I accidentally implemented the CMDB(Get, Set)MultipleInstances functions multiple times. Removed the redundancies. If you are running this against CMDB 7.5 or later, the return type changes from (cars.ARBooleanList, ccmdb.CMDBAttributeValueListList) to (ccmdb.ARBooleanList, ccmdb.CMDBAttributeValueListList). - pyars.ars: first step to support ARS 7.6.3 - pyars.ars: fixed a bug in ARDeleteFilter which would ignore the parameter deleteOption. - pyars.ars: changed the signature of ARMergeEntry; you can now define the entryId for this call. - pyars.erars: fixed a bug in MergeEntry; also changed the signature of MergeEntry; you can now define the entryId for this call. - pyars.erars: fixed a bug in conv2EntryIdList for joins of join forms (discovered by Giulio Galante). - pyars.cars: Thanx to a change in naming conventions with AR7.6, I had to change the way, pyars tries to load the shared libs. With this fix, I also changed the loading under Windows: So far, pyars.cars would immediately add the registry information about Remedy installations to the PATH environment variable. Now it first tries to load the different versions with the standard PATH environment, before adding the registry information and doing it all again. With this change, it's now possible to use the PATH environment variable to load a specific DLL (e.g. version 7.1) while you have installed a newer version of the User tool. - cmdb.CMDBGetMultipleInstances: datasetId is no longer an optional argument. - pyars.ars and pyars.erars: changed a couple of minor bugs identified by pylint - pyars.cmdb and pyars.ercmdb: changed a couple of minor bugs identified by pylint - erars.conv2EntryIdList: if entryid is a unicode string, try to convert it to plain ascii. - pyars.ars_test: fixed a couple of minor test bugs. Included a patch by Giulio Galante. - pyars now has experimental Linux support. If you want to test this, please contact me (axel at ergorion . com), as you have to patch your python interpreter currently (a very minor and trivial patch that allows a bigger alignment than is currently the system default). - documentation format has been changed from docbook xml to rst. I'm still fighting with the templates. - pyars.cmdb: following the documentation of changes in 7.5, I accidentally implemented the CMDB(Get, Set)MultipleInstances functions multiple times. Removed the redundancies. If you are running this against CMDB 7.5 or later, the return type changes from (cars.ARBooleanList, ccmdb.CMDBAttributeValueListList) to (ccmdb.ARBooleanList, ccmdb.CMDBAttributeValueListList). - cmdb.CMDBGetMultipleInstances: datasetId is no longer an optional argument. Changes in 1.4.5 (2010-02-24) ############################# - pyars.cmdb: implemented the new bulk instance functions from Atrium 7.5 (CMDBCreateMultipleInstances, CMDBDeleteMultipleInstances, CMDBGetMultipleInstances, CMDBSetMultipleInstances) - pyars.cmdb: implemented the graph query functions from Atrium 7.5: CMDBQueryByPath, CMDBGraphWalkBegin, CMDBGraphWalkNext, CMDBGraphWalkEnd. - pyars.cmdb: implemented a couple of undocumented functions from Atrium 7.5: CMDBCreateImpact, CMDBGetImpact, CMDBSetImpact, CMDBDeleteImpact, CMDBSetUserSessionGUID - provide many more cmdb.CMDB* functions as ercmdb.* counterparts and update many docstrings in the process - ercmdb.GetListClass: now returns a pythonic list of class names - cmdb: set default logging.LEVEL to INFO (the same it is in ars) - ercmdb.GetListInstance: now returns a very nice and pythonic result: (list of (instance id1, dict1 {attr: value, ...}), (instance id2, dict2), ... numMatches) - ercmdb.GetInstance: fixed a bug and changed the return value to a nice pythonic dictionary. - erARS.GetAllFieldNames: fixed a bug with a non-bound variable - erars_test: added a couple of test cases Changes in 1.4.0 (2010-01-29) ############################# - erars: introduced APIVersion(), GetControlStructFields(), GetFieldByName(), errstr() - erars.GetServerStatistics: changed the return type; it now automatically converts the ARServerInfoList to a dictionary. IF you need the old behaviour, please use ars.ARGetServerStatistics. - erars.GetServerInfo: changed the return type of from ARServerInfoList to a pythonic list, with all values already being converted into Python types; in addition, the parameter was made optional; if you don't hand over any specific info items, you will receive the full list. - erars.GetListGroup: changed return type from the low level C data structure ARGroupInfoList to python dictionary. If this change affects you, simply use the erars.ARGetListSQL with the same parameters. - erars.GetListSchemaWithAlias: changed return type from two lists ((list of schema names), (list of alias names) to a list of ((schema1, alias 1), (schema 2, alias 2), ...) - erars.GetListSQL: changed return type from ARValueListList to a pythonic list. If this change affects you, simply use the erars.ARGetListSQL with the same parameters. - fixed a bug in erars.GetFieldTable() - erars.GetCharMenu: fixed the documentation of the return value - erars: The following functions now support that you hand over either None, ARQualifierStruct or a string as a query parameter: GetEntryStatistics, GetListEntry, GetListEntryWithFields, GetListEntryBlocks - ars.GetCurrentServer(): renamed to ars.ARGetCurrentServer() and introduced erars.GetCurrentServer() to be more inline with naming conventions. - ars.AREncodeARAssignStruct: changed the return type to return the string value directly instead of the c_char_p to the string. - ars.AREncodeDiary: changed the return type to return the string value directly instead of the c_char_p to the string. - ars.AREncodeStatusHistory: changed the return type to return the string value directly instead of the c_char_p to the string. - enhanced the test suite - enhanced the tutorial Changes in 1.3.5 (2010-01-08) ############################# - updated & added all function definitions for CMDB API 2.1 - changed the definition of the default dataset for Atrium 7.5 and later from BMC_ASSET to BMC.ASSET. - pyars.cmdb: CMDBRunQualificationForCI did not have the parameter datasetId in version 2.0 of the API -- was removed there. - pyars.cmdb: CMDBExpandParametersForCI did not have the parameter datasetId in version 2.0 of the API -- was removed there. - first part to support CMDB API Version 7.5 and 7.6 implemented (the constants, but no changes to functions yet). - changed the structure of version checks for constructing the CMDB class heirarchy (brought it inline with how pyars.ars creates the class hierarchy). Did the same in pyars.erars. - moved the definition of CMDBClassStruct and CMDBClassList from pyars.cmdb to pyars.ercmdb (finalise the change started in 1.3.0). - fixed a bug in CMDBREGetListJobRun and changed the return type in case of failure to be (None, errnr). - pyars.ars: fixed a relative import which was not really necessary; but in porting this relative import to p3k, I introduced a syntax that broke compatibility with python 2.3 and 2.4. Fixing this showed another anomaly in ars_test with python 2.3. Instead of fixing this, for now, the support of Python 2.3 is dropped. If this is of concern, please let me know. - changed the return type of pyars.ars.ARGetCacheEvent to be (None, errnr) in case of failure. - updated the tutorials. Changes in 1.3.0 (2009-12-22) ############################# - *Attention, incompatible change of return type of method erARS.GetListEntry*: it used to return a dictionary of {entryid: search_result_string, ..} -- but with this dictionary you loose the order of entries as returned by the server (via pyars.ARGetListEntry). That's why I had to change it to a list ((entryid, search_result_string), ...). In addition, in case of error, you will not receive a single None, but you will get a list (None, -1), so that assigning the result to two variables is simplified. If this change affects you, you only have to use the new list as input parameter to the dict() function -- and you will get the dictionary as you used to. :: (entryList, numMatches) = ars.GetListEntry('User') if ars.errnr > 1: # error handling pass else: entryDict = dict(entryList) - Attention, incompatible change of return type of method erARS.GetListEntryWithFields: it used to return a dictionary of {entryid: {fid1 : value1, ...}, ..} -- but with this dictionary you loose the order of entries as returned by the server (via pyars.ARGetListEntryWithFields). That's why I had to change it to a list ((entryid, {fid1 : value1, ...}), ...). In addition, in case of error, you will not receive a single None, but you will get a list (None, -1), so that assigning the result to two variables is simplified. If this change affects you, you only have to use the new list as input parameter to the dict() function -- and you will get the dictionary as you used to. - removed some old code from erars (including some functions that were never supported nor published) - removed experimental code that raised an exception in ARGetField if the function called returned an error code; this exception is now raised in GetField instead. - GetListSchemaWithAlias: changed the return from (ARNameList, ARNameList) to the more pythonic version of (list_of_schema_names, list_of_alias_names) like: ((name1, name2,...), (name1, name2, ...)) - during __init__ of the ars object, the control struct (ars.context) is now set to None, and only Login will set it to a real ARControlStruct; thus, you can identify if a Login has happend by checking for ars.context being not None. - further improve unicode handling in erars.GetEntry. - preparation to support IronPython has started, but a couple of more rough edges need to be straightened out (on the IronPython side) before this will work. Turns out, currently IronPython does not support C unions. We have currently two issues open with IronPython (24814 and 25106) - improved the erars_test.py unit tests; they should now also run through under Solaris. And you can enforce that it runs with a client library version different from the server version with -f. - made the code to identify the used CMDB version more robust and prepared pyars.cmdb for the versions 2.1, 7.5 and 7.6 (no code to support new functionality yet). - made the implementation follow the documentation that says the default for the logging.LEVEL is INFO (which so far actually was DEBUG). So, don't be surprised if your code does not spit out any debugging info any more. Please see the tutorial for instructions how to change this. - changed the signature of pyars.cmdb.CMDBGetClass to be more inline with the C version -- the output parameters need to be handed over to the python function as well, and there you will find the result. The pyars.ercmdb.GetClass in contrast, still just takes the name of the class and does the rest for you. - fixed a couple of bugs in cmdb_test. - updated some more docstrings Changes in 1.2.5 (2009-09-17) ############################# - 7.5: fixed a bug where the change of constant naming from AR_KEYWORD_FILTER_ERRNO to AR_KEYWORD_ERRNO would stop pyars at import time. - 7.5: fixed a bug in ARActiveLinkStruct (one of the members had a trailing ,) - 7.5: fixed a bug in ARGetActiveLink - 7.5: added an updated version of ARGetMultipleActiveLink to support the 7.5 features - 7.5: added many lookup dictionary entries for 7.5 specific enhancements to cars.py - made cars.py more robust against potential constant naming failures in the future - erARS can now cope with Unicode chars. pyars.ars always could do this, but erARS tried to convert only normal strings. If you want to see how to cope with Unicode chars, please see the tutorial. - extensive updates to the documentation, especially the tutorial. - erars.GetFieldTable has now a third parameter fieldType that allows you to specify which type of fields should be used for the dictionary of fieldid : name. The default is cars.AR_FIELD_TYPE_DATA, so that the dictionary maps all data fields to fieldids. - erARS.conv2EntryIdList: does not try to pad the entryid any more. If you need this, you have to call ars.padEntryid on the entryid yourself before calling conv2EntryIdList. - support for python3k: please note, that work started on this, but it does not work yet... Changes in 1.2.2 (2009-05-30) ############################# - erARS.conv2ValueStruct: now supports attachment filenames; in other words, you can now also use SetEntry for attachments with the list structure and do not need to rely on the C level API ARSetEntry (see tutorial for an example). Changes in 1.2.1 (2009-05-30) ############################# - implemented wrappers for most of the 7.5 functions (ARWfd* in addition to the AR*Image functions). - regenerated the pydoc documentation to include the 7.5 headers - updated many docstrings to better show the required ctype of arguments - changed the signature of ARCreateActiveLink and CreateActiveLink: now also the parameters controlField, focusField, enable, query, actionList and elseList are optional. - changed the signature of ARCreateCharMenu and CreateCharMenu: helpText, owner, changeDiary and objPropList are now optional. - changed the signature of ARCreateContainer and CreateContainer: helpText, owner, changeDiary and objPropList are now optional. - changed the signature of ARCreateEscalation and CreateEscalation: query, actionlist, elseList, helpText, owner, changeDiary and objPropList are now optional. Changes in 1.2.0 (2009-05-25) ############################# - added two new members to ARActiveLinkStruct and changed all ARActiveLink related functions (ARCreateActiveLink, ARGetActiveLink, ARSetActiveLink, ARGetActiveLinkFromXML, ARSetActiveLinkToXML) - implemented the image related functions (ARCreateImage, ARDeleteImage, ARGetImage, ARGetListImage, ARGetMultipleImages, ARSetImage) - implemented other 7.5 functions: ARGetCacheEvent, ARGetListEntryWithMultiSchemaFields, ARGetObjectChangeTimes, ARGetOneEntryWithFields, ARSetDSOPoolToXML - still outstanding are all ARWfd... functions Changes in 1.1.0 (2009-04-05) ############################# - A completely new module on top of pyars, called erars, makes it possible, to work seamlessly with Python data structures. Thus you are not forced to work with Remedy data structures any more. At least, that's the goal; until now we made sure to cover the ARxxxEntry functions. - ARExport: Changed the return value to return a python str instead of c_char_p. So, no need to access the value via .value any more. - ARExportToFile: changed the parameters to be more inline with ARExport, in other words, apart from the ARStructItemList all other parameters are optional. Unfortunately, the parameter FILE is the last one -- so I could not leave it as non-optional, while the other arguments were changed to optional, so I had to change this parameter to optional as well, setting the default to None. However, this obviously leads to an error, because ARExportToFile does not know where to write to. - has been tested with Python 2.6. Changes in 1.0.2 (2008-08-28) ############################# - ARGetMultipleFilters has been enhanced to try each filter it cannot fetch directly, in a second trial with ARGetFilter. Surprisingly, in our environment, ARGetMultipleFilters sometimes has problems retrieving filters which exist. And ARGetFilter will happily retrieve this filter for you. Now you don't have to worry any more. - Changed pyars to use new style classes. - Finally I managed to get ctypes working under Solaris. The library loading code in cars.py has been adapted to load the library. Unfortunately, ctypes has a limitation so that it does currently not recognize the libar shared library under Linux... Changes in 1.0.1 (2008-03-14) ############################# - This is a bugfix release only, which mainly updates file cars.py to ensure that all new variables defined in version 7.0 and 7.1 are included in the arrays for nicer output (e.g. :: cars.ars_const['AR_SVR_EVENT'][AR_SVR_EVENT_APPLICATION_ADDED] - changed a couple of strings in the lookup dictionaries of type AR_DPROP and AR_DVAL (cut of the leading AR_DPROP\_ and AR_DVAL\_). - updates doc strings of many functions Changes in 1.0.0 (2008-02-26) ############################# - This release adds support for the ARSystem API 7.1. The CMDB API 2.1 is still outstanding. - Changed the loading of the DLLs and python definition modules once more so that it is ok to load new libraries with older python modules. In other words, if you install an upgrade of the API library, but don't have the current python modules for that yet, the python code will still load. Typically this should not be a problem as the ARSystem API is backwards compatible. - Corrected the handling of the parameter helpText and changeDiary in all ARCreate- and ARSet- methods. - Eased the handling of int's in ARSetActiveLink, ARSetCharMenu, ARSetContainer, ARSetEscalation, ARSetField, ARSetFilter and ARSetVUI so that you don't have to hand over ctypes, but can use normal python integers. - Added the parameter setFieldOptions to ARSetField. - Enhanced the tutorial and examples documents. Changes in 0.9.9 (2007-08-13) ############################# - This release (up to 1.0) will be the last one to rely solely on the C data structures. The next development cycle (V1.1 onward) will concentrate on making pyars much more pythonic where you use dicts and lists instead of C structs. - This release has been postponed so long, because I wanted to wait for test results against a fully licensed CMDB2.0 server as well as more test results from version 7.0.1. - Login has been overhauled; now you can hand over as parameters all the items of an ARLocalizationInfo (e.g. locale and charSet) in order to support e.g. unicode as well as cacheId, operationTime and sessionId. - The following XML support functions have been implemented: ARGetFieldFromXML, ARGetFilterFromXML, ARGetMenuFromXML, ARGetListXMLObjects, ARGetSchemaFromXML, ARGetVUIFromXML, ARParseXMLDocument, ARSetActiveLinkToXML (was implemented before, but has been debugged; signature and return value changed!), ARSetContainerToXML, ARSetEscalationToXML, ARSetFieldToXML. - fixed the text mapping in cars.py for the AR_SERVER_INFO constants. - As the XML API functions turn out to be extremely sensitive to missing or wrong argument types, we have added a couple of checks and asserts. However, those tests need some more work and have therefore been removed from this release. - Again overhauled the library loading in cars.py/ccmdb.py in order to find more spots where the ARsystem libraries might be installed. Changes in 0.9.8 (2006-12-15) ############################# - changed the definition of ARBoolean from c_char to c_ubyte; this means, you have to check any code that uses ARBooleans (e.g. ARGetMultiple... functions). The effect of the change is that you can now simply check for the true or false value of the ARBoolen and do not have to use ord(ARBoolean). In addition, you can initialize it using the native Python True and False values: var = cars.ARBoolean(True) - cars.py/ccmdb.py: fixed a bug with oldPath (if pyars was not able to load any library) and reworked the construction of the search path (now searches for user tool as well as admin tool in the windows registry). - cars.py now stores the version information as integer, not string any more (cars.version can be 70, 63, 60 etc.). The same holds true for the instance variable arversion of ARS instances. - continued work on unit tests (ars_test.py and cmdb_test.py; currently limited to retrieval functions, no changes on the server), see details.html. - implemented the ARS core 7.0 functions and structure changes (e.g. arauditinfo for schema, fieldOption for field) - overhauled the doc strings for the AR functions, fixed documentation bug for ARCreateEntry that suggested that the function will automatically convert a tuple to the required ARFieldValueList (which it currently does not). Unfortunately, the doc strings still are not completely consistent. But you should find now all arguments covered for every function. - ARGetSchema: archiveInfo is now returned to the client properly - ARGetListEntry now works without a query string (defaults to None). - ARExportLicense: changed the signature: exportBuf is not an input value any more (was too C centric), but is returned by the function. - GetControlStruct: now returns all fields of the struct (including the errnr) - ARSetSchemaToXML: fixed a bug with optional arguments not being the right type - ARValidateFormCache: only one argument remains mandatory (form name); mostRecentActLink, mostRecentMenu, and mostRecentGuide have now a default value of 0. The return values have been modified to return not the ctype ints, but their pythonic equivalents. - ARGetListSQL: now returns a tuple with ARValueListList and the number of items. Used to return the ARValueListList and the ctypes representation of the number of items. - ARVerifyUser: now returns a tuple of pythonic booleans, not ARBoolean - The functions ARSetXMLDocFooter and ARSetXMLDocHeaderToXML (according to old Remedy documentation) don't exist and were renamed to ARSetDocFooterToXML and ARSetDocHeaderToXML. - ARParseXMLDocument: now correctly returns three values, as of API 6.0 and higher. - Login: now checks the correct return value of ARVerifyUser; in case of failure does not display the password any more - ARDateToJulianDate now returns the python value (and not the c_long). In case of failure it will now return None. - ARExportLicense now returns the string, not the c_char_p to the string. - ARGetApplicationState now returns the string, not the c_char_Array_255 of the string. - ARGetAlertCount now returns the int value, not c_ulong any more. - ARGetListEntryBlocks now returns a tuple of (AREntryBlockList, long, long) and not (AREntryBlockList, c_ulong, c_ulong) any more. - ARGetMultipleEntryPoints: corrected the parameter hand over - ARFree and its functions should now work correctly. - implemented the CMDB 2.0 functions and struct changes - Logoff: now uses the AROSTerminate or CMDBTerminate function call instead of the ARTerminate function. - CMDBCreateGuid: fixed a bug where guid was not defined - CMDBGetInstance, CMDBGetMultipleInstances, CMDBGetServerPort and CMDBSynchMetaData now return None in case of failure (not the errnr). The same holds true for the four AROS functions (AROSGetInstance, etc.). - CMDBGetInstance: fixed a bug in parameter handling, and attributeGetList can now be left out (default: None). - CMDBGetServerPort: now returns a tuple of two longs, instead of a tuple of two c_longs - overhauled the doc strings for the CMDB functions - cars.py/ccmdb.py: overhauled the strings for the ars and cmdb constants (cars.ars_const and ccmdb.cmdb_const). Changes in 0.9.7 (2006-08-27) ############################# - ARCreateVUI now returns the value of the ctype, in other words, there is no need to dereference the value within: so instead of: :: newId = ars.ARCreateVUI(...) print 'the new id is: %d' % (newId.value) you can now write: :: newId = ars.ARCreateVUI(...) print 'the new id is: %d' % (newId) - refactored ARExecuteProcess (in case of an error, the return value changed) - bugfix in my_byref that would return None sometimes incorrectly - added lookup entries for the values of AR_DPROP_JUSTIFY and AR_DPROP_LABEL_POS_JUSTIFY in cars.py - removed all occurences of errstr from ars.py - made cars.py a little more robust if registry key for aruser is not found Changes in 0.9.6 (2006-08-05) ############################# - removed decl, as ctypes in later versions does not offer this by default - fixed a compatibility issue with ARS V6.0 Changes in 0.9.5 (2006-06-01) ############################# - couple of minor bugfixes Changes in 0.9.4 (2006-02-09) ############################# - nearly all functions mapped, some minor bugfixes Changes in 0.8.8 (2006-01-16) ############################# - new functions: ARGetMultipleFilters, ARSetVUI, ARCreateVUI - some minor bugfixes, especially ARGetMultipleVUIs Changes in 0.8.7 (2006-01-16) ############################# - some minor bugfixes