Updated on 2024-04-09 GMT+08:00

Obtaining Session List

Function

This API is used to obtain the session list.

Calling Method

For details, see Calling APIs.

URI

GET /v2/{project_id}/instances/{instance_id}/clients

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

project_id

Yes

String

Project ID. For details, see Obtaining a Project ID.

instance_id

Yes

String

Instance ID.

Table 2 Query Parameters

Parameter

Mandatory

Type

Description

node_id

Yes

String

Node ID.

offset

No

Integer

Offset, which is the position where the query starts. The value must be greater than or equal to 0. The default value is 0.

Minimum: 1

limit

No

Integer

Number of records displayed on each page. The minimum value is 1. The maximum value is 1000*. The default value is 10.

Minimum: 1

Maximum: 1000

Default: 10

addr

No

String

Filter by client connection addresses.

sort

No

String

Sorting field, which specifies a value in the ClientInfo for sorting sessions.

order

No

String

Sorting mode. The options are asc (ascending order) and desc (descending order).

Default: desc

Enumeration values:

  • asc

  • desc

Request Parameters

None

Response Parameters

Status code: 200

Table 3 Response body parameters

Parameter

Type

Description

time

String

Data update time.

clients

Array of ClientInfo objects

Session list.

count

Integer

Total number of sessions.

Table 4 ClientInfo

Parameter

Type

Description

id

String

Client ID.

addr

String

IP address and port of the client.

fd

String

File descriptor used in containers.

name

String

Client name.

cmd

String

Last executed command.

age

Integer

Connection duration (s).

idle

String

Idle duration (s).

db

String

ID of the database used by the client.

flags

String

Client flag. By default, this parameter is not set and the value is N.

sub

Integer

Number of subscribed channels.

psub

Integer

Number of subscribed modes.

multi

Integer

Number of commands executed in a transaction.

qbuf

Integer

Querying buffer length, in bytes. 0: There is no buffer.

qbuf_free

Integer

Querying length of the remaining buffer, in bytes. 0: There is no remaining buffer.

obl

Integer

Length of output buffer, in bytes. 0: No output buffer is allocated.

oll

Integer

Number of objects contained in the output list (When the length of the remaining buffer is 0, responses to user commands are enqueued as a string object.)

omem

Integer

Total memory occupied by the output buffer and the output list.

events

String

File operations. r indicates read and w indicates write.

Enumeration values:

  • r

  • w

network

String

Type of the network used by the client.

peer

String

IP address and port of the client.

user

String

Client user.

Status code: 400

Table 5 Response body parameters

Parameter

Type

Description

error_msg

String

Error message.

error_code

String

Error code.

error_ext_msg

String

Error message details.

Status code: 401

Table 6 Response body parameters

Parameter

Type

Description

error_msg

String

Error message.

error_code

String

Error code.

error_ext_msg

String

Error message details.

Status code: 403

Table 7 Response body parameters

Parameter

Type

Description

error_msg

String

Error message.

error_code

String

Error code.

error_ext_msg

String

Error message details.

Status code: 404

Table 8 Response body parameters

Parameter

Type

Description

error_msg

String

Error message.

error_code

String

Error code.

error_ext_msg

String

Error message details.

Status code: 500

Table 9 Response body parameters

Parameter

Type

Description

error_msg

String

Error message.

error_code

String

Error code.

error_ext_msg

String

Error message details.

Example Requests

GET https://{dcs_endpoint}/v2/{project_id}/instances/{instance_id}/clients

Example Responses

Status code: 200

Successful.

{
  "time" : "2023-06-15T03:10:01.332Z",
  "clients" : [ {
    "id" : "11677",
    "addr" : "198.19.131.14:1637",
    "name" : "dcs",
    "cmd" : "info",
    "age" : 376,
    "idle" : 376,
    "flags" : "N",
    "fd" : "16",
    "db" : "0",
    "sub" : 0,
    "psub" : 0,
    "multi" : 1,
    "qbuf" : 0,
    "qbuf_free" : 4,
    "obl" : 0,
    "oll" : 0,
    "omem" : 0,
    "events" : "r",
    "network" : "vpc",
    "peer" : "198.198.0.121:4058",
    "user" : "dcs"
  } ],
  "count" : 1
}

Status code: 400

Invalid request.

{
  "error_code" : "DCS.4957",
  "error_msg" : "This operation is not allowed when the task is in the current state."
}

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
49
50
51
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.dcs.v2.region.DcsRegion;
import com.huaweicloud.sdk.dcs.v2.*;
import com.huaweicloud.sdk.dcs.v2.model.*;


public class ListClientsSolution {

    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");

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

        DcsClient client = DcsClient.newBuilder()
                .withCredential(auth)
                .withRegion(DcsRegion.valueOf("<YOUR REGION>"))
                .build();
        ListClientsRequest request = new ListClientsRequest();
        request.withNodeId("<node_id>");
        request.withOffset(<offset>);
        request.withLimit(<limit>);
        request.withAddr("<addr>");
        request.withSort("<sort>");
        request.withOrder(ListClientsRequest.OrderEnum.fromValue("<order>"));
        try {
            ListClientsResponse response = client.listClients(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
33
34
35
# coding: utf-8

from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkdcs.v2.region.dcs_region import DcsRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkdcs.v2 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 = __import__('os').getenv("CLOUD_SDK_AK")
    sk = __import__('os').getenv("CLOUD_SDK_SK")

    credentials = BasicCredentials(ak, sk) \

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

    try:
        request = ListClientsRequest()
        request.node_id = "<node_id>"
        request.offset = <offset>
        request.limit = <limit>
        request.addr = "<addr>"
        request.sort = "<sort>"
        request.order = "<order>"
        response = client.list_clients(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
39
40
41
42
43
44
45
46
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    dcs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dcs/v2"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dcs/v2/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dcs/v2/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")

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

    client := dcs.NewDcsClient(
        dcs.DcsClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.ListClientsRequest{}
	request.NodeId = "<node_id>"
	offsetRequest:= int32(<offset>)
	request.Offset = &offsetRequest
	limitRequest:= int32(<limit>)
	request.Limit = &limitRequest
	addrRequest:= "<addr>"
	request.Addr = &addrRequest
	sortRequest:= "<sort>"
	request.Sort = &sortRequest
	orderRequest:= model.GetListClientsRequestOrderEnum().<ORDER>
	request.Order = &orderRequest
	response, err := client.ListClients(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.

400

Invalid request.

401

Invalid authentication information.

403

Access denied.

404

The requested resource could not be found.

500

Internal service error.

Error Codes

See Error Codes.