pywbem-0.8.0~dev (last updated: 2014-09-11, includes commits up to r642)
* Verify certificates against platform provided CA trust store in
/etc/pki/tls/certs. Linux only. (Peter Hatina)
* Added '-d' option to MOF compiler that causes the compiler to perform a
dry-run and just check the MOF file syntax. This allows to more easily
detect included MOF files when used together with the '-v' option.
* Added support for non-ASCII characters. (Michal Minar)
* Improved information in the message text of some exceptions (TypeError and
KeyError in cim_obj.py, ValueError in cim_obj.py, and ParseError in
tupleparse.py). (Andreas Maier)
* Moved the definition of the pywbem version from setup.py to __init__.py,
in order to make it available to programs using pywbem as
pywbem.__version__. (Andreas Maier)
* Added support for direct iteration over NocaseDict objects using 'for' and
'in' by adding __iter__(), e.g. for use with CIMInstance.properties.
* Fix syntax error in CIM DTDVERSION error path. Allow KEYVALUE
VALUETYPE attribute to be optional as specified in the DTD.
* Added parsing of InvokeMethod return value and output parameters
for Twisted Python client. (Tim Potter)
* Fixed cim_provider2.py to properly support shutdown() and can_unload()
(called from CMPI cleanup() functions). Support was recently added
to cmpi-bindings for this. (Bart Whiteley)
* Fixed XML parsing to accept SFCB-style embedded instance parameters.
* Use getpass module instead of pwd to detect local user to fix Win32.
* Re-throw KeyError exceptions with capitalised key string instead
of lower cased version in NocaseDict.__getitem__(). (Tim Potter)
* Use base64.b64encode() instead of base64.encodestring() in Twisted
client. (Mihai Ibanescu)
* Fix missing CIMDateTime import in Twisted client. (Mihai Ibanescu)
* Fixed CIMInstanceName rendering to string. It is now possible to pass the
rendered string value as an instance path argument of a CIM method.
(Jan Safranek, Michal Minar)
* For Python providers, fixed the comparsion of the Role parameter in
association operations to be case insensitive, and removed an erroneous
test that raised an exception when the property specified in the Role
parameter was not also in the property list specified by the Properties
parameter. (Jan Safranek)
* For Python providers, converted debug 'print' statements to trace
messages that end up in the system log. (Jan Safranek)
* The CIM-XML parser no longer throws an exception when parsing a
qualifier declaration. (Jan Safranek)
Note: The CIM-XML supported by this fix does not conform to DSP0201 so
far. Further fixes are pending.
* Fixed parsing errors for connection URLs with IPv6 addresses.
Note: The parsing support does not address all issues with IPv6 addresses,
and it does not support zone indexes (aka scope IDs). Further fixes are
* Fixed the hard coded socket addressing family used for HTTPS that was
incorrect in some IPv6 cases, by determining it dynamically.
* Fixed the list of output parameters of extrinsic method calls to be
returned as a case insensitive dictionary (using cim_obj.NocaseDict).
* Fixed the checking of CIMVERSION attributes in CIM-XML to only verify the
major version, consistent with DSP0201 (see subclause 5.2.1, in DSP0201
version 2.3.1). (Jan Safranek)
* Fixed error in cim_http.py related to stronger type checking of Python
2.7. (Eduardo de Barros Lima)
* Removed erroneous qualifier scopes SCHEMA and QUALIFIER from the MOF
compiler (see DSP0004). (Andreas Maier)
* Fixed debug logging of CIM-XML payload (that is, conn.last_*request/reply
attributes) for extrinsic method calls, to now be consistent with
intrinsic method calls. (Andreas Maier)
* Fixed TOCTOU (time-of-check-time-of-use) error when validating peer's
certificate. (Michal Minar)
* Fix grammatical funkiness in the license text. No change to actual
license - still LGPLv2. (Tim Potter)
* Added LICENSE.txt file to release. (Tim Potter)
* Added NEWS, README and INSTALL files to distribution archive.
* Removed confusing section about build from INSTALL file, to scope it just
to the topic of installation.
* Fixed enumInstances and references in cim_provider to do a deep
copy of the model before filtering instances so provider writers
are less surprised. (Bart Whiteley)
* Added CIMDateTime.__cmp__() so that CIMDateTime instances can be
compared. (Bart Whiteley)
* Fixed data types of method return values for python providers.
* Fixed REF array out parameters in tupleparse.py.
* Fixed Array parameters with no elements. (Bart Whiteley)
* Fixed precision for real32 and real64 types. (Bart Whiteley)
* Fixed Array properties where is_array isn't set in __init__.
* Added NocaseDict.__cmp__(self, other). (Bart Whiteley)
* Fixed WBEMConnection.__repr__ for anonymous connections. (Tim Potter)
* Fixed XML encoding of CIMQualifierDeclarations. (Bart Whiteley)
* Fixed EnumerateQualifiers if there are no qualifiers. (Bart Whiteley)
* Fixed InvokeMethod to only send a LOCALCLASSPATH or LOCALINSTANCEPATH,
not a CLASSPATH or INSTANCEPATH. (Bart Whiteley)
* Fix unexpected line break in basic auth header for long
credentials. (Daniel Hiltgen)
* Fix Host: HTTP header when connecting to a unix domain socket.
* Fix deprecation warnings with Python 2.6. (Bart Whiteley)
* Added support for generating Pegasus provider registration MOF in
cim_provider.codegen(). (Bart Whiteley)
* Implemented methods to parse indication export requests.
* Python provider code generation enhancements. (Bart Whiteley)
* Support for Pegasus Local authentication. (Bart Whiteley)
* Support for Pegasus and OpenWBEM Unix Domain Socket. (Tim and Bart)
* Added support for Pegasus non-compliant EMBEDDEDOBJECT XML attribute.
* Added CIMQualifierDeclaration.tomof(). (Bart Whiteley)
* Added a powerful MOF compiler. (Bart Whiteley)
* Added property filtering to CIMInstance. (Bart Whiteley)
* Added value attribute to CIMParameter. (Bart Whiteley)
* Rigged CIMInstance to automagically update CIMInstance.path.keybindings
as key properties are set. (Bart Whiteley)
* Added cim_provider2.py: A new provider interface. Python providers
using this interface can use the cmpi-bindings project within OMC
(http://omc-project.org/) to run under any CIMOM supporting the
CMPI interface. This is prefered to the old cim_provider.py interface
that was used with the Python Provider Managers for OpenWBEM and Pegasus.
* Changed __init__.py to not import anything from cim_provider.py (or
cim_provider2.py) into the pywbem namespace. Existing providers based
on cim_provider.py can still work with a minor adjustment involving
importing CIMProvider from pywbem.cim_provider. The codegen funtion
can now be obtained with 'from pywbem.cim_provider import codegen', or
'from pywbem.cim_provider2 import codegen' or similar.
* Added wbemcli.py command line utility. (Tim Potter)
* Pass keyword args in unix domain socket connection functions down to
WBEMConnection(). (Tim Potter)
* Relicensed from the GNU GPLv2 to the GNU LGPLv2.
* Add a type keyword arg and attribute to CIMQualifier, similar to
the CIMProperty object, to allow the creation of null qualifiers.
* Remove the toxml() method from CIM object classes. Use
tocimxml().toxml() instead which specifies the CIM-XML
representation of the object. (Tim Potter)
* CIMDateTime class should now be used instead of datetime.datetime
* Added a new method, CIMInstance.update_existing(). This behaves
like update() on a dict, but only assigns new values to existing
properties. It skips values for properties not already present
in the instance. This is useful for honoring PropertyList within
* Explicitly specify charset="utf-8" in HTTP Content-type header
as this is required now by the Pegasus cimserver. (Tim Potter)
* Parse VALUETYPE elements that contain a TYPE attribute. This
feature was introduced in version 2.2 of the CIM-XML DTD and
produced by some CIMOMs such as the Java WBEM Server. (Tim Potter)
* Don't require CreateInstance to have the path attribute set but
if it is, use the namespace from it. (Tim Potter)
* Allow extrinsic methods to return object references. (Tim Potter)
* Fix CIMInstanceName to support more numeric types of keybindings.
* Fix datetime values to support utc offset. (Bart Whiteley)
* Fix http client to monitor the connection more closely (RFC 2616
section 8.2.2). Previously, a large request could cause a socket
exception with no ability to read the response and respond to
an authentication challenge.
* Fix NULL qualifiers to have a (required) type. (Martin Mrazik)
* Fix initialising CIMInstanceName keys from a NocaseDict. (Bart
* Return correct namespace in path for return value from
GetInstance. (Tim Potter)
* Numerous bugfixes to Twisted Python client. (Tim Potter)
* Fix for x.509 SSL certificate handling. (Bas ten Berge)
* EnumerateClassNames() now returns an empty list instead of None
if there are no classes. (Bart Whiteley)
* Support for OpenWBEM password-less local authentication.
* Support for embedded objects is described in DSP0201-2.2.0
* New CIMDateTime class to deal with CIM-isms of datetimes.
Most notably, datetime deals with timezone info poorly.
* Add InvokeMethod() support in Twisted Python client. (Tim
* Many API changes were made to simplify the function and object
interface of PyWBEM. Aspects of just about every CIM operation
call and CIM object have changed. The major changes are:
- The "LocalNamespacePath" keyword argument has been renamed to
simply "namespace" for all CIM operations.
- Replaced all object location classes with CIMInstanceName, and
all instance classes with CIMInstance. CIMInstanceName now
has "host" and "namespace" attributes to fully name a
reference to an instance. The CIMInstance class now has a
"path" attribute which is of type CIMInstanceName.
- EnumerateInstances() now returns a list of CIMInstance objects
(with path attribute set) instead of a list of
CIMNamedInstance or tuples of (CIMInstanceName, CIMInstance).
- All representations of properties can now be represented with
the CIMProperty class.
* All classes now have a copy() method which return a deep copy of
the object. PyWBEM makes extensive use of dictionary objects
which are passed by reference in Python. Use the copy() method
to create and manipulate objects without modifying them by
* Fix parse bug when a CIMInstanceName is passed as the
localobject parameter to WBEMConnection.InvokeMethod().
* Fix parsing of INSTANCE elements containing PROPERTY.REFERENCE
elements bug found by Bart Whiteley. This turns up when
processing associations. (Tim Potter)
* Handle extrinsic method calls that don't return a value or any
output parameters. (Tim Potter)
* Fixed parsing of PARAMETER.ARRAY and PARAMETER.REFARRAY to
not require optional attrs. (Bart Whiteley)
* Atomic_to_cim_xml string generation for a datetime - was missing
a >> '.' in the string. (Norm Paxton)
* InvokeMethod did not provide for 'None' in output parameters.
* More parts of the class provider interface have been
implemented. (Tim Potter, Bart Whiteley)
* Many case-sensitivity bugs, mostly in __cmp__ methods, were
found and fixed. (Tim Potter)
* Implemented a test suite for maintaining backward compatibility
and testing new features. (Tim Potter)
* Implemented ExecQuery. (Bart Whiteley)
* Allow a string classname to be passed as the localobject
parameter to WBEMConnection.InvokeMethod(). (Tim Potter)
* Add missing qualifiers on array properties. (Bart Whiteley)
* Added code for performing asynchronous WBEM client operations
using the Twisted Python framework. (Tim Potter)
* Allow extrinsic method calls that take parameters. (Tim Potter)
* Added cim_http.AuthError exception class. This is raised if the
CIMOM returns a 401 (Unauthorized). Now the client can
distinguish this condition, and (re)prompt for credentials.
* Created cim_obj.CIMParameter class. Added return type,
class origin, propagated to CIMMethod. CIMParameter object
now allows parameter types and qualifiers to be obtained.
* Implemented case-insensitive keys for property and qualifier
dictionaries, as per the CIM specification. (Tim Potter, Bart
* Correctly calculate value of Content-Length HTTP header to include
opening XML stanza. (Szalai Ferenc)
* Fix syntax error when re-raising socket errors. (Pat Knight)
* Support for marshaling and unmarshaling CIM dates object into
Python datetime objects. (Szalai Ferenc)
* Experimental module for making asynchronous WBEM calls with
PyWBEM in Twisted Python. (Tim Potter)
* Add parameter type checking for object location classes. (Tim
* Allow caller to pass in a dictionary containing the location of
the SSL certificate and key files as per the httplib.HTTPSConnection()
class constructor. (Pat Knight)
* Change association provider API functions to take a fixed
parameter for the named object instead of a keyword argument.
This breaks backward compatibility. (Tim Potter)
* Remove the CIMLocalNamespacePath class and replaced by a Python
string. (Tim Potter)
* Don't use UserDict.DictMixin base class as it only exists in
Python 2.3 and higher. (Tim Potter)
* Add tests for parameter type checking for object location
classes. (Tim Potter)
* Add tests for string representation of object location classes.