This change log was started effective with version 2.00 2.00, November 2008 (Public Release) * Add wmi support. See wmi.pdf for information. 2.01 December 2008 (Beta Private release) * Add support for upcall method definitions with concrete objects. Not yet documented. See provider src/providers/methodUpcall for working example of the change * Correction to WMI_Thread_Context.cpp and .h * Changed. Atomic.cpp, cimple/Thread_Context, cimple/cimom.* cimple/log.cpp, cmpi/adapter/CMPIContainers.cpp, etc. Tags are: cimple_2_0_0 to cimple_2_0_1-start 2.02 Never generated. NOTE: Odd number releases are considered private (ex. beta) releases for selected users, test, etc. Even number releases are offical updates for public distribution. 2.03 24 January 2009 (beta private release) * Fix several problems including: 1. Memory loss from CMPIAdapter.cpp for associator operations. Not consistently destroying instances. 2. Invalid Class exception from CMPIAdapter.cpp on association requests. Changed to OK. 3. Test wmi adapter against multiple windows OS and correct issues with compiler errors resulting from differences between the windows compilers and SDKs. In particular corrected compile errors in Atomic_WIN32_IX86_MSVC.h with Interlock functions and WMI_Adapter.h use of Rpcsal.h 4. Modify wmi repository.mof to eliminate issue of special wmi qualifiers and restore original DMTF qualifiers.mof. In the future, providers requiring these qualifiers will include the qualifiers in as specific extensions for wmi. For now, they are attached to the repository.mof for each provider. * Extend tests and test providers including All Provider, Widget Provider. Added more tests to autmated tests including All and All/TestAll. * Continue development of Doxygen documentation of header files. * Correct wmi.pdf documentation. * Add platform definitions for SOLARIS_IX86_CC, SOLARIS_IX86_CC SOLARIS_SPARC_CC and SOLARIS_SPARC_64_CC * Added code to regmod.cpp to output NOCHKSRC line in module.cpp files. Would not pass pegasus chksrc without this. NOTE: Work started with tag cimple_2_0_1-start (equal to final_mbrasher_tag). It ended with cimple-2_0_3-end tag. 2.04 Not Generated 2.05 8 February 2009 * Add new CIMPLE_Status return codes to match the DMTF Specification. Added statuscodes for ACCESS_DENIED, INVALID_PARAMETER to bring the available status codes in line with DMTF DSP0200. * Corrected Error in CMPI and Pegasus adapters that did not allow cross namespace associations. They were returning the request namespace rather than the namespace defined in the association. NOTE: This error was apparently introduced in V 2.0. * Integrated automated test for cross namespace associations with testclient under Cross provider. * Added provider (OperationContext) to test correctness of CIMPLE status return codes. * Extended All_Class test provider. * Added comments to Makefiles generated by genmak and also ability to generate selected targets (regmod). Release tag cimple_2_0_5 * Add get_username() function as an experimental function to get the username from the CIMServer. This works with CMPI and Pegasus for this release. Note that the interface may change. * Rebuild the Hello provider. It had not been build for a long time and the module.cpp was not compatible with the current common functions. Added calls for allow_unload and get_username() to this provider although they only demo the action, not test the result. Release tag cimple_2_0_5 2.06 10 March 2009 (Public Release) * Clean up comments on cimple header files and integrate into doxygen * add size function to cimple/Lists.h * Restore List and Scheduler functions to src/cimple along with tests. These functions are conditionally compiled since they are experimental so we modified configure to add a --enable-scheduler option. We may leave this since c ompiling without this is a bit smaller. * Extended Upcall provider for more complete testing * extended cimple/tests/value test * moved some command aliases to config.mak * Extended tests for Cond_Queue function in cimple/tests * Added more tests to cimple/tests Makefile * Added readme to more providers * Fixed issue where a configure command did not update the options.h file. Only if the user did a make disclean removing the options.h file would the options.h file be update. Now, this file will be updated each time configure is run. * Updated Using_CIMPLE.pdf file to version 2 document * Added Release Notes for 2.0.0 to distribution 2.0.7 Goals, minor cleanups to wmi * Remove duplicate CIMPLE_NAMESPACE_END in Atomic_WIN32_IX86_MSVC.cpp * Extend tag vg to dir.mak to automate valgrind testing. * Minor clean up to several readme files * Correct error in CMPI_Adapter.cpp where it was returning error when class not valid for some associator/reference operations. Now returns OK. * Set CIMPLE_FUNCION to include windows platforms so we get dynamic function name in logs from windows systems. * Corrected error causing wmi provider registration and execution error 080041024 (Provider is not capable of the attempted operation). The error is in the provider registration for WMI. If the namespace on mofcomp calls to insert registration using forward slash "/" instead of back slash (ex. root/default instead of root\default) the cimom will generate this error for every call. * Added trace code to wmi adapter. Note that this is only enabled by flag in WMI_Adapter.h at this point and goes to a special log file rather than the cimple log. * Added new wmi providers and commonized wmi Makefiles * Added methods test for Person wmi provider. * 2.07 Not released. Went straight to 2.0.8 release 2.0.8 - 26 March 2009 * Add readme.txt files to some of the providers * Added beginning of automated tests using wmic for wmi providers but very incomplete. 2.0.9 - 21 April 2009 (Internal release) * Add function try_lock to mutex functions. * Expand mutex test program (cimple/tests/Mutex) * Add CIMPLE_HOME as environment variable definition for the runtime components HOME directory for CIMPLE. This is the directory in which the configfile (.cimplerc) is located and the log subdirectory located (.cimple). If the environment variable CIMPLE_HOME does not exist, no log is created and the config file is not accessed To use this, set CIMPLE_HOME=directory name. NOTE: This is a behavior change in that earlier versions used HOME as the environment variable to locate a directory for the config file and log files. * Add provider to test more complex association functions (providers/derivedAssoc) 2.0.11 13 May 2009 * Correct bug with Property Lists and CMPI providers. The CMPI adapter was not correctly processing Property Lists. Note that this uncovered a bug in Pegasus with property list processing in CMPI (8493) in that all key properties are required in the returned Instance if the object path is not set. This no longer creates a problem in CIMPLE CMPI providers but was filed as a Pegasus bug (8493). * Fix compile error with mutex trylock and windows. Added trylock function to src/posix/pthread.h * Added initial files for persistence in src/cimple (Enc*, Instance_Enc* tests/Enc/* tests/instance_enc/* tests/serialize/*. NOTE: persistence not complete for this temporary release and is NOT usable. In this version the new components are normally not compiled. * Added several readme files for tests providers and tools. * Add regview tool that displays info on registered providers for PEGASUS. Note that this is Pegasus only. Not automatically compiled. * Added test provider derivedAssoc to test for association issue with derived associations reported by user. Concluded the CIMPLE correctly handles this case. * Added ability for user to set env var that CIMPLE will use to look for directory for .cimplerc file and where logs will be located. This was originally fixed at "HOME". This version changes the default to "CIMPLE_HOME" and adds an option to the configure mechanism (--cimplehome-envvar). NOTE: With this release no logs will be created without either a) setting the environment variable CIMPLE_HOME or b) defining an alternate to CIMPLE_HOME with the configure --cimplehome-envvar parameter. To use HOME for these files add the following to the configure (--cimplehome-envvar=HOME). * Modified logging calls for speed by adding an initial test before log macro calls are formatted. Note that this applies only to macro generated logs. * Added target to a number of test providers (manual-test) that uses Pegasus cimcli to exercise the provider. This serves for quick tests and allows the user to see better what the provider produces than the usual test client that is part of most CIMPLE test providers. Note that these are typically not automated tests in that they are not as through as the test clients. * Expanded the test client for providers/All to cover more cases and in particular expand the tests for propertLists. * Expanded the Makefile for a number of the test providers so that they can test both the C++ and CMPI builds of the corresponding providers. This uses a test environment variable (CIMPLE_PROVIDER_BUILD_CMPI) to force the provider to be build with either CMPI or C++ interfaces. * Added new target to top level Makefile (cmpiworld) to force testing of CMPI build test providers for those test providers that include the CIMPLE_PROVIDER_BUILD_CMPI variable. Made most src/provider providers compilable with both c++ and CMPI so that they can be compiled either way. Note that this means user must add line include ../common.mak to Makefile for any providers created with this option to complete all of the provider module requirements. * Modified Makefile for file2c tool so that it can be installed. * Modify windows pthread implementation to handle nonrecursive Mutex. Before this, the implementation just used the native Windows calls so treated all Mutexes as recursive. Note that this is a behavior change on Windows platforms. * Added initial test for atomic counters in cimple/tests/atomicint 2.0.12 24 July 2009 (cvs branched for this cimple-2_0-12-branch from 2_0_11 tag) * Fix issue with cmpi providers returning NULL for key properties that was introduced in 2.0.11. * Corrected error in configuration.bat where extra space was being inserted into a line in options.h causing problem in src/cimple/options.h * Implement multi class wmi provider module as a test (See src/wmi/ThingsProvidcr) 2.0.13 14 August 2009 (cvs cimple_2_0-12 branch) * Add broadcast function to the Conditional variable methods. This includes changes to a)Cond.h and .cpp b)cimple/tests/Cond/main and c)src/posix to account for platforms that do not include pthreads. * Add CIMPLE_EBUSY return code specifically to mutex. This should be used with trylock to determine busy returns rather than simply the non-zero return * Added valgrind test to number of src/cimple/tests unit tests * Add classes test as unit test. Code was there but test dropped several versions ago. * Clean up some api documentation in src/CIMPLE. * Implemented some standard tests as part of the WMI providers. Note that these tests are contained in bat files and only exercise the provider using the wmic executable. They do not confirm results. 2.0.14 6 October 2009(cvs cimple_2_0_12-branch) * Update to User Guide (version 2.1) * Correct problem with model->__namespce variable missing on some request types for C++ adapter. Added test to Hello provider to test the existence of this variable on requests. * Correct indexing error in regview and include build in standard make. 2.0.15 29 March 2009(cvs cimple_2_0_12-branch) * Modified Buffer.h and Buffer.cpp to improve capacity management algorithm. Added unit test of Buffer class (cimple/tests/buffer. Note that modifies the Buffer.h header file. * Modify several files (ex. Instance.cpp) to reduce the number of warning messages produced by the Windows Development Kit prefast tool. * Correct deadlock error between indication generation and subscription enable/disable in cmpi provider. * Add .cvsignore files in root directory and src/cimple. * Add String return functions to cimple/io. These are parallel to the functions that return char* formatted strings but require the user to free the memory except that they return CIMPLE Strings and manage memory. * Implement WIN64 Microsoft Compiler platform, WIN64_X86_64-MSVC. Note that this should really be callse WIN32_X86_64_MSVC (i.e. the Microcoft api set is Win32 for both the 32 bit and 64 bit platforms but we kept the WIN64 to be consistent with Pegasus that uses this platform name. * Add help option to configure.bat * Add more unit tests including (io, ref). Expanded some other unit tests and add valgrind target to a number of unit tests. * Add more provider tests (Arrays) * Implement dump function for Buffer.h when CIMPLE compiled in debug mode. This is just a developer diagonstic. * Enable ciminvoke compile and installation by default. * Modify Person Provider to use Map CIM Operation calls as demo of the complete use of the Map cache. Update Fan provider to use Map CIM Operations. 2.0.16 8 Dec 2010 (cs cimple-2_0_12-branch) * Remove test for static method type from CMPIAdapter code but add it to the Pegasus adapter code. This function has been failing in the CMPI adapter since SCMO was added to Pegasus (the behavior of the CMGetKeyCount function changed drastically. The problem occurs with CMPI providers that have static methods. It returns CIM_ERR_FAILED with the latest versions of Pegasus. The test is not in the CMPI adapter any more because we do not have enough information to execute the test for zero keys in a CMPIObjectPath effeciently since the CMgetKeyCount now returns the number of keys in the class not in the input. Note that the only effect is on [static] methods. The CMPI provider no longer returns an error if the request includes keys. * Add text to a logging of a number of error returns from the CMPI Provider adapter to supplement the error code. * Add more invoke method tests * Add LargeInstance provider and tests. * Corrections to cmpi adapter to release memory after sending enums and indications. * integer test in cimple/tests * Expand make to handle windows manifest files more effectively * Update compile make files to handle different windows compile options for different versions of the MSVC compiler. * Change ROOT env variable to TEST_ROOT. This was causing confusion in some compiles with Pegasus. * Add quick return to logs in case logs not enabled. * Complete tests/enable of Windows 64 bit compiler. * Modify Person Provider to use Map CIM Operation calls as demo of the complete use of the Map cache. Update Fan provider to use Map CIM Operations. * Add CMPIUtils to cmpi adapter to display cmpi objects. NOTE This is experimetal used only for debug and disabled by default. * Updates to some utilities (ex. regview). * Add a number of manual tests to providers and expand live tests. NOTE: many of the new tests use Pegasus cimcli and depend on at least Pegasus version 2.10 for correct version of cimcli. * Add CMRelease to cmpiAdapter to remove cmpi instances when we pass them to the server. For Enumerations this reduces memory very temporarily since the server removes them at the end of the enumeration. For indications this avoids indication instances being caught in the broker until it is shutdown. 2.0.17 10 May 2011 (cvs cimple-2_0_12-branch) * Added capability to dynamically configure log capabilities.Includes new class CimpleConfig that provides methods to dynamically configure some of the characteristics of CIMPLE. This class is EXPERIMENTAL today. It implements methods to dynamically change log characteristics and to force reread of the configuration file. This class implements a number of methods that allow the provider to dynamically control logging parameters and to force reread of the .cimplerc configuration file. In the future this will be the single class that controls dynamic aspects of the provider configuration and settings. * Added files Adapter_Tracer.h and .cpp that consolidate macros for tracing the adapters. Note that only some of the common functions and the Pegasus adapter use this today. These trace tools are for the adapters, not the user code. Adpater trace compiled with configuration option --enable-adapter-trace. Note that this is used only for Pegasus adapter at the moment since for the other adapters trace was hard defined and not considered an option. We are trying to keep default behavior the same for this version. Thus the default is no trace for Pegasus adapter but trace for cmpi adapter. * Implemented log file size and backup of log file functionality controlled by .cimplrc parameters MAX_LOG_FILE_SIZE and MAX_LOG_BACKUP FILES name=value parameters. These may be set in the cimple config file (i.e. MAX_LOG_FILE_SIZE=100000 and MAX_LOG_BACKUP_FILES=5. This limits the maximum size of the log file to 100, bytes and will close and rename the log file each time that limit is reached. The backup files are numbered in sequence from 1 (the most recent to n (where n = MAX_LOG_BACKUP_FILES) is the oldest. Older files will be deleted. The maximum number of backup files allowed is 9 and the default is 0 which means that we simply delete the log file and restart when the MAX_LOG_FILE_SIZE limit is reached. If MAX_LOG_FILE_SIZE=0 no limit is set on the log file size. This is the default which means that the default retains the behavior of previous CIMPLE releases. * Added compile configuration parameter to allow disabling log macros (--disable_log_macros). When set by configure this renders the compile of the macros in log.h (CIMPLE_FATAL, etc.) to generate log entires null. The macro calls generate no code. This can be used to completely remove these macro calls without removing the source code. This can also be done on a provider by provider basis by setting #define DISABLE_LOG_MACROS_OPT in the source code where the macros are to be disabled which overrides the global setting for the file being compiled. * Added runtime parameter ENABLE_LOGGING in .cimplerc to configure runtime so at to completely disable completely logging. The value is either TRUE or FALSE. The default state of ENABLE_LOGGING is true so that without specifically setting this parameter in .cimplrc logging is enabled as it was in previous versions of CIMPLE. ENABLE_LOGGING=false completely disables logging. To disable logging completely the user sets this parameter as follows in .cimplerc (ENABLE_LOGGING=FALSE). Note that there is also a function in CimpleConfig that enables and disables logging dynamically. * Include FileSystem.h and FileSystem.cpp in src/cimple to provide common base of file system operations. Used by log today. Consider this experimental since we try NOT to add new functionality like this in minor releases but it was required for the log extension defined below. * Remove accidental dependency on konkret libraries in cmpi provider. * Fix issue where the cmpi associationCleanup ThreadContext did not do a push. The behavior error was not clear but this was a missing push operation. * Clean up All provider. * Added logCMPIInstance and logCMPIObjectPath functions to support the CMPI adapter. These can be used to display CMPI instances on within the adapter. This can be used to display CMPI information if there are issues within the adapter but it is compiled only in DEBUG mode. * Added logPegasusInstance function to src/Pegasus/utils/Print.cpp so that pegasus instances can be displayed to the log file within the pegasus adapter. There are 3 functions, print to stdout, log, create a String with formattted output. * Extended genprov and genmod to include option to get the class list from a file. This existed in genclass but was not carried forward to the other utilities. This is the -F option. Originally it was the -f option in genclass and that option remains. But where that options is used it is marked (deprecated) in the help since the -f was already used in some of the utilities. Thus we keep compatibility with the past option definitions but for the future -F defines a classlist file. This was added as result of an issue with big provider modules containing many classes where the command line for these utilities overruns windows shell (cmd.exe). * Add log error calls to a couple of errors in Pegasus adapter so that the errors are not silent. In particular this logs error when the CIMPLE default association function trys to do a getInstance and fails. This should not fail since it is using information about the association from the provider but we found issues such as authorization that could cause a failure. * Remove some printf statements that were in CIMPLE adapters/infrastructure. There should be no console output except in unit tests, test providers, and command line utilities. * Add test to windows configure.bat script to test for correct compiler. Generates errors if there is no compiler for windows or not the correct 32 bit vs 64 bit definition is not applied for windows. * Add comments to generated config.options and options.h files explaining things that are not obvious. Modifies configure and configure.bat 2.0.18 - 18 May 2011 (cimple_2_0_12-branch) * Clean up code in log.cpp dealing with log restart and extend tests/log.cpp 2.0.19 - None produced 2.0.20 - 20 May 2011 (cimple_2_0_12-branch, tag cimple cimple_2_0_20) * Correct compile error in src/cimple/options.h after using configure.bat to configure. We declared 2.0.18 as removed from release. * Add new function to CimpleConfig to getHomeEnv() so user can test current settinf of the CIMPLE_HOME environment variable. * Minor cleanup to config.mak for windows for definition of standard functions that imitate linux. NOTE: for the moment the make world test option of CIMPLE in windows is dependent on the mu function in Pegasus for a couple of command line functions (diff and. This only affects test and will be removed. 2.0.22 - 31 May 2011 (cimple_2_0_12-branch, tag cimple cimple_2_0_22) * Extend the capability to display errors that occur in log.cpp when logging is intialized (config file errors, log file create/write errors, etc) to both stdout and to an emergency log file. The emergency log file is located at either %SystemDir%\Temp (typically C:\Windows\Temp) for windows or /tmp for *nix systems and only contains entries that represents errors in the logging process itself. In the previous release this was only enabled in CIMPLE_DEBUG mode. This has been modified to be enabled unless specifically disabled in log.cpp because the errors can be generated in both development and production (inability to write logs, config errors, etc.). Normally this log file should never be created unless there are problems with the CIMPLE config file or in creating/writing to a log file. * Modify log.cpp to set log level to DBG if the configuration parameter in .cimplrc (LOG_LEVEL=) value is not one of the defined values. Before this caused the log not to be output at all. * Add a compilable option to log.cpp so that the user can get details of the log handling process in those cases where they might be having problems outputting logs. This is enabled with the #define CIMPLE_LOG_DIAG_ENABLE in src/cimple/log.cpp (it is not part of the configuration file) and should be used only in development mode and if there are real issues outputting logs. * Add capability to configure.bat to include configure command line in the config.options file, and to backup the file to config.options.bat if the file exists when configure is executed. Add capability to configure script to the *nix configure file to create abackup file (config.options.bak) whenever configure is called. 2.0.23 - Not released (cimple_2_0_12-branch, tag cimple cimple_2_0_23) * Correct error in Pegasus Adapter where it was ingoring error response from function in Associators operation. This caused crash in cimple where invalid Class was provided with input Object path. * Correct issue with associator, associatorNames, references, and referenceNames operation in that they were returning CIM_ERR_INVALID_CLASS when the class in the objectpath parameter was not found in the provider meta_repository. This error propagates up to the operation and fails the operation. At least in Pegasus this simply indicates that this class is not in the provider. NOTE: the implication of this is that while the provider is registered for the association class, the class in the object path must also exist in the provider to be processed by CIMPLE. * Correct error in test providers unregister target where Target was used as makefile define rather than TARGET 2.0.24 - 8 Nov 2011 * Correct Error introduced in 2.0.22 in genmod where it was placing incorrect information into the CIMPLE_MODULE entry in the module.cpp file. This error would cause registration errors when the provider was registered with pegasus if module.cpp was generated with genmod v 2.0.22. * add test for -F option on genclass, genprov, genmod, genproj * add -v (verbose display) option to genmod. * Editorial changes ==================================================================== TODO- Open work list for post Current Release * Add capability to display current thread id in logs. (Move to future version) * Test with gcc option -Weffc++ * Look into CIMPLE_ASSERT and release build. Extend this so we have a way to turn off all asserts except those that are really fatal in release mode. * Clean out any printf statements from the CIMPLE infrastructure except in unit tests, providers and the command line utilities. * get rid of asserts in favor of some type of CIMPLE_ASSERT so that the asserts are controlable on build basis. * Add more tests for Thread APIs. * Extend --enable-adapter-trace to other adapters so we have conditional compile trace code in all adapters. Currently only impacts Pegasus C++ adapter.