Preventing Unintended NSX Management Plane Upgrade Triggered by External Automation API Calls
search cancel

Preventing Unintended NSX Management Plane Upgrade Triggered by External Automation API Calls

book

Article ID: 452303

calendar_today

Updated On:

Products

VMware NSX

Issue/Introduction

During NSX upgrades, the Management Plane upgrade may start automatically immediately following the completion of the Transport Node upgrade, even when manual intervention was not intended. This behavior occurs when external automation tools, such as Ansible scripts, invoke the continue API call without specifying the required component type.

You see Envoy logs similar to below snippet:

/var/log/proxy/envoy.log

[2026-07-21T10:48:11.101Z] #.#.#.# #.#.#.# "POST" "/api/v1/upgrade/plan?action=upgrade" "HTTP/1.1" 0 DC 0 0 30030 - "#.#.#.#" "ansible-httpget" "12abc37a-###-###-###-5517f14" "#.#.#.#" "127.0.0.1:7442"
[2026-07-21T10:53:46.139Z] #.#.#.# #.#.#.# "POST" "/api/v1/upgrade/plan?action=upgrade" "HTTP/1.1" 400 - 0 240 5496 149 "#.#.#.#" "ansible-httpget" "1106a5e0-###-###-###-ddfg9a082165" "#.#.#.#" "127.0.0.1:7442"
[2026-07-21T08:20:55.168Z] #.#.#.# #.#.#.# "POST" "/api/v1/upgrade/plan?action=upgrade" "HTTP/1.1" 200 - 0 0 12015 9707 "#.#.#.#" "ansible-httpget" "2b26a56c-###-####-####-7655ad276f58" "#.#.#.#" "127.0.0.1:7442"

 

Environment

VMware NSX

Cause

The automatic progression to the Management Plane is triggered when an external API call (POST /api/v1/upgrade/plan?action=upgrade) is executed without the necessary component_type URL parameter. Because the parameter is missing, the NSX Upgrade Coordinator interprets the request as a generic command to continue the entire upgrade plan. Upon detecting that the Host (TN) phase is complete, it automatically advances to the next component in the queue.

Resolution

 To prevent unintended automatic progression to the Management Plane, update your automation scripts to include the component_type parameter when initiating upgrade actions.

  1. Identify the API payload used in your automation script (e.g., Ansible task or curl command).
  2. Add the component_type parameter to the API request.
    • Example: POST /api/v1/upgrade/plan?action=upgrade&component_type=MANAGEMENT_PLANE
  3. Ensure the script explicitly defines the component boundaries for each phase of the upgrade.
  4. Test the corrected script in a non-production environment to verify that the upgrade pauses as expected after the intended phase.