Skip to content

Commit

Permalink
Add features in appblb, bcc, bos and vpc
Browse files Browse the repository at this point in the history
  • Loading branch information
duanliguo committed Dec 27, 2022
1 parent ab28790 commit a5e86bf
Show file tree
Hide file tree
Showing 16 changed files with 1,005 additions and 91 deletions.
5 changes: 5 additions & 0 deletions bce/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ func (c *BceClient) buildHttpRequest(request *BceRequest) {
request.SetHeader(http.USER_AGENT, c.Config.UserAgent)
request.SetHeader(http.BCE_DATE, util.FormatISO8601Date(util.NowUTCSeconds()))

//set default content-type if null
if request.Header(http.CONTENT_TYPE) == "" {
request.SetHeader(http.CONTENT_TYPE, DEFAULT_CONTENT_TYPE)
}

// Generate the auth string if needed
if c.Config.Credentials != nil {
c.Signer.Sign(&request.Request, c.Config.Credentials, c.Config.SignOption)
Expand Down
2 changes: 1 addition & 1 deletion bce/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import (

// Constants and default values for the package bce
const (
SDK_VERSION = "0.9.138"
SDK_VERSION = "0.9.139"
URI_PREFIX = "/" // now support uri without prefix "v1" so just set root path
DEFAULT_DOMAIN = "baidubce.com"
DEFAULT_PROTOCOL = "http"
Expand Down
178 changes: 148 additions & 30 deletions doc/BCC.md
Original file line number Diff line number Diff line change
Expand Up @@ -1207,7 +1207,7 @@ if err != nil {
}
```

## 释放实例(POST)
### 释放实例(POST)
使用以下代码释放实例:
```go
deleteInstanceWithRelateResourceArgs := &DeleteInstanceWithRelateResourceArgs{
Expand All @@ -1219,7 +1219,7 @@ deleteInstanceWithRelateResourceArgs := &DeleteInstanceWithRelateResourceArgs{
// 设置是否释放云磁盘快照 false代表否 true代表是
DeleteCdsSnapshotFlag bool "deleteCdsSnapshotFlag"
// 设置是否进入回收站 true表示进入回收站, false和null表示不进入回收站
bccRecycleFlag bool "bccRecycleFlag"
BccRecycleFlag bool "bccRecycleFlag"
}
// 设置你要操作的instanceId
instanceId := "your-choose-instance-id"
Expand All @@ -1230,7 +1230,30 @@ if err := bccClient.DeleteInstanceWithRelateResource(instanceId, deleteInstanceW
fmt.Println("release instance success.")
}
```
## 释放实例(包含预付费实例)
### 批量释放实例(POST)
使用以下代码批量释放实例:
```go
deleteInstanceWithRelateResourceArgs := &BatchDeleteInstanceWithRelateResourceArgs{
// 设置释放的时候是否关联释放当前时刻,实例挂载的eip+数据盘 false代表否 true代表是
// (只有该字段为true时 deleteCdsSnapshotFlag字段才会有效,若该字段为false,deleteCdsSnapshotFlag字段的值无效)
RelatedReleaseFlag bool "relatedReleaseFlag"
//设置是否释放弹性网卡 false代表否 true代表是,默认false
DeleteRelatedEnisFlag bool "deleteRelatedEnisFlag"
// 设置是否释放云磁盘快照 false代表否 true代表是
DeleteCdsSnapshotFlag bool "deleteCdsSnapshotFlag"
// 设置是否进入回收站 true表示进入回收站, false和null表示不进入回收站
BccRecycleFlag bool "bccRecycleFlag"
// 批量释放的实例id
InstanceIds []string "instanceIds"
}
if err := bccClient.BatchDeleteInstanceWithRelateResource(deleteInstanceWithRelateResourceArgs); err != nil {
fmt.Println("release instance failed: ", err)
} else {
fmt.Println("release instance success.")
}
```

### 释放实例(包含预付费实例)
不区分后付费还是预付费实例,释放bcc以及关联的资源,可以使用以下代码将其释放:
```go
args := &api.DeleteInstanceIngorePaymentArgs{
Expand All @@ -1256,7 +1279,7 @@ if err := bccClient.DeleteInstanceWithRelateResource(instanceId, deleteInstanceW

```

## 释放回收站实例
### 释放回收站实例
回收站实例7天后自动释放,清理回收站资源,可以使用以下代码将其释放:
```go
// 设置你要操作的instanceId
Expand All @@ -1274,7 +1297,7 @@ if err := bccClient.DeleteRecycledInstance(instanceId); err != nil {
> - 实例释放后,已挂载的CDS磁盘自动卸载,,基于此CDS磁盘的快照会保留。
> - 实例释放后,基于原系统盘的快照会自动删除,基于原系统盘的自定义镜像会保留。
## 定时释放 (限定后付费实例)
### 定时释放 (限定后付费实例)

后付费实例定时释放,到达预设时间后自动释放bcc,自动释放时间可查询实例详情ReleaseTime。设定空字符串可以取消定时释放。请谨慎使用该功能,避免遗忘定时设置
```go
Expand All @@ -1293,7 +1316,7 @@ if err != nil {
> - 实例释放后不可恢复
> - 关联的网卡资源会被自动卸载,且被释放
## 释放保护
### 释放保护
使用以下代码可以为BCC实例设置释放保护,实例当前设置可查询实例详情DeletionProtection,默认0不保护,1释放保护中(创建和查询入口限v2版本使用):

```go
Expand All @@ -1316,7 +1339,7 @@ if err := bccClient.ModifyDeletionProtection(instanceId, args); err != nil {
> - 已开启释放保护的实例将无法通过控制台或API释放,只有在关闭的情况下才能被手动释放。定时释放,欠费释放以及实例过期释放不受释放保护属性的影响
> - 实例释放保护默认不开启
## 变配实例
### 变配实例
使用以下代码可以选择CPU,MemoryCapacityInGB,EphemeralDisks变配指定BCC实例:

```go
Expand All @@ -1337,7 +1360,7 @@ if err := bccClient.ResizeInstance(instanceId, resizeInstanceArgs); err != nil {
fmt.Println("resize instance success.")
}
```
## 变配实例(通过实例套餐规格)
### 变配实例(通过实例套餐规格)
使用以下代码可以选择CPU,MemoryCapacityInGB,EphemeralDisks变配指定BCC实例:

```go
Expand All @@ -1355,7 +1378,7 @@ if err := bccClient.ResizeInstanceBySpec(instanceId, resizeInstanceArgs); err !=
}
```

## 绑定安全组
### 绑定安全组
使用以下代码绑定安全组:

```go
Expand All @@ -1370,7 +1393,7 @@ if err := bccClient.BindSecurityGroup(instanceId, SecurityGroupId); err != nil {
fmt.Println("Bind Security Group success.")
}
```
## 解绑安全组
### 解绑安全组
使用以下代码解绑安全组:

```go
Expand Down Expand Up @@ -1470,26 +1493,6 @@ if err := bccClient.InstancePurchaseReserved(instanceId, ModifyInstanceDescArgs)
> - 该接口是一个异步接口。
> - 专属实例不支持续费。
### 释放实例(POST请求的释放)
如下代码可以释放实例及相关联的资源,如EIP, CDS等
```go
args := &api.DeleteInstanceWithRelateResourceArgs{
RelatedReleaseFlag: true,
DeleteCdsSnapshotFlag: true,
}
err := client.DeleteInstanceWithRelateResource(instanceId, args)
if err != nil {
fmt.Println("delete instance failed:", err)
} else {
fmt.Println("delete instance success")
}
```
> **提示:**
> - 释放后实例所使用的物理资源都被收回,相关数据全部丢失且不可恢复。
> - 释放的时候默认只释放实例和系统盘,用户可以选择是否关联释放当前实例挂载的eip+数据盘(只能统一释放完或者不释放。而不是挂载的数据盘释放一个或者多个)是否一起释放。
### 实例变更子网
如下代码可以变更实例的子网
Expand Down Expand Up @@ -3225,6 +3228,121 @@ if err != nil {
}
```
### 创建磁盘专属集群
以下代码可以根据实例ID批量查询实例列表
```go
args := &CreateVolumeClusterArgs{
// 创建一个磁盘磁盘专属集群,若要同时创建多个,可以修改此参数
PurchaseCount: 1,
// 集群大小,支持最小容量:85TB(87040GB),支持最大容量:1015TB(1039360GB),购买步长:10TB
ClusterSizeInGB: 97280,
// 集群名称
ClusterName: "dbsc",
// 集群磁盘类型:通用型HDD,通用型SSD
StorageType: StorageTypeHdd,
Billing: &Billing{
// 只支持预付费
Reservation: &Reservation{
// 购买时长
ReservationLength: 6,
ReservationTimeUnit: "MONTH",
},
},
// 自动续费时长
RenewTimeUnit: "MONTH",
RenewTime: 6,
}
result, err := DBSC_CLIENT.CreateVolumeCluster(args)
if err != nil {
fmt.Println(err)
}
clusterId := result.ClusterIds[0]
fmt.Print(clusterId)
```
### 磁盘专属集群列表
以下代码可以根据实例ID批量查询实例列表
```go
args := &ListVolumeClusterArgs{
}
result, err := DBSC_CLIENT.ListVolumeCluster(args)
if err != nil {
fmt.Println(err)
}
fmt.Println(result)
```
### 磁盘专属集群详情
以下代码可以根据实例ID批量查询实例列表
```go
clusterId := "clusterId"
result, err := DBSC_CLIENT.GetVolumeClusterDetail(clusterId)
if err != nil {
fmt.Println(err)
}
fmt.Println(result)
```
### 磁盘专属集群扩容
以下代码可以根据实例ID批量查询实例列表
```go
clusterId := "clusterId"
args := &ResizeVolumeClusterArgs{
NewClusterSizeInGB int `json:"newClusterSizeInGB"`
}
err := DBSC_CLIENT.ResizeVolumeCluster(clusterId, args)
if err != nil {
fmt.Println(err)
}
```
### 磁盘专属集群续费
以下代码可以根据实例ID批量查询实例列表
```go
args := &PurchaseReservedVolumeClusterArgs{
Billing: &Billing{
Reservation: &Reservation{
// 续费时长
ReservationLength: 6,
ReservationTimeUnit: "MONTH",
},
},
}
clusterId := "clusterId"
err := DBSC_CLIENT.PurchaseReservedVolumeCluster(clusterId, args)
if err != nil {
fmt.Println(err)
}
```
### 磁盘专属集群自动续费
以下代码可以根据实例ID批量查询实例列表
```go
clusterId := "clusterId"
args := &AutoRenewVolumeClusterArgs{
ClusterId: clusterId,
RenewTime: 6,
RenewTimeUnit: "month",
}
err := DBSC_CLIENT.AutoRenewVolumeCluster(args)
if err != nil {
fmt.Println(err)
}
```
### 磁盘专属集群取消自动续费
以下代码可以根据实例ID批量查询实例列表
```go
clusterId := "clusterId"
args := &CancelAutoRenewVolumeClusterArgs{
ClusterId: clusterId,
}
err := DBSC_CLIENT.CancelAutoRenewVolumeCluster(args)
if err != nil {
fmt.Println(err)
}
```
# 错误处理
GO语言以error类型标识错误,BCC支持两种错误见下表:
Expand Down
17 changes: 17 additions & 0 deletions doc/VPC.md
Original file line number Diff line number Diff line change
Expand Up @@ -872,6 +872,12 @@ args := &vpc.CreateNatGatewayArgs{
Billing: &vpc.Billing{
PaymentTiming: vpc.PAYMENT_TIMING_POSTPAID,
},
Tags: []model.TagModel{
{
TagKey: "tagKey",
TagValue: "tagValue",
},
},
}
result, err := client.CreateNatGateway(args)
if err != nil {
Expand Down Expand Up @@ -932,6 +938,7 @@ for _, nat := range result.Nats {
fmt.Println("nat status: ", nat.Status)
fmt.Println("nat paymentTiming: ", nat.PaymentTiming)
fmt.Println("nat expireTime: ", nat.ExpiredTime)
fmt.Println("nat tags: ", nat.Tags)
}
```

Expand Down Expand Up @@ -1240,6 +1247,12 @@ args := &vpc.CreatePeerConnArgs{
Billing: &vpc.Billing{
PaymentTiming: vpc.PAYMENT_TIMING_POSTPAID,
},
Tags: []model.TagModel{
{
TagKey: "tagKey",
TagValue: "tagValue",
},
},
}
result, err := client.CreatePeerConn(args)
if err != nil {
Expand Down Expand Up @@ -1353,6 +1366,8 @@ fmt.Println("peerconn dnsStatus: ", result.DnsStatus)
fmt.Println("peerconn createdTime: ", result.CreatedTime)
// 查询得到对等连接的过期时间
fmt.Println("peerconn expiredTime: ", result.ExpiredTime)
// 查询得到对等连接的标签
fmt.Println("peerconn tags: ", result.Tags)
```

> 注意: "initiator"表示发起端"acceptor"表示接受端,同region的对等连接可以据此进行详情查询,若不设置该参数,同region则随机返回一端信息。
Expand Down Expand Up @@ -1615,6 +1630,8 @@ myLogger.Info("this is my own logger from the VPC go sdk")


# 版本变更记录
## v0.9.7 [2022-11-14]
- NAT、对等连接创建、详情接口支持Tags
## v0.9.6 [2020-12-27]
- 增加vpc查询PrivateIpAddress信息接口
## v0.9.5 [2019-09-24]
Expand Down
1 change: 1 addition & 0 deletions services/appblb/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@ type PortTypeModel struct {

type DescribeLoadBalancerDetailResult struct {
BlbId string `json:"blbId"`
Name string `json:"name"`
Status BLBStatus `json:"status"`
Description string `json:"desc"`
Address string `json:"address"`
Expand Down
10 changes: 7 additions & 3 deletions services/bcc/api/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ const (
StorageTypeLocalSSD StorageType = "local-ssd"
StorageTypeLocalHDD StorageType = "local-hdd"
StorageTypeLocalNVME StorageType = "local-nvme"
StorageTypeEnhancedPl2 StorageType = "enhanced_ssd_pl2"
)

type StorageTypeV3 string
Expand All @@ -86,6 +87,7 @@ const (
StorageTypeV3LocalPVHDD StorageTypeV3 = "Local_PV_HDD"
StorageTypeV3LocalPVSSD StorageTypeV3 = "Local_PV_SSD"
StorageTypeV3LocalPVNVME StorageTypeV3 = "Local_PV_NVME"
StorageTypeV3EnhancedPl2 StorageTypeV3 = "enhanced_ssd_pl2"
)

type PaymentTimingType string
Expand Down Expand Up @@ -1758,9 +1760,11 @@ type DeletionProtectionArgs struct {
}

type BatchDeleteInstanceWithRelateResourceArgs struct {
RelatedReleaseFlag bool `json:"relatedRelease"`
BccRecycleFlag bool `json:"bccRecycleFlag"`
InstanceIds []string `json:"instanceIds"`
RelatedReleaseFlag bool `json:"relatedReleaseFlag"`
DeleteCdsSnapshotFlag bool `json:"deleteCdsSnapshotFlag"`
BccRecycleFlag bool `json:"bccRecycleFlag"`
DeleteRelatedEnisFlag bool `json:"deleteRelatedEnisFlag"`
InstanceIds []string `json:"instanceIds"`
}

type BatchStartInstanceArgs struct {
Expand Down
Loading

0 comments on commit a5e86bf

Please sign in to comment.