Bug ID 603681: Updating pool members using iControl REST "PUT" resets monitors

Last Modified: Apr 11, 2024

Affected Product(s):
BIG-IP LTM(all modules)

Known Affected Versions:
11.6.0, 11.6.1, 11.6.2, 11.6.3, 11.6.3.1, 11.6.3.2, 12.0.0, 12.0.0 HF1, 12.1.0 HF1, 12.0.0 HF2, 12.1.0 HF2, 12.0.0 HF3, 12.0.0 HF4, 12.1.1 HF1, 12.1.1 HF2, 12.1.2 HF1, 12.1.2 HF2, 12.1.0, 12.1.1, 12.1.2, 12.1.3, 12.1.3.1, 13.0.0, 13.0.0 HF1, 13.0.0 HF2, 13.0.0 HF3, 13.0.1, 13.1.0, 13.1.0.1, 13.1.0.2, 13.1.0.3, 13.1.0.4, 13.1.0.5, 13.1.0.6, 13.1.0.7

Fixed In:
14.0.0, 13.1.0.8, 12.1.3.2, 11.6.3.3

Opened: Jul 08, 2016

Severity: 3-Major

Related Article: K03469520

Symptoms

Issuing an iControl REST call using 'PUT' on a pool results in a "replace-all-with" behavior that deletes and recreates the pool members with the specified attributes, and uses system-defaults for unspecified attributes. This delete-and-replace behavior causes the monitor status to reset to 'unchecked' for the newly-created pool members; and if health monitors are applied to pool members, the status will eventually transition based on health checks (e.g., to "up" or "down"). This behavior may be surprising if the user expected the iControl REST call using 'PUT' on a pool to leave the monitor status unchanged for individual pool members.

Impact

The iControl REST 'PUT' method on a collection overwrites all the members of that collection (e.g., all the members are deleted and re-created using the information provided). Because modifying a pool using 'PUT' causes all the pool members to be deleted and recreated, each pool member health status reverts to 'unchecked' (because the pool member is newly-created). If health monitor(s) are applied to pool members, then each pool member will eventually transition to a new status based on the result of subsequent health checks (e.g., to "up" or "down").

Conditions

Issuing an iControl REST call using 'PUT' to modify a pool.

Workaround

Use the iControl REST 'PATCH' method to individually modify members of a pool. This method is "safe" in that it will modify only that pool member, and the monitor health status will persist (based on its previous state and any associated health monitors). Note: You should generally prefer 'PATCH' over 'PUT' for iControl REST calls to modify collections. Using 'PATCH' will (safely) modify individual pool members, while using 'PUT' on the pool will cause "replace-all-with" to delete-and-recreate pool members (thereby resetting individual pool member health status).

Fix Information

None

Behavior Change

Guides & references

K10134038: F5 Bug Tracker Filter Names and Tips