Help Center/ Elastic Load Balance/ API Reference/ APIs (V3)/ Load Balancer/ Querying the Status Tree of a Load Balancer
Updated on 2024-09-26 GMT+08:00

Querying the Status Tree of a Load Balancer

Function

This API is used to query the status tree of a load balancer and to show information about all resources associated with the load balancer.

When admin_state_up is set to false and operating_status to OFFLINE for a backend server, DISABLE is returned for operating_status of the backend server in the response of this API.

Note: The value of operating_status returned in this API may be different from the value of operating_status of the corresponding resource.

Calling Method

For details, see Calling APIs.

URI

GET /v3/{project_id}/elb/loadbalancers/{loadbalancer_id}/statuses

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Specifies the project ID.

loadbalancer_id

Yes

String

Specifies the load balancer ID.

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

Yes

String

Specifies the token used for IAM authentication.

Response Parameters

Status code: 200

Table 3 Response body parameters

Parameter

Type

Description

statuses

LoadBalancerStatusResult object

Provides information about the load balancer status tree.

request_id

String

Specifies the request ID.

Note: The value is automatically generated.

Table 4 LoadBalancerStatusResult

Parameter

Type

Description

loadbalancer

LoadBalancerStatus object

Specifies the statuses of the load balancer and its associated resources.

Table 5 LoadBalancerStatus

Parameter

Type

Description

name

String

Specifies the load balancer name.

provisioning_status

String

Specifies the provisioning status of the load balancer. The value can be ACTIVE or PENDING_DELETE.

  • ACTIVE: The load balancer is successfully provisioned.

  • PENDING_DELETE: The load balancer is being deleted.

listeners

Array of LoadBalancerStatusListener objects

Lists the listeners added to the load balancer.

pools

Array of LoadBalancerStatusPool objects

Lists the backend server groups associated with the load balancer.

id

String

Specifies the load balancer ID.

operating_status

String

Specifies the operating status of the load balancer.

The value can only be one of the following:

  • ONLINE (default): The load balancer is running normally.

  • FROZEN: The load balancer has been frozen.

  • DEGRADED: This status is displayed only when operating_status is set to OFFLINE for a backend server associated with the load balancer and the API for querying the load balancer status tree is called.

  • DISABLED: This status is displayed only when admin_state_up of the load balancer is set to false.

DEGRADED and DISABLED are returned only when the API for querying the load balancer status tree is called.

Table 6 LoadBalancerStatusListener

Parameter

Type

Description

name

String

Specifies the name of the listener added to the load balancer.

provisioning_status

String

Specifies the provisioning status of the listener. The value can only be ACTIVE, indicating that the listener is successfully provisioned.

pools

Array of LoadBalancerStatusPool objects

Specifies the operating status of the backend server group associated with the listener.

l7policies

Array of LoadBalancerStatusPolicy objects

Specifies the operating status of the forwarding policy added to the listener.

id

String

Specifies the listener ID.

operating_status

String

Specifies the operating status of the listener.

The value can only be one of the following:

  • ONLINE (default): The listener is running normally.

  • DEGRADED: This status is displayed only when provisioning_status of a forwarding policy or a forwarding rule added to the listener is set to ERROR or operating_status is set to OFFLINE for a backend server associated with the listener.

  • DISABLED: This status is displayed only when admin_state_up of the load balancer or of the listener is set to false.

    Note: DEGRADED and DISABLED are returned only when the API for querying the load balancer status tree is called.

Table 7 LoadBalancerStatusPolicy

Parameter

Type

Description

action

String

Specifies whether requests are forwarded to another backend server group or redirected to an HTTPS listener.

The value can be one of the following:

  • REDIRECT_TO_POOL: Requests are forwarded to another backend server group.

  • REDIRECT_TO_LISTENER: Requests are redirected to an HTTPS listener.

id

String

Specifies the forwarding policy ID.

provisioning_status

String

Specifies the provisioning status of the forwarding policy.

  • ACTIVE (default): The forwarding policy is provisioned successfully.

  • ERROR: Another forwarding policy of the same listener has the same forwarding rule.

name

String

Specifies the policy name.

rules

Array of LoadBalancerStatusL7Rule objects

Specifies the forwarding rule.

Table 8 LoadBalancerStatusL7Rule

Parameter

Type

Description

id

String

Specifies the ID of the forwarding rule.

type

String

Specifies the type of the match content. The value can be HOST_NAME or PATH.

  • HOST_NAME: A domain name will be used for matching.

  • PATH: A URL will be used for matching.

The value must be unique for each forwarding rule in a forwarding policy.

provisioning_status

String

Specifies the provisioning status of the forwarding rule.

  • ACTIVE (default): The forwarding rule is successfully provisioned.

  • ERROR: Another forwarding policy of the same listener has the same forwarding rule.

Table 9 LoadBalancerStatusPool

Parameter

Type

Description

provisioning_status

String

Specifies the provisioning status of the backend server group. The value can only be ACTIVE, indicating that the backend server group is successfully provisioned.

name

String

Specifies the name of the backend server group.

healthmonitor

LoadBalancerStatusHealthMonitor object

Specifies the health check results of backend servers in the load balancer status tree.

members

Array of LoadBalancerStatusMember objects

Specifies the backend server.

id

String

Specifies the ID of the backend server group.

operating_status

String

Specifies the operating status of the backend server group.

The value can be one of the following:

  • ONLINE: The backend server group is running normally.

  • DEGRADED: This status is displayed only when operating_status of a backend server in the backend server group is set to OFFLINE.

  • DISABLED: This status is displayed only when admin_state_up of the backend server group or of the associated load balancer is set to false.

Note: DEGRADED and DISABLED are returned only when the API for querying the load balancer status tree is called.

Table 10 LoadBalancerStatusHealthMonitor

Parameter

Type

Description

type

String

Specifies the health check protocol. The value can be TCP, UDP_CONNECT, or HTTP.

id

String

Specifies the health check ID.

name

String

Specifies the health check name.

provisioning_status

String

Specifies the provisioning status of the health check. The value can only be ACTIVE, indicating that the health check is successfully provisioned.

Table 11 LoadBalancerStatusMember

Parameter

Type

Description

provisioning_status

String

Specifies the provisioning status of the backend server. The value can only be ACTIVE, indicating that the backend server is successfully provisioned.

address

String

Specifies the private IP address bound to the backend server.

protocol_port

Integer

Specifies the port used by the backend server to receive requests. The port number ranges from 1 to 65535.

id

String

Specifies the backend server ID.

operating_status

String

Specifies the operating status of the backend server.

The value can be one of the following:

  • ONLINE: The backend server is running normally.

  • NO_MONITOR: No health check is configured for the backend server group to which the backend server belongs.

  • DISABLED: The backend server is not available. This status is displayed only when admin_state_up of the backend server, or the backend server group to which it belongs, or the associated load balancer is set to false and the API for querying the load balancer status tree is called.

  • OFFLINE: The cloud server used as the backend server is stopped or does not exist.

Example Requests

Querying the status tree of a load balancer

GET https://{ELB_Endpoint}/v3/{project_id}/elb/loadbalancers/38278031-cfca-44be-81be-a412f618773b/statuses

Example Responses

Status code: 200

Successful request.

{
  "statuses" : {
    "loadbalancer" : {
      "name" : "lb-jy",
      "provisioning_status" : "ACTIVE",
      "listeners" : [ {
        "name" : "listener-jy-1",
        "provisioning_status" : "ACTIVE",
        "pools" : [ {
          "name" : "pool-jy-1",
          "provisioning_status" : "ACTIVE",
          "healthmonitor" : {
            "type" : "TCP",
            "id" : "7422b51a-0ed2-4702-9429-4f88349276c6",
            "name" : "",
            "provisioning_status" : "ACTIVE"
          },
          "members" : [ {
            "protocol_port" : 80,
            "address" : "192.168.44.11",
            "id" : "7bbf7151-0dce-4087-b316-06c7fa17b894",
            "operating_status" : "ONLINE",
            "provisioning_status" : "ACTIVE"
          } ],
          "id" : "c54b3286-2349-4c5c-ade1-e6bb0b26ad18",
          "operating_status" : "ONLINE"
        } ],
        "l7policies" : [ ],
        "id" : "eb84c5b4-9bc5-4bee-939d-3900fb05dc7b",
        "operating_status" : "ONLINE"
      } ],
      "pools" : [ {
        "name" : "pool-jy-1",
        "provisioning_status" : "ACTIVE",
        "healthmonitor" : {
          "type" : "TCP",
          "id" : "7422b51a-0ed2-4702-9429-4f88349276c6",
          "name" : "",
          "provisioning_status" : "ACTIVE"
        },
        "members" : [ {
          "protocol_port" : 80,
          "address" : "192.168.44.11",
          "id" : "7bbf7151-0dce-4087-b316-06c7fa17b894",
          "operating_status" : "ONLINE",
          "provisioning_status" : "ACTIVE"
        } ],
        "id" : "c54b3286-2349-4c5c-ade1-e6bb0b26ad18",
        "operating_status" : "ONLINE"
      } ],
      "id" : "38278031-cfca-44be-81be-a412f618773b",
      "operating_status" : "ONLINE"
    }
  }
}

SDK Sample Code

The SDK sample code is as follows.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.elb.v3.region.ElbRegion;
import com.huaweicloud.sdk.elb.v3.*;
import com.huaweicloud.sdk.elb.v3.model.*;


public class ShowLoadBalancerStatusSolution {

    public static void main(String[] args) {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        String ak = System.getenv("CLOUD_SDK_AK");
        String sk = System.getenv("CLOUD_SDK_SK");
        String projectId = "{project_id}";

        ICredential auth = new BasicCredentials()
                .withProjectId(projectId)
                .withAk(ak)
                .withSk(sk);

        ElbClient client = ElbClient.newBuilder()
                .withCredential(auth)
                .withRegion(ElbRegion.valueOf("<YOUR REGION>"))
                .build();
        ShowLoadBalancerStatusRequest request = new ShowLoadBalancerStatusRequest();
        request.withLoadbalancerId("{loadbalancer_id}");
        try {
            ShowLoadBalancerStatusResponse response = client.showLoadBalancerStatus(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkelb.v3.region.elb_region import ElbRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkelb.v3 import *

if __name__ == "__main__":
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = os.environ["CLOUD_SDK_AK"]
    sk = os.environ["CLOUD_SDK_SK"]
    projectId = "{project_id}"

    credentials = BasicCredentials(ak, sk, projectId)

    client = ElbClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(ElbRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = ShowLoadBalancerStatusRequest()
        request.loadbalancer_id = "{loadbalancer_id}"
        response = client.show_load_balancer_status(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    elb "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/elb/v3"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/elb/v3/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/elb/v3/region"
)

func main() {
    // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak := os.Getenv("CLOUD_SDK_AK")
    sk := os.Getenv("CLOUD_SDK_SK")
    projectId := "{project_id}"

    auth := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        WithProjectId(projectId).
        Build()

    client := elb.NewElbClient(
        elb.ElbClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.ShowLoadBalancerStatusRequest{}
	request.LoadbalancerId = "{loadbalancer_id}"
	response, err := client.ShowLoadBalancerStatus(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.

Status Codes

Status Code

Description

200

Successful request.

Error Codes

See Error Codes.