f5-appsvcs-extension
f5-appsvcs-extension copied to clipboard
Rollback error when declaration failed because port 0 pool member and TCP monitor
Environment
- Application Services Version: 3.34
- BIG-IP Version: 15.1.4.1
Summary
When a pool member is created with a TCP port and changed to port 0, AS3 obviously respond with 422. But when an existing pool is changed from port X to port 0 (Any), the rollback process failed to recreate the pool member with previous configuration
Steps To Reproduce
Steps to reproduce the behavior:
- Submit the following declaration:
{
"Check_member_port_0": {
"myApp": {
"class": "Application",
"enable": true,
"MyMonitor": {
"class": "Monitor",
"interval": 20,
"monitorType": "tcp",
"receive": "none",
"send": "none",
"timeout": 61
},
"MyPool": {
"class": "Pool",
"loadBalancingMode": "least-connections-member",
"members": [
{
"addressDiscovery": "static",
"enable": true,
"priorityGroup": 0,
"serverAddresses": [
"2.3.4.5"
],
"servicePort": 80,
"shareNodes": true
}
],
"minimumMonitors": "all",
"monitors": [
{
"use": "MyMonitor"
}
],
"serviceDownAction": "none"
}
},
"class": "Tenant",
"defaultRouteDomain": 0,
"enable": true
},
"class": "ADC",
"schemaVersion": "3.26.0",
"id": "autogen_11607319-c00f-4796-890c-49d53715654d",
"updateMode": "selective",
"controls": {
"class": "Controls",
"userAgent": "vscode-f5/3.5.0",
"archiveTimestamp": "2022-03-11T08:45:21.703Z"
}
}
- Observe the following success response:
{
"code": 200,
"message": "success",
"lineCount": 20,
"host": "localhost",
"tenant": "Check_member_port_0",
"runTime": 5261
}
- check the pool members in tmsh.
# list ltm pool /Check_member_port_0/myApp/MyPool
ltm pool /Check_member_port_0/myApp/MyPool {
load-balancing-mode least-connections-member
members {
2.3.4.5:http {
address 2.3.4.5
session monitor-enabled
state down
metadata {
source {
value declaration
}
}
}
}
min-active-members 1
monitor /Check_member_port_0/myApp/MyMonitor
partition Check_member_port_0
}
- Update the declaration by changing the pool member serviceport to 0.
{
"Check_member_port_0": {
"myApp": {
"class": "Application",
"enable": true,
"MyMonitor": {
"class": "Monitor",
"interval": 20,
"monitorType": "tcp",
"receive": "none",
"send": "none",
"timeout": 61
},
"MyPool": {
"class": "Pool",
"loadBalancingMode": "least-connections-member",
"members": [
{
"addressDiscovery": "static",
"enable": true,
"priorityGroup": 0,
"serverAddresses": [
"2.3.4.5"
],
"servicePort": 0,
"shareNodes": true
}
],
"minimumMonitors": "all",
"monitors": [
{
"use": "MyMonitor"
}
],
"serviceDownAction": "none"
}
},
"class": "Tenant",
"defaultRouteDomain": 0,
"enable": true
},
"class": "ADC",
"schemaVersion": "3.26.0",
"id": "autogen_11607319-c00f-4796-890c-49d53715654d",
"updateMode": "selective",
"controls": {
"class": "Controls",
"userAgent": "vscode-f5/3.5.0",
"archiveTimestamp": "2022-03-11T08:45:21.703Z"
}
}
- Observe the following error response:
{
"code": 422,
"message": "declaration failed",
"response": "01070622:3: The monitor /Check_member_port_0/myApp/MyMonitor has a wildcard destination service and cannot be associated with a node that has a zero service.",
"host": "localhost",
"tenant": "Check_member_port_0",
"runTime": 5058
}
- check the pool members in tmsh.
# list ltm pool /Check_member_port_0/myApp/MyPool
ltm pool /Check_member_port_0/myApp/MyPool {
load-balancing-mode least-connections-member
min-active-members 1
monitor /Check_member_port_0/myApp/MyMonitor
partition Check_member_port_0
}
Expected Behavior
The configuration of previous successful declaration must be restored. the pool member must still be with initial servicePort.
Actual Behavior
The pool member disappeared in the pool.
Thank you for your feedback. I have added this issue to our internal product backlog as AUTOTOOL-3055.
Please reach out to us at [email protected] in order for us to prioritize. Thanks.
This has been resolved in the 3.42.0 release of AS3.