Updated on 2024-03-29 GMT+08:00

Querying Resources

Function

This API is used to query resources by resource type.

Calling Method

For details, see Calling APIs.

URI

POST /v3/{domain_id}/ccaas/{resource_type}/resource-instances/action

Table 1 Path Parameters

Parameter

Mandatory

Type

Description

domain_id

Yes

String

Account ID.

Minimum: 10

Maximum: 32

resource_type

Yes

String

Resource type.

  • cloud-connection: cloud connection

  • bandwidth-package: bandwidth package

Request Parameters

Table 2 Request header parameters

Parameter

Mandatory

Type

Description

X-Auth-Token

No

String

User token.

Minimum: 0

Maximum: 102400

Table 3 Request body parameters

Parameter

Mandatory

Type

Description

action

No

String

Action.

  • filter: queries specific resources based on query criteria.

  • count: queries the total number of resources.

limit

No

Integer

Maximum records that can be displayed on one page.

Minimum: 1

Maximum: 1000.0

offset

No

Integer

Query result offset.

Minimum: 0

Maximum: 999

tags

No

Array of AggTag objects

Whether the following tags are contained. (If there are multiple keys, they are in the AND relationship. If there are multiple values, they are in the OR relationship.)

Array Length: 0 - 50

matches

No

Array of Tag objects

Whether to match the following tags. The key must be resource_name. If the value is set, fuzzy matching is used. If the value is an empty string, exact matching is used.

Array Length: 0 - 50

Table 4 AggTag

Parameter

Mandatory

Type

Description

key

No

String

Tag key.

Minimum: 1

Maximum: 128

values

No

Array of strings

List of values with the same key.

Minimum: 0

Maximum: 255

Array Length: 1 - 10

Table 5 Tag

Parameter

Mandatory

Type

Description

key

No

String

Tag key.

Minimum: 1

Maximum: 128

value

No

String

Tag value.

Minimum: 0

Maximum: 255

Response Parameters

Status code: 200

Table 6 Response body parameters

Parameter

Type

Description

resources

Array of FilterTagResource objects

Resource list.

Array Length: 0 - 2000

request_id

String

Request ID.

Minimum: 0

Maximum: 36

total_count

Integer

Total number of resources that meet the query criteria.

Minimum: 0

Maximum: 2000.0

Table 7 FilterTagResource

Parameter

Type

Description

resource_id

String

Resource ID.

Minimum: 0

Maximum: 36

resource_name

String

Resource name.

Minimum: 0

Maximum: 64

resource_detail

String

Resource details.

Minimum: 0

Maximum: 255

tags

Array of Tag objects

Tags added for a resource.

Array Length: 0 - 20

Table 8 Tag

Parameter

Type

Description

key

String

Tag key.

Minimum: 1

Maximum: 128

value

String

Tag value.

Minimum: 0

Maximum: 255

Example Requests

  • Querying resource details using specified filter criteria

    POST https://{cc_endpoint}/v3/{domain_id}/ccaas/{resource_type}/resource-instances/action
    
    {
      "offset" : "0",
      "limit" : "100",
      "action" : "filter",
      "matches" : [ {
        "key" : "resource_name",
        "value" : "resource1"
      } ],
      "tags" : [ {
        "key" : "key1",
        "values" : [ "value1", "value2" ]
      } ]
    }
  • Querying resource quantity using specified filter criteria

    POST https://{cc_endpoint}/v3/{domain_id}/ccaas/cloud-connection/resource-instances/action
    
    {
      "action" : "count",
      "tags" : [ {
        "key" : "key1",
        "values" : [ "value1", "value2" ]
      }, {
        "key" : "key2",
        "values" : [ "value1", "value2" ]
      } ],
      "matches" : [ {
        "key" : "resource_name",
        "value" : "resource1"
      } ]
    }

Example Responses

Status code: 200

Resources found.

{
  "resources" : [ {
    "resource_id" : "cdfs_cefs_wesas_12_dsad",
    "resource_name" : "resouece1",
    "tags" : [ {
      "key" : "key1",
      "value" : "value1"
    }, {
      "key" : "key2",
      "value" : "value1"
    } ]
  } ],
  "request_id" : "XXX",
  "total_count" : 1000
}

SDK Sample Code

The SDK sample code is as follows.

  • Querying resource details using specified filter criteria

     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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.GlobalCredentials;
    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.cc.v2.region.CcRegion;
    import com.huaweicloud.sdk.cc.v2.*;
    import com.huaweicloud.sdk.cc.v2.model.*;
    
    import java.util.List;
    import java.util.ArrayList;
    
    public class ListResourceByFilterTagSolution {
    
        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 GlobalCredentials()
                    .withAk(ak)
                    .withSk(sk);
    
            CcClient client = CcClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(CcRegion.valueOf("<YOUR REGION>"))
                    .build();
            ListResourceByFilterTagRequest request = new ListResourceByFilterTagRequest();
            ListResourceByFilterTagRequestBody body = new ListResourceByFilterTagRequestBody();
            List<Tag> listbodyMatches = new ArrayList<>();
            listbodyMatches.add(
                new Tag()
                    .withKey("resource_name")
                    .withValue("resource1")
            );
            List<String> listTagsValues = new ArrayList<>();
            listTagsValues.add("value1");
            listTagsValues.add("value2");
            List<AggTag> listbodyTags = new ArrayList<>();
            listbodyTags.add(
                new AggTag()
                    .withKey("key1")
                    .withValues(listTagsValues)
            );
            body.withMatches(listbodyMatches);
            body.withTags(listbodyTags);
            body.withOffset(0);
            body.withLimit(100);
            body.withAction(ListResourceByFilterTagRequestBody.ActionEnum.fromValue("filter"));
            request.withBody(body);
            try {
                ListResourceByFilterTagResponse response = client.listResourceByFilterTag(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());
            }
        }
    }
    
  • Querying resource quantity using specified filter criteria

     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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    package com.huaweicloud.sdk.test;
    
    import com.huaweicloud.sdk.core.auth.ICredential;
    import com.huaweicloud.sdk.core.auth.GlobalCredentials;
    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.cc.v2.region.CcRegion;
    import com.huaweicloud.sdk.cc.v2.*;
    import com.huaweicloud.sdk.cc.v2.model.*;
    
    import java.util.List;
    import java.util.ArrayList;
    
    public class ListResourceByFilterTagSolution {
    
        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 GlobalCredentials()
                    .withAk(ak)
                    .withSk(sk);
    
            CcClient client = CcClient.newBuilder()
                    .withCredential(auth)
                    .withRegion(CcRegion.valueOf("<YOUR REGION>"))
                    .build();
            ListResourceByFilterTagRequest request = new ListResourceByFilterTagRequest();
            ListResourceByFilterTagRequestBody body = new ListResourceByFilterTagRequestBody();
            List<Tag> listbodyMatches = new ArrayList<>();
            listbodyMatches.add(
                new Tag()
                    .withKey("resource_name")
                    .withValue("resource1")
            );
            List<String> listTagsValues = new ArrayList<>();
            listTagsValues.add("value1");
            listTagsValues.add("value2");
            List<String> listTagsValues1 = new ArrayList<>();
            listTagsValues1.add("value1");
            listTagsValues1.add("value2");
            List<AggTag> listbodyTags = new ArrayList<>();
            listbodyTags.add(
                new AggTag()
                    .withKey("key1")
                    .withValues(listTagsValues1)
            );
            listbodyTags.add(
                new AggTag()
                    .withKey("key2")
                    .withValues(listTagsValues)
            );
            body.withMatches(listbodyMatches);
            body.withTags(listbodyTags);
            body.withAction(ListResourceByFilterTagRequestBody.ActionEnum.fromValue("count"));
            request.withBody(body);
            try {
                ListResourceByFilterTagResponse response = client.listResourceByFilterTag(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());
            }
        }
    }
    
  • Querying resource details using specified filter criteria

     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
    52
    # coding: utf-8
    
    from huaweicloudsdkcore.auth.credentials import GlobalCredentials
    from huaweicloudsdkcc.v2.region.cc_region import CcRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkcc.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 = GlobalCredentials(ak, sk) \
    
        client = CcClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(CcRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = ListResourceByFilterTagRequest()
            listMatchesbody = [
                Tag(
                    key="resource_name",
                    value="resource1"
                )
            ]
            listValuesTags = [
                "value1",
                "value2"
            ]
            listTagsbody = [
                AggTag(
                    key="key1",
                    values=listValuesTags
                )
            ]
            request.body = ListResourceByFilterTagRequestBody(
                matches=listMatchesbody,
                tags=listTagsbody,
                offset=0,
                limit=100,
                action="filter"
            )
            response = client.list_resource_by_filter_tag(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Querying resource quantity using specified filter criteria

     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
    52
    53
    54
    55
    56
    57
    58
    # coding: utf-8
    
    from huaweicloudsdkcore.auth.credentials import GlobalCredentials
    from huaweicloudsdkcc.v2.region.cc_region import CcRegion
    from huaweicloudsdkcore.exceptions import exceptions
    from huaweicloudsdkcc.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 = GlobalCredentials(ak, sk) \
    
        client = CcClient.new_builder() \
            .with_credentials(credentials) \
            .with_region(CcRegion.value_of("<YOUR REGION>")) \
            .build()
    
        try:
            request = ListResourceByFilterTagRequest()
            listMatchesbody = [
                Tag(
                    key="resource_name",
                    value="resource1"
                )
            ]
            listValuesTags = [
                "value1",
                "value2"
            ]
            listValuesTags1 = [
                "value1",
                "value2"
            ]
            listTagsbody = [
                AggTag(
                    key="key1",
                    values=listValuesTags1
                ),
                AggTag(
                    key="key2",
                    values=listValuesTags
                )
            ]
            request.body = ListResourceByFilterTagRequestBody(
                matches=listMatchesbody,
                tags=listTagsbody,
                action="count"
            )
            response = client.list_resource_by_filter_tag(request)
            print(response)
        except exceptions.ClientRequestException as e:
            print(e.status_code)
            print(e.request_id)
            print(e.error_code)
            print(e.error_msg)
    
  • Querying resource details using specified filter criteria

     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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/global"
        cc "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cc/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cc/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cc/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 := global.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            Build()
    
        client := cc.NewCcClient(
            cc.CcClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.ListResourceByFilterTagRequest{}
    	keyMatches:= "resource_name"
    	valueMatches:= "resource1"
    	var listMatchesbody = []model.Tag{
            {
                Key: &keyMatches,
                Value: &valueMatches,
            },
        }
    	var listValuesTags = []string{
            "value1",
    	    "value2",
        }
    	keyTags:= "key1"
    	var listTagsbody = []model.AggTag{
            {
                Key: &keyTags,
                Values: &listValuesTags,
            },
        }
    	offsetListResourceByFilterTagRequestBody:= int32(0)
    	limitListResourceByFilterTagRequestBody:= int32(100)
    	actionListResourceByFilterTagRequestBody:= model.GetListResourceByFilterTagRequestBodyActionEnum().FILTER
    	request.Body = &model.ListResourceByFilterTagRequestBody{
    		Matches: &listMatchesbody,
    		Tags: &listTagsbody,
    		Offset: &offsetListResourceByFilterTagRequestBody,
    		Limit: &limitListResourceByFilterTagRequestBody,
    		Action: &actionListResourceByFilterTagRequestBody,
    	}
    	response, err := client.ListResourceByFilterTag(request)
    	if err == nil {
            fmt.Printf("%+v\n", response)
        } else {
            fmt.Println(err)
        }
    }
    
  • Querying resource quantity using specified filter criteria

     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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    package main
    
    import (
    	"fmt"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/global"
        cc "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cc/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cc/v2/model"
        region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cc/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 := global.NewCredentialsBuilder().
            WithAk(ak).
            WithSk(sk).
            Build()
    
        client := cc.NewCcClient(
            cc.CcClientBuilder().
                WithRegion(region.ValueOf("<YOUR REGION>")).
                WithCredential(auth).
                Build())
    
        request := &model.ListResourceByFilterTagRequest{}
    	keyMatches:= "resource_name"
    	valueMatches:= "resource1"
    	var listMatchesbody = []model.Tag{
            {
                Key: &keyMatches,
                Value: &valueMatches,
            },
        }
    	var listValuesTags = []string{
            "value1",
    	    "value2",
        }
    	var listValuesTags1 = []string{
            "value1",
    	    "value2",
        }
    	keyTags:= "key1"
    	keyTags1:= "key2"
    	var listTagsbody = []model.AggTag{
            {
                Key: &keyTags,
                Values: &listValuesTags1,
            },
            {
                Key: &keyTags1,
                Values: &listValuesTags,
            },
        }
    	actionListResourceByFilterTagRequestBody:= model.GetListResourceByFilterTagRequestBodyActionEnum().COUNT
    	request.Body = &model.ListResourceByFilterTagRequestBody{
    		Matches: &listMatchesbody,
    		Tags: &listTagsbody,
    		Action: &actionListResourceByFilterTagRequestBody,
    	}
    	response, err := client.ListResourceByFilterTag(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

Resources found.

Error Codes

See Error Codes.