diff --git a/specification/network/resource-manager/Microsoft.Network/stable/2021-02-01/examples/LoadBalancersSwapPublicIpAddresses.json b/specification/network/resource-manager/Microsoft.Network/stable/2021-02-01/examples/LoadBalancersSwapPublicIpAddresses.json new file mode 100644 index 000000000000..ec111a82c748 --- /dev/null +++ b/specification/network/resource-manager/Microsoft.Network/stable/2021-02-01/examples/LoadBalancersSwapPublicIpAddresses.json @@ -0,0 +1,31 @@ +{ + "parameters": { + "api-version": "2021-02-01", + "subscriptionId": "subid", + "location": "westus", + "parameters": { + "frontendIPConfigurations": [ + { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/loadBalancers/lb1/frontendIPConfigurations/lbfe1", + "properties": { + "publicIPAddress": { + "id": "/subscriptions/subid/resourceGroups/rg2/providers/Microsoft.Network/publicIPAddresses/pip2" + } + } + }, + { + "id": "/subscriptions/subid/resourceGroups/rg2/providers/Microsoft.Network/loadBalancers/lb2/frontendIPConfigurations/lbfe2", + "properties": { + "publicIPAddress": { + "id": "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/publicIPAddresses/pip1" + } + } + } + ] + } + }, + "responses": { + "200": {}, + "202": {} + } +} diff --git a/specification/network/resource-manager/Microsoft.Network/stable/2021-02-01/loadBalancer.json b/specification/network/resource-manager/Microsoft.Network/stable/2021-02-01/loadBalancer.json index 5ea4513845ef..77b738e4c316 100644 --- a/specification/network/resource-manager/Microsoft.Network/stable/2021-02-01/loadBalancer.json +++ b/specification/network/resource-manager/Microsoft.Network/stable/2021-02-01/loadBalancer.json @@ -1323,6 +1323,62 @@ } } }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{location}/setLoadBalancerFrontendPublicIpAddresses": { + "post": { + "tags": [ + "LoadBalancers" + ], + "operationId": "LoadBalancers_SwapPublicIpAddresses", + "description": "Swaps VIPs between two load balancers.", + "parameters": [ + { + "name": "location", + "in": "path", + "required": true, + "type": "string", + "description": "The region where load balancers are located at." + }, + { + "name": "parameters", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/LoadBalancerVipSwapRequest" + }, + "description": "Parameters that define which VIPs should be swapped." + }, + { + "$ref": "./network.json#/parameters/ApiVersionParameter" + }, + { + "$ref": "./network.json#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "Request successful." + }, + "202": { + "description": "Accepted and the operation will complete asynchronously." + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "./network.json#/definitions/CloudError" + } + } + }, + "x-ms-examples": { + "Swap VIPs between two load balancers.": { + "$ref": "./examples/LoadBalancersSwapPublicIpAddresses.json" + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + } + } + }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes/{probeName}": { "get": { "tags": [ @@ -2336,6 +2392,41 @@ "name": "TransportProtocol", "modelAsString": true } + }, + "LoadBalancerVipSwapRequest": { + "properties": { + "frontendIPConfigurations": { + "type": "array", + "items": { + "$ref": "#/definitions/LoadBalancerVipSwapRequestFrontendIPConfiguration" + }, + "description": "A list of frontend IP configuration resources that should swap VIPs." + } + }, + "description": "The request for a VIP swap." + }, + "LoadBalancerVipSwapRequestFrontendIPConfiguration": { + "properties": { + "id": { + "type": "string", + "description": "The ID of frontend IP configuration resource." + }, + "properties": { + "x-ms-client-flatten": true, + "$ref": "#/definitions/LoadBalancerVipSwapRequestFrontendIPConfigurationProperties", + "description": "The properties of VIP swap request's frontend IP configuration object." + } + }, + "description": "VIP swap request's frontend IP configuration object." + }, + "LoadBalancerVipSwapRequestFrontendIPConfigurationProperties": { + "properties": { + "publicIPAddress": { + "$ref": "./network.json#/definitions/SubResource", + "description": "A reference to public IP address resource." + } + }, + "description": "The properties of VIP swap request's frontend IP configuration object." } } }