^^^^^^^^^^^^^^
This version contains all fixes up to version 1.11.4.
Released: 2023-11-16
**Incompatible changes:**
* The pull_full_properties(), pull_properties(), get_property() and props()
methods on resource objects
now raise zhmcclient.CeasedExistence in all cases where the resource no
longer exists on the HMC. This provides a consistent behavior across different
cases the method can encounter. Previously, that exception was raised only for
resources that had auto-update enabled, and resources with auto-update
disabled raised zhmcclient.HTTPError(404,1) instead when the resource no
longer existed on the HMC.
If you use these methods and check for resource existence using
HTTPError(404,1), you need to change this to check for CeasedExistence
instead.
* The pull_properties() methods on resource objects now retrieves all properties
from the HMC when one or more of the specified properties are not supported
by the resource. This provides a consistent behavior across the different
cases the method can encounter. Previously, that method behaved differently
when the property was not supported by the resource: It has retrieved all
properties when the resource type or HMC version does not support property
filtering, but has raised HTTPError(400,14) in case the resource type and
HMC version did support property filtering.
If you use this method and check for HTTPError(400,14), this check can now be
removed.
**Deprecations:**
* Use of the 'status_timeout' and 'allow_status_exceptions' parameters of the
following methods has been deprecated because the underlying HMC operations
do not actually have deferred status behavior. The waiting for an expected
status has been removed from these methods:
- Lpar.stop()
- Lpar.psw_restart()
- Lpar.reset_normal()
- Lpar.reset_clear()
**Bug fixes:**
* Test: Circumvented a pip-check-reqs issue by excluding its version 2.5.0.
* Addressed safety issues up to 2023-11-05.
* Fixed the maximum number of concurrent threads in bulk operations to be
the documented maximum of 10.
* Test: Added unit tests and end2end tests for list permitted partitions operation
* Docs: Corrected and improved the description of the Lpar.activate() method.
* Test: Added end2end tests for LPAR activation in classic mode.
* Fixed the waiting for LPAR status in Lpar.activate(). Previously, the method
was waiting for 'operating' or 'not-operating', so when an auto-load
happened it already returned when status 'not-operating' was reached, but
the load was still going on in parallel. Now, the method finds out whether
the LPAR is expected to auto-load or not and waits for the corresponding
status.
* Added a debug log entry when Lpar.wait_for_status() is called. This happens
for example when Lpar.activate/deactivate/load() are called with
wait_for_completion.
* Fixed that the Lpar.reset_normal() and Lpar.reset_clear() methods were
waiting for a status "operational", which never happens with these operations.
This was fixed by removing the waiting for an expected status, because the
underlying HMC operations do not actually have deferred status behavior.
(issue 1304)
* Fixed the incorrect empty request body in Lpar.psw_restart().
* Shortened the status timeout from 900 sec to 60 sec. This timeout is used
when waiting for an expected Partition or LPAR status after operations
that change the status and that have deferred status behavior (ie. the
status changes only after the asynchronous HMC job is complete).
This change allows to more reasonably surface the situation where an LPAR
load succeeds but the status of the LPAR does not go to 'operating' due to
issues with the operating system.
* Docs: Fixed the description of the 'status_timeout' parameter of the Partition
and Lpar methods that have deferred status behavior.
* The 'wait_for_completion' and 'operation_timeout' parameters of
Cpc.export_profiles() and Cpc.import_profiles() have never worked, because
the underlying HMC operations are not actually asynchronous. This has been
fixed by removing these parameters from these functions. This does not count
as an incompatible change because using these parameters with non-default
values has failed. (part of issue 1299)
**Enhancements:**
* Added support for Python 3.12. Had to increase the minimum versions of
setuptools to 66.1.0 and pip to 23.1.2 in order to address removal of the
long deprecated pkgutils.ImpImporter in Python 3.12, as well as several
packages used only for development. (issue 1300)
* Mock support: Improved mocked Hipersocket adapters; they now have all their
properties and default values for all except adapter-id and channel-path-id.
* Added support for the "List OS Messages" operation on partitions (in DPM mode)
and LPARs (in classic mode). (issue 1278)
* Examples: Added example script increase_crypto_config.py for increasing the
crypto configuration of a partition on a CPC in DPM mode.
* The pull_properties() method on resource objects was extended so that its
'properties' parameter can now also be a single string (in addition to the
already supported list or tuple of strings).
* Added a get_properties_pulled() method for resource objects, which gets the
current value of a set of properties from the HMC. If the resource has
auto-update enabled, it gets the value from the (automatically updated) local
cache. Otherwise, it retrieves the properties from the HMC in the fastest
possible way, considering property filtering if supported.
* Added support for passing an exception message directly to the
zhmcclient.NotFound exception, instead of creating it from the 'manager' and
'filter_args' parameters, which are now optional.
* Added support for asynchronous job cancellation via a new method Job.cancel().
Documented for all asynchronous methods returning Job objects whether or not
they can be cancelled. (issue 1299)
* Added support for low level management of asynchronous jobs via new methods
Job.query_status() and Job.delete(). Note that higher level methods
Job.check_for_completion() and Job.wait_for_completion() already existed.
(issue 1299)
* Added support for creation and deletion of activation profiles on z16.
This requires the SE to have a code level that has the
'create-delete-activation-profiles' API feature enabled.
(issue 1329)
* Added Lpar.start() to perform the "Start Logical Partition" operation in
classic mode. (issue 1308)