文档首页/ 云连接 CC/ API参考/ API/ 分支网络管理/ 创建P2P类型的分支网络
更新时间:2024-11-25 GMT+08:00
分享

创建P2P类型的分支网络

功能介绍

创建P2P类型的分支网络。

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

POST /v3/{domain_id}/dcaas/p2p-site-networks

表1 路径参数

参数

是否必选

参数类型

描述

domain_id

String

账号ID。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。

表3 请求Body参数

参数

是否必选

参数类型

描述

p2p_site_network

CreateP2PSiteNetwork object

创建P2P类型的分支网络的请求体。

表4 CreateP2PSiteNetwork

参数

是否必选

参数类型

描述

name

String

实例名称。

description

String

实例描述。不支持 <>。

tags

Array of Tag objects

实例标签。

enterprise_project_id

String

实例所属企业项目ID。

sites

Array of CreateSiteInformation objects

端到端(P2P)类型分支网络连接的两个端点定义,长度固定为2的数组。

表5 Tag

参数

是否必选

参数类型

描述

key

String

标签键,最大长度128个unicode字符,格式为大小写字母,数字,中划线“-”,下划线“_”,中文。

value

String

标签值,最大长度255个unicode字符,格式为大小写字母,数字,中划线“-”,下划线“_”,点“.”,中文。

表6 CreateSiteInformation

参数

是否必选

参数类型

描述

region_id

String

RegionID。

project_id

String

实例所属项目ID。

gateway_type

String

网关的类型。GDGW:全球接入网关。

gateway_id

String

网关的ID。

响应参数

状态码: 202

表7 响应Body参数

参数

参数类型

描述

request_id

String

请求ID。

site_network

SiteNetworkEntry object

分支网络。

表8 SiteNetworkEntry

参数

参数类型

描述

id

String

实例ID。

name

String

实例名称。

description

String

实例描述。不支持 <>。

created_at

String

实例创建时间。UTC时间格式,yyyy-MM-ddTHH:mm:ss。

updated_at

String

实例更新时间。UTC时间格式,yyyy-MM-ddTHH:mm:ss。

domain_id

String

实例所属账号ID。

state

String

分支网络状态。

  • AVAILABLE (可用)

  • UPDATING (处理中)

  • FAILED (失败)

  • CREATING (创建中

  • DELETING (删除中)

  • DELETED (已刪除)

  • NON-COMPLETE (配置未完成)

  • RESTORING (恢复中)

enterprise_project_id

String

实例所属企业项目ID。

apply_policy_id

String

应用策略ID。

tags

Array of Tag objects

实例标签。

topology

String

拓扑结构。

  • p2p(点对点拓扑)

  • mesh (网状拓扑)

  • star (星形拓扑)

  • hybrid (混合拓扑)

connections

Array of SiteConnection objects

分支连接列表。

sites

Array of SiteInformation objects

点对点拓扑或者网状拓扑中的节点。

hub_site

SiteInformation object

分支信息。

spoke_sites

Array of SiteInformation objects

分支列表。

表9 Tag

参数

参数类型

描述

key

String

标签键,最大长度128个unicode字符,格式为大小写字母,数字,中划线“-”,下划线“_”,中文。

value

String

标签值,最大长度255个unicode字符,格式为大小写字母,数字,中划线“-”,下划线“_”,点“.”,中文。

表10 SiteConnection

参数

参数类型

描述

id

String

实例ID。

site_network_id

String

分支网络ID。

state

String

分支网络连接状态。

  • AVAILABLE (可用)

  • CREATING (创建中)

  • UPDATING (更新中)

  • DELETING (删除中)

  • FREEZING (冻结中)

  • UNFREEZING (解冻中)

  • RECOVERING (恢复中)

  • FAILED (失败)

  • FREEZED (冻结)

  • DELETED (已刪除)

created_at

String

实例创建时间。UTC时间格式,yyyy-MM-ddTHH:mm:ss。

updated_at

String

实例更新时间。UTC时间格式,yyyy-MM-ddTHH:mm:ss。

edge_pair

Array of DirectedEdge objects

分支网络连接的两个端点定义,长度固定为2的数组。

cross_region_type

String

跨地域类型。

  • intra-region (同地域)

  • inter-region (跨地域)

global_connection_bandwidth_id

String

全域互联带宽ID。

bandwidth_size

Integer

带宽值,单位Mbps。

is_frozen

Boolean

是否冻结。

frozen_effect

String

冻结效果。

  • RELEASABLE(冻结可释放)

  • UNRELEASABLE(冻结不可释放)

is_bind_bandwidth

Boolean

是否绑定带宽包。

表11 DirectedEdge

参数

参数类型

描述

id

String

实例ID。

region_id

String

RegionID。

gateway_id

String

网关的ID。

gateway_type

String

网关的类型。GDGW:全球接入网关。

site_code

String

站点编码。

project_id

String

实例所属项目ID。

表12 SiteInformation

参数

参数类型

描述

region_id

String

RegionID。

project_id

String

实例所属项目ID。

gateway_type

String

网关的类型。GDGW:全球接入网关。

gateway_id

String

网关的ID。

site_code

String

站点编码。

asn

Long

网络实例BGP协议的AS号。

请求示例

创建P2P类型的分支网络。

POST /v3/{domain_id}/dcaas/p2p-site-networks

{
  "p2p_site_network" : {
    "name" : "name",
    "description" : "description",
    "sites" : [ {
      "gateway_id" : "1c233723-234c-4b50-8fba-7072b4c6aa1a",
      "project_id" : "XXX",
      "region_id" : "region-abc",
      "gateway_type" : "GDGW"
    }, {
      "gateway_id" : "8641d7f0-bd0c-49fe-8b70-3649cd7dd9b1",
      "project_id" : "XXX",
      "region_id" : "region-abc",
      "gateway_type" : "GDGW"
    } ]
  }
}

响应示例

状态码: 202

接受创建分支网络。

{
  "request_id" : "a3bad420-33b8-4e26-9e9b-bdf67aa8e72b",
  "site_network" : {
    "id" : "a3bad420-33b8-4e26-9e9b-bdf67aa8e72b",
    "name" : "name",
    "description" : "description",
    "domain_id" : "XXX",
    "state" : "CREATING",
    "created_at" : "2023-10-09T10:15:32.134Z",
    "updated_at" : "2023-10-09T10:15:32.134Z",
    "enterprise_project_id" : "0",
    "apply_policy_id" : "a3bad420-33b8-4e26-9e9b-bdf67aa8e72b",
    "topology" : "p2p",
    "connections" : [ ]
  }
}

SDK代码示例

SDK代码示例如下。

创建P2P类型的分支网络。

 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.v3.region.CcRegion;
import com.huaweicloud.sdk.cc.v3.*;
import com.huaweicloud.sdk.cc.v3.model.*;

import java.util.List;
import java.util.ArrayList;

public class CreateP2PSiteNetworkSolution {

    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();
        CreateP2PSiteNetworkRequest request = new CreateP2PSiteNetworkRequest();
        CreateP2PSiteNetworkRequestBody body = new CreateP2PSiteNetworkRequestBody();
        List<CreateSiteInformation> listP2pSiteNetworkSites = new ArrayList<>();
        listP2pSiteNetworkSites.add(
            new CreateSiteInformation()
                .withRegionId("region-abc")
                .withGatewayType(CreateSiteInformation.GatewayTypeEnum.fromValue("GDGW"))
                .withProjectId("XXX")
                .withGatewayId("1c233723-234c-4b50-8fba-7072b4c6aa1a")
        );
        listP2pSiteNetworkSites.add(
            new CreateSiteInformation()
                .withRegionId("region-abc")
                .withGatewayType(CreateSiteInformation.GatewayTypeEnum.fromValue("GDGW"))
                .withProjectId("XXX")
                .withGatewayId("8641d7f0-bd0c-49fe-8b70-3649cd7dd9b1")
        );
        CreateP2PSiteNetwork p2pSiteNetworkbody = new CreateP2PSiteNetwork();
        p2pSiteNetworkbody.withName("name")
            .withDescription("description")
            .withSites(listP2pSiteNetworkSites);
        body.withP2pSiteNetwork(p2pSiteNetworkbody);
        request.withBody(body);
        try {
            CreateP2PSiteNetworkResponse response = client.createP2PSiteNetwork(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());
        }
    }
}

创建P2P类型的分支网络。

 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

import os
from huaweicloudsdkcore.auth.credentials import GlobalCredentials
from huaweicloudsdkcc.v3.region.cc_region import CcRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkcc.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"]

    credentials = GlobalCredentials(ak, sk)

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

    try:
        request = CreateP2PSiteNetworkRequest()
        listSitesP2pSiteNetwork = [
            CreateSiteInformation(
                region_id="region-abc",
                gateway_type="GDGW",
                project_id="XXX",
                gateway_id="1c233723-234c-4b50-8fba-7072b4c6aa1a"
            ),
            CreateSiteInformation(
                region_id="region-abc",
                gateway_type="GDGW",
                project_id="XXX",
                gateway_id="8641d7f0-bd0c-49fe-8b70-3649cd7dd9b1"
            )
        ]
        p2pSiteNetworkbody = CreateP2PSiteNetwork(
            name="name",
            description="description",
            sites=listSitesP2pSiteNetwork
        )
        request.body = CreateP2PSiteNetworkRequestBody(
            p2p_site_network=p2pSiteNetworkbody
        )
        response = client.create_p2_p_site_network(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)

创建P2P类型的分支网络。

 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
package main

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

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

    client := cc.NewCcClient(
        cc.CcClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.CreateP2PSiteNetworkRequest{}
	gatewayTypeSites:= model.GetCreateSiteInformationGatewayTypeEnum().GDGW
	gatewayTypeSites1:= model.GetCreateSiteInformationGatewayTypeEnum().GDGW
	var listSitesP2pSiteNetwork = []model.CreateSiteInformation{
        {
            RegionId: "region-abc",
            GatewayType: &gatewayTypeSites,
            ProjectId: "XXX",
            GatewayId: "1c233723-234c-4b50-8fba-7072b4c6aa1a",
        },
        {
            RegionId: "region-abc",
            GatewayType: &gatewayTypeSites1,
            ProjectId: "XXX",
            GatewayId: "8641d7f0-bd0c-49fe-8b70-3649cd7dd9b1",
        },
    }
	descriptionP2pSiteNetwork:= "description"
	p2pSiteNetworkbody := &model.CreateP2PSiteNetwork{
		Name: "name",
		Description: &descriptionP2pSiteNetwork,
		Sites: listSitesP2pSiteNetwork,
	}
	request.Body = &model.CreateP2PSiteNetworkRequestBody{
		P2pSiteNetwork: p2pSiteNetworkbody,
	}
	response, err := client.CreateP2PSiteNetwork(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。

状态码

状态码

描述

202

接受创建分支网络。

错误码

请参见错误码

相关文档