From 03d02a401554b0bf8c48d22d8a40468417cba062 Mon Sep 17 00:00:00 2001 From: duanliguo Date: Mon, 1 Aug 2022 09:24:16 +0800 Subject: [PATCH] Create BCC with SecurityGroup --- bce/config.go | 2 +- doc/BBC.md | 2 + doc/BCC.md | 6 +- services/bbc/model.go | 118 +++++++++++---------- services/bcc/api/model.go | 217 +++++++++++++++++++------------------- 5 files changed, 178 insertions(+), 167 deletions(-) diff --git a/bce/config.go b/bce/config.go index 6632a643..638a0d47 100644 --- a/bce/config.go +++ b/bce/config.go @@ -26,7 +26,7 @@ import ( // Constants and default values for the package bce const ( - SDK_VERSION = "0.9.130" + SDK_VERSION = "0.9.131" URI_PREFIX = "/" // now support uri without prefix "v1" so just set root path DEFAULT_DOMAIN = "baidubce.com" DEFAULT_PROTOCOL = "http" diff --git a/doc/BBC.md b/doc/BBC.md index ca6f524a..e8eaf32b 100644 --- a/doc/BBC.md +++ b/doc/BBC.md @@ -159,6 +159,8 @@ createInstanceArgs := &CreateInstanceArgs{ InternalIps []string internalIps // 指定安全组id,可选参数 SecurityGroupId: "your-choose-security-group-id" + // 设置创建BCC使用的企业安全组 + EnterpriseSecurityGroupId: "enterpriseSecurityGroupId" // 使用 uuid 生成一个长度不超过64位的ASCII字符串 ClientToken: "random-uuid", //创建实例支持幂等的token,永久有效 diff --git a/doc/BCC.md b/doc/BCC.md index 8a0cd80a..95b6d768 100644 --- a/doc/BCC.md +++ b/doc/BCC.md @@ -276,8 +276,10 @@ args := &api.CreateInstanceArgs{ // 同时指定的子网和安全组必须同属于一个VPC,都不指定会使用默认子网和默认安全组。 // 设置创建BCC使用的子网 SubnetId string "subnetId" - // // 设置创建BCC使用的安全组 + // 设置创建BCC使用的安全组 SecurityGroupId string "securityGroupId" + // 设置创建BCC使用的企业安全组 + EnterpriseSecurityGroupId string "enterpriseSecurityGroupId" // 设置需要创建GPU卡信息 GpuCard string "gpuCard" // 设置需要创建FPGA卡信息 @@ -411,6 +413,8 @@ createInstanceBySpecArgs := &api.CreateInstanceBySpecArgs{ SubnetId string "subnetId" // 设置创建BCC使用的安全组 SecurityGroupId string "securityGroupId" + // 设置创建BCC使用的企业安全组 + EnterpriseSecurityGroupId string "enterpriseSecurityGroupId" // 设置按月付费或者按年付费 月是"month",年是"year" AutoRenewTimeUnit string "autoRenewTimeUnit" // 设置自动续费的时间 按月是1-9 按年是 1-3 diff --git a/services/bbc/model.go b/services/bbc/model.go index e1f81779..4662d80d 100644 --- a/services/bbc/model.go +++ b/services/bbc/model.go @@ -102,28 +102,29 @@ const ( ) type CreateInstanceArgs struct { - FlavorId string `json:"flavorId"` - ImageId string `json:"imageId"` - RaidId string `json:"raidId"` - RootDiskSizeInGb int `json:"rootDiskSizeInGb"` - PurchaseCount int `json:"purchaseCount"` - ZoneName string `json:"zoneName"` - SubnetId string `json:"subnetId"` - AutoRenewTimeUnit string `json:"autoRenewTimeUnit,omitempty"` - AutoRenewTime int `json:"autoRenewTime,omitempty"` - Billing Billing `json:"billing"` - Name string `json:"name,omitempty"` - Hostname string `json:"hostname,omitempty"` - AdminPass string `json:"adminPass,omitempty"` - DeploySetId string `json:"deploySetId,omitempty"` - ClientToken string `json:"-"` - SecurityGroupId string `json:"securityGroupId,omitempty"` - Tags []model.TagModel `json:"tags,omitempty"` - InternalIps []string `json:"internalIps,omitempty"` - RequestToken string `json:"requestToken"` - EnableNuma bool `json:"enableNuma"` - RootPartitionType string `json:"rootPartitionType,omitempty"` - DataPartitionType string `json:"dataPartitionType,omitempty"` + FlavorId string `json:"flavorId"` + ImageId string `json:"imageId"` + RaidId string `json:"raidId"` + RootDiskSizeInGb int `json:"rootDiskSizeInGb"` + PurchaseCount int `json:"purchaseCount"` + ZoneName string `json:"zoneName"` + SubnetId string `json:"subnetId"` + AutoRenewTimeUnit string `json:"autoRenewTimeUnit,omitempty"` + AutoRenewTime int `json:"autoRenewTime,omitempty"` + Billing Billing `json:"billing"` + Name string `json:"name,omitempty"` + Hostname string `json:"hostname,omitempty"` + AdminPass string `json:"adminPass,omitempty"` + DeploySetId string `json:"deploySetId,omitempty"` + ClientToken string `json:"-"` + SecurityGroupId string `json:"securityGroupId,omitempty"` + EnterpriseSecurityGroupId string `json:"enterpriseSecurityGroupId,omitempty"` + Tags []model.TagModel `json:"tags,omitempty"` + InternalIps []string `json:"internalIps,omitempty"` + RequestToken string `json:"requestToken"` + EnableNuma bool `json:"enableNuma"` + RootPartitionType string `json:"rootPartitionType,omitempty"` + DataPartitionType string `json:"dataPartitionType,omitempty"` } const ( @@ -142,28 +143,29 @@ type LabelConstraint struct { } type CreateSpecialInstanceArgs struct { - FlavorId string `json:"flavorId"` - ImageId string `json:"imageId"` - RaidId string `json:"raidId"` - RootDiskSizeInGb int `json:"rootDiskSizeInGb"` - PurchaseCount int `json:"purchaseCount"` - ZoneName string `json:"zoneName"` - SubnetId string `json:"subnetId"` - AutoRenewTimeUnit string `json:"autoRenewTimeUnit,omitempty"` - AutoRenewTime int `json:"autoRenewTime,omitempty"` - Billing Billing `json:"billing"` - Name string `json:"name,omitempty"` - Hostname string `json:"hostname,omitempty"` - AdminPass string `json:"adminPass,omitempty"` - DeploySetId string `json:"deploySetId,omitempty"` - ClientToken string `json:"-"` - SecurityGroupId string `json:"securityGroupId,omitempty"` - Tags []model.TagModel `json:"tags,omitempty"` - InternalIps []string `json:"internalIps,omitempty"` - RequestToken string `json:"requestToken"` - EnableNuma bool `json:"enableNuma"` - RootPartitionType string `json:"rootPartitionType,omitempty"` - DataPartitionType string `json:"dataPartitionType,omitempty"` + FlavorId string `json:"flavorId"` + ImageId string `json:"imageId"` + RaidId string `json:"raidId"` + RootDiskSizeInGb int `json:"rootDiskSizeInGb"` + PurchaseCount int `json:"purchaseCount"` + ZoneName string `json:"zoneName"` + SubnetId string `json:"subnetId"` + AutoRenewTimeUnit string `json:"autoRenewTimeUnit,omitempty"` + AutoRenewTime int `json:"autoRenewTime,omitempty"` + Billing Billing `json:"billing"` + Name string `json:"name,omitempty"` + Hostname string `json:"hostname,omitempty"` + AdminPass string `json:"adminPass,omitempty"` + DeploySetId string `json:"deploySetId,omitempty"` + ClientToken string `json:"-"` + SecurityGroupId string `json:"securityGroupId,omitempty"` + EnterpriseSecurityGroupId string `json:"enterpriseSecurityGroupId,omitempty"` + Tags []model.TagModel `json:"tags,omitempty"` + InternalIps []string `json:"internalIps,omitempty"` + RequestToken string `json:"requestToken"` + EnableNuma bool `json:"enableNuma"` + RootPartitionType string `json:"rootPartitionType,omitempty"` + DataPartitionType string `json:"dataPartitionType,omitempty"` // CreateInstanceArgs 的基础上增加的参数 LabelConstraints []LabelConstraint `json:"labelConstraints,omitempty"` } @@ -216,23 +218,23 @@ type ListRecycledInstancesResult struct { } type RecycledInstancesModel struct { - ServiceType string `json:"serviceType"` - ServiceName string `json:"serviceName"` - Name string `json:"name"` - Id string `json:"id"` - SerialNumber string `json:"serialNumber"` - RecycleTime string `json:"recycleTime"` - DeleteTime string `json:"deleteTime"` - PaymentTiming string `json:"paymentTiming"` - ConfigItems []string `json:"configItems"` - ConfigItem RecycleInstanceModelConfigItem `json:"configItem"` + ServiceType string `json:"serviceType"` + ServiceName string `json:"serviceName"` + Name string `json:"name"` + Id string `json:"id"` + SerialNumber string `json:"serialNumber"` + RecycleTime string `json:"recycleTime"` + DeleteTime string `json:"deleteTime"` + PaymentTiming string `json:"paymentTiming"` + ConfigItems []string `json:"configItems"` + ConfigItem RecycleInstanceModelConfigItem `json:"configItem"` } type RecycleInstanceModelConfigItem struct { - Cpu int `json:"cpu"` - Memory int `json:"memory"` - Type string `json:"type"` - ZoneName string `json:"zoneName"` + Cpu int `json:"cpu"` + Memory int `json:"memory"` + Type string `json:"type"` + ZoneName string `json:"zoneName"` } type ListInstancesResult struct { diff --git a/services/bcc/api/model.go b/services/bcc/api/model.go index 247b654a..aab47b84 100644 --- a/services/bcc/api/model.go +++ b/services/bcc/api/model.go @@ -249,48 +249,49 @@ type DiskZoneResource struct { } type CreateInstanceArgs struct { - ImageId string `json:"imageId"` - Billing Billing `json:"billing"` - InstanceType InstanceType `json:"instanceType,omitempty"` - CpuCount int `json:"cpuCount"` - MemoryCapacityInGB int `json:"memoryCapacityInGB"` - RootDiskSizeInGb int `json:"rootDiskSizeInGb,omitempty"` - RootDiskStorageType StorageType `json:"rootDiskStorageType,omitempty"` - LocalDiskSizeInGB int `json:"localDiskSizeInGB,omitempty"` - EphemeralDisks []EphemeralDisk `json:"ephemeralDisks,omitempty"` - CreateCdsList []CreateCdsModel `json:"createCdsList,omitempty"` - NetWorkCapacityInMbps int `json:"networkCapacityInMbps,omitempty"` - EipName string `json:"eipName,omitempty"` - DedicateHostId string `json:"dedicatedHostId,omitempty"` - PurchaseCount int `json:"purchaseCount,omitempty"` - Name string `json:"name,omitempty"` - Hostname string `json:"hostname,omitempty"` - IsOpenHostnameDomain bool `json:"isOpenHostnameDomain,omitempty"` - AutoSeqSuffix bool `json:"autoSeqSuffix,omitempty"` - AdminPass string `json:"adminPass,omitempty"` - ZoneName string `json:"zoneName,omitempty"` - SubnetId string `json:"subnetId,omitempty"` - SecurityGroupId string `json:"securityGroupId,omitempty"` - GpuCard string `json:"gpuCard,omitempty"` - FpgaCard string `json:"fpgaCard,omitempty"` - CardCount string `json:"cardCount,omitempty"` - AutoRenewTimeUnit string `json:"autoRenewTimeUnit"` - AutoRenewTime int `json:"autoRenewTime"` - CdsAutoRenew bool `json:"cdsAutoRenew"` - RelationTag bool `json:"relationTag,omitempty"` - Tags []model.TagModel `json:"tags,omitempty"` - DeployId string `json:"deployId,omitempty"` - BidModel string `json:"bidModel,omitempty"` - BidPrice string `json:"bidPrice,omitempty"` - KeypairId string `json:"keypairId,omitempty"` - AspId string `json:"aspId,omitempty"` - InternetChargeType string `json:"internetChargeType,omitempty"` - UserData string `json:"userData,omitempty"` - InternalIps []string `json:"internalIps,omitempty"` - ClientToken string `json:"-"` - RequestToken string `json:"requestToken"` - DeployIdList []string `json:"deployIdList"` - DetetionProtection int `json:"deletionProtection"` + ImageId string `json:"imageId"` + Billing Billing `json:"billing"` + InstanceType InstanceType `json:"instanceType,omitempty"` + CpuCount int `json:"cpuCount"` + MemoryCapacityInGB int `json:"memoryCapacityInGB"` + RootDiskSizeInGb int `json:"rootDiskSizeInGb,omitempty"` + RootDiskStorageType StorageType `json:"rootDiskStorageType,omitempty"` + LocalDiskSizeInGB int `json:"localDiskSizeInGB,omitempty"` + EphemeralDisks []EphemeralDisk `json:"ephemeralDisks,omitempty"` + CreateCdsList []CreateCdsModel `json:"createCdsList,omitempty"` + NetWorkCapacityInMbps int `json:"networkCapacityInMbps,omitempty"` + EipName string `json:"eipName,omitempty"` + DedicateHostId string `json:"dedicatedHostId,omitempty"` + PurchaseCount int `json:"purchaseCount,omitempty"` + Name string `json:"name,omitempty"` + Hostname string `json:"hostname,omitempty"` + IsOpenHostnameDomain bool `json:"isOpenHostnameDomain,omitempty"` + AutoSeqSuffix bool `json:"autoSeqSuffix,omitempty"` + AdminPass string `json:"adminPass,omitempty"` + ZoneName string `json:"zoneName,omitempty"` + SubnetId string `json:"subnetId,omitempty"` + SecurityGroupId string `json:"securityGroupId,omitempty"` + EnterpriseSecurityGroupId string `json:"enterpriseSecurityGroupId,omitempty"` + GpuCard string `json:"gpuCard,omitempty"` + FpgaCard string `json:"fpgaCard,omitempty"` + CardCount string `json:"cardCount,omitempty"` + AutoRenewTimeUnit string `json:"autoRenewTimeUnit"` + AutoRenewTime int `json:"autoRenewTime"` + CdsAutoRenew bool `json:"cdsAutoRenew"` + RelationTag bool `json:"relationTag,omitempty"` + Tags []model.TagModel `json:"tags,omitempty"` + DeployId string `json:"deployId,omitempty"` + BidModel string `json:"bidModel,omitempty"` + BidPrice string `json:"bidPrice,omitempty"` + KeypairId string `json:"keypairId,omitempty"` + AspId string `json:"aspId,omitempty"` + InternetChargeType string `json:"internetChargeType,omitempty"` + UserData string `json:"userData,omitempty"` + InternalIps []string `json:"internalIps,omitempty"` + ClientToken string `json:"-"` + RequestToken string `json:"requestToken"` + DeployIdList []string `json:"deployIdList"` + DetetionProtection int `json:"deletionProtection"` } type CreateInstanceStockArgs struct { @@ -363,39 +364,40 @@ type CreateInstanceResult struct { } type CreateInstanceBySpecArgs struct { - ImageId string `json:"imageId"` - Spec string `json:"spec"` - RootDiskSizeInGb int `json:"rootDiskSizeInGb,omitempty"` - RootDiskStorageType StorageType `json:"rootDiskStorageType,omitempty"` - EphemeralDisks []EphemeralDisk `json:"ephemeralDisks,omitempty"` - CreateCdsList []CreateCdsModel `json:"createCdsList,omitempty"` - NetWorkCapacityInMbps int `json:"networkCapacityInMbps,omitempty"` - EipName string `json:"eipName,omitempty"` - InternetChargeType string `json:"internetChargeType,omitempty"` - PurchaseCount int `json:"purchaseCount,omitempty"` - Name string `json:"name,omitempty"` - Hostname string `json:"hostname,omitempty"` - IsOpenHostnameDomain bool `json:"isOpenHostnameDomain,omitempty"` - AutoSeqSuffix bool `json:"autoSeqSuffix,omitempty"` - AdminPass string `json:"adminPass,omitempty"` - Billing Billing `json:"billing"` - ZoneName string `json:"zoneName,omitempty"` - SubnetId string `json:"subnetId,omitempty"` - SecurityGroupId string `json:"securityGroupId,omitempty"` - RelationTag bool `json:"relationTag,omitempty"` - Tags []model.TagModel `json:"tags,omitempty"` - KeypairId string `json:"keypairId"` - AutoRenewTimeUnit string `json:"autoRenewTimeUnit"` - AutoRenewTime int `json:"autoRenewTime"` - CdsAutoRenew bool `json:"cdsAutoRenew"` - AspId string `json:"aspId"` - InternalIps []string `json:"internalIps,omitempty"` - DeployId string `json:"deployId,omitempty"` - UserData string `json:"userData,omitempty"` - ClientToken string `json:"-"` - RequestToken string `json:"requestToken"` - DeployIdList []string `json:"deployIdList"` - DetetionProtection int `json:"deletionProtection"` + ImageId string `json:"imageId"` + Spec string `json:"spec"` + RootDiskSizeInGb int `json:"rootDiskSizeInGb,omitempty"` + RootDiskStorageType StorageType `json:"rootDiskStorageType,omitempty"` + EphemeralDisks []EphemeralDisk `json:"ephemeralDisks,omitempty"` + CreateCdsList []CreateCdsModel `json:"createCdsList,omitempty"` + NetWorkCapacityInMbps int `json:"networkCapacityInMbps,omitempty"` + EipName string `json:"eipName,omitempty"` + InternetChargeType string `json:"internetChargeType,omitempty"` + PurchaseCount int `json:"purchaseCount,omitempty"` + Name string `json:"name,omitempty"` + Hostname string `json:"hostname,omitempty"` + IsOpenHostnameDomain bool `json:"isOpenHostnameDomain,omitempty"` + AutoSeqSuffix bool `json:"autoSeqSuffix,omitempty"` + AdminPass string `json:"adminPass,omitempty"` + Billing Billing `json:"billing"` + ZoneName string `json:"zoneName,omitempty"` + SubnetId string `json:"subnetId,omitempty"` + SecurityGroupId string `json:"securityGroupId,omitempty"` + EnterpriseSecurityGroupId string `json:"enterpriseSecurityGroupId,omitempty"` + RelationTag bool `json:"relationTag,omitempty"` + Tags []model.TagModel `json:"tags,omitempty"` + KeypairId string `json:"keypairId"` + AutoRenewTimeUnit string `json:"autoRenewTimeUnit"` + AutoRenewTime int `json:"autoRenewTime"` + CdsAutoRenew bool `json:"cdsAutoRenew"` + AspId string `json:"aspId"` + InternalIps []string `json:"internalIps,omitempty"` + DeployId string `json:"deployId,omitempty"` + UserData string `json:"userData,omitempty"` + ClientToken string `json:"-"` + RequestToken string `json:"requestToken"` + DeployIdList []string `json:"deployIdList"` + DetetionProtection int `json:"deletionProtection"` } const ( @@ -416,38 +418,39 @@ type LabelConstraint struct { // --- 创建 BCC 的新接口的参数和返回值 type CreateSpecialInstanceBySpecArgs struct { - ImageId string `json:"imageId"` - Spec string `json:"spec"` - RootDiskSizeInGb int `json:"rootDiskSizeInGb,omitempty"` - RootDiskStorageType StorageType `json:"rootDiskStorageType,omitempty"` - EphemeralDisks []EphemeralDisk `json:"ephemeralDisks,omitempty"` - CreateCdsList []CreateCdsModel `json:"createCdsList,omitempty"` - NetWorkCapacityInMbps int `json:"networkCapacityInMbps,omitempty"` - InternetChargeType string `json:"internetChargeType,omitempty"` - PurchaseCount int `json:"purchaseCount,omitempty"` - Name string `json:"name,omitempty"` - Hostname string `json:"hostname,omitempty"` - IsOpenHostnameDomain bool `json:"isOpenHostnameDomain,omitempty"` - UserData string `json:"userData,omitempty"` - AutoSeqSuffix bool `json:"autoSeqSuffix,omitempty"` - AdminPass string `json:"adminPass,omitempty"` - Billing Billing `json:"billing"` - ZoneName string `json:"zoneName,omitempty"` - SubnetId string `json:"subnetId,omitempty"` - SecurityGroupId string `json:"securityGroupId,omitempty"` - RelationTag bool `json:"relationTag,omitempty"` - Tags []model.TagModel `json:"tags,omitempty"` - KeypairId string `json:"keypairId"` - AutoRenewTimeUnit string `json:"autoRenewTimeUnit"` - AutoRenewTime int `json:"autoRenewTime"` - CdsAutoRenew bool `json:"cdsAutoRenew"` - AspId string `json:"aspId"` - InternalIps []string `json:"internalIps,omitempty"` - DeployId string `json:"deployId,omitempty"` - ClientToken string `json:"-"` - RequestToken string `json:"requestToken"` - DeployIdList []string `json:"deployIdList"` - DetetionProtection int `json:"deletionProtection"` + ImageId string `json:"imageId"` + Spec string `json:"spec"` + RootDiskSizeInGb int `json:"rootDiskSizeInGb,omitempty"` + RootDiskStorageType StorageType `json:"rootDiskStorageType,omitempty"` + EphemeralDisks []EphemeralDisk `json:"ephemeralDisks,omitempty"` + CreateCdsList []CreateCdsModel `json:"createCdsList,omitempty"` + NetWorkCapacityInMbps int `json:"networkCapacityInMbps,omitempty"` + InternetChargeType string `json:"internetChargeType,omitempty"` + PurchaseCount int `json:"purchaseCount,omitempty"` + Name string `json:"name,omitempty"` + Hostname string `json:"hostname,omitempty"` + IsOpenHostnameDomain bool `json:"isOpenHostnameDomain,omitempty"` + UserData string `json:"userData,omitempty"` + AutoSeqSuffix bool `json:"autoSeqSuffix,omitempty"` + AdminPass string `json:"adminPass,omitempty"` + Billing Billing `json:"billing"` + ZoneName string `json:"zoneName,omitempty"` + SubnetId string `json:"subnetId,omitempty"` + SecurityGroupId string `json:"securityGroupId,omitempty"` + EnterpriseSecurityGroupId string `json:"enterpriseSecurityGroupId,omitempty"` + RelationTag bool `json:"relationTag,omitempty"` + Tags []model.TagModel `json:"tags,omitempty"` + KeypairId string `json:"keypairId"` + AutoRenewTimeUnit string `json:"autoRenewTimeUnit"` + AutoRenewTime int `json:"autoRenewTime"` + CdsAutoRenew bool `json:"cdsAutoRenew"` + AspId string `json:"aspId"` + InternalIps []string `json:"internalIps,omitempty"` + DeployId string `json:"deployId,omitempty"` + ClientToken string `json:"-"` + RequestToken string `json:"requestToken"` + DeployIdList []string `json:"deployIdList"` + DetetionProtection int `json:"deletionProtection"` // CreateInstanceBySpecArgs 的基础上增加的参数 LabelConstraints []LabelConstraint `json:"labelConstraints,omitempty"` }